Iptables linux где лежит

Содержание
  1. Как найти конфиг, который использует iptables?
  2. Настройка iptables для чайников
  3. Что такое Iptables?
  4. Виды пакетов
  5. Правила и действия
  6. Таблицы ipatables
  7. Утилита Iptables
  8. Примеры настройки Iptables
  9. Список правил
  10. Очистка правил
  11. Правила по умолчанию
  12. Блокировка пакетов
  13. Удаление правил
  14. Сохранить правила Iptables
  15. Выводы
  16. Настройка iptables в Linux
  17. Подготовка сервера
  18. Введение
  19. Установка iptables
  20. Порядок прохождения таблиц и цепочек
  21. Синтаксис iptables
  22. Пакет
  23. Цепочки
  24. Таблицы
  25. Таблица raw
  26. Таблица mangle
  27. Таблица nat
  28. Таблица filter
  29. Таблица security
  30. Действия
  31. Команды
  32. Критерии
  33. Состояние соединений
  34. Основные команды iptables
  35. Как посмотреть список правил iptables
  36. Как удалить правило в iptables
  37. Как очистить список правил iptables
  38. Как сохранить правила iptables
  39. Как восстановить правила
  40. Как записать в лог событие
  41. Примеры настройки iptables
  42. Как заблокировать IP-адрес в iptables
  43. Как разрешить IP-адрес в iptables
  44. Как открыть порт в iptables
  45. Как закрыть порт в iptables
  46. Как разрешить или запретить ICMP ping трафик
  47. Как разрешить трафик на локальном узле
  48. Как блокировать трафик по MAC-адресу
  49. Как разрешить трафик по MAC-адресу
  50. Как ограничить доступ по времени
  51. Настройка NAT
  52. Проброс порта
  53. Переадресация порта — redirect
  54. Использование в качестве маршрутизатора

Как найти конфиг, который использует iptables?

Как найти конфиг, который использует iptables?

На сайте настроен iptables. Разрешает коннект к порту 3306 только для одного IP. IP сменился, нужно открыть конфиг фаервола и сменить IP.
Гуглю где находится его конфиг, гугль говорит, смотреть в /etc/sysconfig/iptables.old и в /etc/sysconfig/iptables-config.
Ага, думаю я, то что мне нужно, открываю эти конфиги, в них нет записи с нужным IP. Видимо iptables использует кастомный конфиг. Как узнать где он находится?

  • Вопрос задан более трёх лет назад
  • 6603 просмотра

Выведите список через iptables -L
и удалите старое, добавьте новое

Если я не ошибаюсь, конфиг можно сохранить куда угодно.

или сделайте, как здесь:

In CentOS you have the file /etc/sysconfig/iptables
если его там нет, вы можете его создать, используя iptables-save, чтобы записать текущие правила в файл

iptables-save > /etc/sysconfig/iptables
чтобы загрузить файл, Вам не нужно перезагружать сервер, просто используйте iptables-restore

# iptables -A INPUT -i ens192 -p tcp -s x.x.x.x —dport 3306 -j ACCEPT

так добавить разрешение для подключения определенного IP? какую нибудь еще команду нужно вводить или что нибудь перезагружать?

Итак, шаг номер раз:
iptables -L -n —line-numbers
эта команда выведет список всех имеющихся у Вас правил с номерами.

шаг номер 2:
iptables -D INPUT num, где num — номер запрещающего правила.
этой командой мы удаляем запрещающее правило

наг номер 3:
iptables -I INPUT 1 -p tcp -s x.x.x.x —dport 3306 -j ACCEPT
этой командой мы добавляем новое разрешающее правило в цепочку INPUT и ставим его первым. На случай, если у Вас в конце цепочки написано что-то типа -A INPUT -j REJECT —reject-with icmp-host-prohibited

если что-то не получается — пришлите вывод iptables -L -n —line-numbers, бум думать.

Источник

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

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

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

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

Что такое Iptables?

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

Виды пакетов

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

Соответственно в фильтре iptables все пакеты делятся на три аналогичные цепочки:

  • Input — обрабатывает входящие пакеты и подключения. Например, если какой-либо внешний пользователь пытается подключиться к вашему компьютеру по ssh или любой веб-сайт отправит вам свой контент по запросу браузера. Все эти пакеты попадут в эту цепочку;
  • forward — эта цепочка применяется для проходящих соединений. Сюда попадают пакеты, которые отправлены на ваш компьютер, но не предназначены ему, они просто пересылаются по сети к своей цели. Как я уже говорил, такое наблюдается на маршрутизаторах или, например, если ваш компьютер раздает wifi;
  • output — эта цепочка используется для исходящих пакетов и соединений. Сюда попадают пакеты, которые были созданы при попытке выполнить ping losst.ru или когда вы запускаете браузер и пытаетесь открыть любой сайт.

Но если вы думаете что можно просто полностью закрыть цепочку Input для увеличения безопасности, то вы очень сильно ошибаетесь. При работе сети используются обе цепочки input и output. Например, вы пытаетесь выполнить ping, данные отправляются через output, но ответ приходит через input. То же самое происходит при просмотре сайтов и других действиях. А вот цепочка forward может вообще не использоваться если ваш компьютер не является маршрутизатором. Так что настройка iptables должна выполняться очень аккуратно.

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

Перед тем как перейти к созданию списка правил iptables нужно рассмотреть как они работают и какие бывают. Для каждого типа пакетов можно установить набор правил, которые по очереди будут проверяться на соответствие с пакетом и если пакет соответствует, то применять к нему указанное в правиле действие. Правила образуют цепочку, поэтому input, output и forward называют цепочками, цепочками правил. Действий может быть несколько:

  • ACCEPT — разрешить прохождение пакета дальше по цепочке правил;
  • DROP — удалить пакет;
  • REJECT — отклонить пакет, отправителю будет отправлено сообщение, что пакет был отклонен;
  • LOG — сделать запись о пакете в лог файл;
  • QUEUE — отправить пакет пользовательскому приложению.

Правила могут проверять любые соответствия, например, по ip, по порту получателя или отправителя, заголовкам пакета и многому другому. Если пакет не подходит ни одному из правил, то к нему применяется действие по умолчанию, обычно ACCEPT.

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

  • prerouting — в эту цепочку пакет попадает перед обработкой iptables, система еще не знает куда он будет отправлен, в input, output или forward;
  • postrouting — сюда попадают все проходящие пакеты, которые уже прошли цепочку forward.

Но это еще не все. У нас еще есть таблицы iptables, с которыми тоже желательно разобраться.

Таблицы ipatables

Над цепочками правил в iptables есть еще один уровень абстракции, и это таблицы. В системе есть несколько таблиц, и все они имеют стандартный набор цепочек input, forward и output. Таблицы предназначены для выполнения разных действий над пакетами, например для модификации или фильтрации. Сейчас это для вас не так важно и будет достаточно знать что фильтрация пакетов iptables осуществляется в таблице filter. Но мы рассмотрим их все:

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

С теорией почти все, теперь давайте рассмотрим утилиту командной строки iptables, с помощью которой и выполняется управление системой iptables.

Утилита Iptables

Подсистема iptables и netfilter встроены в ядро, но вот набор утилит для управления всем этим не всегда поставляется вместе с системой. Для установки утилиты в Ubuntu наберите:

sudo apt install iptables

А в дистрибутивах, основанных на Fedora, установка iptables выполняется немного по-другому:

sudo yum install iptables

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

Читайте также:  Astra linux нагрузочное тестирование

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

Теперь давайте рассмотрим параметры iptables, таблица указывает таблицу, с которой нужно работать, этот параметр можно упустить, действие — нужное действие, например, создать или удалить правило, а дополнительные параметры описывают действие и правило, которое нужно выполнить.

Осталось рассмотреть основные действия, которые позволяет выполнить iptables:

  • -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

Мы рассмотрим несколько основных примеров, чтобы вы смогли закрепить все прочитанное выше.

Список правил

Сначала давайте рассмотрим как выполняется просмотр правил iptables, для этого достаточно опции -L:

Также вы можете указать нужную цепочку, чтобы вывести правила только для нее:

iptables -L INPUT

Очистка правил

Вы не можете просто так отключить iptables остановив сервис обновления правил iptables через systemd или даже удалив набор утилит для настройки. Подсистема работает на уровне ядра и не зависит от того, что там у вас установлено. Поэтому если сделаете что-то не так, то нужно будет очистить правила. Для этого выполните:

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 -L

Блокировка пакетов

Для блокировки пакетов мы можем использовать действие DROP, фильтровать пакеты, которые нужно заблокировать мы можем по множеству критериев, например, протоколу, ip адресу, маске сети, порту и многому другому.

Вот так будет выглядеть команда, которая позволяет добавить правило iptables для блокировки всех входящих пакетов от 10.10.10.10:

sudo iptables -A INPUT -s 10.10.10.10 -j DROP

А теперь исходящие пакеты на этот же адрес:

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Блокировка диапазона ip выполняется подобным образом. Для этого нужно использовать маску сети 10.10.10.0/24. Это будут все адреса начиная от 10.10.10.0 до 10.10.10.255:

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

Или расширенный вариант маски:

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

Также вы можете заблокировать все входящие соединения ssh:

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

Как видите, добавить правило iptables очень просто.

Удаление правил

Удаление правил iptables выполняется точно так же, как и создание новых, только вместо опции A нужно использовать опцию D. Сначала смотрим список правил:

sudo iptables -L

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

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Также вы можете полностью очистить iptables выполнив команду с опцией -F:

sudo iptables -F

Сохранить правила Iptables

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

А в Red Hat или CentOS:

sudo /sbin/service iptables save

Выводы

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

На завершение видео о том, как увеличить безопасность вашего сервера:

Источник

Настройка iptables в Linux

Рассмотрим использование наиболее популярного в дистрибутивах Linux межсетевого экрана iptables на примере облачной платформы Selectel. Описанные в статье действия производились в Ubuntu 20.04 LTS 64-bit.

Подготовка сервера

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

Будет показана страница «Новый сервер», где необходимо указать имя сервера, регион (если необходимо). Чтобы выбрать образ нужной операционной системы, нажимаем кнопку «Выбрать другой источник».

Во всплывающем меню, в колонке «Операционные системы» выбираем Ubuntu, слева появится список разных версий ОС, доступных к установке, выбираем «Ubuntu 20.04 LTS 64-bit» и нажимаем кнопку «Выбрать».

Двигаемся вниз по странице, ставим флаг «Локальный диск», в области «Сетевые диски» нажимаем кнопку «Удалить диск», для нашего примера этого достаточно.

В настройках «Сеть» выбираем «Приватная подсеть + 1 плавающий IP», значение в поле должно измениться на «Новый плавающий IP адрес».

Добравшись до пункта меню «Доступ» — скопируйте «Пароль для root», он необходим для взаимодействия с сервером через SSH протокол.

После нажатия кнопки «Создать», ориентировочно через одну минуту сервер будет доступен. Заходим в меню «Облачная платформа» — «Серверы».

В списке отобразится информация о ранее созданном сервере. Статус сервера ALIVE, означает, что сервер активен и готов к работе. Область, помеченная цифрой 3, содержит IP-адрес, по которому будем подключаться, используя любой SSH клиент, например PuTTY для Windows.

Выполним первоначальную настройку сервера с целью повышения степени защищенности системы. Все действия, описанные в данной статье, выполняются с правами суперпользователя root.

Актуализируем информацию о доступных пакетах в используемых репозиториях:

С точки зрения безопасности, заходить на сервер сразу пользователем root неправильно, поэтому создаем непривилегированного пользователя с именем fwuser:

