IPTables имеет неоценимое значение для тех, кто хочет обезопасить сервер Linux. Он может заблокировать или принимать пакеты на основе любого количества критериев, внешних портов и выполнять множество задач сетевого анализа. Это особенно полезно при защите от атак, так как он может выполнять все действия, основанные на подсети и других критериев. Эта гибкая утилита, однако, так это утилита командной строки, является сложной и запутанной. К счастью, с несколькими основными примерами, большая часть его “полезности” можно сделать гораздо более доступным.
Служба устанавливается по умолчанию в большинстве дистрибутивов Linux. Тем не менее, для удобства, в этом руководстве предполагается, что у вас есть либо выделенный или виртуальный сервер работающий последних версиях Ubuntu или CentOS.
Давайте пошагово посмотрим несколько примеров задач, которые вы могли бы выполнить с помощью службы. Эти команды дадут вам ощущение того, что это возможно, и должно легко адаптировать к другим обстоятельствам.
Мы начнем с изучения состояния брандмауэра. Эта команда невероятно полезна для диагностики проблем, вы можете использовать ее, чтобы определить, какие правила в настоящее время активны, и если данная запись может блокировать трафик неожиданно.
iptables -L -nv
Теперь давайте отобразим только подмножество ваших правил брандмауэра в этом случае, только цепь NAT.
iptables -t nat -L -nv
IPTables в целом может быть запущена, остановлена или перезапущена. Это особенно полезно, если маршрутизация трафика существенно перепуталась, и вы хотели бы закрыть всю подсистему для отладки, когда что пошло не так.
service iptables start
service iptables stop
service iptables restart
Если брандмауэр полностью нарушен, вы можете очистить все ваши правила IPTables сразу. Обратите внимание, что это может нарушить расширенные настройки и переадресации соединения в некоторых случаях, но в целом это не нарушит что-то, вы не зря использовали расширенные функции. Это хороший способ, чтобы вернуть в рабочее состояние и начать все заново.
iptables -F
Допустим, вы нашли хороший набор правил и хотите сохранить их. Затем они будут автоматически возобновлены при перезагрузке сервера. Под CentOS/Redhat нужно ввести следующую команду и правила будут сохранены в /etc/sysconfig/Iptables.
service iptables save
Эта команда работает с другими дистрибутивами, и сохраняется правила /root/ myrules:
iptables-save > /root/myrules
Если ваши правила не восстанавливаются автоматически при загрузке системы, используйте эти команды, чтобы восстановить их. Под CentOS/Redhat:
service iptables restart
Под другими дистрибутивами:
iptables-restore < /root/myrules
Теперь давайте перейдем к созданию конкретных типов правил брандмауэра. Допустим, вы хотите заблокировать весь трафик с 10.01.10.1 или подсети 10.01.10.0/24.
iptables -A INPUT -s 10.10.10.1 -j DROP
iptables -A INPUT -s 10.10.10.0/24 -j DROP
Теперь давайте заблокируем любой входящий доступ по SSH. Будьте осторожны с этим, если вы связаны SSH, то это оборвет текущее соединение:
iptables -A INPUT -p tcp --dport 22 -j DROP
Теперь мы будем комбинировать два предыдущих правила, блокируя доступ по SSH от определенного IP-адреса:
iptables -A INPUT -s 10.0.10.1 -p tcp --dport 22 -j DROP
Эта команда делает прямо противоположное. Она позволяет SSH трафик с удаленного IP, 10.01.10.1, на локальный IP, 192.168.0.1.
iptables -A INPUT -s 10.10.10.1 -d 192.168.0.1 -p tcp --dport 22 -j ACCEPT
Скажем, вам нужно открыть диапазон портов TCP для IP-телефонии или игрового трафика. Эта команда открывает порты 30000-50000.
iptables -A INPUT -p tcp --dport 30000:50000 -j ACCEPT
Или вы хотите блокировать все пакеты ICMP. Это не рекомендуется, по разным причинам, но следующая команда показывает, как это можно сделать.
iptables –A INPUT –p icmp –icmp-type echo-request –j DROP
Может быть, вы хотели бы перенаправить порт? Вы перенаправить порт 1234 на порт 80. Замените eth0 с фактическим сетевым интерфейсом.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1234 -j REDIRECT --to-port 80
В то время как эти примеры были специфичными, легко изменить детали для достижения множество связанных с ними задач. Приведенных выше команд достаточно, чтобы построить способный реагировать, брандмауэр. Если это руководство было полезным для Вас, любезно поделиться ею с другими, которые также могут быть в этом заинтересованы.