Ах, CentOS 7 и выше — эти загадочные звери в мире Linux! Если раньше вы дружили с iptables, то теперь самое время познакомиться с firewalld — таким себе новым модным брандмауэром, который пришёл на смену старичку.
Представьте: iptables — это как дедушка, который рассказывает вам истории о войне, а firewalld — его внук, который вместо рассказов предпочитает современные мемы и лайфхаки. Конечно, можно упёрто стоять на своём и продолжать таскать с собой дедушку на все семейные сборища, но иногда стоит дать шанс молодому поколению.
Знаете, это как с Windows: кто-то до сих пор считает Windows XP вершиной совершенства, а кто-то уже давно перешёл на Windows 10 и не жалеет.
Тут главное — не застревать в прошлом. Вот и SELinux когда-то был такой загадочной штукой для многих админов: «Что это за зверь?
Лучше выключим!» — говорили они. А потом поняли, что SELinux — это вроде охранника в ночном клубе: сначала кажется слишком строгим и занудным, но без него праздник может превратиться в хаос.
Так вот про firewalld. Это не какой-то инопланетный монстр, а просто другая обёртка над знакомым netfilter.
Если вы знаете iptables, то firewalld покажется вам слегка капризным подростком: сначала придётся немного помучиться и понять его причуды, а потом уже можно будет спокойно общаться на одном языке.
Проверить состояние firewalld проще простого: команда systemctl status firewalld выдаст вам отчёт о текущем положении дел. Если кратко — firewall-cmd —state скажет «running» или «not running».
Как в анекдоте: «Доктор сказал «работает», значит работает!» Остановить или запустить firewalld тоже легко — systemctl stop или start firewalld помогут быстро переключить режимы.
А вот зоны в firewalld — это отдельная песня! Представьте себе вечеринку с разными комнатами: block — комната для тех, кому вообще нельзя входить; home — где уютно и безопасно; public — где тусуются все подряд; trusted — VIP-зона без вопросов. И всё это нужно правильно настроить для вашего сетевого интерфейса (например enp1s0). Узнать принадлежность интерфейса к зоне можно командой firewall-cmd —get-zone-of-interface=enp1s0 — очень удобно!
Теперь давайте пошалим и разрешим ssh-соединение на нестандартном порте 2234 вместо скучного 22-го.
Сначала проверяем текущие правила через firewall-cmd —permanent —list-all (похоже на список гостей на вечеринке), убираем ipv6-правило (если оно вам не нужно), добавляем порт 2234/tcp и перезагружаем настройки командой firewall-cmd —reload. После этого редактируем конфиг sshd (nano /etc/ssh/sshd_config) и меняем порт.
Но внимание!
SELinux тут как строгий охранник клуба: если вы попытаетесь подключиться к ssh через новый порт без разрешения от него, вас просто не пустят внутрь! Чтобы договориться с этим охранником, нужно установить policycoreutils-python и добавить новый порт к списку разрешённых командой semanage port -a -t ssh_port_t -p tcp 2234. После этого всё заработает как часы!
И наконец закрываем доступ к старому порту 22 через firewall-cmd —permanent —remove-service=ssh и reload правил.
Вот теперь ваш сервер защищён так же хорошо, как бабушка хранит рецепт своего фирменного борща.
Если хотите почувствовать себя супергероем среди админов, попробуйте включить panic-режим (firewall-cmd —panic-on) – он блокирует абсолютно всё! Это как нажать кнопку «Стоп» во вселенной сетевого трафика.
А чтобы вернуть всё обратно – panic-off.
Firewalld — это не просто новый модный брандмауэр, а свежий взгляд на знакомый netfilter, представленный в более современной и удобной обёртке. Подобно отношению к Windows XP и Windows 10, переход к firewalld может вызвать сопротивление у некоторых администраторов, но важно не застревать в прошлом и дать шанс новым технологиям. Аналогия с SELinux также важна: изначально непонятный и даже раздражающий, этот механизм безопасности оказывается необходимым инструментом, который помогает избежать хаоса и обеспечить надежную защиту.