Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія Наступна ревізія | Попередня ревізія Остання ревізія Both sides next revision | ||
iptables [2016/01/19 12:02] wombat LOG |
iptables [2016/11/09 23:29] wombat Предотвращение сканирования портов |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
- | ====== IPTables ====== | + | ====== iptables ====== |
- | ===== NAT ===== | + | ====== NAT ====== |
# echo 1 > /proc/sys/net/ipv4/ip_forward | # echo 1 > /proc/sys/net/ipv4/ip_forward | ||
Рядок 11: | Рядок 11: | ||
MASQUARADE FIXME | MASQUARADE FIXME | ||
- | ===== Проброс порта ===== | + | |
+ | |||
+ | ====== Проброс порта ====== | ||
# echo 1 > /proc/sys/net/ipv4/ip_forward | # echo 1 > /proc/sys/net/ipv4/ip_forward | ||
Рядок 18: | Рядок 20: | ||
# iptables -t nat -A PREROUTING -i wan0 -o eth0 -p tcp --dport 22 -j DNAT --to <LAN_SERVER_IP>:22 | # iptables -t nat -A PREROUTING -i wan0 -o eth0 -p tcp --dport 22 -j DNAT --to <LAN_SERVER_IP>:22 | ||
- | ===== Ограничение числа соединений в некоторый порт ===== | + | ====== Ограничение числа соединений в некоторый порт ====== |
Чтобы ограничить максимально допустимое число соединений с некоторого IP-адреса в некоторый порт нашего сервера, можно воспользоваться правилом ''-m connlimit'': | Чтобы ограничить максимально допустимое число соединений с некоторого IP-адреса в некоторый порт нашего сервера, можно воспользоваться правилом ''-m connlimit'': | ||
Рядок 37: | Рядок 39: | ||
| | ||
| | ||
- | ===== Предотвращение DDoS-атаки ===== | + | ====== Предотвращение DDoS-атаки ====== |
Взято отсюда: [[http://otland.net/threads/limit-number-of-connections-dos-prevention.103408/ | Limit number of connections [DoS prevention]]] | Взято отсюда: [[http://otland.net/threads/limit-number-of-connections-dos-prevention.103408/ | Limit number of connections [DoS prevention]]] | ||
Рядок 58: | Рядок 60: | ||
+ | ====== Предотвращение сканирования портов ====== | ||
- | ===== LOG ===== | + | Чтобы предотвратить сканирование портов, рекомендуют((https://www.ossramblings.com/using_iptables_rate_limiting_to_prevent_portscans)) использовать следующие правила: |
+ | |||
+ | iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP | ||
+ | iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP | ||
+ | |||
+ | iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP | ||
+ | iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP | ||
+ | iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP | ||
+ | |||
+ | iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP | ||
+ | iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP | ||
+ | iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP | ||
+ | iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP | ||
+ | |||
+ | в том числе сканирование nmap: | ||
+ | |||
+ | iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --set | ||
+ | iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP | ||
+ | iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --set | ||
+ | iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP | ||
+ | |||
+ | Эти правила должны отбрасывать пакеты, если в течение 30 секунд пользователь подключается более 10 раз. | ||
+ | |||
+ | ====== LOG ====== | ||
Чтобы записывать определённые события в системный журнал, можно использовать такие команды: | Чтобы записывать определённые события в системный журнал, можно использовать такие команды: | ||
Рядок 68: | Рядок 94: | ||
- | ===== Догадки ===== | + | ====== systemd ====== |
+ | |||
+ | При использовании ''systemd'' необходим файл ''/etc/iptables/iptables.rules''. Соответствующая служба так и называется -- iptables. Поэтому запустить её можно так же, как и любую другую службу: | ||
+ | |||
+ | systemctl start iptables | ||
+ | |||
+ | |||
+ | |||
+ | ====== Догадки ====== | ||
Похоже, что правила ''%%-p tcp --syn%%'' и ''%%-p tcp -m state --state NEW%%'' значат одно и то же. Вроде бы, флаг ''SYN'' в TCP-пакете обозначает, что это первый пакет последовательности. А стало быть, состояние такого соединения должно быть ''NEW''. Не очень тщательная проверка показала, что правила | Похоже, что правила ''%%-p tcp --syn%%'' и ''%%-p tcp -m state --state NEW%%'' значат одно и то же. Вроде бы, флаг ''SYN'' в TCP-пакете обозначает, что это первый пакет последовательности. А стало быть, состояние такого соединения должно быть ''NEW''. Не очень тщательная проверка показала, что правила |