CentOS中防火墙程序主要是firewall和iptables,CentOS7中默认用的firewall,并且已经预装好了服务,而之前的Centos需要自己安装,一般使用iptables,iptables是一套用来设置、维护和检查Linux内核的IP包过滤规则的命令包:如下命令可以使用iptables
-L -n查看当前的防火墙状态:
[root@localhost ~]# 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:9399 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9319 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 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 清除iptables的所有规则命令:
iptables -F #清除预设表filter中的所有规则链的规则
iptables -X #清除预设表filter中使用者自定链中的规则
/etc/rc.d/init.d/iptables save #保存iptables设置到磁盘文件
[iptables里的预设规则],可以认为是兜底的规则,即没有进行单独设置的规则都走这个配置
[root@localhost ~]# iptables -P INPUT DROP #对所有的INPUT进行拒绝
[root@localhost ~]# iptables -P OUTPUT ACCEPT #对所有的OUTPUT进行放行
[root@localhost ~]# iptables -P FORWARD DROP #对所有的FORWARD进行拒绝
[添加INPUT规则]:即允许本服务器的哪些PORT请求进入,例如我们要开启8888端口.假设你上面的OUTPUT是ACCEPT的,就不需要设置OUTPUT了。
[root@localhost ~]iptables -I INPUT -p tcp –dport 8888 -j ACCEPT
#假设你上面的OUTPUT是DROP的,就还需要设置OUTPUT。
[root@localhost ~]iptables -I OUTPUT -p tcp –sport 8888 -j ACCEPT
-I:指定是INPUT还是OUTPUT处理
-p:指定涉及的协议,比如常用的tcp.
–dport:目的端口
–sport:来源端口
-j:具体操作,是ACCEPT还是DROP
关于sport和dport的数据含义:input时: dport指本地,sport指外部。output时:dport指外部,sport指本地。
上面的命令中:iptables -I INPUT -p tcp –dport 8888 -j ACCEPT
即是指定进入本地目标8888端口的tcp协议全部放行进来,
iptables -I OUTPUT -p tcp –sport 8888 -j ACCEPT
即是指定从本地来源8888端口的tcp协议全部放行出去,
也可以直接编辑iptables的配置文件:vim
/etc/sysconfig/iptables,在同一条端口反复加多了规则之后,可以发现配置文件中会有重复的行,这时直接编辑配置文件比较好。最后注意:如果不使用save命令保存配置文件,则重启iptables之后增加的配置即会丢失。