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

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


iptables

Розбіжності

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

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

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
iptables [2014/11/22 22:13] – [NAT] wombatiptables [2020/05/20 18: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]]]
Рядок 57: Рядок 73:
 Они вводят ограничение до 19 соединений за 3 секунды. Они вводят ограничение до 19 соединений за 3 секунды.
  
-===== Догадки =====+ 
 +====== Предотвращение сканирования портов ====== 
 + 
 +Чтобы предотвратить сканирование портов, рекомендуют((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 ====== 
 + 
 +Чтобы записывать определённые события в системный журнал, можно использовать такие команды: 
 + 
 +  iptables -I FORWARD 2 --dst 192.168.24.0/16 -j LOG 
 + 
 +Такая команда вставит в цепочку ''FORWARD'' вторым по порядку правило записывать все обращения к IP-адресам из диапазона ''192.168.0.0'' -- ''192.168.255.255'' в системный журнал. 
 + 
 + 
 +====== 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.1416694401.txt.bz2 · Востаннє змінено: повз wombat