三期总目录链接
目录
一、firewalld高级配置
Firewalld支持两种类型的网络地址转换 | |
IP地址伪装(masquerade) | 可以实现局域网多个地址共享单一公网地址上网 IP地址伪装仅支持IPv4,不支持IPv6 |
端口转发(Forward-port) | 也称为目的地址转换或端口映射;通过端口转发,指定IP地址及端口的流量将被转发到相同计算机上的不同端口,或者转发到不同计算机上的端口 |
直接规则(direct interface) 1、允许管理员手动编写的iptables、ip6tables和ebtables 规则插入到Firewalld管理的区域中2、通过firewall-cmd命令中的--direct选项实现3、除显示插入方式之外,优先匹配直接规则
例:把192.168.0.0/24ip地址范围列入黑名单
添加规则链 blacklist
[root@C-1 ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
success
来自192.168.0.0/24的数据包路由前选择匹配blacklist
[root@C-1 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklistsuccess
将‘blacklisted’内容的日志每分钟记录一次
[root@C-1 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklisted"
success
匹配blacklist规则的数据丢弃
[root@C-1 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP
success
富规则(rich language) 1、表达性配置语言,无需了解iptables语法 2、用于表达基本的允许/拒绝规则、配置记录(面向syslog和auditd)、端口转发、伪装和速率限制
超时选项(测试和调试)
超时:包含超时选项的规则添加到防火墙后,计时器会自动倒计时,归零时该规则删除
--timeout=超时时间
处理富语言规则的常用选项 | 说明 |
--add-rich-rule=‘RULE’ |
向指定区域中添加RULE,如果没有指定区域,则为默认区域 |
--remove-rich-rule=‘RULE’ |
从指定区域中删除RULE,如果没有指定区域,则为默认区域 |
--query-rich-rule=‘RULE’ |
查询RULE是否已添加到指定区域,如果未指定区域,则为默认区域。规则存在,则返回0,否则返回1 |
--list-rich-rules |
输出指定区域的所有富规则,如果未指定区域,则为默认区域 |
富语言语法解释
source | 限制源IP地址,源地址可以是一个IPv4、IPv6地址或者一个网络地址段 |
destination | 限制目标地址,目标地址使用跟源地址相同的语法 |
element:要素,只能是以下6种类型之一 | |
service | 服务名称是firewalld提供的其中一种服务。要获得支持的服务列表,输入以下命令:firewall-cmd—-get-services。如果一个服务提供了一个目标地址,它和规则中的目标地址冲突,则会导致一个错误。命令格式为:service name=service_name |
port | 端口可以是一个独立端口数字,或者是端口范围,如5060~5062。协议为TCP或UDP。命令格式为:port port=number_or_range protocol=protocol |
protocol | 协议,协议ID号 或 协议名 查询可用协议/etc/protocols。 命令格式为:protocol value=协议ID号 或 协议名 |
icmp-block | 阻断一个或多个ICMP类型,输入 firewall-cmd --get-icmptypes命令查看支持的ICMP类型列表 命令格式为:icmp-block name=icmptype_name |
masquerade | 规则里的IP伪装。用源地址而不是目的地址来把伪装限制在一个范围内 |
forward-port | 指定的TCP 或 UDP 协议的数据包转发到本机的其他端口,或另一台机器,或另一台机器上的其他端口。port 和to-port可以是一个单独的端口数字,或一个端口范围。而目的地址是一个简单的IP 地址。 命令格式为: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.持续时间的单位为 s 秒.m 分钟,h 小时,d天,最大限定值是1/d(每天最多一条日志进入) |
audit | 审核类型可以是accept、reject或drop中的一种,但不能在audit 命令后指定,因为审核类型将会从规则动作中自动收集。审核不包含自身参数,但可以选择性地增加限制。审核的使用是可选择的 |
accept reject drop |
选择一个行为,命令格式为:accept | reject [type=reject type] | drop. 为accept时,所有新的连接请求都将被允许 为reject时.连接将被拒绝,发起端将接到一个拒绝信息 为drop时,所有数据包会被丢弃,并且不会向发起端发送任何信息 |
富规则配置举例
没有指定区域会过默认区域publec区域设置
1、给认证报头协议AH使用新的IPV4和IPV6连接
[root@C-11 ~]# firewall-cmd --add-rich-rule='rule protocol value=ah accept'
success
2、允许新的IPv4和IPv6连接FTP,并使用审核每分钟记录一次
[root@C-11 ~]# firewall-cmd --add-rich-rule='rule service name=ftp log limit value=1/m audit accept'
success
3、允许来自192.168.0.0/24地址的TFTP协议的IPv4连接,并且使用系统日志每分钟记录一次
[root@C-11 ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept'
success