【记录】firewall-cmd 配置服务器防火墙
文章目录
版本:centos7 写作时间:2020-05-30 |
一、firewalld简介
firewalld 是centos7 默认的防火墙管理工具
1 优点
(1)支持动态更新,不重启服务
(2)假如了zone的概念,可以在不同工作环境快速切换防火墙配置规则,域zone其实就是一个防火墙策略规则的集合
2 firewall的默认配置文件
/usr/lib/firewalld/ (系统·配置文件,尽量不要修改)
/etc/firewalld/ (用户配置文件)
二 、firewalld的服务管理
服务管理 |
所谓服务管理,就是查看 某个服务是否开启,是否开机自启动,然后按需要改动它俩。
在centos7中,使用命令systemctl来管理服务。具体可参考博客 https://blog.csdn.net/qq_44817119/article/details/106357348
查看firewalld的当前运行状态 | systemctl status firewalld |
---|---|
启动firewalld服务 | systemctl start firewalld |
重启firewalld服务 | systemctl restart firewalld |
关闭firewalld服务 | systemctl stop firewalld |
设置firewlld为开机自启动 | systemctl enable firewalld |
查看firewalld开机自启动是否设置成功 | systemctl is-enabled firewalld |
关闭firewalld的开机自启动 | systemctl distable firewalld |
三、配置防火墙
推荐在测试新的并且可能有危险的规则时,可以使用额外选项以一定时间后自动删除某个规则,从而防止管理员意外锁定某个系统:–timemout
运行时配置、永久配置 |
运行时配置 firewall-cmd -zone=public -add-service=smtp | 默认运作状态(除非指定-permanent时为永久配置),重启失效,笔者猜测这就是前面说的firewalld的优点吧:支持动态更新,不重启服务 |
---|---|
永久配置 firewall-cmd -zone=public --add-serrvice=smtp -permanent | 永久配置,不影响当前连接,重启后生效firewall-cmd --reload |
更新规则 |
firewall-cmd --reload | 无需断开连接,动态添加规则 |
---|---|
firewall-cmd --complete-reload | 断开连接,类似重启服务 |
1区域
区域 |
(1)区域分类
trusted | 允许所有的数据包 |
---|---|
home,internal | 拒绝流入的数据包,除非与流出的数据包相关,或者是 ssh,mdns,ipp-client,samba-client与 dhcpv6-client服务则允许 |
work | 拒绝流入的数据包,除非与流出的数据包相关 或者是 ssh ipp-client,dhcpv6-client |
public | 拒绝流入的数据包,除非与流出的数据包相关 或者是 ssh,dhcpv6-client |
external | 拒绝流入的数据包,除非与流出的数据包相关 ssh |
dmz | 拒绝流入的数据包,除非与流出的数据包相关 ssh |
block | 拒绝流入的数据包,除非与流出的数据包相关 |
drop | 拒绝流入的数据包,除非与流出的数据包相关 |
列出的许多命令都采用 --zone=选项来确定所影响的区域,如果在这些命令中省略–zone,则将使用默认区域
(2)区域的查看与设置(tab键可以补全长参数)
firewall-cmd 参数
查看默认区域名称 | –get-default-zone |
---|---|
设置默认区域,使其永久生效 | –set–default-zone=<区域名称> |
显示可用的区域 | –get-zones |
显示当前正在使用的区域或者网卡名称 | –get-active-zones |
显示所有区域的网卡配置参数、资源、端口以及服务信息等 | –list-all-zones |
查看指定网卡所属区域 | –get-zone-of-interface=网卡名称 |
将网卡添加到某区域 | –zone=public --add-interface=网卡名称 |
demo:
#获取默认区域
[root@centos7 yue]# firewall-cmd --get-default-zone
public
#获取所有区域
[root@centos7 yue]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
#获取当前正在使用的区域
[root@centos7 yue]# firewall-cmd --get-active-zone
public
interfaces: ens33 bridge0
#获取网卡ens33所在的区域
[root@centos7 yue]# firewall-cmd --get-zone-of-interface=ens33
public
#列出所有区域的网卡配置参数、端口、资源以及服务等
[root@centos7 yue]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
drop
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
·······
2 端口
端口 |
查看某个域开放的端口 | firewall-cmd --zone=public --list-ports |
---|---|
在某个域中加入一个端口 | firewall-cmd --zone=dmz --add-port=8080/tcp |
3 服务
服务 |
查看开启了哪些服务 | firewall-cmd --zone=public --get-services |
---|---|
查看某个服务是否开启 | firewall-cmd --zone=public --query-service ftp |
增加一个服务 | firewall-cmd --zone=work --add-service=smtp |
删除一个服务 | –romove-service=smtp |
4 IP
IP |
1 限制IP地址访问
(1)禁止 IP为192.168.43.100的地址访问80端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.43.100" port protocal="tcp" port="80" reject"
(2) 重新载入防火墙规则,使设置生效
firewall-cmd --reload
(3) 查看已经设置的规则
firewall-cmd --zone=public --list-rish-rules
2 解除IP地址限制
(1)解除刚才被限制的192.168.43.100
firewall-cmd --perrmanent --add-rich-rule="rule family="ipv4" source address ="192.168.43.100" port protocal="tcp" port="80" accept"
(2) 重新载入防火墙规则,使设置生效
firewall-cmd --reload
(3) 查看已经没有192.168.0.200的限制了
firewall-cmd --zone=public --list-rish-rules
如果设置未生效,可尝试直接编辑规则文件,删除原来的设置规则,重新载入防火墙即可
vim /etc/firewalld/zones/public.xml
3 限制某IP地址段 对80端口的访问
(1)如果我们需要限制192.168.43.0-192.168.43.255这一整段IP,禁止他们访问
firewall-cmd --permanent --add-rich-rule="rule family ="ipv4" source address="192.168.43.0/24" port protocal="tcp" port="80" reject"
(2) 重新载入防火墙规则,使设置生效
firewall-cmd --reload
5 常用查看命令
查看版本 |
firewall-cmd --version | 查看版本 |
---|---|
firewall-cmd --help | 帮助信息 |
6 紧急模式
紧急模式 |
firewall-cmd --panic-on | 开启紧急模式,断开所有网络连接,远程控制的服务器不要这么干,ssh不过去了。 |
---|---|
firewall-cmd --panic-off | 关闭紧急模式 |
firewall-cmd --query-panic | 查看是否开启了紧急模式 |