linuxfirewalld防⽕墙-富规则
富规则官⽅⽂档
可表达firewalld的基本语法中未涵盖的⾃定义防⽕墙规则
语法
[source]
[destination]
rvice|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop|mark] DROP 的动作是丢包,不响应;REJECT 是拒绝请求,同时向发送⽅回送拒绝信息
说明:
source
指定源地址,可以是⼀个ipv4/ipv6的地址或⽹段,不⽀持使⽤主机名。
destination
指定⽬的地址,⽤法和source相同。
rvice
服务名称是 f irewalld 提供的其中⼀种服务。要获得被⽀持的服务的列表,输⼊以下命令:
firewall-cmd --get-rvices 。命令为以下形式:
rvice name=rvice_name
port
端⼝既可以是⼀个独⽴端⼝数字,⼜或者端⼝范围,例如,5060-5062。协议可以指定为 tcp 或
udp 。命令为以下形式:
port port=number_or_range protocol=protocol
protocol
粤语词典协议值可以是⼀个协议 ID 数字,或者⼀个协议名。预知可⽤协议,请查阅 /etc/protocols。
命令为以下形式:blood on the dance floor
protocol value=protocol_name_or_ID
icmp-block
⽤这个命令阻绝⼀个或多个ICMP类型。IC MP 类型是 firewalld⽀持的ICMP类型之⼀。
要获得被⽀持的ICMP类型列表,输⼊以下命令: firewall-cmd --get-icmptypes
icmp-block在内部使⽤ reject 动作,因此不允许指定动作。命令为以下形式:
icmp-block name=icmptype_name
masquerade
打开规则⾥的 IP 伪装。⽤源地址⽽不是⽬的地址来把伪装限制在这个区域内。不允许
指定动作。
forward-port
从⼀个带有指定为 tcp 或 udp 协议的本地端⼝转发数据包到另⼀个本地端⼝,或另⼀台
机器,或另⼀台机器上的另⼀个端⼝。port 和 to-port 可以是⼀个单独的端⼝数字,或⼀个
端⼝范围。⽽⽬的地址是⼀个简单的 IP 地址。不允许指定动作,命令使⽤内部动作
accept 。命令为以下形式:
forward-port port=number_or_range protocol=protocol /
to-port=number_or_range to-addr=address
log
注册含有内核记录的新连接请求到规则中,⽐如系统记录。你可以定义⼀个前缀⽂本,
记录等级可以是 emerg、alert、crit、error、warning、notice、info 或者 debug 中的
⼀个。命令形式:
log [prefix=prefix text] [level=log level] limit value=rate/duration
(等级⽤正的⾃然数 [1, ..] 表达,持续时间的单位为 s 、 m 、 h 、 d 。 s 表⽰秒, m 表⽰旅途劳顿
分钟, h表⽰⼩时, d 表⽰天。最⼤限定值是 1/d ,意为每天最多有⼀条⽇志进⼊。)
audit
审核为发送到 aud i td 服务的审核记录来注册提供了另⼀种⽅法。审核类型可以是
ACCEPT、REJECT或DROP中的⼀种,但不能在 audit命令后指定,因为审核类型将会从规
则动作中⾃动收集。审核不包含⾃⾝参数,但可以选择性地增加限制。审核的使⽤是可选
择的。选择 accept 所有新的连接请求都会被允许。选择 reject ,连接将被拒绝,连接来源
伦敦布鲁内尔大学将接到⼀个拒绝信息。拒绝的类型可以被设定为使⽤另⼀种值。选择 drop , 所有数据
包会被丢弃,并且不会向来源地发送任何信息。
选项说明
--add-rich-rule='rule' 向指定区域中添加rule。
--remove-rich-rule='rule' 从指定区域删除rule。
--query-rich-rule='rule' 查询rule是否添加到指定区域,如果存在则返回0,否则返回1。
--list-rich-rules 输出指定区域的所有富规则。
⽰例
rule family="ipv4" source address="10.0.0.1/32" forward-port port="5555" protocol="tcp" to-port="22" to-addr="10.0.0.7" --permanent
# 针对IP开放指定端⼝
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.23.142.80" port protocol="tcp" port="80" accept"
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.186.5.90" port protocol="tcp" port="80" accept"
# 针对IP
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"
firewall-cmd --permanent --removeadd-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"
# 针对ip段
中文翻译粤语firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.186.7.0/24" drop" --timeout=10
afu
# 当⽤户来源IP地址是10.0.0.1主机,则将⽤户请求的5555端⼝转发⾄后端172.16.1.7的22端⼝
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1 forward-port port=5555 protocol=tcp to-port=22 to-addr=172.16.1.7' 未验证:
# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0" accept'
允许192.168.122.0/24主机所有连接。
# firewall-cmd --add-rich-rule='rule rvice name=ftp limit value=2/m accept'
每分钟允许2个新连接访问ftp服务。
# firewall-cmd --add-rich-rule='rule rvice name=ftp log limit value="1/m" audit accept'
同意新的 IP v4 和 IP v6 连接 FT P ,并使⽤审核每分钟登录⼀次。
# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0/24"
rvice name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'
北京北大青鸟
允许来⾃192.168.122.0/24地址的新 IPv4连接连接TFTP服务,并且每分钟记录⼀次。prison
# firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
丢弃所有icmp包
洋洋得意是什么意思# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.122.0/24 reject' --
timeout=10
当使⽤source和destination指定地址时,必须有family参数指定ipv4或ipv6。如果指定超时,
规则将在指定的秒数内被激活,并在之后被⾃动移除。
# firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" rvice
name="dns" audit limit value="1/h" reject' --timeout=300
拒绝所有来⾃2001:db8::/64⼦⽹的主机访问dns服务,并且每⼩时只审核记录1次⽇志。
# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source
address=192.168.122.0/24 rvice name=ftp accept'
允许192.168.122.0/24⽹段中的主机访问ftp服务
文明从我做起
# firewall-cmd --add-rich-rule='rule family="ipv6" source address="1:2:3:4:6::" forward-port
to-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"'
转发来⾃ipv6地址1:2:3:4:6::TCP端⼝4011,到1:2:3:4:7的TCP端⼝4012