Настраиваем и управляем брандмауэрами в 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 по умолчанию. Чтобы установить или обновить его:
sudo apt update sudo apt install iptables
sudo yum install iptables-services
Основные команды iptables
sudo iptables -L -v -n
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -s [IP-адрес] -j DROP
Сохранить правила:
sudo iptables-save > /etc/iptables/rules.v4
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
sudo apt install firewalld
sudo yum install 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
sudo firewall-cmd --reload
Пример конфигурации: настройка зон
С помощью firewalld вы можете использовать зоны для сегментации сети. Ниже пример:
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 предустановлен. Вы можете установить или обновить его с помощью:
sudo apt install nftables
sudo yum install nftables
Базовые команды nftables
sudo systemctl start nftables sudo systemctl enable nftables
sudo nft list ruleset
sudo nft flush ruleset
Пример конфигурации nftables
Вот как можно настроить nftables для разрешения трафика SSH, HTTP и HTTPS:
sudo nano /etc/nftables.conf
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; } }
sudo nft -f /etc/nftables.conf
Эта конфигурация по умолчанию сбрасывает все входящие соединения, но разрешает установленные соединения и новые соединения через порты SSH, HTTP и HTTPS.
5. Практические советы по настройке брандмауэра Linux
- Всегда используйте политику сброса по умолчанию: установите политику по умолчанию для сброса всего входящего трафика, разрешая только доверенные соединения.
- Разрешайте только определенные службы: избегайте широких разрешений и указывайте только необходимые службы (например, SSH, HTTP).
- Ограничьте доступ по SSH: ограничьте доступ по SSH, разрешив только доверенные IP-адреса и отключив вход с правами root.
- Используйте ведение журнала с осторожностью: включите ведение журнала для отклоненных подключений, но ограничьте частоту, чтобы избежать переполнения журналов.
Заключение
Выбор подходящего инструмента брандмауэра для системы Linux зависит от конкретных требований. Iptables предлагает детальный контроль, firewalld упрощает управление с помощью правил на основе зон, а nftables обеспечивает возможности брандмауэра следующего поколения с улучшенной производительностью и гибкостью. Понимая каждый инструмент и его команды, вы можете уверенно защитить свои системы Linux от несанкционированного доступа и сетевых угроз.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.