В ходе интерактивного диалога необходимо задать пароль (New password), подтвердить его (Retype new password), другие пункты не обязательно заполнять, можно проигнорировать их, нажимая ENTER. В финальном вопросе Is the information correct? [Y/n] нажимаем Y, затем ENTER.

Добавляем пользователя fwuser в группу sudo для возможности использования повышенных прав в системе:

Редактируем конфигурационный файл SSH-сервера:

Рекомендуется сменить стандартный номер порта, допустим на 22200. Находим строку #Port 22 и приводим ее к виду:

Запретим входить напрямую пользователем root. Ищем строку PermitRootLogin yes, меняем значение на no, в итоге строка выглядит так:

Нажимаем комбинацию клавиш Ctrl+O, внизу отобразится строка: File Name to Write: /etc/ssh/sshd_config, подтверждаем нажатием ENTER. Изменения сохранены, теперь выходим из редактора нажатием сочетания клавиш Ctrl+X.

Для вступления в силу изменений конфигурации SSH сервера — перезапускаем его:

Важно заметить, что при следующем подключении к серверу, подключаться нужно к порту 22200. Вход пользователю root запрещен. Авторизоваться необходимо вновь созданным пользователем fwuser, и только после успешного входа, следует повысить уровень привилегий в системе командой:

Система попросит ввести свой пароль (не root) и нажать ENTER, если следующая строка начинается на root, а заканчивается знаком # — привилегии суперпользователя получены успешно.

Введение

iptables — это утилита командной строки, используемая для управления встроенным брандмауэром netfilter, доступным в ядре Linux, начиная с версии 2.4. Брандмауэр — это узел сети, на котором происходит фильтрация сетевого трафика на основе заданных администратором правил. Обеспечить безопасность сервера или инфраструктуры, означает обеспечить отказоустойчивость и стабильность работы ваших серверов и приложений, что крайне чувствительно для бизнеса или персональных проектов.

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

Установка iptables

Список образов операционных систем, доступных к установке в облачной платформе Selectel, где iptables уже включен в дистрибутив:

  • CentOS 7 Minimal 64-bit;
  • CentOS 7 64-bit;
  • Debian 9 (Stretch) 64-bit;
  • Debian 10 (Buster) 64-bit;
  • Ubuntu 16.04 LTS 64-bit;
  • Ubuntu 18.04 LTS 64-bit;
  • Ubuntu 18.04 LTS Machine Learning 64-bit;
  • Ubuntu 20.04 LTS 64-bit.

Убедиться в этом можно при помощи команды:

Будет выведена информация о версии пакета.

Читайте также:  Bluetooth ноутбук как включить windows 10

В образах CentOS 8 64-bit и CentOS 8 Stream 64-bit, iptables отсутствует, поскольку разработчики отказались от него в пользу более нового пакета — nftables, поддержка которого на уровне ядра доступна с версии 3.13. Если существует необходимость использовать именно iptables — требуется выполнить следующий порядок действий:

Включение сервиса в автозагрузку:

Межсетевой экран готов к использованию.

Порядок прохождения таблиц и цепочек

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

На основе этих правил, выполняется действие — принять пакет, отбросить, удалить или передать следующему узлу сети. Иллюстрация, представленная ниже, наглядно показывает путь прохождения пакета по системе:

Данный рисунок не отражает истинную архитектуру брандмауэра, а показывает только логику работы. Существует много распространенных заблуждений по поводу уровней вложенности таблиц, цепочек, и правил. Самым верхним уровнем представления являются таблицы, которые содержат набор свойственных им цепочек. Цепочки содержат списки правил. Схематично «матрешка» выглядит следующим образом:

Синтаксис iptables

Сетевой экран iptables очень гибок в настройке и имеет огромное количество разнообразных ключей и опций. Общий вид управляющей команды:

Рассмотрим каждый элемент в отдельности.

Пакет

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

Цепочки

Существует 5 видов цепочек:

  • PREROUTING — предназначена для первичной обработки входящих пакетов, адресованных как непосредственно серверу, так и другим узлам сети. Сюда попадает абсолютно весь входящий трафик для дальнейшего анализа.
  • INPUT — для входящих пакетов, отправленных непосредственно этому серверу.
  • FORWARD — для проходящих пакетов, не адресованных этому компьютеру, предназначены для передачи следующему узлу, в случае, если сервер выполняет роль маршрутизатора.
  • OUTPUT — для пакетов, отправленных с этого сервера.
  • POSTROUTING — здесь оказываются пакеты, предназначенные для передачи на другие узлы сети.

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

Таблицы

В netfilter существуют 5 типов таблиц, каждая из них имеет свое назначение.

Таблица raw

Содержит цепочки PREROUTING и OUTPUT, здесь производятся манипуляции с пакетами до задействования механизма определения состояний.

Таблица mangle

Предназначена для модификации заголовков сетевых пакетов, таких параметров как ToS (Type of Service), TTL (Time To Live), MARK. Содержит все существующие пять цепочек.

Таблица nat

Используется для трансляции сетевых адресов, т.е. подмены адреса получателя/отправителя, применяется, если сервер используется в качестве маршрутизатора. Содержит цепочки PREROUTING, OUTPUT, POSTROUTING.

Таблица filter

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

Таблица security

Используется для взаимодействия с внешними системами безопасности, в частности с SELinux и AppArmor. Содержит цепочки INPUT, OUTPUT и FORWARD.

Имена таблиц принято писать строчными буквами.

Действия

Правилами задается поведение для iptables, каким образом поступить с тем или иным пакетом при попадании под заданные критерии. Решения, которые принимает брандмауэр, называют действиями, самые распространенные из них:

  • ACCEPT — разрешить дальнейшее прохождение пакета по системе;
  • DROP — выбросить пакет без уведомления отправителя;
  • REJECT — отказать в прохождении пакета с уведомлением отправителя, такой способ может привести к дополнительным затратам ресурсов процессора, поэтому, в большинстве случаев рекомендуется использовать DROP;
  • LOG — зафиксировать информацию о пакете в файле системного журнала;
  • MARK — позволяет помечать определенные пакеты, например для маршрутизации, данная метка перестает существовать, как только пакет покинет брандмауэр;
  • CONNMARK — то же самое, что и MARK, только для соединений;
  • QUEUE — отправляет пакет в очередь приложению для дальнейшего взаимодействия;
  • RETURN — прекращение движения пакета по текущей цепочке и возврат в предыдущую цепочку. Если текущая цепочка единственная — к пакету будет применено действие по умолчанию;
  • REDIRECT — перенаправляет пакет на указанный порт, в пределах этого же узла, применяется для реализации «прозрачного» прокси;
  • DNAT — подменяет адрес получателя в заголовке IP-пакета, основное применение — предоставление доступа к сервисам снаружи, находящимся внутри сети;
  • SNAT — служит для преобразования сетевых адресов, применимо, когда за сервером находятся машины, которым необходимо предоставить доступ в Интернет, при этом от провайдера имеется статический IP-адрес;
  • MASQUERADE — то же, что и SNAT, но главное отличие в том, что может использоваться, когда провайдер предоставляет динамический адрес, создаёт дополнительную нагрузку на систему по сравнению с SNAT;
  • TOS — позволяет управлять битами в одноименном поле заголовка IP-пакета;
  • ULOG — более продвинутый вариант записи информации, может писать как в обычный текстовый файл, так и в базу данных;
  • TTL — используется для изменения значения поля одноименного заголовка IP-пакета, устанавливает время жизни пакета.

Команды

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

