轉載自:http://www.z4zr.com/page/1006.html
CentOS7用firewall命令“替代”了iptables。在這里我們需要區分“iptables服務”和“iptables命令”。雖然firewalld是替代提供的防火牆管理iptables服務,但是它仍然使用iptables對內核命令動態通信包過濾。所以它只是iptables服務代替,而不是iptables命令。
如果想使用iptables服務,執行如下命令
```
systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services
touch /etc/sysconfig/iptables
systemctl start iptables
systemctl enable iptables
systemctl stop iptables
touch /etc/sysconfig/ip6tables
systemctl start ip6tables
systemctl enable ip6table
```
vim /etc/sysconfig/iptables
重啟iptables
service iptables restart
安裝firewalld和firewall-cmd請參考結尾link
檢查防火牆狀態
firewall-cmd --stat
臨時開放ftp服務
firewall-cmd --add-service=ftp
永久開放ftp服務
firewall-cmd --add-service=ftp --permanent
關閉ftp服務
firewall-cmd --remove-service=ftp --permanent
配置防火牆在public區域永久開放http服務
firewall-cmd --permanent --zone=public --add-service=http
加入指定開放端口
firewall-cmd --add-port=1324/tcp
為了讓之前的設定生效當然要重啟服務咯
systemctl restart firewalld
或者使用下面的命令免去重啟服務(防火牆策略配置后重新載入)
firewall-cmd --complete-reload
firewall-cmd --reload (這兩句功能相同)
檢查ftp服務的21端口是否開放
iptables -L -n | grep 21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW
查詢ftp服務啟用狀態
firewall-cmd --query-service ftp
查看當前規則
firewall-cmd --list-all
僅允許部分IP訪問本機服務配置
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" \
source address="192.168.0.4/24" service name="http" accept"
僅允許部分IP訪問本機端口配置
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" \
source address="192.168.0.4/24" \
port protocol="tcp" port="8080" accept"
firewall-cmd --zone=public --add-port=3306/tcp --permanent
輸入命令,開通端口報錯,
FirewallD is not running
開啟防火牆即可。
systemctl start firewalld