Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія Наступна ревізія | Попередня ревізія | ||
iptables [2016/11/09 23:06] wombat Заголовки на уровень выше + systemd |
iptables [2020/05/20 21:23] (поточний) wombat Перенаправление порта |
||
---|---|---|---|
Рядок 19: | Рядок 19: | ||
# iptables -A FORWARD -s <LAN_IP>/24 -j ACCEPT | # iptables -A FORWARD -s <LAN_IP>/24 -j ACCEPT | ||
# 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 | ||
+ | |||
+ | |||
+ | |||
+ | ====== Перенаправление порта ====== | ||
+ | |||
+ | Представим ситуацию, что у нас есть сервис, ожидающий входящих соединений на порту 1111. А нам нужно, чтобы другие программы могли подключаться к порту 2222, но при этом соединяться с этим сервисом. Для этого мы можем перенаправить пакеты, приходящие в порт 2222, в нужный нам порт -- 1111. | ||
+ | |||
+ | sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 -j REDIRECT --to-port 1111 | ||
+ | |||
+ | Ещё часто уточняют((https://askubuntu.com/a/579540/298881 , https://askubuntu.com/a/595955/298881 , https://wiki.debian.org/Firewalls-local-port-redirection)), что это правило не будет работать для локальных подключений. Поэтому для них надо добавить ещё одно отдельно: | ||
+ | |||
+ | iptables -t nat -A OUTPUT -o lo -p tcp --dport 2222 -j REDIRECT --to-port 1111 | ||
+ | |||
+ | |||
====== Ограничение числа соединений в некоторый порт ====== | ====== Ограничение числа соединений в некоторый порт ====== | ||
Рядок 60: | Рядок 74: | ||
+ | ====== Предотвращение сканирования портов ====== | ||
+ | |||
+ | Чтобы предотвратить сканирование портов, рекомендуют((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 ====== | ====== LOG ====== |