Настройка брандмауэра: руководство по iptables и ufw
Настройка брандмауэра Linux-сервера с помощью iptables и ufw: создание правил SSH/HTTP/HTTPS, сохранение правил после перезагрузки и тестирование конфигурации.
Содержание
Настройка брандмауэра: руководство по iptables и ufw
Брандмауэр контролирует входящий и исходящий сетевой трафик на вашем сервере. В Linux есть два популярных инструмента: мощный низкоуровневый iptables и удобный ufw (Uncomplicated Firewall). Это руководство охватывает оба инструмента.
Серверы REXE оснащены сетевым брандмауэром Path Panel. Серверный брандмауэр добавляет дополнительный уровень безопасности. Рекомендуется использовать оба вместе.
Основы iptables
iptables — это инструмент командной строки для управления фреймворком netfilter ядра Linux. Он обеспечивает фильтрацию пакетов, NAT и перенаправление портов.
Просмотр текущих правил
# Список всех правил
sudo iptables -L -n -v
# Список с номерами строк
sudo iptables -L -n -v --line-numbers
# Просмотр таблицы NAT
sudo iptables -t nat -L -n -v
Основные концепции iptables
| Концепция | Описание |
|---|---|
| Chain | Цепочка правил: INPUT, OUTPUT, FORWARD |
| Table | Таблица правил: filter, nat, mangle |
| Target | Действие правила: ACCEPT, DROP, REJECT |
| Match | Критерий совпадения: порт, протокол, IP |
Создание базовых правил
# Разрешить loopback-интерфейс
sudo iptables -A INPUT -i lo -j ACCEPT
# Разрешить установленные соединения
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить SSH (порт 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Разрешить HTTP (порт 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Разрешить HTTPS (порт 443)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Блокировать весь остальной входящий трафик
sudo iptables -A INPUT -j DROP
Всегда разрешайте SSH перед добавлением правила DROP. Иначе вы заблокируете себе доступ к серверу.
Удаление правил
# Удалить по номеру правила
sudo iptables -D INPUT 3
# Удалить по содержимому правила
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
# Очистить все правила
sudo iptables -F
Разрешение / блокировка конкретных IP
# Разрешить конкретный IP для SSH
sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
# Заблокировать конкретный IP
sudo iptables -A INPUT -s 10.0.0.5 -j DROP
# Заблокировать диапазон IP
sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP
Сохранение правил iptables
Правила iptables по умолчанию теряются при перезагрузке. Чтобы сделать их постоянными:
Debian/Ubuntu
# Установить iptables-persistent
sudo apt install iptables-persistent -y
# Сохранить текущие правила
sudo netfilter-persistent save
# Перезагрузить правила
sudo netfilter-persistent reload
RHEL/CentOS/AlmaLinux
# Установить iptables-services
sudo yum install iptables-services -y
# Включить и запустить сервис
sudo systemctl enable iptables
sudo systemctl start iptables
# Сохранить правила
sudo service iptables save
Управление брандмауэром с помощью ufw
ufw упрощает сложность iptables с помощью простых команд. Предустановлен на Ubuntu и Debian.
Установка и включение ufw
# Установить ufw
sudo apt install ufw -y
# Проверить статус
sudo ufw status verbose
# Установить политики по умолчанию
sudo ufw default deny incoming
sudo ufw default allow outgoing
Всегда разрешайте SSH перед включением ufw, чтобы не заблокировать себя!
Базовые правила ufw
# Разрешить SSH
sudo ufw allow ssh
# или по порту:
sudo ufw allow 22/tcp
# Разрешить HTTP и HTTPS
sudo ufw allow http
sudo ufw allow https
# Открыть пользовательский порт
sudo ufw allow 8080/tcp
# Включить ufw
sudo ufw enable
Управление правилами ufw
# Список правил с номерами
sudo ufw status numbered
# Удалить правило по номеру
sudo ufw delete 3
# Удалить правило по содержимому
sudo ufw delete allow 8080/tcp
# Разрешить с конкретного IP
sudo ufw allow from 192.168.1.100
# Заблокировать конкретный IP
sudo ufw deny from 10.0.0.5
# Отключить ufw
sudo ufw disable
# Сбросить все правила
sudo ufw reset
Тестирование брандмауэра
Сканирование портов с nmap
# Сканировать конкретные порты с другой машины
nmap -sT -p 22,80,443 SERVER_IP
# Сканировать все порты
nmap -sT SERVER_IP
Проверка прослушиваемых портов с ss
# Список прослушиваемых TCP-портов
sudo ss -tlnp
# Список всех соединений
sudo ss -tunap
Тест соединения
# Тест конкретного порта
telnet SERVER_IP 80
# Тест с nc
nc -zv SERVER_IP 443
# HTTP-тест с curl
curl -I http://SERVER_IP
Рекомендации по безопасности
Применяйте принцип минимальных привилегий: открывайте только те порты, которые действительно нужны.
- Измените порт SSH: Используйте нестандартный порт вместо 22
- Применяйте ограничение скорости: Защита от атак перебором
- Установите Fail2Ban: Автоматическая блокировка неудачных попыток входа
- Регулярно проверяйте: Просматривайте правила с помощью
iptables -Lилиufw status - Делайте резервные копии: Сохраняйте правила в файл
# Сохранить правила iptables в файл
sudo iptables-save > /etc/iptables/rules.v4
# Восстановить из файла
sudo iptables-restore < /etc/iptables/rules.v4
Заключение
iptables предлагает мощь и гибкость, а ufw — скорость и простоту. Начинающим следует начать с ufw; для расширенных конфигураций подходит iptables. Оба инструмента работают совместно с брандмауэром Path Panel от REXE. Регулярно проверяйте правила брандмауэра и закрывайте порты, которые больше не нужны.
Связанные статьи
Подключение к VDS по SSH: PuTTY, терминал и SSH-ключи
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Подключение к Windows VDS по RDP: полное руководство
Пошаговое руководство по RDP-подключению к Windows Server VDS: настройка, безопасность NLA, правило фильтрации Path Panel и устранение неполадок.
Смена ОС VDS-сервера: пошаговое руководство (Reinstall)
Смена операционной системы VDS через панель REXE: советы по резервному копированию, поддерживаемые дистрибутивы Linux и версии Windows Server.