AlmaLinux 9: настройка фаервола с нуля
Свежий сервер в интернете за первые часы получает сотни попыток подключиться к его портам. Настройка фаервола на AlmaLinux 9 с нуля — первый рубеж обороны: вы решаете, какие двери в систему открыты, а какие закрыты. В отличие от Ubuntu с его UFW, в AlmaLinux штатный фаервол — это firewalld, и он уже установлен и включён по умолчанию. Разберём по шагам, как им управлять через firewall-cmd, работать с зонами и службами, открывать нужные порты и прикрывать SSH.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое firewalld и чем он отличается
Firewalld — это динамический межсетевой экран, стандартный для RHEL-семейства. Как и UFW в Debian, под капотом он управляет netfilter в ядре, но подход у него свой, основанный на зонах и службах. Вместо голых номеров портов вы оперируете понятными именами: разрешить службу ssh, http, https. Это делает правила читаемыми и уменьшает шанс ошибки — --add-service=https нагляднее, чем «открыть порт 443».
Ключевое отличие от Debian: firewalld в AlmaLinux уже установлен и активен сразу после установки системы, вам не нужно ставить его вручную. Это часть корпоративной ориентации дистрибутива — безопасные умолчания из коробки. Ваша задача не «включить фаервол», а грамотно настроить, какие службы через него разрешены. Ещё одна важная концепция — зоны: наборы правил для разных уровней доверия к сети. По умолчанию активна зона public, и для типового VPS работать мы будем именно с ней.
Проверяем исходное состояние
Сначала посмотрите, работает ли firewalld и какие правила активны:
sudo firewall-cmd --state
sudo firewall-cmd --list-all
Первая команда подтвердит, что фаервол запущен (ответ running). Вторая покажет активную зону и разрешённые в ней службы и порты. Обычно в свежей системе уже разрешена служба ssh — это правильно, иначе после первой же перезагрузки вы могли бы потерять доступ. Убедитесь, что ssh в списке присутствует, прежде чем что-либо менять: это ваша страховка от самоблокировки. Если по какой-то причине его нет, первым делом добавьте именно его.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на AlmaLinux 9Понимаем permanent и runtime
Важнейший для firewalld нюанс, на котором спотыкаются новички: у него есть два набора правил — временный (runtime) и постоянный (permanent). Команда без флага --permanent меняет только текущие правила, которые действуют до перезагрузки или до reload и потом исчезают. Команда с флагом --permanent записывает правило в постоянную конфигурацию, но применяет его не сразу.
Отсюда стандартная схема работы: вносите изменения с --permanent, а затем командой --reload подгружаете постоянную конфигурацию в активную. Так правило и сохраняется навсегда, и вступает в силу немедленно. Понимание этой двойственности избавляет от классической путаницы, когда правило «работает, но пропадает после перезагрузки» или наоборот «прописано, но не действует». Дальше все правила мы будем добавлять именно с --permanent и завершать --reload.
Открываем нужные службы
Убедитесь, что SSH разрешён (обычно да), и добавьте службы веб-сервера, если планируете сайт:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
Firewalld знает большинство стандартных служб по именам и сам подставляет нужные порты: ssh — это 22, http — 80, https — 443. Список всех известных служб покажет команда sudo firewall-cmd --get-services. Если вашего сервиса там нет или он работает на нестандартном порту, откройте порт напрямую, например sudo firewall-cmd --permanent --add-port=8080/tcp. Открывайте только то, что реально используете прямо сейчас, — каждый лишний открытый порт увеличивает поверхность атаки.
Концепцию именованных служб стоит оценить отдельно, потому что она заметно удобнее работы с голыми номерами портов. Когда вы разрешаете службу http, firewalld сам знает, что за ней стоит порт 80, и вам не нужно это помнить. Но настоящая польза в читаемости: заглянув через полгода в вывод firewall-cmd --list-all, вы увидите осмысленный список «ssh, http, https» вместо ряда чисел, значение которых придётся вспоминать. Это резко снижает шанс ошибки — не закроете случайно нужный порт и не оставите открытым забытый. Некоторые службы, например для баз данных или почты, тоже присутствуют в списке firewalld под понятными именами, так что и их можно открывать по названию. А для по-настоящему нестандартных случаев остаётся открытие порта по номеру. Такое сочетание удобных умолчаний и гибкости — сильная сторона firewalld.
Ограничиваем доступ к служебным портам
Служебные порты — базы данных, панелей администрирования, кэшей — наружу открывать почти никогда не нужно. Если доступ к такому порту всё же требуется, но лишь с одного вашего адреса, используйте богатые правила firewalld, которые позволяют указать источник:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload
Такое правило открывает порт базы данных только для указанного адреса, а для всех остальных он остаётся закрытым. Это несравнимо безопаснее, чем открывать служебный порт всему миру ради удобства подключения с ноутбука — подобные базы боты находят и атакуют за считанные часы. Общий принцип тот же, что и в любом фаерволе: чем уже область действия разрешения, тем меньше риск. Публично открытыми держите только веб-порты и SSH.
Ещё безопаснее вообще не открывать служебные порты наружу, а подключаться к ним через SSH-туннель. Идея в том, что SSH-соединение, которое у вас и так есть, может служить защищённым каналом и для других портов: вы поднимаете туннель, и обращение к локальному порту на вашем компьютере прозрачно попадает на порт базы данных сервера, при этом сам порт базы остаётся закрытым для всего интернета. Для firewalld это идеальный сценарий — служебные порты не значатся в разрешённых вовсе, а доступ к ним имеет только тот, у кого есть SSH-ключ. Такой подход избавляет от целого класса рисков и стоит того, чтобы освоить его, если вы регулярно работаете с базой напрямую.
Защита SSH и обслуживание правил
Фаервол оставляет SSH открытым, потому что вам нужно на него заходить, а вот отсекать перебор на этом порту помогает fail2ban, который стоит поставить дополнительно (он есть в репозитории EPEL). Firewalld и fail2ban решают разные задачи: фаервол определяет, к каким портам вообще можно подключиться, а fail2ban фильтрует злоупотребления на разрешённых. Со временем правила стоит пересматривать: закрыли проект — уберите его службу командой --permanent --remove-service, добавили сервис — откройте только его. Раз в пару месяцев смотрите firewall-cmd --list-all и спрашивайте себя, нужна ли ещё каждая открытая служба. Фаервол, за которым следят, остаётся тонкой границей, а не свалкой забытых разрешений.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на AlmaLinux 9Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Нужно ли ставить firewalld в AlmaLinux?
Нет, в AlmaLinux 9 firewalld уже установлен и включён по умолчанию. Ваша задача — грамотно настроить разрешённые службы, а не включать сам фаервол.
Правило работает, но пропадает после перезагрузки — почему?
Вы добавили его без флага --permanent, то есть только в текущую конфигурацию. Добавляйте правила с --permanent и применяйте командой --reload, тогда они сохранятся.
firewalld или iptables — что использовать?
В AlmaLinux штатный инструмент — firewalld, он и рекомендуется. Под капотом всё равно работает netfilter, но управлять через firewalld удобнее и безопаснее, чем писать голые правила iptables.
Как оплатить VPS на AlmaLinux из России?
У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой и токеном MAAT — иностранная карта не требуется.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.