Руководство для новичков iptables, брандмауэр Linux

Оглавление:

Руководство для новичков iptables, брандмауэр Linux
Руководство для новичков iptables, брандмауэр Linux

Видео: Руководство для новичков iptables, брандмауэр Linux

Видео: Руководство для новичков iptables, брандмауэр Linux
Видео: Матовый или глянцевый монитор | Ответ профи ч.6 | ICG-calibration - YouTube 2024, Май
Anonim
Iptables - чрезвычайно гибкая утилита межсетевого экрана, созданная для операционных систем Linux. Независимо от того, являетесь ли вы новичком Linux или системным администратором, вероятно, какой-то способ iptables может быть вам полезен. Читайте дальше, пока мы покажем вам, как настроить самый универсальный брандмауэр Linux.
Iptables - чрезвычайно гибкая утилита межсетевого экрана, созданная для операционных систем Linux. Независимо от того, являетесь ли вы новичком Linux или системным администратором, вероятно, какой-то способ iptables может быть вам полезен. Читайте дальше, пока мы покажем вам, как настроить самый универсальный брандмауэр Linux.

фото ezioman.

О iptables

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

iptables почти всегда поставляется с предустановкой на любом дистрибутиве Linux. Чтобы обновить / установить его, просто загрузите пакет iptables:

sudo apt-get install iptables

Есть альтернативы GUI для iptables, таких как Firestarter, но iptables на самом деле не так сложно, как только у вас есть несколько команд. Вы хотите быть предельно осторожными при настройке правил iptables, особенно если вы используете SSH'd на сервере, потому что одна неправильная команда может навсегда заблокировать вас, пока она не будет исправлена вручную на физической машине.

Типы цепочек

iptables использует три разные цепи: вход, вперед и выход.

вход - Эта цепочка используется для управления поведением для входящих соединений. Например, если пользователь пытается SSH на вашем ПК / сервере, iptables попытается сопоставить IP-адрес и порт с правилом в цепочке ввода.

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

Есть один верный способ проверить, использует ли ваша система / нуждается в прямой цепочке.

iptables -L -v

Снимок экрана выше - это сервер, который работает в течение нескольких недель и не имеет ограничений на входящие или исходящие соединения. Как вы можете видеть, цепочка ввода обработала 11 ГБ пакетов, а цепочка вывода обработала 17 ГБ. С другой стороны, прямой цепочке не требуется обрабатывать один пакет. Это связано с тем, что сервер не выполняет каких-либо пересылок или не используется как сквозное устройство.
Снимок экрана выше - это сервер, который работает в течение нескольких недель и не имеет ограничений на входящие или исходящие соединения. Как вы можете видеть, цепочка ввода обработала 11 ГБ пакетов, а цепочка вывода обработала 17 ГБ. С другой стороны, прямой цепочке не требуется обрабатывать один пакет. Это связано с тем, что сервер не выполняет каких-либо пересылок или не используется как сквозное устройство.

Выход - Эта цепочка используется для исходящих соединений. Например, если вы попытаетесь выполнить ping howtogeek.com, iptables проверит его выходную цепочку, чтобы узнать, что правила касаются ping и howtogeek.com, прежде чем принимать решение разрешить или отклонить попытку подключения.

Оговорка

Несмотря на то, что pinging внешнего хоста кажется чем-то, что должно было бы только пересечь производственную цепочку, имейте в виду, что для возврата данных будет использоваться цепочка ввода. При использовании iptables для блокировки вашей системы помните, что для большого количества протоколов требуется двухсторонняя связь, поэтому необходимо правильно настроить цепочки ввода и вывода. SSH - это общий протокол, который люди забывают разрешить для обеих цепей.

Поведение по умолчанию в цепочке политик

Прежде чем приступать к настройке и настраивать определенные правила, вы должны решить, какими должны быть поведение по умолчанию трех цепей. Другими словами, что вы хотите делать iptables, если соединение не соответствует существующим правилам?

Чтобы узнать, какие конфигурации в настоящее время настроены для работы с непревзойденным трафиком, выполните

iptables -L

команда.

Как вы можете видеть, мы также использовали команду grep, чтобы дать нам более чистый результат. В этом скриншоте наши сети в настоящее время готовы принять трафик.
Как вы можете видеть, мы также использовали команду grep, чтобы дать нам более чистый результат. В этом скриншоте наши сети в настоящее время готовы принять трафик.

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

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

По умолчанию с помощью правила accept вы можете использовать iptables для запрета определенных IP-адресов или номеров портов, продолжая принимать все остальные соединения. Через минуту мы получим эти команды.

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

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Ответы, связанные с подключением

С настроенными политиками цепочки по умолчанию вы можете начать добавлять правила к iptables, чтобы он знал, что делать, когда он сталкивается с подключением или с определенным IP-адресом или портом. В этом руководстве мы рассмотрим три наиболее простых и часто используемых «ответа».

принимать - Разрешить соединение.

Капля - Бросьте соединение, действуйте так, как никогда не было. Это лучше, если вы не хотите, чтобы источник понял, что ваша система существует.

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

Лучший способ показать разницу между этими тремя правилами состоит в том, чтобы показать, на что похоже, когда ПК пытается выполнить ping Linux-машину с iptables, настроенным для каждого из этих параметров.

Разрешение соединения:

Отклонение соединения:
Отклонение соединения:
Image
Image

Разрешение или блокировка определенных подключений

С настройками вашей политики вы можете настроить iptables для разрешения или блокировки определенных адресов, диапазонов адресов и портов. В этих примерах мы установим соединения с

DROP

но вы можете переключить их на

ACCEPT

или же

REJECT

в зависимости от ваших потребностей и способов настройки цепочек политик.

Примечание. В этих примерах мы собираемся использовать

iptables -A

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

iptables -I [chain] [number]

указать номер, который должен быть в списке.

Соединения с одного IP-адреса

В этом примере показано, как заблокировать все подключения с IP-адреса 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Соединения с диапазоном IP-адресов

В этом примере показано, как заблокировать все IP-адреса в сетевом диапазоне 10.10.10.0/24. Вы можете использовать сетевую маску или стандартную нотацию косой черты, чтобы указать диапазон IP-адресов.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

или же

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Соединения с определенным портом

В этом примере показано, как заблокировать SSH-соединения от 10.10.10.10.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Вы можете заменить «ssh» на любой протокол или номер порта.

-p tcp

часть кода сообщает iptables, какое соединение использует протокол. Если вы блокировали протокол, который использует UDP, а не TCP, то

-p udp

было бы необходимо.

В этом примере показано, как блокировать соединения SSH с любого IP-адреса.

iptables -A INPUT -p tcp --dport ssh -j DROP

Соединения

Как мы уже упоминали ранее, многие протоколы потребуют двухсторонней связи. Например, если вы хотите разрешить SSH-подключения к вашей системе, для цепей ввода и вывода потребуется добавленное правило. Но что, если вы хотите, чтобы SSH, входящий в вашу систему, разрешался? Не добавит ли правило к выходной цепочке также возможность исходящих попыток SSH?

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

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Сохранение изменений

Изменения, внесенные вами в правила iptables, будут отменены при следующем запуске службы iptables, если вы не выполните команду для сохранения изменений. Эта команда может отличаться в зависимости от вашего дистрибутива:

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:

/sbin/service iptables save

Или же

/etc/init.d/iptables save

Другие команды

Перечислите настроенные в настоящее время правила iptables:

iptables -L

Добавление

-v

опция даст вам пакетную и байтовую информацию и добавление

-n

будет перечислять все численно. Другими словами - имена хостов, протоколы и сети перечислены как числа.

Чтобы очистить все текущие настроенные правила, вы можете выполнить команду flush.

iptables -F

Рекомендуемые: