CentOS7下firewallD简单上手
FirewallD 是 CentOS 7 服务器上默认可用的防火墙管理工具。基本上,它是 iptables 的封装,有图形配置工具firewall-config和命令行工具firewall-cmd。使用 iptables 服务,每次改动都要求刷新旧规则,并且从/etc/sysconfig/iptables读取新规则,然而 firewalld 只应用改动了的不同部分,如果对Centos7不太熟悉的话请参考Linux就该这么学这本书。
工具/原料
Linux系统
FirewallD 的区域(zone)
1、FirewallD 使用服务(service) 和区域(zone)来代替 iptables 的规则(rule)和链(chain)。默认情况下,有以下的区域(zone)可用:drop– 丢弃所有传入的网络数据包并且无回应,只有传出网络连接可用。block— 拒绝所有传入网络数据包并回应一条主机禁止的 ICMP 消息,只有传出网络连接可用。public— 只接受被选择的传入网络连接,用于公共区域。external— 用于启用了地址伪装的外部网络,只接受选定的传入网络连接。dmz— DMZ 隔离区,外部受限地访问内部网络,只接受选定的传入网络连接。work— 对于处在你工作区域内的计算机,只接受被选择的传入网络连接。home— 对于处在你家庭区域内的计算机,只接受被选择的传入网络连接。internal— 对于处在你内部网络的计算机,只接受被选择的传入网络连接。trusted— 所有网络连接都接受。

2、要列出所有可用的区域,运行:# firewall-cmd --get-zoneswork drop internal external trusted home dmz public block列出默认的区域 :# firewall-cmd --get-default-zonepublic改变默认的区域 :# firewall-cmd --set-default-zone=dmz# firewall-cmd --get-default-zonedmz
FirewallD 服务
1、FirewallD 服务使用 XML 配置文件,记录了 firewalld 服务信息。列出所有可用的服务:# firewall-cmd --get-services注:XML 配置文件存储在/usr/lib/firewalld/services/和/etc/firewalld/services/ 目录下。
用 FirewallD 配置你的防火墙
1、作为一个例子,假设你正在运行一个 web 服务器,SSH 服务端口为 7022 ,以及邮件服务,你可以利用 FirewallD 这样配置你的服务器:首先设置默认区为 dmz。# firewall-cmd --set-default-zone=dmz# firewall-cmd --get-default-zonedmz
2、为 dmz 区添加持久性的 HTTP 和 HTTPS 规则:# firewall-cmd --zone=dmz --add-service=http --permanent# firewall-cmd --zone=dmz --add-service=https --permanent
3、开启端口 25 (SMTP) 和端口 465 (SMTPS) :# firewall-cmd --zone=dmz --add-service=smtp --permanent# firewall-cmd --zone=dmz --add-service=smtps --permanent
4、开启 IMAP、IMAPS、POP3 和 POP3S 端口:# firewall-cmd --zone=dmz --add-service=imap --permanent# firewall-cmd --zone=dmz --add-service=imaps --permanent# firewall-cmd --zone=dmz --add-service=pop3 --permanent# firewall-cmd --zone=dmz --add-service=pop3s --permanent
5、因为将 SSH 端口改到了 7022,所以要移除 ssh 服务(端口 22),开启端口 7022:# firewall-cmd --remove-service=ssh --permanent# firewall-cmd --add-port=7022/tcp --permanent
6、要应用上面这些更改,我们需要重新加载防火墙:#firewall-cmd --reload
7、最后可以列出这些规则:# firewall-cmd –list-alldmz target: defaulticmp-block-inversion: nointerfaces: sources:services: http https imap imaps pop3 pop3s smtp smtpsports: 7022/tcpprotocols:masquerade: noforward-ports:sourceports:icmp-blocks:rich rules: