Настройка iptables в linux для чайников

Интернет наряду со свободным доступом к информации представляет собой немалую опасность для пользователей. Это «сетевые черви» и другие типы вирусов, а еще хакерские атаки с попытками получить доступ к персональным данным и банковским картам. Особенно эта проблема чувствуется на серверах. Пользовательские компьютеры обычно скрыты за счет роутеров и маршрутизаторов.

Настройка iptables в linux для чайников

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

Что такое IPTables?

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

Виды пакетов

Правила обработки пакетов данных настраиваются отдельно в зависимости от их типа. Всего выделяют три варианта – входящие, исходящие и проходящие. Первые предназначены для обработки сервером и выдачи определенного результата (например, рендеринга динамической страницы сайта). Второй тип представляет собой тот самый результат расчетов (изображение страницы из примера).

Настройка iptables в linux для чайников

Особенности обработки пакетов в IPTables для Linux:

  1. Input – входящие пакеты содержат запрос, отправляемый браузером по протоколу HTTP/HTTPS, а также через защищенный канал SSH или незащищенный FTP, Telnet.
  2. Forward – это цепочка проходящих соединений. В нее попадают соединения, конечная цель которых – другой удаленный компьютер. Они характерны, например, для прокси-серверов.
  3. Output – исходящие соединения и пакеты. В эту категорию попадают ответы сервера на все поступающие запросы: хоть выдача контента, хоть информация об ошибке доступа.

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

Правила и действия

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

Настройка iptables в linux для чайников

Варианты:

  1. ACCEPT – разрешить пакет: он продвигается дальше по цепочке или на исполнение, или на отправку пользователю либо на другой сервер.
  2. DROP – удалить пакет, например, если в его составе обнаружен вирус или иное вредоносное ПО, в том числе нацеленное на взлом сервера.
  3. REJECT – отклонить запрос на получение или отправку очередного блока информации. При этом автоматически формируется сообщение о самом факте отклонения и его причинах.
  4. LOG – записать событие, произошедшее с пакетом в специальный текстовый файл. Обычно действие осуществляется со всеми блоками текущей цепочки.
  5. QUEUE – отправить пакет пользователю или приложению в ответ на входящий запрос при одобрении системой защиты его обработки.

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

Первая категория включает пакеты данных, о которых сервер еще не знает – они пока находятся в очереди на обработку. Категория называется Prerouting и содержит все типы: input, output и forward. Вторая же включает проверенные блоки, по которым есть конкретный результат, но они ожидают того или иного действия (например, отправки пользователю или передачи дальше, в точку назначения).

Таблицы IPTables

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

Примеры:

  • raw – применяется при работе с «сырыми» пакетами, которые еще не прошли обработку;
  • mangle – используется для модификации пакетов в процессе их обработки на сервере;
  • nat – обеспечивает работу сервера в режиме маршрутизатора со сквозной передачей данных;
  • filter – основной инструмент фильтрации пакетов, используемый по умолчанию.

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

Утилита IPTables

Если в текущей поставке приложение оказалось не установленным, это легко сделать вручную. Для инсталляции утилиты понадобится запустить консоль и ввести команду (на примере Ubuntu):

$ sudo apt install iptables

В дистрибутивах на базе Fedora она выглядит иначе:

$ sudo yum install iptables

Общий синтаксис программы выглядит следующим образом:

$ iptables -t таблица действие цепочка дополнительные_параметры

Таблица – это таблица, с которой следует работать, действие – нужный тип действия, здесь никаких разночтений нет. Дополнительные параметры предназначены для указания настроек протокола или сетевого интерфейса.

Настройка iptables в linux для чайников

Варианты действий:

  • -A – добавить правило в цепочку;
  • -С – проверить все правила;
  • -D – удалить правило;
  • -I – вставить правило с нужным номером;
  • -L – вывести все правила в текущей цепочке;
  • -S – вывести все правила;
  • -F – очистить все правила;
  • -N – создать цепочку;
  • -X – удалить цепочку;
  • -P – установить действие по умолчанию.

Перечень дополнительных опций:

  • -p – указать протокол: один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh;
  • -s – указать IP-адрес устройства-отправителя пакета;
  • -d – указать IP-адрес получателя;
  • -i – входной сетевой интерфейс;
  • -o – исходящий сетевой интерфейс;
  • -j – выбрать действие, если правило подошло.

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

Примеры настройки IPTables

Рассмотрим несколько примеров, чтобы было проще закрепить теоретические знания. Простейший вариант команды – $ iptables –L – позволяет просмотреть набор правил IPTables, который применяется в текущий момент. Также есть возможность указать определенную цепочку, по которой хочется увидеть действующие правила: $ iptables -L INPUT.

Настройка iptables в linux для чайников

Если нужно временно отключить утилиту, работающую фактически на уровне ядра, понадобится ввести команду:

$ sudo iptables –F

Она может действовать строго на указанную цепочку:

$ sudo iptables -F Input

По умолчанию все действия выполняются для таблицы –filter. То же относится к последующим командам. Например, если для пакета не установлено ни одного правила, на него действует общее, которое активируется при помощи опции –p:

$ sudo iptables -p INPUT ACCEPT

$ sudo iptables -p OUTPUT ACCEPT

$ sudo iptables -p FORWARD DROP

Пример показывает, как разрешить все цепочки input-output и запретить любые forward. Подобный ход актуален для серверов, которые не используются в качестве прокси (например, для блокировки попыток запуска на них спам-рассылок). Если нужно заблокировать конкретные пакеты, полезной будет команда:

$ sudo iptables -A INPUT -s 10.10.10.10 -j DROP

В приведенном примере блокируются все входящие пакеты с IP-адреса 10.10.10.10. Если требуется, наоборот, поставить фильтр на исходящие блоки, то команда input просто заменяется на output. Если речь идет о диапазоне IP-адресов, команда приобретет вид:

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

Пример блокировки всех входящих соединений через протокол SSH:

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

Ничего сложного. Так же просто удалять правила, для этого достаточно в команде заменить опцию -A на -D:

$ sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Полная очистка правил осуществляется при помощи опции -F:

$ sudo iptables -F

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

Выводы

Все, основные азы применения утилиты IPTables мы рассмотрели. Теперь дело за администратором сервера – испытывать действие различных вариантов консольных команд на практике. Если освоить этот инструмент для защиты, то удаленный компьютер будет работать стабильнее и быстрее, чем те, на которые постоянно совершаются хакерские атаки.

Hosting2go.ru