iptables

在centos6.5系统中, 一般iptables默认是开启状态。
firewalld 之前的防火墙

安装

Install

yum install -y iptables       # 安装iptables

yum install iptables-services # 安装iptables-services

yum update iptables           # 升级iptables

Check status

service iptables status       # CentOS6

systemctl status iptables     # CentOS7

Auto start

chkconfig iptables on               # CentOS6

systemctl enable iptables.service   # CentOS7

Copy

基本使用

开放指定端口

iptables -A INPUT -p tcp —dport 4022 -j ACCEPT

iptables -A INPUT -p tcp —dport 8080 -j ACCEPT

iptables -A INPUT -p tcp —dport 8087 -j ACCEPT

Copy

查看状态

[root@localhost ~]# service iptables

Table: filter                # Table: 过滤? 是表示当前防火墙实现过滤的功能部分

Chain INPUT (policy ACCEPT)  # INPUT默认的方针是允许通过 后面命令改成默认禁止 iptables -P INPUT DROP

num  target     prot opt source               destination

1    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           tcp dpt:10050

1    ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

2    ACCEPT     icmp —  0.0.0.0/0            0.0.0.0/0

3    ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0

4    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22

5    REJECT     all  —  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)   # FORWARD默认的方针是允许通过 后面命令改成默认禁止 iptables -P FORWARD DROP

num  target     prot opt source               destination

1    REJECT     all  —  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)    # OUTPUT默认的方针是允许通过 后面命令改成默认禁止iptables -P OUTPUT ACCEPT

num  target     prot opt source               destination

如果OUTPUT不设置过滤规则,就表示所有的出都是允许的? 还是都不允许?

查看状态

[root@localhost zabbix]# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           tcp dpt:10050

ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

ACCEPT     icmp —  0.0.0.0/0            0.0.0.0/0

ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0

ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22

ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:7000

ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:17000

REJECT     all  —  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

REJECT     all  —  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

没有规则的时候

查看当前的规则: 没有规则的时候是这样的

[root@localhost ~]# iptables -L -n

Chain INPUT (policy ACCEPT)              # 默认允许

target     prot opt source               destination

Chain FORWARD (policy ACCEPT)            # 默认允许

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)             # 默认允许,如果默认DROP的话,在添加INPUT规则的时候也需要添加OUTPUT规则

target     prot opt source               destination

Copy

配置信息

默认的配置信息,/etc/sysconfig/iptables

[root@localhost sysconfig]# more iptables

Firewall configuration written by system-config-firewall

Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state —state NEW -m tcp -p tcp —dport 22 -j ACCEPT

-A INPUT -j REJECT —reject-with icmp-host-prohibited

-A FORWARD -j REJECT —reject-with icmp-host-prohibited

COMMIT

Copy

更改规则

添加规则, 允许192.168.111.1 这个机器访问22端口,允许入

iptables -A INPUT -s 192.168.111.1/32 -p tcp -m tcp —dport 22 -j ACCEPT

添加规则, 如果OUTPUT默认DROP也需要允许出

iptables -A OUTPUT -s 192.168.111.1/32 -p tcp -m tcp —dport 22 -j ACCEPT

插入规则

iptables -I INPUT -p tcp —dport 10050 -j ACCEPT

删除规则

iptables -D INPUT -p tcp —dport 22 -j ACCEPT

注意! 注意! 注意! 在更改过规则之后需要进行保存.

保存规则

通常使用-A 和 -D参数修改,然后保存到配置文件,也可以直接修改配置文件,然后重启服务

#>service iptables save

Copy

清空规则

iptables -F 清除预设表filter中的所有规则链的规则
iptables -X 清除预设表filter中使用者自定链中的规则

其他

iptables -A INPUT -s 192.168.111.1 -p all -j ACCEPT —全部放行

iptables -A INPUT -p tcp —dport 80 -j ACCEPT —开通Web,不限制IP?
iptables -A OUTPUT -p tcp —sport 80 -j ACCEPT -WEB出
iptables -A INPUT -p tcp —dport 21 -j ACCEPT —允许FTP
iptables -A INPUT -p icmp -j ACCEPT —icmp协议,Ping程序使用该协议 (INPUT设置成DROP的话)
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)

—如下回环操作需要添加,不然Ping不通自己
IPTABLES -A INPUT -i lo -p all -j ACCEPT —允许loopback!(否则会导致DNS无法正常关闭等问题) (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT —允许loopback!(会导致DNS无法正常关闭等问题)(如果是OUTPUT DROP)

—减少不安全端口,封闭本机的端口
iptables -A OUTPUT -p tcp —sport 31337 -j DROP
iptables -A OUTPUT -p tcp —dport 31337 -j DROP
iptables -A INPUT -s 10.161.8.119 -p tcp —dport 22 -j ACCEPT 放行单个端口