iptables
Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Наступна ревізія | Попередня ревізія | ||
| iptables [2014/02/04 17:42] – створено wombat | iptables [2020/05/20 18:23] (поточний) – Перенаправление порта wombat | ||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== iptables ====== | ||
| + | ====== NAT ====== | ||
| + | |||
| + | # echo 1 > / | ||
| + | # iptables -A FORWARD -m state --state ESTABLISHED, | ||
| + | # iptables -A FORWARD -s < | ||
| + | # iptables -t nat -A POSTROUTING -o wan0 -j SNAT --to < | ||
| + | |||
| + | '' | ||
| + | |||
| + | MASQUARADE FIXME | ||
| + | |||
| + | |||
| + | ====== Проброс порта ====== | ||
| + | |||
| + | # echo 1 > / | ||
| + | # iptables -A FORWARD -m state --state ESTABLISHED, | ||
| + | # iptables -A FORWARD -s < | ||
| + | # iptables -t nat -A PREROUTING -i wan0 -o eth0 -p tcp --dport 22 -j DNAT --to < | ||
| + | |||
| + | |||
| + | |||
| + | ====== Перенаправление порта ====== | ||
| + | |||
| + | Представим ситуацию, | ||
| + | |||
| + | sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 -j REDIRECT --to-port 1111 | ||
| + | |||
| + | Ещё часто уточняют((https:// | ||
| + | |||
| + | iptables -t nat -A OUTPUT -o lo -p tcp --dport 2222 -j REDIRECT --to-port 1111 | ||
| + | |||
| + | |||
| + | |||
| + | ====== Ограничение числа соединений в некоторый порт ====== | ||
| + | |||
| + | Чтобы ограничить максимально допустимое число соединений с некоторого IP-адреса в некоторый порт нашего сервера, | ||
| + | |||
| + | iptables -I INPUT --src < | ||
| + | |||
| + | Для ограничения суммарного числа соединений с некоторого диапазона IP-адресов, | ||
| + | |||
| + | iptables -I INPUT --src < | ||
| + | |||
| + | Это ограничит суммарное число соединений в порт номер ''< | ||
| + | |||
| + | Разумеется, | ||
| + | |||
| + | iptables -I INPUT 1 -p tcp --dport < | ||
| + | |||
| + | Как видно, в таком случае базовый IP-адрес можно и вовсе не указывать. | ||
| + | | ||
| + | | ||
| + | ====== Предотвращение DDoS-атаки ====== | ||
| + | |||
| + | Взято отсюда: | ||
| + | |||
| + | iptables -N conn-flood | ||
| + | iptables -I INPUT 1 -p tcp --syn -j conn-flood | ||
| + | iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN | ||
| + | iptables -A conn-flood -j DROP | ||
| + | iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT | ||
| + | iptables -A INPUT -p icmp -j DROP | ||
| + | |||
| + | Согласно источнику, | ||
| + | |||
| + | Для ограничения числа соединений на всех портах и для всех протоколов в единицу времени, | ||
| + | |||
| + | iptables -I INPUT -p tcp -m state --state NEW, | ||
| + | iptables -I INPUT -p tcp -m state --state NEW -m recent --update --seconds 3 --hitcount 20 -j DROP | ||
| + | |||
| + | Они вводят ограничение до 19 соединений за 3 секунды. | ||
| + | |||
| + | |||
| + | ====== Предотвращение сканирования портов ====== | ||
| + | |||
| + | Чтобы предотвратить сканирование портов, | ||
| + | |||
| + | iptables | ||
| + | iptables | ||
| + | | ||
| + | iptables | ||
| + | iptables | ||
| + | iptables | ||
| + | | ||
| + | iptables | ||
| + | iptables | ||
| + | iptables | ||
| + | iptables | ||
| + | |||
| + | в том числе сканирование 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 | ||
| + | |||
| + | Эти правила должны отбрасывать пакеты, | ||
| + | |||
| + | ====== LOG ====== | ||
| + | |||
| + | Чтобы записывать определённые события в системный журнал, | ||
| + | |||
| + | iptables -I FORWARD 2 --dst 192.168.24.0/ | ||
| + | |||
| + | Такая команда вставит в цепочку '' | ||
| + | |||
| + | |||
| + | ====== systemd ====== | ||
| + | |||
| + | При использовании '' | ||
| + | |||
| + | systemctl start iptables | ||
| + | |||
| + | |||
| + | |||
| + | ====== Догадки ====== | ||
| + | |||
| + | Похоже, | ||
| + | |||
| + | iptables -I INPUT -p tcp -m state --state NEW -j ACCEPT | ||
| + | |||
| + | и | ||
| + | |||
| + | iptables -I INPUT -p tcp --syn -j ACCEPT | ||
| + | |||
| + | срабатывают одинаково. В то же время, когда они оба присутствуют в одной цепочке, | ||
| + | |||
| + | | ||