Полный вид Сокращенный вид Описание
—append -A добавить правило в конец указанной цепочки
—check -C проверить существующие правила в заданной цепочке
—delete -D удалить правило с указанным номером в заданной цепочке
—insert -I вставить правило с заданным номером, без указания номера — правило будет по умолчанию добавлено первым
—replace -R заменить правило с указанным номером
—list -L вывести список всех действующих правил со всех цепочек, если указать интересующую цепочку — вывод будет сделан только по ней
—list-rules -S построчный вывод всех правил во всех цепочках, если после ключа указать имя цепочки — будут выведены только ее правила
—flush -F удалить все правила, при указании имени цепочки — правила удаляться только в ней
—zero -Z обнулить все счетчики во всех цепочках, при указании цепочки — обнуление произойдет только в ней
—new -N создать пользовательскую цепочку
—delete-chain -X удалить пользовательскую цепочку
—policy -P установить политику по умолчанию для цепочки, обычно это ACCEPT или DROP, она будет применена к пакетам, не попавшим ни под один критерий
—rename-chain -E переименовать цепочку, сначала указывается текущее имя, через пробел — новое
—help -h вывести справочную информацию по синтаксису iptables

Критерии

Чтобы к пакету применить какое-либо действие, необходимо, чтобы он попал под определенные критерии. Одно правило может содержать несколько критериев. Они, как и команды, имеют полную и сокращенную форму. Некоторые из них поддерживают логическую НЕ, если перед ними поставить знак ! — критерий будет инвертирован. Список в таблице ниже:

Полный вид Сокращенный вид Поддержка инверсии Описание
—protocol -p да указывает протокол, такие как tcp, udp, udplite и другие, поддерживаемые системой, ознакомиться со списком можно в файле /etc/protocols
—source -s да указывает адрес источника пакета, в качестве значения можно указать как один IP-адрес, так и диапазон
—destination -d да адрес получателя, синтаксис аналогичен предыдущему пункту
—match -m нет подключает указанный модуль
—jump -j нет когда правило подошло — выполнить указанное действие
—goto -g нет перейти к указанной цепочке правил
—in-interface -i да задает входящий сетевой интерфейс
—out-interface -o да указывает исходящий сетевой интерфейс
—fragment -f да указывает на фрагменты фрагментированных пакетов
—set-counters -c нет устанавливает начальные значения счетчиков пакетов и байт
—destination-port —dport да порт получателя пакета
—source-port —sport да порт отправителя пакета

Состояние соединений

Система отслеживания состояния соединений conntrack — важная часть сетевого стека linux, встроенная в ядро. Используется для сопоставления пакетов с конкретными соединениями. Под анализ попадают все пакеты, кроме помеченных NOTRACK, в таблице raw. Все пакеты классифицируются на:

  • NEW — открывается новое соединение, пришел только первый пакет;
  • ESTABLISHED — соединение установлено, пришел уже не первый пакет в рамках этого сеанса. При правильной настройке iptables — такие пакеты проходят по системе без фильтрации, поскольку она уже была выполнена для первого пакета соединения;
  • RELATED — открывается новое соединение, связанное с другим сеансом, имеющим статус ESTABLISHED;
  • INVALID — помечаются пакеты, которые не связаны ни с одним из существующих соединений, и не могут создать новое, их невозможно идентифицировать. В целях безопасности рекомендуется остановить движение таких пакетов по системе, используя действие DROP.

Основные команды iptables

Как посмотреть список правил iptables

Отображать все действующие правила лучше с детализацией и нумерацией строк:

Ключ —line-numbers нумерует строки, -L выводит список правил всех цепочек, -v отвечает за детализацию вывода, -n выводит IP-адреса и номера портов в числовом формате.

Читайте также:  Windows для acer aspire 5830tg

Как удалить правило в iptables

В первую очередь необходимо определить номер правила, которое требуется удалить, выводим список действующих правил командой:

Предположим, требуется удалить правило 4 в цепочке INPUT:

Как очистить список правил iptables

Сброс всех правил обычно требуется совместно с изменением политики по умолчанию на ACCEPT, эта процедура связана с вводом набора правил, поэтому удобнее всего создать небольшой скрипт для автоматизации процесса:

