2

Настройка iptables на VPS c Debian 6

Не успел установить VPS и настроить WEB сервер, как обнаружил, что огромное количество спамеров пытаются разослать через мой postfix всякую гадость. Плюс постоянно стараются подобрать пароль к SSH. А у меня сервер на Cloud хостинге, где плачу за все телодвижения, в том числе за совсем не нужные нагрузки.

Так порывшись в сети нашел следующие, на мой взгляд достаточные, настойки iptables.

1. Для начала создайте исполняемый файл:

/etc/network/if-up.d/00-firewall

 

2. Запишите в него:

#!/bin/sh

# Первым делом очистим существующую таблицу правил:
iptables -F

# Добавляем первое правило которое позволит нам не потерять удаленный контроль на сервером (по умолчанию порт SSH – 22, у вас может быть другой):
iptables -A INPUT -p tcp -i eth0 —dport 22 -j ACCEPT

# Прописываем политики по умолчанию:
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Разрешаем хождение трафика по localhost
iptables -A INPUT -i lo -j ACCEPT

#Делаем защиту от Dos атак:
iptables -A INPUT -p tcp -m tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j ACCEPT

# Разрешаем пакеты по протоколам tcp\udp создающие новые подключения (например у меня без этих правил некорректно работала админка Вордпресса и не открывался один из виртуальных сайтов).
iptables -A INPUT -p tcp -m state —state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state —state RELATED,ESTABLISHED -j ACCEPT

#Разрешаем трафик для необходимых служб

# FTP
#iptables -A INPUT -i eth0 -p tcp —dport 21 -j ACCEPT

#HTTP
iptables -A INPUT -i eth0 -p tcp —dport 80 -j ACCEPT

#HTTPS
#iptables -A INPUT -i eth0 -p tcp —dport 443 -j ACCEPT

#csync2 30865/tcp
#iptables -A INPUT -i eth0 -p tcp —dport 30865 -j ACCEPT

#SMTP если будет нужно
# iptables -A INPUT -i eth0 -p tcp —dport 25 -j ACCEPT

# DNS если есть такой
# iptables -A INPUT -i eth0 -p udp —sport 53 -j ACCEPT
# Пинги
#iptables -A INPUT -i eth0 -p icmp -m icmp —icmp-type 3 -j ACCEPT
#iptables -A INPUT -i eth0 -p icmp -m icmp —icmp-type 11 -j ACCEPT
#iptables -A INPUT -i eth0 -p icmp -m icmp —icmp-type 12 -j ACCEPT
iptables -A INPUT -p icmp —icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp —icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp —icmp-type 6 -j ACCEPT
iptables -A OUTPUT -p icmp —icmp-type 6 -j ACCEPT

# Далее пропишем правила защищаюшее наш ssh порт от брутфорса (подбора паролей роботами):
iptables -A INPUT -p tcp —syn —dport 22 -m recent —name radiator —set
iptables -A INPUT -p tcp —syn —dport 22 -m recent —name radiator —update —seconds 30 —hitcount 3 -j DROP

# Если вам необходимо установить полностью доверительные отношения между двумя серверами то делаем так:
#iptables -A INPUT -p tcp —source {ip-адрес удаленного сервера} -j ACCEPT
#iptables -A INPUT -p udp —source {ip-адрес удаленного сервера} -j ACCEPT

Теперь можете исполнить файл сразу, или перезагрузить систему и проверить настройки командой:

iptables –list

Статью написал: Лобачев Виталий по мативам www.itpad.ru

2 Comments

  1. Вот не пойму одного, для чего автору iptables -A OUTPUT -p tcp -i eth0 –dport 22 -j ACCEPT, если iptables -P OUTPUT ACCEPT?
    А вообще статья полезная. Спасибо )))

  2. На случай если решите все же закрыть исходящие:
    iptables -P OUTPUT DROP
    а про ssh забудете 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *