Linux

防火牆將我鎖定在 ssh 之外

  • November 3, 2011

只是嘗試製作一個簡單的腳本,將 iptables 配置為阻止所有傳入和傳出流量,預設埠 22 上的 ssh 和埠 8888 上的 udp 除外。

這就是我所擁有的:

#!/bin/sh
#
# Flush all current rules from iptables
#
iptables -F

#
# Set default policies for INPUT, FORWARD and OUTPUT chains
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

#
# Allow SSH connections on tcp port 22
#
iptables -A INPUT -i eto0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eto0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

#
# Set access for localhost
#
iptables -A INPUT -i lo -j ACCEPT

#
# Accept connections on 8888 for vpn access from client
#
iptables -A INPUT -i eth0 -p udp --dport 8888 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --sport 8888 -m state --state ESTABLISHED -j ACCEPT

#
# Apply forwarding for OpenVPN Tunneling
#
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT     
iptables -t nat -A POSTROUTING -s 10.8.0.0./24 -o eth0 -j MASQUERADE   
iptables -A FORWARD -j REJECT

#
# Enable forwarding
# 
echo 1 > /proc/sys/net/ipv4/ip_forward

#
# List rules
#
iptables -L -v

但是當我執行它時,我被鎖定在我的 vps 之外,必須重新啟動它才能重新進入。我真的看不出我哪裡出錯了……而且執行這個防火牆後 vpn 也無法工作。

我還想阻止所有埠上對公共 ip 的所有 ping,但不知道如何。

因為您被鎖定的原因是 “eto0!=eth0” ,並在配置完所有規則並允許所有介面上的所有傳出流量後最後配置策略。

對於 ping 相關規則,請在icmpman iptables上執行並閱讀

此外,將來創建一個允許所有規則,例如

/sbin/iptables -P INPUT ALLOW對於 OUTPUT 和 FORWARD 也是如此,並將其放在您的 cron 上,每 5/10 分鐘執行一次,這樣即使有些事情失控,您也可以登錄。

引用自:https://serverfault.com/questions/327320