CentOS7 用 firewall 命令 “替代” 了 iptables。在这里我们需要区分 “iptables 服务” 和“iptables 命令”。虽然 firewalld 是替代提供的防火墙管理 iptables 服务, 但是它仍然使用 iptables 对内核命令动态通信包过滤。所以它只是 iptables 服务代替, 而不是 iptables 命令。
如果想使用 iptables 服务,执行如下命令
[code]
systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services
touch /etc/sysconfig/iptables
systemctl start iptables
systemctl enable iptables
touch /etc/sysconfig/ip6tables
systemctl start ip6tables
systemctl enable ip6table
[/code]
安装 firewalld 和 firewall-cmd 请参考结尾 link
[code]
检查防火墙状态
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”
[/code]
公共配置文件位置:/etc/firewalld/zones/public.xml
更多内容:http://oracle-base.com/articles/linux/linux-firewall-firewalld.php?utm_source=tuicool