因爲剛練習完iptables的內容,所以此處需要先打開firewalld
1 firewalld的開啓
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
2.關於firewalld的域
trusted | 接受所有的網絡連接 |
---|---|
home | 用於家庭網絡,允許接受ssh mdns ipp-client samba-client dhcp-client |
work | 工作網絡 ssh ipp-client dhcp-client |
public | 公共網絡 ssh dhcp-client |
dmz | 軍級網絡 ssh |
block | 拒絕所有 |
drop | 丟棄 ,所有數據全部丟棄無任何回覆 |
internal | 內部網絡 ssh mdns ipp-client samba-client dhcp-client |
external | ipv4網絡地址僞裝轉發 sshd |
練習:修改域
3.關於firewalld的設定原理及數據存儲
- 火牆配置目錄: /etc/firewalld
- 火牆模塊目錄: /lib/firewalld
練習:在火牆服務中添加http(更推薦之前學過的用一條命令直接添加的方法)
- 初始狀態(服務中不包含http)
- 切換目錄,並查看
public.xml
文件
- 新增一行,添加http服務
- 重啓後進行查看,此時添加成功了
練習2:切換到trusted域後再次添加 - 初始狀態
- 使用命令直接添加
- 切換域後,會出現
trusted.
文件
說明其存儲方式都是模塊化的存儲方式,當我們使用命令時,系統自動生成了可擴展標記語言裏面的文件。
練習3:將http改爲lyq
我們所使用的、別人預先放置的xml腳本就在/lib/firewalld中 firewall-cmd --get-services
- 切換目錄
- 複製
- 修改端口爲8080
- 重啓服務後進行添加驗證
4.firewalld的管理命令
firewall-cmd(後面的- -之間應該是沒有空格的,是因爲CSDN中的顯示問題。練習的時候--
)
firewall-cmd --state 查看火牆狀態
firewall-cmd --get-active-zones 查看當前火牆中生效的域
firewall-cmd --get-default-zone 查看默認域
firewall-cmd --list-all 查看默認域中的火牆策略
firewall-cmd --list-all --zone=work 查看指定域的火牆策略
firewall-cmd --set-default-zone=trusted 設定默認域
firewall-cmd --get-services 查看所有可以設定的服務
firewall-cmd --permanent --remove-service=cockpit 移除服務
firewall-cmd --reload
firewall-cmd --permanent --add-source=172.25.254.17 --zone=block指定數據來源訪問指定域
firewall-cmd --reload
firewall-cmd --permanent --remove-source=172.25.254.17 --zone=block 刪除自指定域中的數據來源
firewall-cmd --permanent --remove-interface=enp1s0 --zone=public 刪除指定域的網絡接口
firewall-cmd --permanent --add-interface=enp1s0 --zone=block 添加指定域的網絡接口
firewall-cmd --permanent --change-interface=enp1s0 --zone=public 更改網絡接口到指定域
firewall-cmd
練習1:常見的信息查看
練習2:移除服務
使用--permanent
表示永久生效,因爲直接修改的是/etc/firewall/zones/public.xml
中的文件。如果不使用,在reload之後又會恢復到原來的狀態
練習3:指定數據來源訪問指定域
- 初始狀態下真機能夠連接workstation
- 在workstation中設置172.25.254.17(真機ip)爲黑名單
- 使用172.25.254.17(真機ip)連接workstation
- 刪除該數據來源
- 再次嘗試ssh,連接成功
練習4:對指定域的網絡接口實現刪除、增加與修改(使用rhel8雙網卡主機完成) firewall-cmd --remove-interface=enp6s0 --zone=public
刪除
firewall-cmd --add-interface=enp6s0 --zone=block
將enp6s0添加到block中
firewall-cmd --change-interface=enp6s0 --zone=public
修改
5.firewall中的高級規則
firewall-cmd --direct --get-all-rules #查看高級規則
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.17 -p tcp --dport 22 -j ACCEPT #添加
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.33 -j REJECT #刪除
練習1:設定只允許某服務訪問
真機:172.25.254.17
rhel8:172.25.254.33
workstation:172.25.254.22
- 初始狀態(真機和rhel8都可連接workstation)
- 設置workstation中拒絕rhel8(33)的ssh接入
- 此時結果表明rhel8無法ssh連接,真機斷開連接重新連後,還是能正常連接
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.33 -j REJECT
刪除
刪除後可以rhel8就可正常連接了
6.firewall中的NAT
SNAT
firewall-cmd --permanent --add-masquerade #在雙網卡主機中打開,workstation就可訪問外網。操作結果與iptables中練習的一致
firewall-cmd --reload
DNAT
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.17 #在workstation(22)中進行設置,使用rhel8(33)連接,最終連接位置是真機(17)
firewall-cmd --reload