本文主要介紹三種在 Linux 系統中常用的防火牆,可以通過whereis xxx
命令來檢視是否系統已經安裝有
1. ufw 命令示例
# 檢視ufw狀態和已設定防火牆的所有規則
ufw status
# 啟動 ufw 防火牆
ufw enable
# 關閉防火牆
ufw disable
# 啟動預設防禦(阻止外部連線,放行對外連線)
ufw default deny
# 允許其它主機訪問本機 53 埠,協議包含 tcp 和 udp
ufw allow 53
# 允許其它主機使用 tcp 協議訪問本機 25 埠
ufw allow 25/tcp
# ufw 也可以檢查 /etc/services 檔案,明白伺服器的名字及對應的埠和協議
ufw allow smtp
#UFW同時支援出入口過濾。使用者可以使用in或out來指定向內還是向外。如果未指定,預設是inufw allow in http 許可訪問本機http埠
# 禁止訪問外部 smtp 埠,不告知"被防火牆阻止"
ufw reject out smtp
# 禁止本機 192.168.1.1 對外訪問,告知"被防火牆阻止"
uwf deny out to 192.168.1.1
# 要刪除規則,只要在命令中加入 delete 就行
uwf delete deny 80/tcp
# 系統日誌儲存於/var/log/ufw.log,LEVEL指定不同的級別 ,預設級別是'低'
ufw logging on|off LEVEL
# 允許來自192.168.0.0-192.168.255.255的資料通過eth0網路卡進入主機
ufw allow out on eth1 to 10.0.0.0/8
# 拒絕來自10.0.0.0/8域tcp協議指向192.168.0.1埠25的資料進入本機
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
# 允許經eth1進入,eth2發出的資料經本機路由
ufw route allow in on eth1 out on eth2
例項
允許訪問 SSH
sudo ufw allow 22/tcp
設定允許訪問 HTTP
sudo ufw allow 80/tcp
設定允許訪問 HTTPS
sudo ufw allow 443/tcp
防火牆服務簡述與安裝
Centos7 預設的防火牆是 firewall,替代了以前的 iptables
firewalld 服務引入了一個信任級別的概念來管理與之相關聯的連線與介面。它支援 ipv4 與 ipv6,並支援網橋,採用 firewall-cmd (command) 或 firewall-config (gui) 來動態的管理 kernel netfilter 的臨時或永久的介面規則,並實時生效而無需重啟服務。
# firewall 安裝
yum install firewalld
# 檢視 firewall 版本
firewall-cmd --version
firewalld 服務基本使用
目的 | 命令 |
---|---|
檢視防火牆狀態 | systemctl status firewalld |
關閉防火牆,停止 firewall 服務 | systemctl stop firewalld |
開啟防火牆,啟動 firewall 服務 | systemctl start firewalld |
重啟防火牆,重啟 firewall 服務 | systemctl restart firewalld |
檢視 firewall 服務是否開機自啟 | systemctl is-enabled firewalld |
開機時自動啟動 firewall 服務 | systemctl enable firewalld.service |
開機時自動禁用 firewall 服務 | systemctl disable firewalld.service |
firewalld-cmd 防火牆命令使用
1.檢視 firewall-cmd 狀態
# 檢視 firewall-cmd 狀態
firewall-cmd --state
# 檢視已開啟的所有埠
firewall-cmd --zone=public --list-ports
# 開啟指定埠(--permanent 永久生效,沒有此引數重啟後失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
# 關閉指定埠
firewall-cmd --zone=public --remove-port=9898/tcp --permanent
firewall-cmd --reload
通過修改 public.xml 檔案修改防火牆埠
vim /usr/lib/firewalld/zones/public.xml
檢視防火牆配置資訊
iptables -L
新增配置 iptables.rules
Ubuntu預設沒有 iptables 配置檔案,需通過`iptables-save > /etc/network/iptables.up.rules` 生成
iptables配置檔案路徑及檔名建議為 /etc/network/iptables.up.rules ,因為執行 iptables-apply 預設指向該檔案,也可以通過-w引數指定檔案
Ubuntu 沒有重啟 iptables 的命令,執行`iptables-apply`生效
Ubuntu iptables 預設重啟伺服器後清空,需在 /etc/network/interfaces 裡寫入 `pre-up iptables-restore < /etc/network/iptables.up.rules` 才會開機生效
常用 iptables 命令
# 允許所有訪問22埠
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 拒絕所有訪問22埠
iptables -A INPUT -p tcp --dport 22 -j DROP
# 只允許10.0.0.2訪問22埠
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.2 -j ACCEPT
允許策略一定要寫到拒絕的上面,否則沒用
# 檢視iptables策略
iptables -L
# 儲存策略到指定檔案(後面檔案路徑及檔名可自定義)
iptables-save > /etc/network/iptables.up.rules
# 應用策略
iptables-apply
# 刪除策略
需先 `cat /etc/network/iptables.up.rules` 確認刪除第幾行,或者直接操作 `/etc/network/iptables.up.rules` 檔案也行
iptables -D INPUT 2
本作品採用《CC 協議》,轉載必須註明作者和本文連結