Один из первых шагов при настройке сервера — защита его от нежелательных подключений. Без правильно настроенного межсетевого экрана (firewall) ваш сервер становится уязвимым для атак, сканирования портов и несанкционированного доступа.
В этой статье разберём:
✔ Виды firewall в Linux (iptables, firewalld, nftables)
✔ Какой выбрать? Плюсы и минусы каждого
✔ Базовые настройки для защиты сервера
✔ Какие порты нужно закрыть в первую очередь
Какие бывают firewall в Linux?
В Linux есть несколько инструментов для управления сетевым экраном. Рассмотрим три основных:
🔹 iptables
Что это? Классический инструмент для фильтрации сетевого трафика, работает на уровне ядра.
✔ Преимущества:
- Гибкость и мощь (можно настроить любые правила)
- Поддержка NAT, port forwarding
- Работает на любом дистрибутиве Linux
❌ Недостатки:
- Сложный синтаксис команд
- Правила не сохраняются после перезагрузки (если не использовать `iptables-persistent`)
Кому подойдёт? Администраторам, которым нужен полный контроль.
🔹 firewalld
Что это? Более современная обёртка над iptables/nftables с поддержкой зон и динамических правил.
✔ Преимущества:
- Проще в использовании (есть команды `firewall-cmd`)
- Поддержка runtime-изменений без перезагрузки
- Автоматическое сохранение правил
❌ Недостатки:
- Меньшая гибкость, чем у iptables
- Только в RHEL/CentOS/Fedora (в Debian/Ubuntu нужно ставить отдельно)
Кому подойдёт? Тем, кто хочет быстро настроить firewall без сложных правил.
🔹 nftables
Что это? Новый стандарт, пришедший на смену iptables (но пока не везде включён по умолчанию).
✔ Преимущества:
- Более быстрый и эффективный
- Упрощённый синтаксис
- Поддержка IPv4/IPv6 из коробки
❌ Недостатки:
- Меньше документации и примеров
- Не все старые системы поддерживают
Кому подойдёт? Тем, кто работает на свежих дистрибутивах (Debian 10+, Ubuntu 20.04+).
Какой firewall выбрать?
- iptables
✅ Максимум контроля
❌ Сложный, нет автосохранения
⚠ Устаревает, но работает везде - firewalld
✅ Простота (зоны, сервисы)
⚠ Только для RHEL/Fedora
✅ Автосохранение - nftables
✅ Современный, гибкий (замена iptables)
✅ Поддержка новых ОС
⚠ Нужно учить синтаксис
Выбор:
- Новичок на RHEL? → firewalld
- Полный контроль? → iptables (старые системы) / nftables (новые)
- Будущее? → nftables
Вывод:
- Если вам нужна максимальная гибкость→ iptables
- Если хотите быстро и просто→ firewalld
- Если используете современный дистрибутив → nftables
Базовые настройки firewall
🔧 Настройка iptables (базовые правила)
# Разрешаем локальный трафик
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем уже установленные соединения
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Разрешаем SSH (если нужно)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Разрешаем HTTP/HTTPS (для веб-сервера)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Запрещаем всё остальное
iptables -A INPUT -j DROP
# Сохраняем правила (если установлен iptables-persistent)
iptables-save > /etc/iptables/rules.v4
🔧Настройка firewalld
# Разрешаем SSH
firewall-cmd --permanent --add-service=ssh
# Разрешаем HTTP/HTTPS
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
# Запрещаем всё остальное
firewall-cmd --permanent --set-target=DROP
# Применяем изменения
firewall-cmd --reload
Какие порты нужно закрыть в первую очередь?
Некоторые порты часто сканируются злоумышленниками. Вот список тех, которые лучше закрыть, если вы их не используете:
Порт 21 (FTP) – передаёт данные в открытом виде, что делает его уязвимым к перехвату. Если FTP необходим, лучше использовать SFTP (порт 22 с SSH) или FTPS (с SSL/TLS).
- Порт 23 (Telnet) – не поддерживает шифрование, логины и пароли передаются в чистом тексте, что делает его лёгкой добычей для снифферов. Вместо него стоит использовать SSH (порт 22).
- Порты 135-139 (SMB, NetBIOS) – используются для обмена файлами и принтерами в Windows, но содержат множество уязвимостей (например, EternalBlue). Если SMB необходим, лучше использовать SMB 3.0+ с шифрованием или ограничить доступ по IP.
- Порт 3306 (MySQL) – если база данных не защищена строгими паролями и не ограничена по доступу, злоумышленники могут получить контроль над данными. Рекомендуется закрыть его для внешнего доступа и использовать VPN или SSH-туннель.
- Порт 5432 (PostgreSQL) – аналогично MySQL, может быть атакован при слабой защите. Лучше ограничить доступ и использовать шифрование.
- Порт 8080 (альтернативный HTTP) – часто используется для веб-приложений, но администраторы иногда забывают его защищать. Если он открыт, стоит проверить настройки брандмауэра и веб-сервера.
Дополнительно стоит проверить:
- Порт 3389 (RDP) – если используется, нужно включать Network Level Authentication (NLA) и ограничивать доступ.
- Порты 445 (SMB) – часто атакуются через эксплойты.
- Порты 5900+ (VNC) – если не защищены, могут быть взломаны подбором пароля.
Лучшая практика – закрывать все неиспользуемые порты и настраивать строгие правила доступа к необходимым.
Как проверить открытые порты?
ss -tulnp # или netstat -tulnp (если ss нет)
Вывод: как защитить сервер за 15 минут?
1️⃣ Выберите firewall (iptables/firewalld/nftables)
2️⃣ Разрешите только нужные порты (SSH, HTTP, HTTPS)
3️⃣ Закройте всё остальное (`DROP` по умолчанию)
4️⃣ Проверьте открытые порты (`ss -tulnp`)
После этих действий ваш сервер станет значительно безопаснее!
🔐 Нужна помощь с настройкой? Наши специалисты готовы помочь — обращайтесь в поддержку 4vps.su!
#Linux #безопасность #firewall #хостинг #4vps