27 полезных советов по iptables для администратора Linux

27 полезных советов по iptables для администратора Linux

Рубрики:

Firewall, Linux

Метки:

, , , ,

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

Содержание:

  1. Описание утилиты iptables
  2. Советы по настройке iptables для администратора Linux
    1. Запускаем / останавливаем / перезапускаем iptables
    2. Проверяем все правила брандмауэра
    3. Блокируем определенные IP-адреса с помощью iptables
    4. Разблокируем ранее заблокированные IP-адреса
    5. Блокируем определенный порт с помощью брандмауэра iptables
    6. Разрешаем соединения с несколькими портами в iptables, используя multiport
    7. Разрешаем доступ определенного диапазона сети к конкретному порту
    8. Блокируем Facebook с помощью iptables
    9. Настройка маскарадинга, source nat, nat источника
    10. Настраиваем переадресацию портов в iptables
    11. Ограничиваем сетевой поток на 80 порт Apache с помощью iptables
    12. Блокируем входящие запросы ping
    13. Разрешаем доступ loopback
    14. Ведем журнал пропущенных сетевых пакетов
    15. Блокируем доступ к определенному MAC-адресу с помощью iptables
    16. Ограничиваем количество одновременных подключений с одного IP-адреса
    17. Ведем поиск в правилах
    18. Создаем новую цепочку iptables
    19. Сбрасываем все цепочки или правила брандмауэра iptables
    20. Сохраняем правила в файл
    21. Восстанавливаем правила из файла
    22. Постоянное сохранение правил iptables
    23. Настраиваем правила в соответствии с PCI
    24. Разрешаем установленные и связанные соединения
    25. Удаляем INVALID пакетов
    26. Блокируем соединения на сетевом интерфейсе
    27. Блокируем отправку электронной почты с помощью iptables
  3. Выводы

Описание утилиты iptables

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

По умолчанию в iptables существует три основные таблицы:

  1. FILTER — таблица по умолчанию, содержащая следующие цепочки:
    • INPUT — для управления поведением входящих соединений;
    • FORWARD — для проходящих соединений;
    • OUTPUT — пакеты, сгенерированные локально.
  2. NAT — таблица, которая  используется для настройки NAT (Network Address Translation). NAT — это механизм преобразования сетевых адресов транзитных пакетов в сетях TCP / IP, который делит пакеты на следующие цепочки:
    • PREROUTING — настройка пакетов перед маршрутизацией;
    • OUTPUT — настройка пакетов после маршрутизации;
    • POSTROUTING — используется для настройки пакетов перед отправкой.
  3. MANGLE — таблица, которая отвечает за изменение заголовков и меток пакетов:
    • PREROUTING — для входящих соединений;
    • OUTPUT — локально генерируемых пакетов;
    • INPUT — для входящих пакетов;
    • POSTROUTING — пакетов в момент их отправки;
    • FORWARD — пакетов, пересылаемых с одного интерфейса на другой.

Советы по настройке iptables для администратора Linux

Теперь давайте перейдем непосредственно к 27 советам по настройке iptables.

Важно: для использования утилиты Вам потребуются права суперпользователя (права root).

Запускаем / останавливаем / перезапускаем iptables

Чтобы начать использовать межсетевой экран — Вам нужно знать, как им управлять. Давайте разберемся в том, как его запустить, остановить или перезапустить. Если Вы используете дистрибутивы на базе SystemD (свежие версии Debian, Ubuntu, Arch Linux, RHEL, CentOS, Fedora, openSUSE и т.д.) — введите в командную строку следующие команды.

Для запуска утилиты:

 

Для прекращения работы:

 

Для перезагрузки:

 

В случае использования систем Linux на основе SysVinit — для запуска инструмента введите в командную строку следующую команду:

 

Для остановки:

 

Для перезагрузки:

Проверяем все правила брандмауэра

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

 

Эта команда должна вернуть следующий результат, если Вы ранее не настраивали межсетевой экран:

iptables правила

Если Вы хотите проверить правила таблицы NAT — используйте приведенную ниже команду:

 

iptables-nat правила

Блокируем определенные IP-адреса с помощью iptables

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

 

Блокировка ip-адреса с iptables

Советуем очень осторожно подходить к блокировке, поскольку в случае ошибки можно легко заблокировать собственный или совсем не тот IP-адрес. Опция -A добавляет новое правило в конец выбранной цепочки, тогда как опция -s — позволяет добавить нужный Вам IP-адрес.

Иногда Вам может потребоваться заблокировать не сам IP-адрес, а только TCP-трафик с него. Для этого модифицируйте предыдущую команду, добавив опцию -p, которая указывает на протокол (в нашем случаи — TCP). В результате команда будет выглядеть следующим образом:

 

