MAATRIX / Блог / AlmaLinux 9: настройка фаервола с нуля

AlmaLinux 9: настройка фаервола с нуля

AlmaLinux 9: настройка фаервола с нуля

MAATRIX

Свежий сервер в интернете за первые часы получает сотни попыток подключиться к его портам. Настройка фаервола на 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 — десятки моделей в одном окне. Оплата картой РФ и по СБП.