Назад | Перейти на главную страницу

iptables -F блокирует доступ к серверу до перезагрузки, почему?

Я пытаюсь применить некоторые правила iptables и iptables -F должен удалить текущие правила (насколько я понимаю), но вместо этого он, кажется, замораживает мое SSH-соединение и не позволяет мне восстановить его, пока я не включу питание.

Я прохожу эти шаги:

1. Примените правила iptables:

# Delete all existing rules
iptables -F

# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# MultiPorts (Allow incoming SSH, HTTP and phpMyAdmin)
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,2222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,2222 -m state --state ESTABLISHED -j ACCEPT

# Allow loopback access
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow outbound DNS
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

# derp
iptables -A OUTPUT -o eth0 -p tcp -m multiport --dport 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m multiport --sport 80,443 -m state --state ESTABLISHED -j ACCEPT

# Outgoing Sendmail
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

# DNS server
iptables -A INPUT -p udp -s 0/0 --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s 0/0 --sport 53 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -d 0/0 --dport 53 -m state --state ESTABLISHED -j ACCEPT

# Allow DNS zone transfer
iptables -A INPUT -p tcp --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

# Prevent DoS attack
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

# Log dropped packets
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP

2. Попробуйте сбросить с помощью iptables -F

3. Заблокировать

Что я делаю не так?

Ваши политики находятся на DROP, а -F только очищает цепочки, не изменяет политики. iptables -F && iptables -X должен сделать свое дело.

Как он сказал ... iptables -F его отбрасывает. Вы никогда не добавляли никаких новых правил. Чтобы просто включить ssh, нужно:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT service iptables save

Это, по крайней мере, разрешило бы доступ по ssh. Я рекомендую вам прочитать следующую статью о простом управлении iptables ... Debian не уверен, что вы используете, но в любом случае это то же самое.

Как и в этой статье, я также управляю своим через файл /etc/iptables.up.rules, таким образом я могу вносить изменения в файл, а затем импортировать их в iptables оттуда.

http://articles.slicehost.com/2007/9/5/debian-etch-setup-page-1