В качестве эпиграфа вспомнилась старая народная мудрость:
удалённая настройка iptables - к дальней поездке.
Да, что уж скромничать, на себе проверял не раз.
Весьма хорошо подмечено.
Рассмотрим настройку iptables для веб-сервера, работающего под CentOS.
Самое основное правило при настройке: запрещено всё, кроме того, что явно разрешено. Поэтому мы перечисляем все возможные допустимые варианты соединений, а затем сбрасываем все оставшиеся варианты (считаем их неприемлемыми).
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
# Доступ по локальной сети
-A INPUT -s 10.34.21.101/32 -j ACCEPT
# Работа с Web
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# Доверенный компьютер №1
-A INPUT -m tcp -p tcp -s 178.76.200.0/21 --dport 20 -j ACCEPT
-A INPUT -m tcp -p tcp -s 178.76.200.0/21 --dport 21 -j ACCEPT
-A INPUT -m tcp -p tcp -s 178.76.200.0/21 --dport 22 -j ACCEPT
# Доверенный компьютер №2
-A INPUT -m tcp -p tcp -s 62.148.151.95/32 --dport 20 -j ACCEPT
-A INPUT -m tcp -p tcp -s 62.148.151.95/32 --dport 21 -j ACCEPT
-A INPUT -m tcp -p tcp -s 62.148.151.95/32 --dport 22 -j ACCEPT
# Доверенный комьютер №...
-A INPUT -m tcp -p tcp -s 62.148.129.48/28 --dport 20 -j ACCEPT
-A INPUT -m tcp -p tcp -s 62.148.129.48/28 --dport 21 -j ACCEPT
-A INPUT -m tcp -p tcp -s 62.148.129.48/28 --dport 22 -j ACCEPT
...
# Концовка
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j DROP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Пример настройки: скачать.
Неоспаримым преимуществом данного подхода является отсутствие привязки к IP-адресам. Все упоминания сетевых интерфейсов позволяют свободно менять IP-адреса без перенастройки.
В результате получаем компактный, изящный набор правил. А как известно, красивые самолеты летают быстро.
Пользуясь случаем, благодарю моего друга Максима Румянцева (MaXXIc) за колоссальную помощь и руководство в данном вопросе. Без его участия данная работа и статья были бы невозможны.
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux