Назад | Перейти на главную страницу

Можете ли вы порекомендовать хорошее введение в iptables?

Мне нужно установить брандмауэр на сервере Linux (весь мой предыдущий опыт работы с Windows). Мои правила должны быть довольно простыми - запретить все, разрешить некоторые порты для всех, разрешить некоторые порты для определенных IP-подсетей, в то время как сеть небольшая, но сложная (каждый хост имеет IP-адреса как минимум в 2 192.168 ... сетях, каждый может соединяются разными способами). Я думаю, что использование оберток iptables может чрезмерно усложнить систему, логически вводя множество ненужных сущностей, и было бы лучше сделать ее простой и напрямую использовать iptables.

Можете ли вы порекомендовать хорошее краткое введение о том, как писать правила iptables?

Ссылки на официальные и рекомендуемые документация существуют на веб-сайте Netfilter.

Это не новая тема, ресурсы Безграничный.

Большинство основных команд довольно интуитивно понятны и могут легко ссылаться на справочная страница.

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

Чтобы перечислить все существующие правила:

iptables -L -n

-n предотвращает разрешение iptables ips, что обеспечивает более быстрый вывод.

Таблица по умолчанию - это filter таблица, которая используется для применения основных правил брандмауэра к трем цепочкам. Три цепочки по умолчанию в filter стол INPUT, OUTPUT, и FORWARD.

Цепи в значительной степени говорят сами за себя. Цепочка INPUT влияет на входящие пакеты, цепочка OUTPUT влияет на локально сгенерированные пакеты и, наконец, FORWARD для любых пакетов, которые маршрутизируются через систему.

Среди целей, которые вы можете указать, вы можете DROP пакеты, то есть просто игнорировать и не отвечать. Ты можешь REJECT пакетов, где ответ icmp будет отправлен источнику отказа. Наконец, вы можете ACCEPT их, что позволяет пакетам продолжать маршрутизацию.

Часто с внешним межсетевым экраном выбор по умолчанию будет DROP в отличие от REJECT, поскольку это уменьшает видимый след вашей сети в Интернете. Например, IP-адрес, который в противном случае ограничивает службы определенным хостом, будет иметь меньшую видимость с DROP.

Заметка, -A означает добавить в конец цепочки. Если вы хотите вставить вверху, вы можете использовать -I. Все правила обрабатываются сверху вниз. -D для удаления.

Чтобы DROP входящий пакет из 192.168.235.235:

iptables -A INPUT -s 192.168.235.235 -j DROP

Это переходит к DROP target для всех протоколов, исходящих с этого IP.

Принять:

iptables -A INPUT -s 192.168.235.235 -j ACCEPT

Чтобы предотвратить доступ к этому IP-адресу с вашего локального сервера или сети:

iptables -A OUTPUT -d 192.168.235.235 -j DROP

Вы можете указать -p протокол, -s источник пакета, -d пункт назначения для пакета, порт назначения --dport, исходный порт --sport, и многие другие флаги, которые влияют на то, как пакеты обрабатываются правилом.

Если по умолчанию INPUT политика были DROP и вы хотели разрешить всем на 192.168.123.0/24 подсеть для доступа к SSH на вашем сервере, вот пример:

iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT

Правильно, вы можете использовать Обозначение CIDR слишком!

Вообще говоря, лучшая политика по умолчанию - DROP для всех цепей. Каждая цепочка имеет политику по умолчанию, которая определяется -P флаг. Даже если у вас установлена ​​политика по умолчанию DROP, по-прежнему рекомендуется, чтобы последняя запись в цепочке была DROP также.

Например, чтобы изменить политику на DROP для цепочек INPUT, FORWARD и OUTPUT:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Быть осторожен, если вы укажете политику по умолчанию DROP для INPUT в удаленной системе, не разрешив предварительно себе доступ по SSH, вы можете запретить себе доступ к системе. Если в удаленной системе, вы можете указать временный crontab для сброса всех правил каждые 5 минут в качестве отказоустойчивого.

Чтобы удалить все правила и разрешить весь трафик:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F

Заметка, -X удаляет все созданные цепочки. -F стирает все правила.

Есть собственные инструменты для сохранения и восстановления правил. В частности, iptables-save и iptables-restore. Большинство современных дистрибутивов Linux имеют save и restore функции в файле инициализации iptables, поставляемом с системой.

Существуют и другие передовые методы межсетевого экрана, такие как отбрасывание искаженных пакетов и других типов нежелательного трафика. Это одно из преимуществ использования интерфейсной утилиты, такой как Shorewall, так как многие из этих политик будут реализованы по умолчанию. Тем не менее, я согласен с вашим подходом и предпочитаю поддерживать свои собственные правила напрямую, и те же самые лучшие практики могут быть реализованы без внешнего интерфейса.

я нашел https://help.ubuntu.com/community/IptablesHowTo полезно недавно. Я не думаю, что там есть что-то особенно специфичное для Ubuntu.