Debian虛擬機防火墻配置技巧
對于大多數Debian用戶,UFW(Uncomplicated Firewall) 是管理防火墻的首選工具,它基于iptables但提供了更簡潔的命令行接口,適合新手快速上手。若需更底層的高級配置(如復雜規則、自定義鏈),再選擇iptables。
安裝與啟用
首先更新軟件包列表并安裝UFW:
sudo apt update && sudo apt install ufw
啟用UFW(啟用后會默認拒絕所有傳入連接,允許所有傳出連接):
sudo ufw enable
啟用時系統會提示是否允許SSH連接(若通過SSH管理虛擬機,必須選擇“是”,否則會導致斷連)。
常用規則操作
sudo ufw allow 80/tcp # 允許HTTP
sudo ufw allow 443/tcp # 允許HTTPS
sudo ufw allow 22/tcp # 允許SSH
sudo ufw allow from 192.168.1.100
sudo ufw allow mysql # 等同于允許3306/tcp
sudo ufw status numbered
查看)或直接指定規則刪除:sudo ufw delete 3 # 刪除第3條規則
sudo ufw delete allow 80/tcp # 刪除允許80/tcp的規則
verbose
模式顯示詳細信息):sudo ufw status # 簡略狀態
sudo ufw status verbose # 詳細狀態
高級UFW配置
sudo ufw limit 22/tcp
sudo ufw allow in on eth2 to any port 3306
sudo ufw logging on
sudo ufw reset
若需更靈活的規則(如端口轉發、自定義鏈),可使用iptables,但需手動保存規則并設置開機加載:
安裝與基本配置
安裝iptables:
sudo apt update && sudo apt install iptables
配置默認策略(拒絕所有傳入,允許所有傳出):
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
允許已建立的連接(避免中斷現有會話):
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允許SSH(22/tcp)、HTTP(80/tcp)、HTTPS(443/tcp):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
拒絕其他所有入站連接(作為最后一條規則):
sudo iptables -A INPUT -j DROP
保存與自動加載規則
Debian默認不保存iptables規則,需手動保存:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
創建開機加載腳本(/etc/network/if-pre-up.d/iptables
):
sudo tee /etc/network/if-pre-up.d/iptables <<EOF
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4
EOF
sudo chmod +x /etc/network/if-pre-up.d/iptables
此時重啟虛擬機后,iptables規則會自動加載。
默認策略設置
無論使用UFW還是iptables,都應遵循“默認拒絕,顯式允許”原則:
sudo ufw default deny incoming
(拒絕所有傳入)、sudo ufw default allow outgoing
(允許所有傳出);sudo iptables -P INPUT DROP
(拒絕所有傳入)、sudo iptables -P OUTPUT ACCEPT
(允許所有傳出)。SSH安全配置
/etc/ssh/sshd_config
,修改Port 2222
,然后重啟SSH;PermitRootLogin no
(需用普通用戶+sudo);測試與驗證
telnet
或nmap
測試端口是否開放(如nmap -p 80 your_vm_ip
);sudo ufw status
)或iptables規則(sudo iptables -L -n -v
),確保無沖突規則;/var/log/ufw.log
)或系統日志(journalctl -u ufw
),排查異常連接。