FirewallD 是 CentOS 7 服务器上默认可用的防火墙管理工具。基本上,它是 iptables 的封装,有图形配置工具firewall-config和命令行工具firewall-cmd。使用 iptables 服务,每次改动都要求刷新旧规则,并且从/etc/sysconfig/iptables读取新规则,然而 firewalld 只应用改动了的不同部分。
安装
# CentOS 7 默认已安装 [root@localhost ~]# yum install firewalld # 查看是否已安装了firewalld [root@localhost ~]# yum list | grep firewall
启动
# 启动防火墙服务 [root@localhost ~]# service firewalld start # 停止防火墙服务 [root@localhost ~]# service firewalld stop # 重启防火墙服务 [root@localhost ~]# service firewalld restart # 确定防火墙服务是否已经启动了 [root@localhost ~]# ps -ef | grep firewall
- 检查状态
[root@localhost ~]# service firewalld status
- 关闭或禁用防火墙
[root@localhost ~]# service firewalld stop/disbale
- FirewallD 相关操作
- FirewallD 使用 服务(service) 和 区域(zone) 来代替 iptables 的规则(rule)和链(chain)。
- 默认情况下,有以下的区域(zone)可用:
- drop -- 丢弃所有传入的网络数据包并且无回应,只有传出网络连接可用。
- block -- 拒绝所有传入网络数据包并回应一条主机禁止的 ICMP 消息,只有传出网络连接可用。
- public -- 只接受被选择的传入网络连接,用于公共区域。
- external -- 用于启用了地址伪装的外部网络,只接受选定的传入网络连接。
- dmz -- DMZ 隔离区,外部受限地访问内部网络,只接受选定的传入网络连接。
- work -- 对于处在你工作区域内的计算机,只接受被选择的传入网络连接。
- home -- 对于处在你家庭区域内的计算机,只接受被选择的传入网络连接。
- internal -- 对于处在你内部网络的计算机,只接受被选择的传入网络连接。
- trusted -- 所有网络连接都接受。
- 默认情况下,有以下的区域(zone)可用:
- FirewallD 使用 服务(service) 和 区域(zone) 来代替 iptables 的规则(rule)和链(chain)。
# 查看版本信息
[root@localhost ~]# firewall-cmd --version
0.4.4.4
# 查看帮助信息
[root@localhost ~]# firewall-cmd --help
# 查看运行状态
[root@localhost ~]# firewall-cmd --state
running
# 列出所有可用的区域
[root@localhost ~]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
# 列出所有区域的配置信息
[root@localhost ~]# firewall-cmd --list-all-zone
# 列出默认的区域 :
[root@localhost ~]# firewall-cmd --get-default-zone
public
# 查看默认区域的端口
[root@localhost ~]# firewall-cmd --list-ports
# 改变默认的区域 :
[root@localhost ~]# firewall-cmd --set-default-zone=dmz
[root@localhost ~]# firewall-cmd --get-default-zone
dmz
# 查看默认区域ssh服务是否允许,默认允许
[root@localhost ~]# firewall-cmd --query-service=ssh
yes
# 关闭服务,则无法再通过ssh连接服务器
[root@localhost ~]# firewall-cmd --remove-service=ssh
success
# 添加服务
[root@localhost ~]# firewall-cmd --add-service=ssh
success
# 查看都有哪些服务
[root@localhost ~]# firewall-cmd --list-service
dhcpv6-client ssh
# 也可以通过端口来实现 ssh通过tcp 22端口
[root@localhost ~]# firewall-cmd --query-port=22/tcp
no
# 添加端口,就可以通过ssh连接服务器了.端口和服务不冲突
[root@localhost ~]# firewall-cmd --add-port=22/tcp
success
# 移除端口
[root@localhost ~]# firewall-cmd --remove-port=22/tcp
success