Наполняем его командами:

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

Делаем файл исполняемым:

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

В открывшейся консоли необходимо авторизоваться, после ввести команду, если скрипт был ранее подготовлен:

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

Как сохранить правила iptables

Утилита iptables, как и маршрутизаторы Cisco, не сохраняет правила, если это явно не указать и после перезагрузки возвращается в предыдущее состояние. Установим пакет:

В процессе установки на оба вопроса ответить Yes. Сохранить текущие правила:

Система при следующей загрузке использует последние сохраненные правила.

Как восстановить правила

В процессе настройки брандмауэра, по разным причинам, возникает необходимость вернуться к заведомо рабочим, испытанным правилам. Сервис netfilter-persistent сохраняет их в файле /etc/iptables/rules.v4, если не успели сохранить активные правила, значит в файле предыдущая версия, восстанавливаем:

Как записать в лог событие

В процессе отладки правил, требуется фиксировать события в системном журнале. Запретим входящие пакеты на порт 80:

Убедимся, что записи событий ведутся. Откроем файл журнала:

В нем должны быть строки вида:

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

В данном разделе рассмотрим задачи, с которыми придется столкнуться, работая с iptables.

Как заблокировать IP-адрес в iptables

Допустим, необходимо заблокировать компьютер с IP-адресом 172.10.10.1, тогда правило будет выглядеть следующим образом:

Как разрешить IP-адрес в iptables

Необходимо разрешить весь трафик к серверу для клиента с IP-адресом 192.168.111.1:

Как открыть порт в iptables

Предположим, что политика по умолчанию — блокировать все, что явно не разрешено. Откроем порты веб-сервера для обеспечения работы HTTP протокола — порт 80, и поддержки HTTPS протокола совместно с SSL — порт 443. Также для доступа к серверу по SSH откроем порт 22. Эту задачу можно решить как минимум двумя способами: создать однострочное правило, либо прописать правила по каждому из портов, рассмотрим оба. В одну строку:

При использовании расширения multiport, всегда необходимо использовать критерий -p tcp или -p udp, таким образом, одной строкой можно указать до 15 разных портов через запятую. Важно не путать критерии —-dport и —-dports. Первый из них используется для указания одного порта, второй сразу для нескольких, аналогично с —sport и —sports.

Вариант многострочной записи — для каждого порта свое правило:

Как закрыть порт в iptables

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

Закроем доступ к FTP серверу, работающему на 21 порту:

Оставим доступ только себе к SSH серверу, для остальных запретим:

Здесь 192.168.124.5 — IP-адрес доверенной машины, знак ! перед ключом -s используется для инверсии, т.е. всем, кроме этого адреса доступ закрыт.

Как разрешить или запретить ICMP ping трафик

Разрешить ping хоста:

Запретить входящие icmp-пакеты:

Как разрешить трафик на локальном узле

Трафик на локальном сетевом интерфейсе lo должен быть разрешен для корректной работы сервисов, использующих для обмена данными интерфейс локальной петли, например, базы данных, прокси-сервер squid. Поэтому рекомендуется разрешить трафик на вход и выход:

Как блокировать трафик по MAC-адресу

Устройство, которому хотим запретить доступ к серверу, имеет MAC-адрес 00:0A:EF:76:23:12:

Здесь ключ -m вызывает расширение mac, ключ —mac-source задает MAC-адрес узла, с которого поступил пакет.

Как разрешить трафик по MAC-адресу

Необходимость может возникнуть в случае использования политики запрещения всего, что явно не разрешено, на практике редко встречается разрешение по MAC-адресам, команда iptables имеет вид:

Как ограничить доступ по времени

В iptables существует модуль time, который позволяет регулировать доступ согласно расписанию. Например, запретим доступ к FTP серверу в среду с 08:10 до 08:15:

