我的 iptables 安全嗎?
我
rc.local
在我的新 Ubuntu 伺服器上有這個:iptables -F iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --dport 9418 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport 9418 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --dport 5000 -m state --state NEW,ESTABLISHED -j ACCEPT # Heroku iptables -A INPUT -i eth0 -p tcp --sport 5000 -m state --state ESTABLISHED -j ACCEPT # Heroku iptables -A INPUT -p udp -s 74.207.242.5/32 --source-port 53 -d 0/0 --destination-port 1024:65535 -j ACCEPT iptables -A INPUT -p udp -s 74.207.241.5/32 --source-port 53 -d 0/0 --destination-port 1024:65535 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP
9418 是 Git 的埠。5000 是用於管理 Heroku 應用程序的埠。並且是我們
74.207.242.5
的74.207.241.5
DNS 伺服器。你認為這是安全的嗎?你能看到這裡有什麼洞嗎?
**更新:**為什麼阻止輸出很重要?這台機器僅供我使用。
我能看到的唯一主要漏洞是 IPv6。你需要
ip6tables
那個。如果您的任何服務在 IPv6 上偵聽(其中許多服務,包括 ssh,預設情況下在 IPv6 上偵聽),那麼攻擊者可以使用它來完全繞過您上面的所有規則。當 IPv6 可用時,網路將優先使用 IPv6。假設您的
OUTPUT
策略是DROP
,您已經很好地限制了 IPv4。跳過該
RELATED
選項可能意味著您在服務出現故障並停止偵聽時獲得超時而不是立即拒絕,因為我理解TCP RST
數據包既不是也不是NEW
在ESTABLISHED
這種情況下。回答您問題的更新:當它不僅被您使用時。
無論我們多麼小心,我們總是有可能遺漏了什麼,或者我們一時粗心,我們允許其他人在一定程度上控制我們的盒子。攻擊者一旦站穩腳跟,他們要做的第一件事就是下載權限提升工具包、rootkit、他們的命令和控制系統以及他們真正想在盒子上執行的任何東西。限制出站連接意味著他們無法下載該權限提升工具包,這意味著他們被困在以 Apache 使用者或 Git 使用者或任何他們設法攻擊的身份執行。沒有root權限,他們無法隱藏,也無法修改防火牆。這不會永遠阻止攻擊者,但它可能會阻止他足夠長的時間讓你注意到他在那里或讓他感到沮喪以至於他放棄並去更容易的地方。
上述規則意味著遠端文件包含攻擊只有在遠端文件託管在 SSL 上時才會起作用。如果你在這個盒子和網際網路之間放置了一個代理伺服器,並且讓它只允許某些 URL 模式,你可以在它的軌道上阻止 RFI,同時仍然允許正常操作。這是縱深防禦。