文章目录
firewall常规操作
firewall-cmd --state ##查看防火墙的状态
firewall-cmd --list-service # 查看开放的服务
firewall-cmd --get-service # 查看全部支持的服务
firewall-cmd --zone=public --list-ports # 查看开放的端口
firewall-cmd --reload ##重载防火墙规则,不会中断连接,清除临时配置,加载配置文件中的永久配置
firewall-cmd --complete-reload ##重载防火墙,中断用户的连接(清除规则,重建规则,在更新之前首先会将策略设置为DROP,等更新完成之后再恢复为ACCEPT)
firewall-cmd --panic-on ##紧急模式,强制关闭所有网络连接,--panic-off是关闭紧急模式
firewall-cmd --query-panic # 查看是否为应急模式
firewall-cmd --get-active-zones # 查看激活的域
firewall-cmd --zone=public --list-rich-rules # 查看添加的规则
firewall-cmd --set-default-zone=work ##更改默认的区域,
firewalld的区域zone介绍(默认共有9个)
#不同的区域之间的差异是其对待数据包的默认行为不同,firewalld的默认区域为public;
public(公开)
block(拒绝)
dmz(非军事化)
drop(丢弃)
external(外部)
home(家庭)
internal(内部)
trusted(信任)
work(工作区)
firewalld判断次序
#对于一个接收到的请求具体使用哪个zone,firewalld是通过三种方式来判断的:
1、source,来源地址
2、Interface,接收请求的网卡
3、firewalld配置的默认区域(zone)
这三个方式的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去找,如果前两个都找不到才会使用第三个默认区域。
#查询drop区域是否允许请求ssh和https服务的流量
firewall-cmd --zone=drop --query-service=ssh
firewall-cmd --zone=drop --query-service=https
配置文件介绍
#对端口的操作,如开放端口等信息,所以直接修改此文件也是可以的
/etc/firewalld/zones/public.xml
#配置文件结构(非常简单,主要有两个文件和三个目录)
文件:firewalld.conf、lockdown-whitelist.xml
目录:zones、services、icmptypes
#修改firewalld配置文件的方法(主要是三种)
1、firewall-config:是图形化工具
2、firewall-cmd: 命令行工具
3、直接编辑xml文件
动作中查看操作:
--get-icmptypes ##查看支持的所有ICMP类型
--get-zones ##查看所有区域
--get-default-zone ##查看当前的默认区域
--get-active-zones ##查看当前正在使用的区域
--get-services ##查看当前区域支持的服务
--list-services ##查看当前区域开放的服务列表
--list-all ##查看此区域内的所有配置,类似与iptables -L -n
新建--add或删除--remove规则:
--add-interface=eth0 ##将网络接口添加到默认的区域内
--add-port=12222/tcp --permanent ##添加端口到区域开放列表中
--add-port=5000-10000/tcp --permanent ##将端口范围添加到开放列表中;
--add-service=ftp --permanent ##添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表中的名称一致)
--add-source=192.168.1.1 ##添加源地址的流量到指定区域
--remove-source=192.168.1.1 ##删除源地址的流量到指定区域
--change-interface=eth1 ##改变指定的接口到其他区域
--remove-service=http ##在home区域内将http服务删除在开放列表中删除
--add-masquerade ##开启SNAT(源地址转换)
--query-masquerade ##查询SNAT的状态
--remove-interface=eth0 ##将网络接口在默认的区域内删除
--query-interface=eth0 ##确定该网卡接口是否存在于此区域
--add-forward-port=port=513:proto=tcp:toport=22:toaddr=192.168.100.101 ##端口转发
Rich(富)规则:
当基本firewalld语法规则不能满足要求时,可以使用以下更复杂的规则
.rich-rules 富规则,功能强,表达性语言,查看帮助:man 5 firewalld.richlanguage
.rich规则比基本的firewalld语法实现更强的功能,不仅实现允许/拒绝,还可以实现日志syslog和auditd,也可以实现端口转发,伪装和限制速率
rich规则实施顺序有以下四点
a.该区域的端口转发,伪造规则
b.该区域的日志规则
c.该区域的允许规则
d.该区域的拒绝规则
每个匹配的规则都生效,所有规则都不匹配,该区域默认规则生效;
Rich规则选项:
--add-rich-rule=’rule’ ##新建rich规则
--remove-rich-rule=’rule’ ##删除rich规则
--query-rich-rule=’rule’ ##查看单条rich规则
--list-rich-rules ##查看rich规则列表
实例
# 开放单个端口(--permanent 表示永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 开放端口范围
firewall-cmd --zone=public --add-port=8388-8389/tcp --permanent
# 添加服务,添加https
firewall-cmd --add-service=https --permanent
# 移除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
Rich规则示例:
#拒绝从192.168.0.11的所有流量
firewall-cmd --permanent --zone=cla***oom --add-rich-rule=‘rule family=ipv4 source address=192.168.0.11/32 reject‘
#限制每分钟只有两个连接到ftp服务
firewall-cmd --add-rich-rule=’rule service name=ftp limitvalue=2/m accept’
#抛弃esp协议的所有数据包
firewall-cmd --permanent --add-rich-rule=‘rule protocol value=esp drop‘
#接受所有192.168.1.0/24子网端口范置7900-7905的TCP流量
firewall-cmd --permanent --zone=vnc --add-rich-rule=‘rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept‘
##开启SNAT
firewall-cmd --permanent --add-rich-rule=‘rule family=ipv4 source address=192.168.0.0/24 masquerade‘
##使用rule规则实现端口转发,to-addr选项如果不指定默认转发到本机
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 forward-port port=80 protocol=tcp to-port=8080 to-addr=192.168.100.100'
# 对 147.152.139.197 开放TCP 10000端口
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="147.152.139.197/32"
port protocol="tcp" port="10000" accept'
# 拒绝47.52.39.197 的TCP 10001端口:
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="47.52.39.197/32"
port protocol="tcp" port="10001" reject'
# 对192.168.0.1 这个IP全部放行
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.1/32" accept';
# 开放所有权限给192.168.0.0/16 这个网段儿的主机
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.0/16" accept';
#将原本访问本机888端口的流量转发到本机22端口
firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22
#将原本访问本机888端口的流量转发到ip为192.168.2.208的主机的22端口,需要开启masquerade
firewall-cmd --zone=drop --add-masquerade
firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.2.208
#伪装,将来自局域网192.168.2.0/24网段访问外网的流量映射为网络出口公网IP,即修改源IP地址
firewall-cmd --zone=drop --add-masquerade
firewall-cmd --zone=drop --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 masquerade"
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论