前两天工作需要,在修复助理漏洞是需要启动防火墙上,并在防火墙上加白名单,翻了好多资料没有找到firewall的配置方法,只能换成iptables,特此记录下解决过程
centos7下防火墙默认用的是firewall,但是iptables也可以用
iptables配置方法:iptables所有的规则都写在配置文件里,所以生效配置必须重启防火墙,下面以开放所有端口,对指定IP开放22端口为例
禁用firewall
[root@test02 Desktop]# systemctl stop firewalld.service
[root@test02 Desktop]# systemctl disable firewalld.service
安装iptables
[root@test02 sysconfig]# yum -y install iptables-services
修改配置文件
[root@test02 Desktop]# vi /etc/sysconfig/iptables
将里面的内容全部删掉,写入以下内容(开放所有端口,但是22端口只对192.168.191.8一台主机开放)
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.191.8 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
重启防火墙即可
[root@test02 Desktop]# systemctl start iptables.service
firewall配置方法:firewall当时也想了一个办法,但是比较low,所以当时没用,
就是把除去22端口的所有端口开放
开放出22端口外的所有端口
[root@test02 zones]# firewall-cmd --permanent --zone=public --add-port=1-21/tcp
[root@test02 zones]# firewall-cmd --permanent --zone=public --add-port=23-65535/tcp
对指定IP开放22端口
[root@test02 zones]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.191.8" port protocol="tcp" port="22" accept"
[root@test02 bin]# firewall-cmd --reload
配置完成后发现不管用,以为是没有重启防火墙,重启后还是一样,22端口对所有IP都是开放的,后来查阅资料发现firewall和iptables不太一样,firewall的配置文件较多,22端口是默认的ssh端口,不受firewall-cmd的命令控制,所以想要上面的配置生效,还需删掉/usr/lib/firewalld/services目录下的ssh.xml文件才可以
版权声明:本文为m0_43405593原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。