[IPTABLES] Основные правила используемые при администрировании серверов

13.07.2017 223 Вебмастерам / FreeBSD / Linux

[IPTABLES] Основные правила используемые при администрировании серверов

Файрвол в системе linux контролируется программой iptables (для ipv4) и ip6tables (для ipv6). В данной шпаргалке рассмотрены самые распространённые способы использования iptables для тех, кто хочет защитить свою систему от взломщиков или просто разобраться в настройке.


Часто используемые команды


Показать статус

iptables -L -n -v

Разрешить доступ конкретному IP

iptables -I INPUT -s 10.10.10.10 -j ACCEPT

Просмотреть NAT

iptables -t nat -nvL

Сбросить NAT

iptables -t nat -F

Сбросить правила

iptables -F

Отобразить правило по номеру

iptables -L INPUT -n --line-numbers
iptables -L FORWARD -n --line-numbers

Удаляем правило по номеру

iptables -D INPUT 3 (начинается с 1)

Вставляем правило по номеру

iptables -I INPUT 2 -s 10.10.10.10 -j DROP

Пример проброса порта


Включаем forward

/etc/sysctl.conf
# Controls IP packet forwardingnet.ipv4.ip_forward = 1

Проверяем

grep -i forward /etc/network/options

Сами правила

iptables -t nat -I PREROUTING -p tcp -d 80.1.1.1 --dport 20125 -j DNAT --to-destination 172.16.0.104:20081 
iptables -t nat -I PREROUTING -p tcp -d 80.1.1.1 --dport 37777 -j DNAT --to-destination 172.16.0.104:37777 
iptables -t nat -I PREROUTING -p tcp -d 80.1.1.1 --dport 37778 -j DNAT --to-destination 172.16.0.104:37778 
iptables -I FORWARD -d 80.1.1.1 -j ACCEPT 
iptables -I FORWARD -d 172.16.0.104 -j ACCEPT

Разрешаем доступ должникам на платежный сайт (ipset paysystems)

iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -m set --match-set paysystems dst -j MASQUERADE 
iptables -A FORWARD -m set --match-set nomoney src -m set --match-set paysystems dst -j ACCEPT 
iptables -t nat -A PREROUTING -m set --match-set paysystems dst -m set --match-set nomoney src -j ACCEPT

Дроп на интерфейсе

iptables -I FORWARD -i vlan3101 -j DROP
iptables -I FORWARD -o vlan3101 -j DROP 
iptables -I FORWARD -i vlan3101 ! -s 172.17.1.11 -j DROP 
iptables -A FORWARD -s 172.17.0.0/16 ! -i vlan3101 -j ACCEPT 
iptables -A FORWARD -d 172.17.0.0/16 ! -o vlan3101 -j ACCEPT



Защищаем форвард от сканирования портов

# Атакующий IP будет заблокирован на 24 часа (3600 x 24 = 86400 секунд)
iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP

# Удалить атакующий IP после 24 часов
iptables -A INPUT -m recent --name portscan --remove
iptables -A FORWARD -m recent --name portscan --remove

# Эти правила добавляют сканеры в список portscan и регистрируют попытку
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "portscan:"
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "portscan:"
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP