Користувальницькькі налаштування

Налаштування сайту


iptables

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
Наступна ревізія
Попередня ревізія
iptables [2016/01/19 12:02]
wombat LOG
iptables [2020/05/20 21:23] (поточний)
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
  
-===== Ограничение числа соединений в некоторый порт =====+ 
 + 
 +====== Перенаправление порта ====== 
 + 
 +Представим ситуацию,​ что у нас есть сервис,​ ожидающий входящих соединений на порту 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 
 + 
 + 
 + 
 +====== Ограничение числа соединений в некоторый порт ​======
  
 Чтобы ограничить максимально допустимое число соединений с некоторого IP-адреса в некоторый порт нашего сервера,​ можно воспользоваться правилом ''​-m connlimit'':​ Чтобы ограничить максимально допустимое число соединений с некоторого IP-адреса в некоторый порт нашего сервера,​ можно воспользоваться правилом ''​-m connlimit'':​
Рядок 37: Рядок 53:
   ​   ​
   ​   ​
-===== Предотвращение 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: Рядок 74:
  
  
 +====== Предотвращение сканирования портов ======
  
-===== 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: Рядок 108:
  
  
-===== Догадки =====+====== 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''​. Не очень тщательная проверка показала,​ что правила
iptables.1453197779.txt.bz2 · В останнє змінено: 2016/01/19 12:02 by wombat