Блокировка tcp

Разблокируем ранее заблокированные IP-адреса

Когда Вы выяснили, что действия со стороны определенного IP-адреса больше не представляют угрозы для сети — будет правильным разблокировать запросы от него. Для удаления ранее созданного правила блокировки воспользуйтесь данной командой:

 

Разблокировка адреса при помощи iptables

Опция -D позволяет Вам удалить одно или несколько правил из выбранной цепочки. Вы также можете использовать опцию --delete, что является расширенной версией -D.

Блокируем определенный порт с помощью брандмауэра iptables

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

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

 

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

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

 

Если Вам нужно разрешить или заблокировать трафик UDP вместо TCP — замените аргумент tcp на udp.

Разрешаем соединения с несколькими портами в iptables, используя multiport

Чтобы не настраивать доступ к нескольким портам по отдельности — рекомендуем Вам использовать модуль сопоставления пакетов multiport. Опция -m позволяет Вам использовать multiport, тогда как опция --dports — указывает номера портов назначения:

 

Разрешение входящих соединений

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

 

Разрешение исходящих соединений

Разрешаем доступ определенного диапазона сети к конкретному порту

Бывает, что для удовлетворения политики безопасности сети Вам потребуется ограничить подключения на конкретном порту для Вашей сети. Например, разрешить исходящие подключения через порт 22 к сети 192.168.100.0/24.

Для этого воспользуйтесь командой:

 

Блокировка порта для ip-адреса

Опция -d позволяет Вам указать нужный IP-адрес назначения.

Блокируем Facebook с помощью iptables

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

Важно: диапазон IP-адресов, используемый Facebook, может отличаться в зависимости от Вашего местоположения.

Во-первых, узнайте IP-адреса, используемые Facebook:

 

Далее вводим следующую команду:

 

Поиск адреса Facebook

Затем — блокируем Facebook с помощью следующего правила:

 

Блокировка Facebook

Настройка маскарадинга, source nat, nat источника

Маскарадинг — особый тип трансляции сетевых адресов (NAT), который позволяет маршрутизатору или брандмауэру на базе Linux скрывать IP-адреса внутренней сети за собственным IP-адресом маршрутизатора при взаимодействии с внешними сетями, такими как Интернет.

Чтобы реализовать маскарадинг с помощью iptables, нужно добавить правило в цепочку POSTROUTING маршрутизации таблицы NAT. Синтаксис команды имеет следующий вид:

 

В этой команде:

  • -t nat —указывает, что правило нужно добавить в таблицу nat;
  • -A POSTROUTING — добавляет правило в цепочку POSTROUTING;
  • -o [external_interface] — указывает исходящий интерфейс [external_interface], для которого будет действовать правило NAT;
  • -j MASQUERADE — указывает целевое действие для правила (в данном случае MASQUERADE).

После добавления этого правила IP-адрес источника любого исходящего пакета, проходящего через интерфейс [external_interface], замаскируется под IP-адрес интерфейса [external_interface].

По умолчанию правило MASQUERADE применяется ко всем исходящим пакетам на всех интерфейсах. Однако Вы можете самостоятельно указать конкретный интерфейс для маскарадинга, используя опцию -s. Например:

Настраиваем переадресацию портов в iptables

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

 

Данная команда переадресовывает весь входящий трафик через сетевой интерфейс eth0 с порта 25 на порт 2525 (выбранные в качестве примера). А 192.168.10.10 — IP-адрес сервера во внутренней сети.

Перенаправление портов

Ограничиваем сетевой поток на 80 порт Apache с помощью iptables

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

 

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

Данное правило использует сразу несколько опций. Во-первых, --limit — ограничивает количество входящих соединений в указанный промежуток времени (в нашем случае — до 100 в минуту). Во-вторых, --limit-burst — устанавливает предельное количества пакетов в 200 штук, когда начинает срабатывать правило. Редактируйте эти параметры под Вашу конкретную задачу.

Блокируем входящие запросы ping

Утилита ping используется в качестве простого метода для выявления доступных хостов в сети и определяет схемы подключения этих хостов к Интернету. С помощью нее злоумышленники могут найти удобные цели для атаки. Блокируя запросы ping, можно предот­вратить часть самых простых атак на свой компьютер. Чтобы заблокировать такие запросы — выполните следующую команду.

 

Блокировка ping-запросов

Разрешаем доступ loopback

Loopback — логический интерфейс, необходимый для корректной работы маршрутизатора и передачи данных. Сам интерфейс является отображением логических процессов в маршрутизаторе. Он часто используется для тестирования передачи данных или передающей инфраструктуры. Доступ loopback важен для Вашей сети, и всегда должен оставаться активным. Настроить его помогут следующие команды.

