*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK -j DROP # (1) -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP # -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP # -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP #резать пакеты с -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP #указанными флагами -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP # -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP # -A INPUT -p tcp -m tcp --dport 113 -j DROP -A INPUT -i lo -j ACCEPT -A INPUT -m state --state INVALID -j DROP -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT # (2) -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT # -A INPUT -s 111111111 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -s 111111111 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -s 111111111 -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT # доступ к zabbix -A INPUT -s 111111111 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT # ssh -A INPUT -s 111111111 -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT -A INPUT -s 111111111 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT # https -A INPUT -s 111111111 -p tcp -m state --state NEW -j ACCEPT -A INPUT -s 1111111111 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -s 1111111111 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -s 1111111111 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -s 111111111 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -s 1111111111 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -s 1111111111 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -s 1111111111 -p tcp -m state --state NEW -m tcp --dport 9102 -j ACCEPT # опять zabbix -A INPUT -p tcp -m state --state NEW -m tcp --dport 113 -j DROP # (3)ident -A INPUT -p udp -m udp --dport 137 -j DROP # широковещательный адресс Microsoft, NetBIOS -A INPUT -p udp -m udp --dport 138 -j DROP # -A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # icmp 8 bit -A INPUT -p tcp -m limit --limit 15/min -j LOG --log-prefix "iptables INPUT denied: " # лимит и -A INPUT -p udp -m limit --limit 15/min -j LOG --log-prefix "iptables_all INPUT denied: " # логирование -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A OUTPUT -p tcp -m tcp --tcp-flags ACK PSH -j DROP -A OUTPUT -m state --state INVALID -j DROP -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A OUTPUT -d *************/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A OUTPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT -A OUTPUT -p udp -m state --state NEW -m udp --dport 514 -j ACCEPT #(4) -A OUTPUT -d *********** -p udp -m state --state NEW -m udp --dport 1514 -j ACCEPT #(5) -A OUTPUT -p udp -m state --state NEW -m udp --dport 123 -j ACCEPT #(6) -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT #(7) -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT -A OUTPUT -d 111111111 -p tcp -m state --state NEW -m tcp --dport 9103 -j ACCEPT -A OUTPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp -m limit --limit 15/min -j LOG --log-prefix "iptables_tcp OUTPUT denied: " -A OUTPUT -p udp -m limit --limit 15/min -j LOG --log-prefix "iptables_udp OUTPUT denied: " COMMIT Применяем настройки iptables-restore < /etc/firewall.rules И пишем автозапуск, создаём файл firewall в корне /etc/network/if-pre-up.d/ Содержание: #!/bin/bash /sbin/iptables-restore < /etc/firewall.rules 1 - DROP TCP пакетов с данными флагами позволяет защититься от сканирования. (примечание. спросите почему не REJECT ? ведь отклонение тоже вроде как защищает ! А вот ничего подобного, отклонение принимает пакеты и отклоняет их, давая потенциальному взломщику/ботнету/конкуренту собрать фингерпринты с ваших портов и получить сведения о ваших сервисах в сети и что конкретно у вас фильтруется. так что лучше выставить значение DROP, тем самым "притвориться мёртвым", это затруднит сканирование и позволит немного запутать человека или бота на атакующем хосте) 2 - открываем доступ для внешней среды, разрешаем входящие для http и https 3 - с точки зрения безопасности, ident лучше отрубать, про identd можно будет написать отдельную статью, так как правильная настройка этого протокола сводится к массе подводных камней и особенностей, так как содержит парочку критических и средних уязвимостей 4 - разрешаем "исходящим" выполнять удалённые shell команды на нашем удалённом web-сервере 5 - разрешаем "жителям одной из нашей подсети" шифрованный порт для LOG-сервера OSSEC 6 - ntp он и в Африке ntp. куда же нам без него :) 7 - pop3 через ssl, "безопасная почта" Вообще тут можно ещё многое написать, но я решил сделать пометки для более-менее важного. там где вы видите 11111111, нужно вписывать доверенные подсети своей локальной, либо удалённой среды, так как в разных подсетях работают разные службы, например саппорт и т.п. Это конечно не совсем по стандарту PCI DSS, но позволяет не плохо защитить своей сервер в большой структуре. Конфиг взят из одного "полубоевого веб-сервера" поэтому никаких остальных сведений и подробностей я вам о нём не скажу. Можете и не просить, ну разве что попытками соц.инженерии попытаться вытянуть =)