Полное руководство по установке и настройке межсетевых экранов в Linux

Межсетевой экран (фаервол, брандмауэр) — это фундаментальный компонент безопасности любой системы, подключённой к сети. В Linux существует несколько мощных и гибких решений для фильтрации сетевого трафика, от классических инструментов командной строки до удобных графических утилит. В этой статье мы подробно разберём установку и настройку самых популярных межсетевых экранов в разных дистрибутивах Linux: iptables, nftables, UFW (Uncomplicated Firewall) и firewalld.

Почему фаервол в Linux необходим?

Даже если у вас домашний ПК, межсетевой экран выполняет критически важные функции:

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

  • Контроль исходящего трафика, предотвращая утечку данных или соединение вредоносного ПО с командным сервером.

  • Первая линия обороны в многоуровневой стратегии безопасности.

Выбор фаервола: что и когда использовать

Фаервол Сложность Управление Идеальный случай использования
iptables Высокая CLI (терминал), низкоуровневые правила Старые системы, скрипты автоматизации, тонкая настройка.
nftables Средняя/Высокая CLI (терминал), замена iptables Современные системы (ядро 3.13+), более чистый синтаксис.
UFW Низкая CLI и GUI (GUFW), абстракция над iptables Десктопы Ubuntu/Debian, быстрая и простая настройка.
firewalld Средняя CLI (firewall-cmd) и GUI, зоны Серверы и рабочие станции RHEL/Fedora/CentOS, динамическое управление.

Часть 1: iptables — классический инструмент

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

Установка iptables (если не установлен)

# Ubuntu/Debian

sudo apt install iptables iptables-persistent

# Fedora/RHEL (iptables обычно предустановлен)

sudo dnf install iptables-services

# Arch Linux

sudo pacman -S iptables

Основные команды и пример конфигурации

Правила iptables состоят из цепочек (INPUT, OUTPUT, FORWARD), политик (ACCEPT, DROP) и самих правил.

Пример базового набора правил для защиты рабочей станции:

# 1. Очистить все существующие правила

sudo iptables -F

sudo iptables -X

# 2. Установить политику по умолчанию (DROP для входящих, ACCEPT для исходящих и форвардинга)

sudo iptables -P INPUT DROP

sudo iptables -P FORWARD DROP

sudo iptables -P OUTPUT ACCEPT

# 3. Разрешить локальный трафик (loopback)

sudo iptables -A INPUT -i lo -j ACCEPT

sudo iptables -A OUTPUT -o lo -j ACCEPT

# 4. Разрешить уже установленные и связанные соединения (для ответов на наш исходящий трафик)

sudo iptables -A INPUT -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT

# 5. Разрешить входящие SSH (порт 22) с определенного IP (например, 192.168.1.100)

sudo iptables -A INPUT -p tcp -s 192.168.1.100 —dport 22 -m conntrack —ctstate NEW,ESTABLISHED -j ACCEPT

# Или разрешить SSH всем (НЕ рекомендуется для серверов в интернете)

# sudo iptables -A INPUT -p tcp —dport 22 -m conntrack —ctstate NEW,ESTABLISHED -j ACCEPT

# 6. Разрешить входящий HTTP/HTTPS (для веб-сервера)

sudo iptables -A INPUT -p tcp —dport 80 -m conntrack —ctstate NEW,ESTABLISHED -j ACCEPT

sudo iptables -A INPUT -p tcp —dport 443 -m conntrack —ctstate NEW,ESTABLISHED -j ACCEPT

# 7. Разрешить входящий ping (ICMP)

sudo iptables -A INPUT -p icmp —icmp-type echo-request -j ACCEPT

Сохранение правил iptables

Правила, заданные через команды, сбрасываются после перезагрузки. Для сохранения:

  • Ubuntu/Debian с iptables-persistent: sudo netfilter-persistent save

  • Fedora/RHEL: sudo service iptables save или sudo /sbin/iptables-save > /etc/sysconfig/iptables

  • Arch Linux: Используйте пакет iptables-save и сервис iptables.service.

Пример настройки правил iptables в терминале Linux для базовой защиты
Базовые правила iptables, разрешающие SSH, веб-трафик и защищающие систему

Часть 2: nftables — современная замена iptables

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

Установка nftables

# Ubuntu 20.04+/Debian

sudo apt install nftables

# Fedora/RHEL/CentOS 8+

sudo dnf install nftables

# Arch Linux

sudo pacman -S nftables

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

