Содержание:
Во всех операционных системах, основанных на базе ядра Linux, имеется встроенный межсетевой экран, осуществляющий контроль и фильтрацию входящего и исходящего трафика, исходя из заданных пользователем или платформой правил. В дистрибутиве CentOS 7 по умолчанию такую функцию выполняет утилита iptables, взаимодействуя со встроенным брандмауэром netfilter. Иногда системному администратору или менеджеру сети приходится настраивать работу этого компонента, прописывая соответствующие правила. В рамках сегодняшней статьи мы бы хотели поговорить об основах конфигурации iptables в упомянутой выше ОС.
Настраиваем iptables в CentOS 7
Сам инструмент доступен к работе сразу же после завершения инсталляции CentOS 7, но дополнительно потребуется установить некоторые сервисы, о чем мы и поговорим далее. В рассматриваемой платформе имеется еще один встроенный инструмент, выполняющий функцию фаервола под названием FirewallD. Для избежания конфликтов при дальнейшей работе рекомендуем отключить этот компонент. Развернутые инструкции по этой теме читайте в другом нашем материале по следующей ссылке.
Подробнее: Отключение firewallD в CentOS 7
Как известно, в системе могут применяться протоколы IPv4 и IPv6. Сегодня мы остановимся на примере IPv4, но если вы хотите осуществлять конфигурацию для другого протокола, потребуется вместо команды iptables в консоли использовать ip6tables.
Установка сервисов iptables
Первоочередно следует добавить в систему дополнительные компоненты рассматриваемой сегодня утилиты. Они помогут в настройке правил и других параметров. Загрузка осуществляется из официального хранилища, поэтому не отнимет много времени.
- Все дальнейшие действия будут производиться в классической консоли, поэтому запустите ее любым удобным методом.
- За установку сервисов отвечает команда
sudo yum install iptables-services
. Введите ее и нажмите на клавишу Enter. - Подтвердите учетную запись суперпользователя, указав пароль от нее. Обратите внимание, что при запросах sudo вводимые символы в строке никогда не отображаются.
- Будет предложено добавить в систему один пакет, подтвердите это действие, выбрав вариант y.
- По завершении инсталляции проверьте текущую версию инструмента:
sudo iptables --version
. - Результат появится в новой строке.
Теперь ОС полностью готова для дальнейшей настройки межсетевого экрана через утилиту iptables. Мы предлагаем ознакомиться с конфигурацией по пунктам, начав с управления сервисами.
Остановка и запуск сервисов iptables
Управление режимом работы iptables требуется в тех случаях, когда нужно проверить действие определенных правил или просто выполнить перезапуск компонента. Делается это при помощи встроенных команд.
- Введите
sudo service iptables stop
и нажмите на клавишу Enter, чтобы остановить сервисы. - Для подтверждения этой процедуры укажите пароль суперпользователя.
- При успешном выполнении процесса отобразится новая строка, свидетельствующая о внесении изменений в конфигурационный файл.
- Запуск сервисов производится практически так же, только строка обретает вид
sudo service iptables start
.
Подобная перезагрузка, запуск или остановка утилиты доступна в любой момент, не забудьте только вернуть обратное значение, когда это будет востребовано.
Просмотр и удаление правил
Как уже было сказано ранее, управление межсетевым экраном производится путем ручного или автоматического добавления правил. Например, некоторые дополнительные приложения могут обращаться к инструменту, изменяя определенные политики. Однако большинство подобных действий все же делается вручную. Просмотр списка всех текущих правил доступен через команду sudo iptables -L
.
В отобразившемся результате будет информация по трем цепочкам: «INPUT», «OUTPUT» и «FORWARD» — входящий, исходящий и пересылаемый трафик соответственно.
Определить статус всех цепочек можно, введя sudo iptables -S
.
Если увиденные правила вас не устраивают, они достаточно просто удаляются. Весь список очищается так: sudo iptables -F
. После активации правила будут стерты абсолютно для всех трех цепей.
Когда необходимо затронуть только политики из какой-то одной цепи, к строке добавляется дополнительный аргумент:
sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD
Отсутствие всех правил означает, что сейчас не применяется никаких настроек фильтрации трафика ни в одну из сторон. Далее системный администратор уже самостоятельно задает новые параметры, используя всю ту же консоль, команду и различные аргументы.
Прием и сбрасывание трафика в цепях
Каждая цепь настраивается отдельно для приема или блокирования трафика. Выставив определенное значение, можно добиться того, что, например, весь входящий трафик будет блокироваться. Для этого команда должна быть sudo iptables --policy INPUT DROP
, где INPUT — название цепи, а DROP — значение сброса.
Точно такие же параметры задаются и для других цепей, например, sudo iptables --policy OUTPUT DROP
. Если же необходимо выставить значение на прием трафика, тогда DROP изменяется на ACCEPT и получается sudo iptables --policy INPUT ACCEPT
.
Разрешение и блокировка портов
Как известно, все сетевые приложения и процессы работают через определенный порт. Путем блокировки или разрешения определенных адресов можно контролировать доступ всех сетевых целей. Давайте разберем проброс порта на примере 80. В «Терминале» будет достаточно ввести команду sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
, где -А — добавление нового правила, INPUT — указание цепи, -P — определение протокола, в этом случае TCP, а --dport — порт назначения.
Точно такая же команда относится и к порту 22, который используется сервисом SSH: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
.
Для блокирования указанного порта применяется строка точно такого же вида, только в конце ACCEPT изменяется на DROP. В итоге получается, например, sudo iptables -A INPUT -p tcp --dport 2450 -j DROP
.
Все эти правила заносятся в конфигурационный файл и вы можете просмотреть их в любой момент. Напоминаем, осуществляется это через sudo iptables -L
. Если вместе с портом необходимо разрешить еще и сетевой IP-адрес, строка немного видоизменяется — после TPC добавляется -s и сам адрес. sudo iptables -A INPUT -p tcp -s 12.12.12.12/32 --dport 22 -j ACCEPT
, где 12.12.12.12/32 — необходимый IP-адрес.
Блокирование происходит по тому же принципу, меняя в конце значение ACCEPT на DROP. Тогда получается, например, sudo iptables -A INPUT -p tcp -s 12.12.12.0/24 --dport 22 -j DROP
.
Блокирование ICMP
ICMP (Internet Control Message Protocol) — протокол, который входит в состав TCP/IP и задействован для передачи сообщений об ошибках и экстренных ситуациях при работе с трафиком. Например, когда запрашиваемый сервер недоступен, именно этот инструмент выполняет сервисные функции. Утилита iptables позволяет заблокировать его через брандмауэр, а сделать это можно командой sudo iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
. Она произведет блокировку запросов от вашего и к вашему серверу.
Входящие запросы блокируются немного иначе. Тогда нужно ввести sudo iptables -I INPUT -p icmp --icmp-type 8 -j DROP
. После активации данных правил сервер не будет отвечать на ping-запросы.
Предотвращение несанкционированных действий на сервере
Иногда серверы подвергаются DDoS атакам или другим несанкционированным действиям со стороны злоумышленников. Правильная настройка межсетевого экрана позволит обезопасить себя от подобного рода взломов. Для начала мы рекомендуем задать такие правила:
- Пропишите в консоли
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT
, где --limit 20/minute — ограничение на частоту положительных результатов. Единицу измерения вы можете указывать самостоятельно, например,/second, /minute, /hour, /day
. --limit-burst number — ограничение на число пропускаемых пакетов. Все значения выставляются индивидуально по предпочтениям администратора. - Далее можно запретить сканирование открытых портов, чтобы убрать одну из возможных причин взлома. Введите первую команду
sudo iptables -N block-scan
. - Затем укажите
sudo iptables -A block-scan -p tcp —tcp-flags SYN,ACK,FIN,RST -m limit —limit 1/s -j RETURN
. - Последняя третья команда имеет вид:
sudo iptables -A block-scan -j DROP
. Выражение block-scan в данных случаях — название используемой цепи.
Показанные сегодня настройки являются лишь основой работы в инструменте управления межсетевым экраном. В официальной документации утилиты вы найдете описание всех доступных аргументов и опций и сможете настроить брандмауэр конкретно под свои запросы. Выше были рассмотрены стандартные правила безопасности, которые применяются чаще всего и в большинстве случаев обязательны.
Наш Telegram каналТолько полезная информация
Спасибо! Очень хорошая статья. Всё просто и понятно объяснено