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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章