firewalld高级应用-2

1. Firewall直接规则

Firewall提供了“direct interface(直接接口)”,它允许管理员手动编写的iptables、ip6tables、ebtables规则直接插入到firewall的管理区域中,适用于应用程序,而不是应用程序;直接端口使用firewall-cmd命令中的 --direct选项实现

1)例:卡其黑名单,添加一些规则将某个IP范围列入黑名单

firewall-cmd --direct  --permanent  -add-chain ipv4 raw  blacklist

\# 使用firewall-cmd命令调用iptables规则参数,在raw表中创建规则链“blacklist”。 ipv4 指的是iptables


firewall-cmd --direct  --permanent --add-rule Ipv4 raw PREROUTING 0 -s 192.168.1.0/24 -j blacklist

\# 在路由之前检测到192.168.1.0/24网段的IP地址的数据包,加入到blocklist规则链中。


firewall-cmd  --direct  --permanent  --add-rule  ipv4  raw  blacklist  0  -m limit --limit 1/min -j LOG --log-prefix blacklisted

\# 每分钟生成以下日志文件


firewall-cmd --direct --permanent --add-rule  ipv4  raw  blacklist  1  -j  DROP

\# 将来自规则链“blacklist”中的数据包丢弃

2)firewall执行优先级

直接规则 > 富规则 > 区域规则

2. firewall-cmd命令之富规则(RULE)

firewall-cmd有四个选项可以用于处理富规则,所有这些选项都可以使用

		`--add-rich-rule				向指定的区域中添加RULE,如没有指定区域,则是默认区域`

​		`--remove-rich-rule			在指定的区域中删除RULE,如没有指定区域,则是默认区域`

​		`--query-rich-rule			查看RULE是否已添加到指定的区域,存在返回0,否则1`

​		`--list-rich-rules			输出指定区域的所有富规则,如果位置区域,为默认区域`


3. 富语言

  • 什么是富语言???

富语言提供了一种不需要了解iptables语法通过语言配置复杂ipv4和ipv6防火墙规则的机制。

富语言规则可用于表达基本的允许/拒绝规则,也可用与配置记录(syslog、auditd)、端口转发、端口伪装、速率限制

1)富语言格式

rule [ family= ipv4|ipv6 ] [ source address=ip/mask] [ destination address=ip/mask ] [要素/对象] [ audit ] [ accept|reject|drop ]
  • 可选项:
family= 	:如果对某个网段或IP进行规则时,需要指定ipv4还是ipv6

source address	: 限制的源IP地址,可以是ipv4、ipv6,也可以是一个地址段,例: 192.168.1.0/24

destination address	 :要素,限制的对象,以下是要素的类型

service :指定服务名称,格式为: service name=服务名称

port:指定端口号,可以是一个独立的端口号或一个范围,TCP/UDP		命令格式:	port port=5000-5050 protocol=TCP/UDP

或者  port port=8888/tcp

protocol:协议,可以是一个协议号或者协议名称,命令格式:				如果有端口号 : port port=port protocol=TCP/UDP

如果没有端口号: protocol value=协议名

icmp-block:阻断一个或多个ICMP类型,命令格式:icmp-block 			name=icmp type_name

masquerade:规则里的IP伪装,启用IP伪装

forward-port:将指定TCP或UDP协议的数据包转发到本机的其他端		口,命令格式forward-port port=端口号 protocol=TCP/UDP 		to-port=端口号 to-addr=address

log:注册有内核日志的连接请求到规则中,日志级别:emerg、alert、crit、error、warning、notice、info、debug ; 命令格式:log[perfix=perfix text] [level=log level] limit values=时间/单位 ;单位: s(秒)、m(钟)、h(时)、d(天)

audit:审核,

accept|reject|drop:

4. 富语言–实例

1)例:为认证包头协议AH使用新的ipv4和ipv6连接

[root@localhost ~]# firewall-cmd --add-rich-rule='rule protocol value=ah accept'

Success

2)例:允许新的ipv4和ipv6连接FTP,并使用审核每分钟记录一次

[root@localhost ~]# firewall-cmd --add-rich-rule='rule service name=ftp log limit value=1/m audit accept'


3)允许来自1.0.0.0/8网段的TFTP协议的ipv4连接,并使用系统日志每分钟记录一次

[root@localhost ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="1.0.0.0/8" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept'


4)将源192.168.1.2地址加入到白名单,并允许来自这个地址的所有链接

[root@localhost ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.2" accept'


5)拒绝来自public区域中的IP地址192.168.1.1的所有流量

[root@localhost ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.1.1/24 reject'

6)丢弃来自默认区域中任何位置的所有传入的ipsec esp协议包

[root@localhost ~]# firewall-cmd --add-rich-rule='rule protocol value="esp" drop'

Success

7)子192.168.1.0/24子网的dmz区域中,接受端口7900-7905的所有的TCP

[root@localhost ~]# firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept'

Success

8)接受从work区域中到ssh的新连接,以notice级别且每分钟最多三条消息的方式将新连接记录到syslog

 	[root@localhost ~]# firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept'

Success

9)在接下来的5分钟内,拒绝从默认区域中的子网192.168.2.0/24到DNS的新连接,并把拒绝的连接记录到audit系统,且每小时最多一条

[root@localhost ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.2.0/24 service name=dns audit limit value=1/h reject' --timeout=300

success

你可能感兴趣的:(firewalld)