- Home »

Как реализовать базовый шаблон фаервола с iptables на Ubuntu 24.04
В этой статье разберёмся, как быстро и без боли реализовать базовый шаблон фаервола с помощью iptables на свежей Ubuntu 24.04. Почему это важно? Потому что даже если у тебя VPS или выделенный сервер только что из коробки, он уже открыт всему интернету, и любой бот может попытаться подобрать ssh, сканировать порты или просто устроить тебе весёлую жизнь. Фаервол — это твой первый рубеж обороны, и iptables, несмотря на свою древность, до сих пор остаётся одним из самых гибких и надёжных инструментов для фильтрации трафика на Linux. В этой статье — не только пошаговая инструкция, но и разбор, как это работает, какие грабли можно встретить, и как не наступить на них. Погнали!
Как работает iptables и зачем он вообще нужен?
iptables — это утилита для настройки фильтрации сетевого трафика в Linux. Она управляет встроенным в ядро Linux фильтром пакетов (netfilter). Представь себе огромный фильтр, через который проходит весь входящий и исходящий трафик. Ты сам решаешь, что пропускать, а что — отправлять в /dev/null.
- Фильтрация по IP, портам, протоколам: можно разрешить или запретить доступ к сервисам по конкретным адресам или портам.
- Гибкость: iptables позволяет строить сложные правила, комбинировать условия, создавать цепочки (chains) и таблицы (tables).
- Безопасность: минимальный набор открытых портов — меньше шансов для взлома.
В Ubuntu 24.04 по умолчанию уже есть nftables, но iptables всё ещё поддерживается и отлично работает. Более того, многие скрипты, туториалы и даже автоматизированные системы (например, fail2ban) до сих пор используют iptables.
Быстрая настройка базового фаервола: пошагово
Давай сразу к делу. Вот базовый шаблон, который подойдёт для большинства серверов: разрешаем только нужные порты (например, ssh, http, https), всё остальное — в бан.
- Устанавливаем iptables (если вдруг не установлен):
sudo apt update
sudo apt install iptables
- Сбрасываем старые правила (чтобы не было конфликтов):
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
- Устанавливаем политику по умолчанию: всё запрещено.
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
- Разрешаем loopback-интерфейс (иначе сервисы могут перестать работать):
sudo iptables -A INPUT -i lo -j ACCEPT
- Разрешаем уже установленные соединения (чтобы не отрубить себя от ssh):
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- Открываем нужные порты (например, ssh, http, https):
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
- Сохраняем правила (чтобы не слетели после перезагрузки):
sudo apt install iptables-persistent
sudo netfilter-persistent save
Всё! Теперь твой сервер не светится всеми портами подряд, а только теми, которые реально нужны.
Примеры, схемы, практические советы
Вот несколько кейсов из жизни, чтобы не наступить на грабли:
Кейс | Что случилось | Рекомендация |
---|---|---|
Открыл только ssh, забыл про loopback | Локальные сервисы перестали работать, база не коннектится | Всегда разрешай loopback: iptables -A INPUT -i lo -j ACCEPT |
Случайно заблокировал себя по ssh | Сессия оборвалась, сервер недоступен | Перед применением DROP — открой ssh, либо работай через консоль/Recovery |
Оставил INPUT ACCEPT по умолчанию | Сервер сканируется ботами, brute-force атакуют ssh | Всегда ставь DROP по умолчанию и явно разрешай нужное |
Не сохранил правила | После перезагрузки всё слетело | Используй iptables-persistent или свои скрипты автозагрузки |
Практический совет: если боишься отрубить себе ssh, открой вторую сессию и не закрывай её, пока не убедишься, что всё работает. Или используй временное правило с at
или cron
, чтобы через 5 минут всё сбросилось, если что-то пошло не так.
Похожие решения, альтернативы и сравнение
iptables — не единственный игрок на поле. Вот краткое сравнение:
Инструмент | Плюсы | Минусы | Когда использовать |
---|---|---|---|
iptables | Гибкость, поддержка, масса туториалов, интеграция с fail2ban | Синтаксис не самый дружелюбный, легко ошибиться | Классика, если нужен полный контроль |
nftables | Современнее, проще синтаксис, быстрее | Меньше примеров, не все скрипты поддерживают | Если начинаешь с нуля или хочешь будущее |
ufw | Очень простой интерфейс, подходит новичкам | Меньше гибкости, не все кейсы покрывает | Для быстрого старта, если не хочется разбираться в деталях |
firewalld | Динамические правила, профили | Чаще встречается на CentOS/Fedora, не всегда удобно на Ubuntu | Если нужен динамический фаервол |
Официальные ссылки для изучения:
Интересные факты и нестандартные способы использования
- iptables умеет считать трафик: можно использовать для простого мониторинга, сколько пакетов и байт прошло через определённое правило.
- Можно блокировать по странам: с помощью ipset и geoip можно забанить, например, весь Китай или США (или наоборот, разрешить только свой регион).
- Тонкая настройка лимитов: можно ограничить количество соединений с одного IP, чтобы защититься от DoS-атак.
- Ловушки для ботов: можно отправлять подозрительный трафик на honeypot или логировать его для анализа.
- Автоматизация: iptables отлично дружит с bash-скриптами, Ansible, Puppet — можно быстро деплоить шаблоны на десятки серверов.
Автоматизация и новые возможности
Когда у тебя десятки серверов, вручную прописывать правила — боль. Но iptables легко автоматизируется:
- Пиши свои bash-скрипты для генерации правил под разные роли (web, db, vpn и т.д.).
- Используй Ansible-модули (ansible.posix.iptables), чтобы пушить конфиги на все сервера.
- Интегрируй с fail2ban — автоматическая блокировка по логам ssh, nginx и других сервисов.
- Можно делать динамические правила: например, открывать порт только для своего IP на время деплоя.
В Ubuntu 24.04 всё это работает из коробки, и iptables по-прежнему поддерживается, хотя Canonical активно двигает nftables. Но если у тебя уже есть опыт или скрипты под iptables — не спеши мигрировать, всё ещё актуально.
Выводы и рекомендации
iptables — это проверенный временем инструмент, который позволяет быстро и гибко защитить твой сервер. Даже базовый шаблон, который мы разобрали выше, уже на порядок повышает безопасность по сравнению с дефолтной настройкой. Главное — не забывай:
- Всегда разрешай loopback и уже установленные соединения.
- Открывай только нужные порты, всё остальное — DROP.
- Сохраняй правила, чтобы не потерять их после перезагрузки.
- Не бойся автоматизировать — скрипты, Ansible, fail2ban и прочие инструменты только ускоряют работу.
- Если нужен быстрый старт — попробуй ufw, но для гибкости и автоматизации iptables всё ещё топ.
Если ты только выбираешь хостинг для своих экспериментов — смело бери VPS или выделенный сервер и сразу настраивай фаервол по этой инструкции. Безопасность — это не опция, а must-have даже для pet-проектов. Удачи в настройке, и пусть твой сервер будет недосягаем для сканеров и ботов!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.