Правила для VPS сервера
Чтобы настроить фаервол на VPS сервере с ролью "web сервера" (только сайты), можно выполнить следующие команды в консоли сервера (объяснения ниже):iptables -P INPUT ACCEPT
iptables -F
iptables -t mangle -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o внешний_интерфейс -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s ваш_ip_адрес/32 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
по аналогии с предыдущей строкой открыть нужные tcp/udp порты
iptables -t mangle -A PREROUTING -p icmp -j DROP
iptables -t mangle -A PREROUTING -m state --state INVALID -j DROP
iptables -t mangle -A PREROUTING -p tcp ! --syn -m state --state NEW -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
Перед выполнением всех этих команд обязательно замените выделенные цветом части на нужные. То есть укажите нужный интерфейс (к примеру, eth0 или enp2s0), который можно узнать через команды "ifconfig"или "ip a". А так же укажите свой ip для исключений в доступе к SSH порту 22Первые три команды в списке очистят все правила, которые есть у iptables в таблице фильтра и "mangle". Далее будет разрешены все соединения соединения.
Правила в таблице "mangle" предотвращают различные виды DoS атак, когда на сервер отправляются пакеты с невалидными флагами. Так же в этой таблице запрещаются icmp запросы для предотвращения атаки "icmp flood". К несчастью, из-за этого, нельзя будет успешно выполнить команду "ping" до ip адреса сервера или сайтов на нём, но она редко когда используется.
Как можно заметить в правилах, полностью открытыми для публичного доступа остаются только порты 80 и 443. Этого вполне достаточно для базовгого функционирования сайтов.
В самом конце списка находятся команды, запрещающие все соединения. Их нельзя ставить первыми (порядок важен), иначе запретите сами себе доступ к серверу. И SSH консоль сразу перестанет работать.
После выполнения всего списка команд, необходимо сохранить правила. Иначе после перезагрузки системы они будут все стёрты. Для этого на разных системах и версиях используются разные механизмы. К примеру, на CentOS 6 и 7 используется такая команда:
service iptables save
Но на Debian и Ubuntu необходимо использовать либо файлы в настройках ifconfig, которые считываются при загрузке программы, либо утилиту "iptables-persistent", которую можно установить так:
apt install iptables-persistent
Далее для вызова экрана настройки надо выполнить:
dpkg-reconfigure iptables-persistent
Чтобы проверить как автозагрузка правил работает, можно перезапустить iptables.
systemctl restart iptables
И затем проверить установку правил с помощью команды:
iptables -L
А для проверки содержания таблицы "mangle" можно выполнить такую команду:
iptables -t mangle -L