Ссылки на официальную и рекомендованную документацию имеются на веб-сайте 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
цели для всех протоколов, поступающих с этого 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 , поскольку она по умолчанию реализует многие из этих политик. Тем не менее, я согласен с вашим подходом и предпочитаю также поддерживать свои собственные правила напрямую, и эти самые лучшие практики могут быть реализованы без внешнего интерфейса.