在CentOS7里有幾種防火牆共存:firewalld、iptables、ebtables,默認是使用firewalld來管理netfilter子系統,不過底層調用的命令仍然是iptables等。
firewalld跟iptables比起來至少有兩大好處:
1、firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則后必須得全部刷新才可以生效;
2、firewalld在使用上要比iptables人性化很多,即使不明白“五張表五條鏈”而且對TCP/IP協議也不理解也可以實現大部分功能。
firewalld跟iptables比起來,不好的地方是每個服務都需要去設置才能放行,因為默認是拒絕。而iptables里默認是每個服務是允許,需要拒絕的才去限制。
1.firewalld對指定IP開放指定端口的配置
1.打開firewalld防火牆
systemctl start firewalld.service
2.添加防火牆規則(對指定ip開放指定端口)
(1) memcached 端口設置。允許主機21.20.3.33訪問11211端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="21.20.3.33" port protocol="tcp" port="11211" accept" (2) redis端口設置。允許主機21.20.3.33訪問6379端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="21.20.3.33" port protocol="tcp" port="6379" accept"
3.添加防火牆策略
在firewalld服務中配置一條富規則,使其拒絕192.168.10.0/24網段的所有用戶訪問本機的ssh服務(22端口):
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" //顯示 success firewall-cmd --reload //顯示 success
4.更新防火牆規則
firewall-cmd --reload
5.查看配置結果,驗證配置
firewall-cmd --list-all
6.刪除規則
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="21.20.3.33" port protocol="tcp" port="3306" accept" firewall-cmd --list-all
常用查看信息命令:
查看版本:$ firewall-cmd --version 查看幫助:$ firewall-cmd --help 查看設置: 顯示狀態:$ firewall-cmd --state 查看區域信息: $ firewall-cmd --get-active-zones 查看指定接口所屬區域:$ firewall-cmd --get-zone-of-interface=eth0 拒絕所有包:# firewall-cmd --panic-on 取消拒絕狀態:# firewall-cmd --panic-off 查看是否拒絕:$ firewall-cmd --query-panic