防火牆作為網絡安全的第一道防線,其主要作用是:
防火牆通過檢查每個數據包的頭部信息(如源 IP、目標 IP、端口、協議等)來做出決策,常見的檢查方式有:
我們將使用 iptables 作為防火牆工具,它是 Linux 系統中最常用的防火牆管理工具之一。
sudo apt-get update
sudo apt-get install iptables
2.2 配置基本規則
在開始設置防火牆規則之前,我們需要清除現有的規則,並設置基礎的防火牆規則。
清除所有現有規則
bash
複製程式碼
sudo iptables -F
設置預設策略(DROP 所有流量,並只允許特定流量)
bash
複製程式碼
sudo iptables -P INPUT DROP # 阻止所有進來的流量
sudo iptables -P FORWARD DROP # 阻止轉發流量
sudo iptables -P OUTPUT ACCEPT # 允許所有出站流量
允許進行 SSH 連接
bash
複製程式碼
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允許 HTTP 和 HTTPS 流量
bash
複製程式碼
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
保存規則
bash
複製程式碼
sudo iptables-save > /etc/iptables/rules.v4
三、流量過濾策略設計
3.1 基於 IP 地址過濾
防火牆可以根據源 IP 或目標 IP 進行過濾,這在防止來自某些 IP 的攻擊時非常有用。
允許來自某個 IP 的流量
bash
複製程式碼
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
阻止來自某個 IP 的流量
bash
複製程式碼
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
3.2 基於端口過濾
可以根據端口來決定是否允許流量進入。例如,只允許某些服務端口的流量(如 HTTP 或 SSH)。
只允許端口 22(SSH)和端口 80(HTTP)的流量
bash
複製程式碼
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
3.3 基於協議過濾
除了基於端口過濾,防火牆還可以根據協議(如 TCP、UDP、ICMP)進行過濾。
允許 ICMP 流量(ping 命令)
bash
複製程式碼
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
阻止 UDP 流量
bash
複製程式碼
sudo iptables -A INPUT -p udp -j DROP
四、防火牆監控與日志設置
4.1 設置日志
防火牆可以生成日志來記錄進行過濾的流量,這對於追蹤攻擊和問題排查至關重要。
設置日志規則
bash
複製程式碼
sudo iptables -A INPUT -j LOG --log-prefix "INPUT DROP: " --log-level 4
查看防火牆日志
bash
複製程式碼
sudo tail -f /var/log/syslog
4.2 設置流量限制
防火牆也可以設置流量限制,避免某些特定服務或 IP 被濫用。
限制每秒最多 5 次連接
bash
複製程式碼
sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 5/s --limit-burst 10 -j ACCEPT
五、防火牆的高級配置
5.1 反向代理(Reverse Proxy)
反向代理可以將來自互聯網的請求轉發到內部服務器,這樣可以在防火牆和內部網絡之間增加一層安全保護。
常見的反向代理工具包括 Nginx 和 Apache HTTP Server。
安裝 Nginx
bash
複製程式碼
sudo apt-get install nginx
配置反向代理
nginx
複製程式碼
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080; # 將流量轉發到內部服務器
}
}
5.2 VPN 配置
為了進一步保護內部網絡,可以通過設置 VPN(虛擬專用網絡)來加密內部通信,確保外部用戶和內部系統之間的通信是安全的。
常見的 VPN 工具包括 OpenVPN 和 WireGuard。