May 7

Настраиваем и управляем брандмауэрами в Linux

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

Брандмауэры являются основным компонентом сетевой безопасности, выступая в качестве барьера между доверенными и недоверенными сетями для контроля входящего и исходящего трафика. В Linux для управления брандмауэром используются три основных инструмента: iptables , firewalld и nftables.

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

1. Для чего нужны брандмауэры в Linux

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

  • iptables : популярный инструмент для фильтрации пакетов и NAT (трансляции сетевых адресов). Часть фреймворка netfilter , он предоставляет надежный интерфейс командной строки для создания правил брандмауэра.
  • firewalld : фронтенд-демон, который упрощает управление правилами брандмауэра с помощью iptables или nftables . Идеально подходит для пользователей, ищущих удобное решение для управления брандмауэром.
  • nftables : преемник iptables, nftables предлагает более эффективную фильтрацию пакетов, унифицированную структуру команд и лучшую производительность.

2. Настройка iptables

iptables — это утилита командной строки для межсетевого экрана, которая позволяет настраивать правила управления трафиком в Linux.

Установка iptables

Большинство дистрибутивов Linux включают iptables по умолчанию. Чтобы установить или обновить его:

  • Debian/Ubuntu:
sudo apt update sudo apt install iptables
  • CentOS/RHEL:
sudo yum install iptables-services

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

  • Просмотреть текущие правила:
sudo iptables -L -v -n
  • Разрешить входящий трафик SSH:
sudo iptables -A  INPUT -p tcp --dport  22 -j ACCEPT
  • Заблокировать IP-адрес:
sudo iptables -A  INPUT -s [IP-адрес] -j DROP

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

  • Debian/Ubuntu:
sudo iptables-save > /etc/iptables/rules.v4
  • CentOS/RHEL:
sudo service iptables save

Пример конфигурации: основные правила брандмауэра

Чтобы настроить простой брандмауэр с помощью iptables, вы можете определить правила, разрешающие трафик SSH и HTTP, блокируя весь остальной входящий трафик:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

3. Использование firewalld для упрощенного управления

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

Установка firewalld

  • Debian/Ubuntu:
sudo apt install firewalld
  • CentOS/RHEL:
sudo yum install firewalld

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

  • Запуск и включение firewalld:
sudo systemctl start firewalld sudo systemctl enable firewalld
  • Просмотр активных зон:
sudo firewall-cmd --get-active-zones
  • Привязка интерфейса к зоне:
sudo firewall-cmd --zone=public --add-interface=eth0 --permanent
  • Разрешение определенных портов:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
  • Перезагрузка firewalld :
sudo firewall-cmd --reload

Пример конфигурации: настройка зон

С помощью firewalld вы можете использовать зоны для сегментации сети. Ниже пример:

  1. Назначьте eth0 внутренней зоне:
sudo firewall-cmd --zone=internal --add-interface=eth0 --permanent

2. Разрешить HTTPS и HTTP во внутренней зоне:

sudo firewall-cmd --zone=internal --add-service=http --permanent 
sudo firewall-cmd --zone=internal --add-service=https --permanent

3. Перезагрузка firewalld, чтобы применить изменения:

sudo firewall-cmd --reload

4. nftables: будущее межсетевых экранов Linux

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

Установка nftables

В большинстве последних дистрибутивов Linux nftables предустановлен. Вы можете установить или обновить его с помощью:

  • Debian/Ubuntu:
sudo apt install nftables
  • CentOS/RHEL :
sudo yum install nftables

Базовые команды nftables

  • Запуск и включение nftables:
sudo systemctl start nftables 
sudo systemctl enable nftables
  • Просмотр активных правил:
sudo nft list ruleset
  • Сброс всех правил:
sudo nft flush ruleset

Пример конфигурации nftables

Вот как можно настроить nftables для разрешения трафика SSH, HTTP и HTTPS:

  1. Откройте файл конфигурации nftables:
sudo nano /etc/nftables.conf

2. Добавьте набор правил:

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        tcp dport { 22, 80, 443 } accept
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
    }
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

3. Загрузите наборы правил:

sudo nft -f /etc/nftables.conf

Эта конфигурация по умолчанию сбрасывает все входящие соединения, но разрешает установленные соединения и новые соединения через порты SSH, HTTP и HTTPS.

5. Практические советы по настройке брандмауэра Linux

  1. Всегда используйте политику сброса по умолчанию: установите политику по умолчанию для сброса всего входящего трафика, разрешая только доверенные соединения.
  2. Разрешайте только определенные службы: избегайте широких разрешений и указывайте только необходимые службы (например, SSH, HTTP).
  3. Ограничьте доступ по SSH: ограничьте доступ по SSH, разрешив только доверенные IP-адреса и отключив вход с правами root.
  4. Используйте ведение журнала с осторожностью: включите ведение журнала для отклоненных подключений, но ограничьте частоту, чтобы избежать переполнения журналов.

Заключение

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

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.