ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать IPTables

Как использовать IPTables

IPTables имеет неоценимое значение для тех, кто хочет обезопасить сервер Linux. Он может заблокировать или принимать пакеты на основе любого количества критериев, внешних портов и выполнять множество задач сетевого анализа. Это особенно полезно при защите от атак, так как он может выполнять все действия, основанные на подсети и других критериев. Эта гибкая утилита, однако, так это утилита командной строки, является сложной и запутанной. К счастью, с несколькими основными примерами, большая часть его “полезности” можно сделать гораздо более доступным.

Начало работы с IPTables

Служба устанавливается по умолчанию в большинстве дистрибутивов 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

 

Вывод

В то время как эти примеры были специфичными, легко изменить детали для достижения множество связанных с ними задач. Приведенных выше команд достаточно, чтобы построить способный реагировать, брандмауэр. Если это руководство было полезным для Вас, любезно поделиться ею с другими, которые также могут быть в этом заинтересованы.

Как использовать IPTables

Exit mobile version