CentOS7用firewall命令“替代”了iptables。在这里我们需要区分“iptables服务”和“iptables命令”。虽然firewalld是替代提供的防火墙管理iptables服务,但是它仍然使用iptables对内核命令动态通信包过滤。所以它只是iptables服务代替,而不是iptables命令。

查看防火墙规则

firewall-cmd --list-all
firewall-cmd --list-ports

检查防火墙状态

firewall-cmd --stat

ftp服务放行

临时开放ftp服务
firewall-cmd --add-service=ftp
永久开放ftp服务
firewall-cmd --add-service=ftp --permanent
关闭ftp服务
firewall-cmd --remove-service=ftp --permanent
查询ftp服务启用状态
firewall-cmd --query-service ftp

在public区域永久开放http服务

firewall-cmd --permanent --zone=public --add-service=http

开放指定端口

firewall-cmd --add-port=1324/tcp
firewall-cmd --zone=public --add-port=80/tcp --permanent

–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

重启服务

为了让之前的设定生效当然要重启服务咯

systemctl restart firewalld
或者使用下面的命令免去重启服务(防火墙策略配置后重新载入)
firewall-cmd --complete-reload
firewall-cmd --reload   (这两句功能相同)

仅允许部分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"    

公共配置文件位置:/etc/firewalld/zones/public.xml

如果想使用iptables服务,执行如下命令

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

检查ftp服务的21端口是否开放
iptables -L -n | grep 21
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:21 ctstate NEW

安装firewalld和firewall-cmd请参考结尾link

更多内容:http://oracle-base.com/articles/linux/linux-firewall-firewalld.php?utm_source=tuicool

原创文章采用 CC BY-NC-SA 4.0协议 进行许可,转载请著名转自: CentOS7调教----firewall/iptables

0 评论