Для входящих соединений:

 

Для исходящих соединений:

 

Разрешение loopback

Опция -i нужна, чтобы задать имя интерфейса, через который был получен пакет. Тогда как опция -o — позволяет задать имя интерфейса, через который будет отправлен пакет. В нашем случаи — это lo (Loopback Interface)

Ведем журнал пропущенных сетевых пакетов

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

Для регистрации отброшенных пакетов на определенном сетевом интерфейсе Вы можете использовать следующую команду:

 

Также Вы можете изменить значение аргумента, идущего после опции --log-prefix на любое другое — по собственному выбору.

У дистрибутивов CentOS / RHEL сообщения об ошибках хранятся в файлах, расположенных по адресу /var/log/messages. Тогда как у дистрибутивов Ubuntu / Debian — в каталоге /var/log/kern.log, Вы можете легко найти их с помощью следующей команды:

Блокируем доступ к определенному MAC-адресу с помощью iptables

Фильтрация MAC-адресов позволяет Вам определять список устройств, которым разрешен доступ к сети. Стоит отметить, что сегодня это — важная часть сетевого администрирования. Чтобы заблокировать доступ к системе с определенного MAC-адреса — используйте приведенную команду:

 

Блокировка mac-адреса

В Вашем случаи, нужно заменить взятый в качестве примера адрес 9A:62:4E:FF:AF:56 на фактический MAC-адрес, который Вы хотите заблокировать.

Ограничиваем количество одновременных подключений с одного IP-адреса

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

 

Блокировка одновременных подключений

В результате команда установит ограничение — не более 3-х подключений для клиента к порту 22. Кроме того, опция --connlimit-above установит количество активных TCP-соединений — не более n (значение может быть изменено в соответствии с Вашими требованиями).

Ведем поиск в правилах

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

 

В данной команде Вам нужно заменить переменную $table на таблицу, в которой Вы хотите выполнить поиск. А переменную $string — на строку, которую Вы ищете. Например:

Создаем новую цепочку iptables

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

 

Теперь Вы можете проверить все цепочки:

 

Создание новой таблицы

Опция -N или --new-chain позволяет Вам создать цепочки с заданным названием.

Сбрасываем все цепочки или правила брандмауэра iptables

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

 

Для сброса правил из указанной таблицы (в нашем случае — NAT) введите следующую команду:

 

Удаления всех правил iptables

Сохраняем правила в файл

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

 

Сохранение в файл

Восстанавливаем правила из файла

Чтобы восстановить ранее сохраненный список утерянных правил из файла — используйте команду iptables-restore:

Постоянное сохранение правил iptables

В дистрибутивах Linux на базе Debian доступен инструмент iptables-persistent. Он позволяет сохранять правила iptables на постоянной основе. Это, в свою очередь, гарантирует, что правила брандмауэра останутся неизменными даже после перезагрузки системы.

Чтобы установить iptables-persistent, выполните следующую команду:

 

В процессе установки инструмент предложит сохранить текущие правила iptables в файл настроек /etc/iptables/rules.v4. Чтобы сохранить правила, выберите параметр Yes.

Настраиваем правила в соответствии с PCI

Системным администраторам может потребоваться настроить свои серверы на совместимость с PCI — стандарт безопасности данных индустрии платежных карт.

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

Для такой настройки на совместимость потребуется несколько IP-адресов. При написании соответствующих правил нужно быть предельно осторожным. И использовать их только в том случае, если Вы на 100% уверены, что делаете:

 

Если Вы используете cPanel или иную подобную панель управления — возможно, Вам также придется заблокировать её порты в соответствии со следующим примером:

Разрешаем установленные и связанные соединения

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

 

Для настройки правила для исходящего трафика используйте следующую команду:

 

Разрешение соединений

Удаляем INVALID пакетов

Рассмотрим использование опции --ctstate на примере удаления пакетов INVALID (то есть тех, которые относятся к неизвестному соединению). В большинстве случаев такие пакеты нужно отбрасывать (или удалять). Для этой задачи введите следующую команду:

Блокируем соединения на сетевом интерфейсе

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

 

Блокировка соединения

Блокируем отправку электронной почты с помощью iptables

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

Выводы

Утилита iptables — это мощный брандмауэр, который позволит Вам правильно настроить все нужные правила для сети. Каждому системному администратору придется работать с множеством подобных инструментов. И мы надеемся, что данная статья помогла Вам разобраться с основами использования iptables для администратора Linux. Если вы считаете, что мы должны добавить больше примеров в это руководство — поделитесь ими в комментариях.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Firewall, Linux

Метки:

, , , ,

Больше похожих постов

1 комментарий. Оставить новый

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню