区域相当于防火墙配置好的策略模板信息,直接就可以使用
只有传出网络连接可用 意思是只有服务器本身出去的流量,客户端接收到回应才可 以进来,如果不是回应的流量是进不来的
只接受被选择的网络连接 意思是客户端发送请求的时候,指定的服务我是允许通过的,没有 我指定的服务我是不允许的.
链添加规则
则已被添加到链表中
[root@lb01 ~] # firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted
[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP
[root@lb01 ~] # firewall-cmd --reload
[root@lb01 ~] # firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist 添加一条链规则为blacklist到raw表中
[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist 在raw表中指定blacklist链添加规则
[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted 规则为单个IP每分钟并发量为1
[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP 其他的都阻止
[root@lb01 ~] # firewall-cmd --reload 重新加载
[root@lb01 ~] # firewall-cmd --direct --get-all-rules
ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted
ipv4 raw blacklist 1 -j DROP
[root@lb01 ~] #
[root@lb01 ~] # firewall-cmd --direct --get-all-rules 获取所有链上面的规则信息
ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted
ipv4 raw blacklist 1 -j DROP
[root@lb01 ~] #
[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw blacklist
[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw PREROUTING
[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw blacklist
[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw PREROUTING
[root@lb01 ~] # firewall-cmd --direct --remove-chain ipv4 raw blacklist
[root@lb01 ~] # firewall-cmd --reload
[root@lb01 ~] # firewall-cmd --direct --get-all-rules
[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw blacklist 永久表中删除链规则信息
[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw PREROUTING 永久删除链上的规则信息
[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw blacklist 删除链上的规则信息
[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw PREROUTING 删除链上的规则信息
[root@lb01 ~] # firewall-cmd --direct --remove-chain ipv4 raw blacklist 删除链上的规则信息
[root@lb01 ~] # firewall-cmd --reload 重新加载配置信息
[root@lb01 ~] # firewall-cmd --direct --get-all-rules 查看链上的所有规则信息
[root@lb01 ~] # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 172.16.1.0/24
[root@lb01 ~] # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j SNAT -s 172.16.1.0/24 --to-source 10.0.0.5
[root@lb01 ~] # firewall-cmd --direct --get-all-passthroughs 查看添加的直接规则
[root@lb01 ~] # firewall-cmd --permanent --direct --remove-passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 172.16.1.0/24 删除直接规则
[root@lb01 ~] # firewall-cmd --permanent --direct --remove-passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j SNAT -s 172.16.1.0/24 --to-source 10.0.0.5 删除直接规则
log [prefix="<PREFIX TEXT>" [level=<LOGLEVEL>] [limit value="<RATE/DURATION>"]
debug 之一
例如:limit value=3/m 会将日志消息限制为每分钟最多三条。
注意:limit value = 3/m 这里是有 BUG 的,常常时间控制会不精准。
[root@lb01 ~] # firewall-cmd --permanent --zone=public --add-rich-rule=‘
> rule family=ipv4
> source address=192.168.1.31
> port port=200-5000
> protocol=tcp accept‘
success
[root@lb01 ~] # firewall-cmd --permanent --zone=work --add-rich-rule=‘rule service name="ssh"
log prefix="ssh"
level="notice"
limit value="3/m" accept‘
success
[root@lb01 ~] #
[root@lb01 ~] # firewall-cmd --add-rich-rule=‘rule family=ipv6 source address="2001:db8::/64" service name="dns" audit limit value="1/h" reject‘ --timeout=300
success
[root@lb01 ~] #
[root@lb01 ~] # firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=192.168.1.1 service name=ssh drop‘ --timeout=300
success
[root@lb01 ~] #
[root@lb01 ~] # firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=172.16.1.0/24 service name=http log prefix="NEW HTTP" level=notice limit value="3/s" accept‘
success
You have new mail in /var/spool/mail/root
[root@lb01 ~] #
firewalld 支持两种类型的网络地址转换(NAT) 伪装和端口转发。可以在基本级别使用常规
frewall-cmd 规则来同时配置这两者,更高级的转发配置可以使用富规则来完成。
这两种形式的 NAT 会在发送包之前修改包的某些方面如源或目标。
伪装是一种形式的网络地址转换(NAT)
内网地址想出去外网的时候,需要进行伪装成外网地址才可以出去访问
[root@lb01 ~] # firewall-cmd --zone=public --add-masquerade
[root@lb01 ~] # firewall-cmd --zone=public --add-rich-rule=‘rule family=ipv4 source address=172.25.0.10/32 masquerade‘
通过端口转发指向单个端口的流量将转发到不同的计算机不同端口上或者不同的计算机上
通常是一个隐藏的服务器在另外一个服务器后面
注意:当端口转发配置为将包转发到不同计算机时,从该计算机的任何回复通常将直接从该计算机发送到原始客户端。这将在大部分配置上导致无效连接,因此转发到的计算机必须通过执行端口转发的防火墙来进行伪装。常见配置是将端口从防火墙计算机转发到已在防火墙
后面伪装的计算机,即这种通过目标端口转发的方式需要开启伪装(masquerade)
firewall-cmd --permanent --zone=<ZONE> --add-forward-port=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=<IPADDR>]
firewall-cmd --permanent --zone=public --add-forwardport=port=513:proto=tcp:toport=132:toaddr=192.168.0.254
forward-port port=<PORTNUM> protocol=tcp|udp [to-port=<PORTNUM>] [to-addr=<ADDRESS>]
firewall-cmd --permanent --zone=work --add-rich-rule=‘rule family=ipv4 source address=l92.168.0.0/24 forward-port port=80 protocol=tcp to-port=8080‘
[root@lb01 ~] # firewall-cmd --permanent --add-rich-rule=‘rule family=ipv4 source address=172.16.2.0/32 forward-port port=443 protocol=tcp to-port=22‘
success
You have new mail in /var/spool/mail/root
[root@lb01 ~] #
[root@lb01 ~] # firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=172.16.2.10 forward-port port=80 to-port=80 protocol=tcp to-addr=172.16.5.10‘
success
[root@lb01 ~] #
[root@lb01 ~] # firewall-cmd --panic-on 打开一键断网
success
[root@lb01 ~] # firewall-cmd --panic-off 关闭一键断网
success
[root@lb01 ~] # firewall-cmd --complete-reload
[root@lb01 ~] # cat /lib/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short> 修改成自己要设置的区域名称
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/> 允许什么流量的服务来进入防火墙
<service name="dhcpv6-client"/> 允许什么流量的服务来进入防火墙
</zone>
You have new mail in /var/spool/mail/root
[root@lb01 ~] #
[root@lb01 ~] # cat /lib/firewalld/services/ntp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Network Time Protocol (NTP) Server</short> 服务的一个标题
<description>The Network Time Protocol (NTP) allows to synchronize computers to a time server. Enable this option, if you are providing a NTP server. You need the ntp or chrony package installed for this option to be useful.</description> 服务描述
<port protocol="udp" port="123"/> 配置服务下面的协议和端口信息
</service>
You have new mail in /var/spool/mail/root
[root@lb01 ~] #
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
systemctl status firewalld
firewall-cmd --state
/etc/firewalld/{services,zones}/*.xml 优先级最高,permanent 模式生效的策略会放到这里
/lib/firewalld/{services,zones}/*.xml 优先级要低些,是一些默认配置,可以当做模板使用
[root@lb01 ~] # firewall-cmd --list-all
[root@lb01 ~] # firewall-cmd --panic-off 应急模式关闭(远程ssh可以连接)
[root@lb01 ~] # firewall-cmd --query-panic 查看是否为应急模式(yes是,no不是)
[root@lb01 ~] # firewall-cmd --panic-on 应急模式开启(远程ssh不可以连接,只能本地可以登录)
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip/netmask>" accept"
例子
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept"
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" protocol
value="<protocol>" accept"
例子
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol
value="icmp" accept"
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port
protocol="<port protocol>" port="<port>" accept"
例子
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port
protocol="tcp" port="22" accept"
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source
address="192.168.2.0/24" port protocol="tcp" port="22" reject"
firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=172.16.2.10/32 forward-
port port=80 to-port=22 protocol=tcp accept‘
firewall-cmd --permanent --add-masquerade
firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=172.16.2.10/32 forward-
port port=80 to-port=80 protocol=tcp to-addr=172.17.0.254 accept‘
要在更大程度上控制要进行伪装的客户端,还可以使用富规则。
firewall-cmd --permanent --zone=<ZONE> --add-rich-rule=‘rule family=ipv4 source
address=192.168.1.7 masquerade‘
原文:https://www.cnblogs.com/liangyuxing/p/12045072.html