Установка и настройка фаервола iptables

.

Администратор
Команда форума
iptables - известный и широко распространенный фаервол под Linux. В статье я расскажу как его установить себе на сервер.

Устанавливаем iptables из репозитория Debian/Ubuntu:

Код:
aptitude install iptables-persistent xtables-addons-dkms

И так, в системе уже присутствует главный из списка необходимых инструмент — iptables. Но этого недостаточно. Также понадобятся фильтр tarpit и iptables-persistent, чтобы загружать правила при старте системы. Во время установки persistent будет задано два вопроса о сохранении текущих правил. Можно ответить «Да» и тогда в папке /etc/iptables/rules/ будут созданы нужные файлы с правилами, которые мы отредактируем.

Пример правил:
Код:
   *filter
   # Разрешить весь локальный (lo0) трафик и отбрасывать весь трафик на сеть 127/8, который не идет через lo0
   -A INPUT -i lo -j ACCEPT
   -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

   # Разрешить все установленные изнутри подключения
   -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

   # Разрешить весь исходящий трафик
   -A OUTPUT -j ACCEPT

   # Открываем порт для доступа к базе MySQL сервера
   -A INPUT -s 80.77.0.0 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

  # Разрешить HTTP и HTTPS подключения отовсюду на сервер
   -A INPUT -p tcp --dport 80 -j ACCEPT
   -A INPUT -p tcp --dport 443 -j ACCEPT
   -A INPUT -p tcp --dport 1500 -j ACCEPT

   # pop3, pop3s:
   -A INPUT -p tcp --dport 110 -j ACCEPT
   -A INPUT -p tcp --dport 995 -j ACCEPT

   # imap , imaps:
   -A INPUT -p tcp --dport 143 -j ACCEPT
   -A INPUT -p tcp --dport 993 -j ACCEPT
   -A INPUT -p tcp --dport 25 -j ACCEPT
   -A INPUT -p tcp --dport 465 -j ACCEPT

   #Открываем порт для DNS
   -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 53 -j ACCEPT
   -A INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT

   # Открывает порт сервера CS 1.6
   -A INPUT -p udp --dport 27015 -j ACCEPT
   -A INPUT -p udp --dport 27016 -j ACCEPT
   -A INPUT -p udp --dport 27017 -j ACCEPT

   # Разрешить подключения по SSH
   # Номер порта --dport такой же как в /etc/ssh/sshd_config
   -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

   # Защита сервера SSH от брутфорса
   -A INPUT -p tcp --syn --dport 22 -m recent --name dmitro --set
   -A INPUT -p tcp --syn --dport 22 -m recent --name dmitro --update --seconds 30 --hitcount 3 -j DROP

   # Простая защита от DoS-атаки
   -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

   # Защита от спуфинга
   -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset

   # Защита от попытки открыть входящее соединение TCP не через SYN
   -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP

   # Закрываемся от кривого icmp
   -I INPUT -p icmp -f -j DROP

   # Разрешить пинг
   #  заметьте, что блокирование других типов icmp трафика нежелательно
   #  удалите -m icmp --icmp-type 8 отсюда чтобы разрешить все виды icmp:
   #  https://security.stackexchange.com/questions/22711

   -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

   # логировать неудачные попытки доступа (доступен через команду 'dmesg')
   -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

   # Отбрасывать все входящие пакеты. по умолчанию все разрешается, что не хорошо:
   -A INPUT -j REJECT
   -A FORWARD -j REJECT

   COMMIT
 
Назад
Сверху Снизу