【記錄】firewall-cmd 配置服務器防火牆
文章目錄
版本:centos7 寫作時間:2020-05-30 |
一、firewalld簡介
firewalld 是centos7 默認的防火牆管理工具
1 優點
(1)支持動態更新,不重啓服務
(2)假如了zone的概念,可以在不同工作環境快速切換防火牆配置規則,域zone其實就是一個防火牆策略規則的集合
2 firewall的默認配置文件
/usr/lib/firewalld/ (系統·配置文件,儘量不要修改)
/etc/firewalld/ (用戶配置文件)
二 、firewalld的服務管理
服務管理 |
所謂服務管理,就是查看 某個服務是否開啓,是否開機自啓動,然後按需要改動它倆。
在centos7中,使用命令systemctl來管理服務。具體可參考博客 https://blog.csdn.net/qq_44817119/article/details/106357348
查看firewalld的當前運行狀態 | systemctl status firewalld |
---|---|
啓動firewalld服務 | systemctl start firewalld |
重啓firewalld服務 | systemctl restart firewalld |
關閉firewalld服務 | systemctl stop firewalld |
設置firewlld爲開機自啓動 | systemctl enable firewalld |
查看firewalld開機自啓動是否設置成功 | systemctl is-enabled firewalld |
關閉firewalld的開機自啓動 | systemctl distable firewalld |
三、配置防火牆
推薦在測試新的並且可能有危險的規則時,可以使用額外選項以一定時間後自動刪除某個規則,從而防止管理員意外鎖定某個系統:–timemout
運行時配置、永久配置 |
運行時配置 firewall-cmd -zone=public -add-service=smtp | 默認運作狀態(除非指定-permanent時爲永久配置),重啓失效,筆者猜測這就是前面說的firewalld的優點吧:支持動態更新,不重啓服務 |
---|---|
永久配置 firewall-cmd -zone=public --add-serrvice=smtp -permanent | 永久配置,不影響當前連接,重啓後生效firewall-cmd --reload |
更新規則 |
firewall-cmd --reload | 無需斷開連接,動態添加規則 |
---|---|
firewall-cmd --complete-reload | 斷開連接,類似重啓服務 |
1區域
區域 |
(1)區域分類
trusted | 允許所有的數據包 |
---|---|
home,internal | 拒絕流入的數據包,除非與流出的數據包相關,或者是 ssh,mdns,ipp-client,samba-client與 dhcpv6-client服務則允許 |
work | 拒絕流入的數據包,除非與流出的數據包相關 或者是 ssh ipp-client,dhcpv6-client |
public | 拒絕流入的數據包,除非與流出的數據包相關 或者是 ssh,dhcpv6-client |
external | 拒絕流入的數據包,除非與流出的數據包相關 ssh |
dmz | 拒絕流入的數據包,除非與流出的數據包相關 ssh |
block | 拒絕流入的數據包,除非與流出的數據包相關 |
drop | 拒絕流入的數據包,除非與流出的數據包相關 |
列出的許多命令都採用 --zone=選項來確定所影響的區域,如果在這些命令中省略–zone,則將使用默認區域
(2)區域的查看與設置(tab鍵可以補全長參數)
firewall-cmd 參數
查看默認區域名稱 | –get-default-zone |
---|---|
設置默認區域,使其永久生效 | –set–default-zone=<區域名稱> |
顯示可用的區域 | –get-zones |
顯示當前正在使用的區域或者網卡名稱 | –get-active-zones |
顯示所有區域的網卡配置參數、資源、端口以及服務信息等 | –list-all-zones |
查看指定網卡所屬區域 | –get-zone-of-interface=網卡名稱 |
將網卡添加到某區域 | –zone=public --add-interface=網卡名稱 |
demo:
#獲取默認區域
[root@centos7 yue]# firewall-cmd --get-default-zone
public
#獲取所有區域
[root@centos7 yue]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
#獲取當前正在使用的區域
[root@centos7 yue]# firewall-cmd --get-active-zone
public
interfaces: ens33 bridge0
#獲取網卡ens33所在的區域
[root@centos7 yue]# firewall-cmd --get-zone-of-interface=ens33
public
#列出所有區域的網卡配置參數、端口、資源以及服務等
[root@centos7 yue]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
drop
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
·······
2 端口
端口 |
查看某個域開放的端口 | firewall-cmd --zone=public --list-ports |
---|---|
在某個域中加入一個端口 | firewall-cmd --zone=dmz --add-port=8080/tcp |
3 服務
服務 |
查看開啓了哪些服務 | firewall-cmd --zone=public --get-services |
---|---|
查看某個服務是否開啓 | firewall-cmd --zone=public --query-service ftp |
增加一個服務 | firewall-cmd --zone=work --add-service=smtp |
刪除一個服務 | –romove-service=smtp |
4 IP
IP |
1 限制IP地址訪問
(1)禁止 IP爲192.168.43.100的地址訪問80端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.43.100" port protocal="tcp" port="80" reject"
(2) 重新載入防火牆規則,使設置生效
firewall-cmd --reload
(3) 查看已經設置的規則
firewall-cmd --zone=public --list-rish-rules
2 解除IP地址限制
(1)解除剛纔被限制的192.168.43.100
firewall-cmd --perrmanent --add-rich-rule="rule family="ipv4" source address ="192.168.43.100" port protocal="tcp" port="80" accept"
(2) 重新載入防火牆規則,使設置生效
firewall-cmd --reload
(3) 查看已經沒有192.168.0.200的限制了
firewall-cmd --zone=public --list-rish-rules
如果設置未生效,可嘗試直接編輯規則文件,刪除原來的設置規則,重新載入防火牆即可
vim /etc/firewalld/zones/public.xml
3 限制某IP地址段 對80端口的訪問
(1)如果我們需要限制192.168.43.0-192.168.43.255這一整段IP,禁止他們訪問
firewall-cmd --permanent --add-rich-rule="rule family ="ipv4" source address="192.168.43.0/24" port protocal="tcp" port="80" reject"
(2) 重新載入防火牆規則,使設置生效
firewall-cmd --reload
5 常用查看命令
查看版本 |
firewall-cmd --version | 查看版本 |
---|---|
firewall-cmd --help | 幫助信息 |
6 緊急模式
緊急模式 |
firewall-cmd --panic-on | 開啓緊急模式,斷開所有網絡連接,遠程控制的服務器不要這麼幹,ssh不過去了。 |
---|---|
firewall-cmd --panic-off | 關閉緊急模式 |
firewall-cmd --query-panic | 查看是否開啓了緊急模式 |