ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Linux-сервер

Настройка файрвола в Linux: как открыть порт в firewalld и ufw

6 шагов 11 мин чтения 2 просмотров 0
Содержание

Если только что развёрнутый сайт, база данных или приложение недоступны извне, чаще всего порт блокирует файрвол. В статье разобраны два самых распространённых инструмента для настройки файрвола в Linux: firewalld, используемый по умолчанию в CentOS, Rocky Linux и AlmaLinux, и ufw, популярный в Ubuntu и Debian. Вы узнаете, как проверить состояние, открыть порт, ограничить доступ по IP и удалить правило. Все команды выполняются от root.

Перед включением или изменением файрвола обязательно разрешите порт SSH (22 или ваш нестандартный), иначе удалённый доступ сразу пропадёт. Если это случилось, восстановите доступ через VNC-консоль в клиентском кабинете.

Шаг 1: Определите, какой файрвол используется

На сервере должен работать только один менеджер файрвола: одновременное использование firewalld и ufw приводит к конфликту правил. Проверьте, какой из них активен: в системах семейства RHEL обычно firewalld, в Ubuntu — ufw (часто выключен по умолчанию), а в некоторых минимальных образах Debian нет ни того, ни другого.

systemctl is-active firewalld    # CentOS / Rocky / AlmaLinux
ufw status                       # Debian / Ubuntu

Шаг 2: Установка firewalld и проверка состояния (CentOS / Rocky / AlmaLinux)

firewalld группирует правила по зонам; основной сетевой интерфейс обычно находится в зоне public. После установки и запуска команда --list-all покажет разрешённые службы и порты — по умолчанию, как правило, только ssh.

# Install and start firewalld (CentOS / Rocky / AlmaLinux)
dnf install -y firewalld
systemctl enable --now firewalld

firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --list-all

Шаг 3: Открытие портов и служб в firewalld

Разрешать трафик можно по имени службы (http, https) или по номеру порта и диапазону. --permanent записывает правило в постоянную конфигурацию, которая применяется только после --reload; правила без --permanent работают сразу, но исчезают после перезагрузки.

# Open by service name
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# Open by port / range
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=10000-10100/udp

# Apply and verify
firewall-cmd --reload
firewall-cmd --list-ports
firewall-cmd --list-services

Шаг 4: Ограничение по IP и удаление правил в firewalld

Чувствительные порты — базы данных, админ-панели — не стоит открывать для всего интернета. С помощью rich rule можно разрешить доступ только с определённого IP или подсети. Ненужные порты удаляются через --remove-port.

# Allow MySQL 3306 only from one subnet
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" port port="3306" protocol="tcp" accept'

# Remove a port
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

Шаг 5: Установка и включение ufw (Ubuntu / Debian)

ufw — простой файрвол от Ubuntu с понятным синтаксисом. Сначала разрешите SSH, затем задайте политику по умолчанию: запрещать входящие и разрешать исходящие соединения. При ufw enable появится предупреждение о возможном разрыве SSH — если SSH уже разрешён, ответьте y.

# Debian / Ubuntu
apt update && apt install -y ufw

# Allow SSH FIRST (use your custom port if you changed it)
ufw allow 22/tcp
ufw default deny incoming
ufw default allow outgoing
ufw enable
ufw status verbose

Шаг 6: Открытие портов, ограничение IP и удаление правил в ufw

Порты открываются командой allow; для диапазона нужно указать протокол. Ключевое слово from ограничивает IP-адрес источника. Чтобы удалить правило, выведите список с номерами и удалите нужное по номеру.

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10000:10100/udp
ufw allow from 198.51.100.0/24 to any port 3306 proto tcp

# Delete a rule by number
ufw status numbered
ufw delete 3
Порты, опубликованные контейнерами Docker, записываются напрямую в iptables и могут обходить правила ufw. Чтобы ограничить порт контейнера, привяжите его к 127.0.0.1 в docker run или следуйте официальной документации Docker по файрволу.

Частые вопросы

Порт открыт в файрволе, но всё равно недоступен.

Выполните ss -tlnp и убедитесь, что приложение слушает этот порт на 0.0.0.0, а не на 127.0.0.1. Затем проверьте настройки самого приложения и политики безопасности на уровне платформы. Если не помогло, создайте тикет.

Можно ли просто выключить файрвол?

Технически да (systemctl stop firewalld или ufw disable), но для публичного сервера это не рекомендуется. Лучше разрешить только нужные порты, а остальное запретить.

После включения файрвола отключился SSH.

Войдите через VNC-консоль и выполните firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload или ufw allow 22/tcp, чтобы снова разрешить SSH.

Если проблема не решилась, создайте тикет — техническая поддержка IMIDC работает круглосуточно 24/7. Укажите IP-адрес сервера, операционную систему, выполненные команды и приложите скриншот ошибки: так инженер разберётся быстрее.

Помог ли вам данный ответ?

Похожие руководства