Iptables — это очень гибкий фаервол на Linux
В этой статье напишем лишь несколько примеров, что используем сами или планируем внедрить в будущем

echo 1 > /proc/sys/net/ipv4/ip_forward — включаем форвард пакетов
echo 1 > /proc/sys/net/ipv4/ip_dynaddr

iptables -A INPUT –p tcp –m tcp –-tcp-flags FIN,ACK FIN -j DROP — запрещаем метод FIN сканирование портов

iptables -A INPUT –p tcp –m tcp —tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG –j DROP — запрещаем метод X сканирование портов

iptables -A INPUT –p tcp –m tcp –-tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP — запрещаем метод А сканирование портов

iptables -A INPUT -m state —state INVALID -j DROP — запрещаем входящие поломанные пакеты

iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT — разрешаем принимать пакеты с ранее утсновленных соединений

iptables -A FORWARD -i eth0 -m state —state ESTABLISHED,RELATED -j ACCEPT — разрешаем принимать пакеты с ранее установленных соединений

iptables -A FORWARD -m state —state INVALID -j DROP — запрещаем сквозные поломанные пакеты
iptables -A FORWARD -i eth1 -o -j ACCEPT — разрешаем трафик из внутренней сети

iptables -A INPUT -p icmp -i $IN —icmp-type echo-request -j DROP — запрещаем пинг

echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter — позволяет блокировать соединение произведенное с подменой адреса атакуемой машины

iptables -t nat -A PREROUTING -i eth1 ! -s 192.168.XX.X30 -p tcp —dport 80 -j DNAT —to-destination 192.168.XX.2:3128 — перенапрявляем весь трафик с 80 порта на squid за исключением трафика с машины c 192.168.XX.X30

iptables -A INPUT -i lo -j ACCEPT разрешаем
iptables -A INPUT -p udp —dport 53 -m state —state NEW -j ACCEPT открываем один udp порт
iptables -A INPUT -p tcp —dport 53 -m state —state NEW -j ACCEPT открываем один tcp порт

iptables -A INPUT -p tcp —match multiport —dport 20,21,25,53,143,443,7025 -j ACCEPT — разрешаем сразу несколько входящих портов

iptables -A INPUT -p tcp —dport 350 -m state —state NEW -m mac —mac-source E0:3F:XX:XX:XX:BE -j ACCEPT — включаем разрешения по mac адрессу

iptables -A FORWARD -s 95.142.200.0/21 -j DROP — блокируем подсети

iptables -t nat -A PREROUTING -d 83.XXX.XX.XX -p tcp -m tcp —dport 25 -j DNAT —to-destination 192.168.XX.XXX:25 — проброс пакетов из вне во внутреннюю сеть

iptables -t nat -A POSTROUTING -s 192.168.XX.0/24 -j MASQUERADE— разрешаем NAT
или так iptables -t nat -A POSTROUTING -o eth1 -j SNAT —to-source {ip шлюза, со стороны провайдера} применяем при статической ip

xtables-addons

Установка xtables-addons в Ubuntu 14.04

Устанавливаем зависимые пакеты

apt-get install xtables-addons-common module-assistant
apt-get install libtext-csv-xs-perl libxml-csv-perl libtext-csv-perl unzip

устанавливаем модуль xtables module-assistant auto-install xtables-addons-source
далее при установки xtabless выбираем CONTINUE

Установка xtables-addons в Debian 7

apt-get install xtables-addons-dkms

Все, на этом можно говорить, что пакет xtables установлен

Правила iptables с модулями из пакета xtables

iptables -A INPUT -p tcp -m tcp -j TARPIT — TARPIT из xtabless-addons задерживает ответ на ping с атакующей машины на более 20 минут, тем самым препятствует проверку на открытые порты через telnet, способствует некорректному выводу открытых портов при сканировании через Nmap

iptables -t raw -I PREROUTING -p tcp —dport 25 -j NOTRACK — позволяет уменьшить утечку ресурсов при использовании TARPIT

iptables -A INPUT -p tcp —dport 350 -m geoip —src-cc CN, TW, KR -j REJECT блокируем подключения на 350 открытый порт из стран

iptables -A INPUT -m geoip —src-cc A1 -j REJECT — пытаемся блокировать некоторые анонимные прокси серверы

iptables -A INPUT -p tcp –dport 350 -m geoip ! –src-cc RU -j REJECT — разрешаем подключаться на 350 порт только из России

iptables -A INPUT -m psd -j DROP — psd модуль из xtabless-addons позволяет выдавать при сканировании шлюз на Linux как Windows машину, способствует некорректному выводу открытых портов при сканировании через Nmap

iptables -A FORWARD ! -s 192.168.XX.91 -p tcp —dport 80 -m string —string «vk.com» —algo kmp —from 32 —to 65535 -j DROP— запрещаем сайт «vk.com» на 80 порту кроме компьютера с ip 192.168.XX.91

iptables -A FORWARD ! -s 192.168.XX.91 -p tcp —dport 443 -m string —string «vk.com» —algo kmp —from 32 —to 65535 -j DROP — запрещаем сайт «vk.com» на 443 порту кроме компьютера с ip 192.168.XX.91
(сайта блокируются не по ip а по доменному имени по этому прокси и TOP не спасут),
так что если кто не знает как заблокировать контакт и подобные сайты можете смело вписывать это правило

Наши рекомендации

1. для блокировок с перебором паролей советум использовать программу fail2ban в этой неболшой утилите указываете например порт 22 и количество попыток на подключение, если больше заданных, программа ail2ban блокирует порт с программой на то время что укажете в программе, по умолчанию 10 мин

2. для защиты от сканирования портов использовать программы portsentry не эффективно, дабы программа блокирует только на вторую попытку сканирования, а она обычно уже не актуальна но тем не менее программу portsentry удобно использовать для себя лично, дабы знать кто и когда пытался что сделать

3. для защиты шлюза полезно кроме фаервола настраивать программы для определения вторжения, дабы вовремя узнать кто пытался или смог взломать защиту и что именно изменил или добавил

4. при использовании iptables советуем устанавливать дополнительные возможности через установку пакета xtabless-addons этим вы добавляете очень много полезных возможностей в вашу систему

Часть материала взята с этого сайта http://xakep.ru/53653/