Конфигурация хранится в /etc/nftables.conf. Пример простого набора правил:

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
chain input {
type filter hook input priority 0; policy drop;

# Разрешить localhost
iifname «lo» accept
# Разрешить установленные/связанные соединения
ct state established,related accept
# Разрешить SSH (порт 22)
tcp dport 22 accept
# Разрешить ping
ip protocol icmp accept
# Логировать и отклонять все остальное
log prefix «Dropped input: » counter drop
}
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. Включить автозагрузку: sudo systemctl enable --now nftables.

Часть 3: UFW (Uncomplicated Firewall) — простота для Ubuntu

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

Установка UFW

# Ubuntu/Debian (часто предустановлен)

sudo apt install ufw gufw

# Arch Linux

sudo pacman -S ufw gufw

# Fedora/RHEL (используйте firewalld, но можно и UFW)

sudo dnf install ufw

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

# Включить UFW (будет активен после перезагрузки)

sudo ufw enable

# Разрешить службы по имени

sudo ufw allow ssh

sudo ufw allow http

sudo ufw allow https

# Разрешить порт вручную

sudo ufw allow 8080/tcp

# Разрешить соединения с определенного IP

sudo ufw allow from 192.168.1.0/24

# Запретить порт

sudo ufw deny 21/tcp

# Проверить статус и список правил

sudo ufw status verbose

sudo ufw status numbered

# Удалить правило по номеру (см. в `status numbered`)

sudo ufw delete 2

Графический интерфейс GUFW для настройки фаервола UFW в Ubuntu Linux
Графическая оболочка GUFW делает управление фаерволом UFW наглядным и простым

Часть 4: firewalld — гибкий фаервол для RHEL/Fedora

firewalld использует концепцию зон и сервисов, что удобно для систем с изменяющимся сетевым окружением (ноутбуки).

Установка firewalld

# Fedora/RHEL/CentOS (обычно предустановлен)

sudo dnf install firewalld firewall-config

# Ubuntu/Debian

sudo apt install firewalld

# Arch Linux

sudo pacman -S firewalld

Запуск: sudo systemctl enable --now firewalld

Основные команды firewalld (firewall-cmd)

# Добавить сервис в зону по умолчанию (public)

sudo firewall-cmd —permanent —add-service=ssh

sudo firewall-cmd —permanent —add-service=http

sudo firewall-cmd —permanent —add-service=https

# Открыть порт напрямую

sudo firewall-cmd —permanent —add-port=8080/tcp

# Разрешить доступ с определенной подсети

sudo firewall-cmd —permanent —add-rich-rule=‘rule family=»ipv4″ source address=»192.168.1.0/24″ accept’

# Просмотреть активную конфигурацию

sudo firewall-cmd —list-all

# Применить изменения (после —permanent)

sudo firewall-cmd —reload

Управление фаерволом firewalld через команду firewall-cmd в терминале Fedora
Команда firewall-cmd —list-all показывает полную конфигурацию активной зоны firewalld

Сравнительная таблица команд для типовых задач

Задача iptables nftables UFW firewalld
Разрешить SSH -A INPUT -p tcp —dport 22 -j ACCEPT tcp dport ssh accept sudo ufw allow ssh —add-service=ssh
Разрешить HTTP/HTTPS —dport 80 -j ACCEPT tcp dport {http, https} accept sudo ufw allow http —add-service={http,https}
Запретить порт -A INPUT -p tcp —dport 21 -j DROP tcp dport 21 drop sudo ufw deny 21 —remove-port=21/tcp
Разрешить по IP -s 192.168.1.100 -j ACCEPT ip saddr 192.168.1.100 accept sudo ufw allow from 192.168.1.100 —add-rich-rule=’rule source ip…’
Просмотр правил sudo iptables -L -v -n sudo nft list ruleset sudo ufw status verbose sudo firewall-cmd —list-all

Заключение: рекомендации по выбору и использованию

  1. Для новичков на Ubuntu/Debian: Используйте UFW. Он прост, интуитивен и полностью покрывает потребности десктопа.

  2. Для серверов RHEL/Fedora/CentOS: Используйте firewalld. Концепция зон и интеграция с системой идеальна для серверных ролей.

  3. Для сценариев автоматизации и тонкого контроля: Изучите iptables или современный nftables. Они дают полный контроль над сетевым трафиком.

  4. Общее правило: Всегда начинайте с политики «запретить всё, разрешить необходимое». Минимизируйте количество открытых портов. Регулярно проверяйте логи (journalctl -u ufw или /var/log/ufw.log для UFW) на предмет подозрительных попыток подключения.

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