Инструменты пользователя

Инструменты сайта


пример_рабочего_конфига_iptables

*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, но позволяет не плохо защитить своей сервер в большой структуре.

Конфиг взят из одного «полубоевого веб-сервера» поэтому никаких остальных сведений и подробностей я вам о нём не скажу. Можете и не просить, ну разве что попытками соц.инженерии попытаться вытянуть =)

пример_рабочего_конфига_iptables.txt · Последние изменения: 2013/09/03 20:23 — 188.134.42.75