防火墙操作
防火墙基本操作
在CentOS 7中,新引入了firewalld服务(防火墙),取代了CentOS 6之前的iptables服务(防火墙)。
命令 |
作用 |
systemctl status firewalld |
查看防火墙状态 |
systemctl start firewalld |
开启防火墙 |
systemctl stop firewalld |
关闭防火墙 |
systemctl enable firewalld |
开机启动防火墙 |
systemctl disable firewalld |
开机不启动防火墙 |
操作步骤
- 查看防火墙状态
- 关闭防火墙
- 查看防火墙状态
- 开启防火墙
- 再次查看防火墙状态
效果如下图:
firewall-cmd操作
firewall-cmd是Linux中专门用于控制防火墙的命令。firewall引入了防火墙的zone
概念,即事先准备好的若干套防火墙策略模板,一般默认使用公共(public)区域。
将所有网络流量分为多个区域(zone),然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域,每个区域都定义了自己打开或者关闭的端口和服务列表。
[root@localhost ~]# firewall-cmd --get-zones block dmz drop external home internal public trusted work
- 丢弃(drop):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用 iptables -j drop。使用丢弃规则意味着将不存在响应。
- 阻塞(block):阻塞区域会拒绝进入的网络连接,返回 icmp-host-prohibited,只有服务器已经建立的连接会被通过即只允许由该系统初始化的网络连接。
- 公共(public):只接受那些被选中的连接,默认只允许 ssh 和 dhcpv6-client。这个 zone 是缺省 zone。
- 外部(external):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,即 ssh,而其它的连接将被丢弃或者不被接受。
- 隔离(dmz):如果想要只允许给部分服务能被外部访问,可以在 dmz 区域中定义。它也拥有只通过被选中连接的特性,即 ssh。
- 工作(work):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许,只允许 ssh,ipp-client 和 dhcpv6-client。
- 家庭(home):这个区域专门用于家庭环境。它同样只允许被选中的连接,即 ssh,ipp-client,mdns,samba-client 和 dhcpv6-client。
- 内部(internal):这个区域和工作区域(work)类似,只有通过被选中的连接,和 home 区域一样。
- 信任(trusted):信任区域允许所有网络通信通过。记住:因为 trusted 是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 trusted 是允许所有连接的。
firewall-cmd |
参数说明 |
--zone=public |
开放哪个网络,默认是public |
--list-all |
显示现有的规则 |
--add-port=端口/tcp |
添加到防火墙中端口号,对外是打开的 |
--remove-port=端口/tcp |
从防火墙的规则中删除端口号 |
--permanent |
永久添加规则 |
--reload |
重新加载规则,让新加的端口号起作用 |
操作步骤
- 显示现有的规则
- 永久开放443端口,添加到public区域,允许外部连接
- 重新加载防火墙的规则
- 重新显示现有的规则
- 从public区域中,永久移除443端口,不允许外部连接
- 重新加载防火墙的规则
- 重新显示现有的规则
操作命令
# 显示现有的规则 firewall-cmd --list-all # 永久开放443端口,添加到public区域,允许外部连接 firewall-cmd --zone=public --add-port=443/tcp --permanent # 重新加载防火墙的规则 firewall-cmd --reload # 重新显示现有的规则 firewall-cmd --list-all # 从public区域中,永久移除443端口,不允许外部连接 firewall-cmd --zone=public --remove-port=443/tcp --permanent # 重新加载防火墙的规则 firewall-cmd --reload # 重新显示现有的规则 firewall-cmd --list-all
效果如下图: