https://www.cnblogs.com/xiluhua/p/5929222.html
https://www.cnblogs.com/xxoome/p/7115614.html
https://www.linuxidc.com/Linux/2018-11/155155.htm
https://www.cnblogs.com/zqifa/p/linux-firewall-1.html
https://blog.csdn.net/dhjibk/article/details/80558248
http://lxgyw.cn/@@@/15216870315478.html
一、介紹
防火牆守護 firewalld 服務引入了一個信任級別的概念來管理與之相關聯的連接與接口。它支持 ipv4 與 ipv6,並支持網橋,採用 firewall-cmd (command) 或 firewall-config (gui) 來動態的管理 kernel netfilter 的臨時或永久的接口規則,並實時生效而無需重啓服務。
Firewall 能將不同的網絡連接歸類到不同的信任級別,Zone 提供了以下幾個級別
drop: 丟棄所有進入的包,而不給出任何響應
block: 拒絕所有外部發起的連接,允許內部發起的連接
public: 允許指定的進入連接
external: 同上,對僞裝的進入連接,一般用於路由轉發
dmz: 允許受限制的進入連接
work: 允許受信任的計算機被限制的進入連接,類似 workgroup
home: 同上,類似 homegroup
internal: 同上,範圍針對所有互聯網用戶
trusted: 信任所有連接
二、安裝
# yum install firewalld
如果需要圖形界面的話,則再安裝
# yum install firewall-config
三、查看firewall服務狀態
systemctl status firewalld
firewall-cmd --state
firewall-cmd --set-default-zone=public #設置默認接口區域
四、開啓、重啓、關閉、firewalld.service服務
# 開啓
service firewalld start
systemctl start firewalld.service
systemctl enable firewalld.service #開啓firewall開機啓動 (設置開機自啓)
# 重啓
service firewalld restart
systemctl restart firewalld.service
firewall-cmd --reload #重啓防火牆(修改配置後要重啓防火牆)
# 關閉
service firewalld stop
systemctl stop firewalld.service
systemctl disable firewalld.service #禁止firewall開機啓動
五、查看防火牆規則
firewall-cmd --list-all
netstat -ntlp 或:firewall-cmd --list-ports #查看開放端口
systemctl list-unit-files | grep enabled #查看已啓動的服務列表
systemctl --failed #查看啓動失敗的服務列表
firewall-cmd --version #查看版本:
firewall-cmd --help #查看幫助:
firewall-cmd --zone=public --list-ports #查看所有打開的端口
firewall-cmd --zome=dmz --list-ports #列出 dmz 級別的被允許的進入端口
firewall-cmd --zone=work --add-service=smtp #添加 smtp 服務至 work zone
firewall-cmd --get-zone-of-interface=eth0 #顯示eth0接口屬於的域
六、查看防火牆設置開機自啓是否成功:
systemctl is-enabled firewalld.service
firewall-cmd --get-active-zones #顯示當前正在使用的區域與網卡名稱
firewall-cmd --get-default-zone #查詢默認的區域名稱
firewall-cmd --get-zones #顯示可用的區域
七、開啓特定端口
開端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
開放端口區間:firewall-cmd --permanent --zone=public --add-port=8080-9999/tcp #永久
重啓防火牆:systemctl restart firewalld.service #重啓後才能生效
更新防火牆規則:firewall-cmd --reload
firewall-cmd --complete-reload # 更新規則,重啓服務
命令含義:
--zone #作用域
--add-port=80/tcp #添加端口,格式爲:端口/通訊協議
--permanent #永久生效,沒有此參數重啓後失效
# 查詢端口是否開放
firewall-cmd --query-port=8080/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --zone=public --add-interface=eth0 --permanent #添加某接口至某信任等級,譬如添加 eth0 至 public,再永久生效
firewall-cmd --set-default-zone=public #設置 public 爲默認的信任級別
八、端口轉發
要打開端口轉發,則需要先
# firewall-cmd --zone=external --add-masquerade
然後轉發 tcp 22 端口至 3753
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
轉發 22 端口數據至另一個 ip 的相同端口上
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
轉發 22 端口數據至另一 ip 的 2055 端口上
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
端口轉發的目的:當我們在真機裏登陸172.25.254.218這臺主機,進行僞裝後,當通過 22 端口訪問本機時,將請求轉發到 172.25.254.118這臺 主機上,同時還要開啓 masquerade轉發接口
# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.118
#添加端口22並通過tcp協議,轉發到172.25.254.118這臺主機的22端口
# --add-forward-port= 添加端口
# proto=tcp 通過tcp協議進行轉發
# toport= 轉發到某個端口
# toaddr= 轉發到172.25.254.118這臺主機上
# firewall-cmd --add-masquerade #打開轉發端口
九、開啓應急模式阻斷所有網絡連接
# firewall-cmd --panic-on
//在 0.3.0 之前的 FirewallD版本中, panic 選項是 –enable-panic 與 –disable-panic
關閉應急模式
# firewall-cmd --panic-off
查看應急模式的狀態
# firewall-cmd --query-panic
在不改變狀態的條件下重新加載防火牆:
# firewall-cmd --reload
防火牆預定義的服務配置文件是xml文件 目錄在 /usr/lib/firewalld/services/
在 /etc/firewalld/services/ 這個目錄中也有配置文件 但是/etc/firewalld/services/目錄 優先於 /usr/lib/firewalld/services/ 目錄
修改配置文件後 使用命令重新加載
# firewall-cmd --reload
在每次修改 端口和服務後 /etc/firewalld/zones/public.xml 文件就會被修改 所以也可以在文件中之間修改 然後重新加載
十、設置某個ip 訪問某個服務
添加規則
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
刪除上面設置的規則
#firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
ip 192.168.0.4/24 訪問 http
設置後 public.xml 就會出現變化
十一、修改規則
firewall-cmd --change-interface=eth0 --zone=trusted #修改區域爲trusted的網絡接口eth0
firewall-cmd --remove-interface=eth0 --zone=trusted #移除trusted區域的接口eth0
firewall-cmd --add-interface=eth0 --zone=public #添加public區域的接口eth0
十二、地址僞裝
1、基本配置
(1)server這臺主機作爲轉換服務器;
(2)desktop這臺主機作爲局域網內的主機;
(3)真機這臺主機作爲外網的主機;
2、基本原理:局域網內的主機訪問外網主機時,爲了隱藏局域網中的私有地址,通過轉換服務器進行地址的轉換,並在局域網的主機裏添加網關(路由器),當外網主機查詢時只能看到共有地址,這就是地址轉換;
3、具體操作
轉換服務器
(1)添加兩個網卡,eth0,eth1;
(2)配置網絡,eth0設置爲公共地址(172.25.254.218),eth1設置爲私有地址(192.168.1.218),重啓網絡後,纔可以生效
(3)打開轉發端口:firewall-cmd –add-masquerade
(4)編輯配置文件,開啓內核路由功能sysctl -p ( net.ipv4.ip_forward=1),配置文件爲/etc/sysctl.conf
局域網內的主機
(1)設置局域網內的主機ip(192.168.1.118)和網關GATEWAY(192.168.1.218),重啓網絡後生效
(2)登陸外網主機 ssh [email protected]
外網主機
查看誰登陸過這臺主機:w -i