centos7防火墙的一些操作
centos7新的firewalld防火墙有区域的概念,默认有下面九个区域,各自的作用如下
drop 任何传入本机的网络数据包都会被丢弃,并且不会回复,只允许本 机对外访问其他的服务器,推荐把需要进行网络限制的网卡绑定到这个区域
block 任何传入本机的网络数据包都会被丢弃,并且会回复一条拒绝访问的消息,只允许本机对外访问其他的服务器
public 除了ssh连接的22端口和dhcpv6-client的546端口,其他传入本机的网络数据包都会被丢弃,系统默认的防火墙就工作在这个区域
默认其他主机可以ping通本机
external 除了ssh连接的22端口和端口转发的连接,其他传入本机的网络数据包都会被丢弃
dmz 除了ssh连接的22端口,其他传入本机的网络数据包都会被丢弃
work 除了ssh连接的22端口和dhcpv6-client的546端口,其他传入本机的网络数据包都会被丢弃
home 除了ssh连接的22端口和dhcpv6-client的546端口,mdns的5353端口,samba服务的137,138端口,其他传入本机的网络数据包都会被丢弃
internal 除了ssh连接的22端口和dhcpv6-client的546端口,mdns的5353端口,samba服务的137,138端口,其他传入本机的网络数据包都会被丢弃
trusted 所有对本机的网络连接请求都会被接受,如果不想对网络进行任何限制,就把接口绑定到这个区域
使用firewall-cmd命令来对防火墙进行配置,经常使用的参数如下
--get-default-zone 查看系统默认的区域名称
--set-default-zone=<区域名称> 设置系统默认的区域名称并永久生效
--get-zones 显示可用的区域
--get-services 显示可用的服务
--get-active-zones 显示当前正在使用的区域
--add-source=ip地址或ip地址段 把源自此ip地址或ip地址段的流量导入到指定的区域
--remove-source=ip地址或ip地址段 在指定的区域移除此ip地址或ip地址段的流量
--add-port 添加端口
--remove-port 移除端口
--add-protocol 添加协议
--remove-protocol 移除协议
--add-rich-rule 创建富规则
--remove-rich-rule 删除富规则
--get-zone-of-interface=<网卡名称> 查看该网卡所在的区域
--add-interface=<网卡名称> 把该网卡的流量绑定到某个区域
--change-interface=<网卡名称> 把该网卡的流量更改到某个区域,一般使用这个命令,来对网卡的区域进行改变
--list-all 显示当前指定区域的网卡配置
--list-all-zones 显示所有区域的网卡配置
--reload 让防火墙重新应用新更改的规则
--panic-on 开启应急状况模式,会断开所有连接,只能本地登陆系统
--panic-off 关闭应急状况模式,这时就可以远程连接机器
--zone 指定区域
如果想让更改的规则永久生效,那么就需要在firewall-cmd命令后面加入
如果添加的规则,没有添加这个参数,那么系统重启后,新增加的规则就会失效
firewall-cmd --permanent
规则添加完了,以后在使用
firewall-cmd --reload
让规则生效
使用下面的命令启动和停止防火墙
systemctl start firewalld.service
systemctl restart firewalld.service
systemctl stop firewalld.service
firewall-cmd --get-active-zones
查看系统当前正在使用的区域和关联的网卡
firewall-cmd --zone=trusted --list-all
查看指定区域的详细配置,本例查看的是trusted区域
firewall-cmd --zone=drop --change-interface=ens33
把ens33网卡的区域设置为drop,这样任何想连接ens33的流量都会被丢弃,所有机器都不能访问ens33网卡,推荐把需要进行网络限制的网卡进行这样的设置,然后根据需要来开放某些端口,让指定的ip地址来访问
要把端口对某个ip地址开放,就需要使用下面的命令来进行设置
firewall-cmd --zone=drop --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.81" port protocol="tcp" port="22" accept"
上面的命令,就是在drop区域,设置了一条富规则,这个规则的意思就是允许192.168.0.81这个ip地址,可以访问22端口
如果要移除这个富规则,就使用下面的命令
firewall-cmd --zone=drop --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.0.81" port protocol="tcp" port="22" accept"
想对网卡进行网络限制,就按照上面的规则设置就可以了
如果要拒绝,那么就使用
firewall-cmd --zone=trusted --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.81" port protocol="tcp" port="22" reject"
表示如果源地址是192.168.0.81,那么就拒绝访问22端口
想对某个ip地址允许ping
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.31.77" protocol value="icmp" accept"
对于一个接受到的请求,具体使用哪个zone,防火墙是根据下面的规则来进行判断的:
如果使用了--add-source添加了某一个来源Ip地址,
如果设置的区域是drop区域,那么就会走drop区域的规则,如果不能匹配,那么就直接丢弃数据包
如果设置的区域是public区域,那么会先检查是否匹配public区域的规则,如果不匹配,那么还会继续匹配网卡默认区域的规则
如果设置的区域是trusted区域,那么就可以访问任何端口和协议
二,interface,接受请求的网卡地址的默认区域
如果来源地址不能和--add-source里面设置的地址匹配上,那么就会按照网卡设置的区域的规则进行匹配
比如在192.168.0.80的上面设置了下面的防火墙规则
firewall-cmd --zone=trusted --add-source=192.168.0.81
firewall-cmd --zone=drop --change-interface=ens33
因为192.168.0.81作为来源地址,被绑定到了trusted区域,所以只要来源是192.168.0.81的网络请求,都会被trusted区域的规则处理,如果是其他的ip地址,并且是访问ens33网卡的,那么因为防火墙规则没有绑定其他的来源地址,所以都会被ens33网卡绑定的drop区域的规则处理
还有一点要注意,一个来源地址只能被绑定到一个区域,不能被绑定到多个区域,如果要更改绑定区域,要先删除原来的绑定区域
比如上面要把来源地址192.168.0.81绑定到home区域,那么就要先删除原来绑定的trusted区域
使用下面的命令进行删除
firewall-cmd --zone=trusted --remove-source=192.168.0.81
在drop区域开放80端口
firewall-cmd --zone=drop --add-port=80/tcp
这个规则的作用就是允许任意地址访问80端口
在drop区域,允许ping
firewall-cmd --zone=drop --add-protocol=icmp
在drop区域,禁止ping
firewall-cmd --zone=drop --remove-protocol=icmp
注意上面的规则,都没有使用--permanent参数,所以只要服务器重启,这些规则就会失效,如果想让这些规则永久生效,就需要在这些规则前面加入--permanent参数
比如像下面这样
firewall-cmd --permanent --zone=trusted --add-source=192.168.0.198
firewall-cmd --permanent --zone=drop --add-interface=ens33
firewall-cmd --permanent --zone=drop --add-protocol=icmp
firewall-cmd --reload
上面就是使用--permanent参数添加了3条防火墙的规则,最后使用firewall-cmd --reload命令来让配置立即生效,并且上面配置的规则在服务器重启以后,还会继续生效
评论区