防火牆
RHEL4/5/6 工具使用的是iptables
RHEL7 firewalld
RHEL8 firewalld
防火牆的管理工具是的作用,配置規則用的
允許:192.168.0.10/24 訪問你的系統的那個服務
規則的添加,刪除,或者修改,都是工具來完成的。
完成包過濾的不是由這個工具來完成的,比如ip: 10.10.10.10
就會被丟棄。完成匹配以及包處理是由防火牆的子系統來完成的!在系統由很多的包過濾模塊,所有的包處理都是由這些模塊來實現的。
7和8是有區別的
RHEL7:netfilter 子系統
RHEL8:nftables 增強了netfilter這是一個新的過濾包和數據分類子系統,其增強了netfileter的部分代碼,保留理論netfileter的架構。
前端的規則配置:firewalld
對於之前的版本iptables 7版本是可以使用的 8版本沒有安裝
firewalld是7和8 的主流工具,可以轉換成iptables不建議做
[root@server ~]# firewall-cmd --list-all #查看狀態
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
zone的類型
[root@server ~]# firewall-cmd --list-all-zones | grep ^[a-z]
block 任何一個數據包如果進入了block zone 默認丟棄
dmz ssh
drop 除非與傳出流量相關,否者丟棄所有
external ssh,通過此區域轉發給ipv4進行偽裝
home cockpit、dhcpv6-client、mdns、samba-cliebt、 ssh
internal ssh、mdns、ipp-client、samba/dhcpv6-client
public (active)cockpit、dhcpv6-client、ssh
trusted 任何一個數據包如果進入block zone默認允許通過
work cockpit、dhcpv6-client、ssh
firewall 的三個要素
(1)如果你定義了一個源ip關聯一個zone,那麼處於這個網段數據包,就會進入zone匹配規則
(2)如果一個數據包的源ip沒有關聯zone,就看這個數據包從那個網卡進入的,就可以將網卡關聯zone
(3)如果一個數據包的源或者進入的網卡都沒有關聯zone,那麼去默認zone匹配規則。
1.將源關聯到zone
firewall-cmd --permanent --add-source=192.168.0.10/24 --zone=home
source為空是應為要重新加載 firewalld-cmd --reload
重啟
--perman 永久生效 --source 來源 --zone 區 success 成功
查看
firewal-cmd --list-all --zone=home
重新加載
firewalld-cmd --reload 重啟
在zone內關聯到那些源
firewall-cmd --list-sources --zone=home
查看是否在zone內
firewall-cmd --query-source=192.168.0.10/24 --zone=home yes
修改一個源,去關聯一個zone
firewall-cmd --permanent --change-source=192.168.0.10/24 --zone=public
從一個zone中移除一個源
firewall-cmd --permanent --remove-source=192.168.0.10/24 --zone=public
2.通過網卡關聯zone
firewall-cmd --get-default-zone 查看zone規則
firewall-cmd --get-zone-of-interface=ens33
3.查看一個網卡是否加入一個zone
firewall-cmd --query-interface=ens33 --zone=public
4.對於網卡不會remove?
原因:優先級低 change修改
firewall-cmd --change-interface=ens33 --zone=home --per
The interface is under control of NetworkManager, setting zone to 'home'.
success
匹配規則
學會zonen內設置規則
基本規則;只要你將,服務,或者端口,協議加入到zone內,那麼就是允許訪問的。
添加服務
firewall-cmd --permanent --add-service=http --zone=home
移除服務
firewall-cmd --remove-service=http --permanent --zone=home
success
添加端口
firewall-cmd --add-port=80/tcp --permanent --zone=home
success
移除端口
firewall-cmd --remove-port=80/tcp --permanent --zone=home
success
添加協議
firewall-cmd --add-protocol=tcp --permanent --zone=home
success
移除協議 協議不用隨便添加
firewall-cmd --reload
target:一種默認的處理動作 如果你的數據包在整個zone內沒有找到規則,那麼默認的處理方式就可以使用。
accept: 允許trust 默認就是允許
drop 直接丟棄
reject 拒絕 會有一個
firewall-cmd --set-target=REJECT --zone=home --per
success 更改默認配置
firewall-cmd --list-all --zone=home
並不能對源進行操作
firewall-cmd --remove-source=192.168.0.10/24 --zone=home
success
firewall-cmd --reload 重啟
success
firewall-cmd --list-all --zone=home 查看
home (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: ens33
sources: 192.168.0.10/24
services: cockpit dhcpv6-client mdns samba-client ssh
ports:
protocols: tcp
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
重新創建一個 IP
ip addr add 10.10.10.10/24 dev ens33
[root@server html]# ip a s
1: lo: <loopback> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000/<loopback>
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <broadcast> mtu 1500 qdisc fq_codel state UP group default qlen 1000/<broadcast>
link/ether 00:0c:29:3c:66:52 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.10/24 brd 192.168.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 10.10.10.10/24 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::1ef2:bc63:656d:1a4d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
我們訪問一下
[root@server html]# curl http://192.168.0.10
test filewall rule
[root@server html]# curl http://10.10.10.10
test filewall rule
能通是應為子在zone內
rich rules :附加規則 RHEL7 版本 指定源和動作
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.10.10.10/24 service name=http reject'
端口
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 port port=80 protocol=tcp reject'
[root@server html]# firewall-cmd --list-all --zone=public
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.10.10.10/24" service name="http" reject
rule family="ipv4" source address="10.10.10.0/24" port port="80" protocol="tcp" reject
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 protocol value=tcp reject'
端口轉發
firewall-cmd --permanent --zone=trusted --add-forward-port=port=5423:proto=tcp:toport=80
success
firewall-cmd --reload 重啟
port -m -t http_port_t -p tcp 5423
閱讀更多 新盟教育向前老師 的文章