Рассмотрим подробнее значения ключей:

  • —kerneltz — использование времени текущей временной зоны, иначе iptables будет работать по времени часового пояса UTC;
  • —timestart — время начала срабатывания условия, допустимый диапазон указания времени с 00:00:00 до 23:59:59, можно указывать время в коротком варианте ЧЧ:ММ, как это сделано в примере;
  • —timestop — время окончания действия условия, формат ввода аналогичен timestart;
  • —weekdays — дни недели, в которые условие будет работать, допустимые значения Mon, Tue, Wed, Thu, Fri, Sat, Sun, или значения от 1 до 7. Так же поддерживается формат в два символа, например Mo, Tu, We и т.д. При необходимости указать несколько дней — перечисляются через запятую, без пробела, например Fr,Su,We,Tu;
  • —monthdays — задает день месяца, допустимые значения от 1 до 31.

Настройка NAT

Преобразование сетевых адресов (от англ. Network Address Translation) используется на маршрутизаторах, для взаимного предоставления сервисов между сетями согласно определенным правилам. В iptables для этого предусмотрена таблица nat, для которой характерны действия DNAT, SNAT, MASQUERADE, каждое из них описано в начале статьи. Рассмотрим практические задачи.

Проброс порта

Дано: локальная сеть на основе облачной платформы Selectel, состоящая из двух серверов и маршрутизатора с публичным IP-адресом.

Оба сервера имеют доступ в Интернет, но только один, используемый в качестве брандмауэра — имеет публичный IP-адрес. Наглядная схема на иллюстрации ниже.

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

Задача: Предоставить доступ снаружи к веб-серверу с IP-адресом 192.168.0.3.

Решение: Все операции с iptables выполняются на сервере 192.168.0.2. В схеме получается два маршрутизатора. При запросе пользователем веб-страницы — пакет с маршрутизатора, который имеет публичный адрес, попадает на сервер-маршрутизатор 192.168.0.2, на порт 80, нужно его передать веб-серверу 192.168.0.3. Делаем первый шаг — меняем адрес назначения пакета:

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

Теперь нужно поменять адрес отправителя пакета на адрес маршрутизатора 192.168.0.2, который передаст пакет маршрутизатору с публичным IP-адресом, а он уже в свою очередь доставит пакет клиенту, используем для этого SNAT. Делаем второй шаг:

Та же самая команда при использовании действия MASQUERADE не потребует ключа —to-source и указания адреса, поскольку в таком случае происходит автоматическая подмена адреса отправления на IP-адрес сетевого интерфейса, с которого ушел пакет:

Проброс порта веб-сервера выполнен.

Переадресация порта — redirect

Перенаправление пакетов, пришедших на один порт, другому порту, называют переадресацией. В качестве примера — предварительно настроим веб-сервер на работу с портом 8080, добавим следующие правила:

Действие REDIRECT выполняется в пределах одного сервера и имеет единственный ключ —-to-ports, указывающий порт назначения, этот ключ разрешается использовать, если критерий -p явно задает используемый протокол tcp или udp.

Использование в качестве маршрутизатора

Рассмотрим классическую схему для выхода в Интернет в рамках типового офиса. Имеется несколько компьютеров, которым надо предоставить доступ в глобальную сеть, один канал в Интернет, шлюз на основе компьютера c двумя сетевыми картами и операционной системой Linux.

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

Откроем, например, редактором nano:

Ниже представлен набор правил iptables с комментариями, для реализации данной схемы, копируем эти строки в открытый файл:

Важное замечание. Данный набор правил — это примитивный маршрутизатор, частный случай, представлен для наглядности и не претендует на руководство по безопасности. Поэтому, каждому, кто будет копировать, необходимо изменить его под свои нужды, как минимум переменные LAN, WAN и LAN_NET.

Сохраняем файл сочетанием нажатий клавиш Ctrl+O, нажимаем ENTER для подтверждения, затем Ctrl+X для выхода. Делаем файл исполняемым:

Активируем правила, выполнив подготовленный файл скрипта:

Источник

Оцените статью