Как открыть порт в Linux-фаерволе: ufw и iptables
Чтобы открыть порт в Linux, проще всего использовать ufw: sudo ufw allow 443/tcp. Для тонкого контроля применяют iptables: sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT. Ниже — оба способа с сохранением правил и проверкой, чтобы порт остался открытым после перезагрузки.
Способ 1. ufw (простой фаервол)
ufw — надстройка над iptables с понятным синтаксисом, по умолчанию доступна в Ubuntu/Debian.
Шаг 1. Проверьте статус
sudo ufw status verbose
Если ufw неактивен, перед включением обязательно разрешите SSH, иначе потеряете доступ:
sudo ufw allow 22/tcp
sudo ufw enable
Шаг 2. Откройте нужный порт
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
Открыть UDP-порт или диапазон:
sudo ufw allow 53/udp
sudo ufw allow 6000:6010/tcp
Разрешить порт только с одного IP:
sudo ufw allow from 203.0.113.5 to any port 5432 proto tcp
Шаг 3. Проверьте правила
sudo ufw status numbered
Удалить правило по номеру:
sudo ufw delete 3
Способ 2. iptables (низкоуровневый контроль)
iptables даёт полный контроль над цепочками правил.
Открыть порт
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Правильнее разрешать только новые и установленные соединения:
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Просмотр правил
sudo iptables -L INPUT -n --line-numbers
Удаление правила
sudo iptables -D INPUT 2
Сохранение правил iptables
По умолчанию правила iptables сбрасываются после перезагрузки. Сохраните их через пакет netfilter-persistent:
sudo apt install iptables-persistent
sudo netfilter-persistent save
ufw или iptables: что выбрать
| Критерий | ufw | iptables |
|---|---|---|
| Простота | высокая | низкая |
| Гибкость | средняя | максимальная |
| Сохранение правил | автоматическое | нужен netfilter-persistent |
| Подходит для | типовых задач | сложных схем NAT/маршрутизации |
Не смешивайте ручные правила iptables с ufw на одном сервере — управляйте фаерволом одним инструментом.
Именованные приложения и профили ufw
ufw умеет работать не только с номерами портов, но и с готовыми профилями приложений. Список доступных:
sudo ufw app list
Открыть порты приложения одним правилом (например, весь Nginx — 80 и 443):
sudo ufw allow "Nginx Full"
Это удобнее, чем помнить номера портов, и снижает риск опечатки.
Ограничение попыток подключения (rate limiting)
ufw умеет ограничивать частоту новых подключений к порту — полезно для SSH, чтобы усложнить перебор паролей. Правило limit блокирует IP, делающий 6+ подключений за 30 секунд:
sudo ufw limit 22/tcp
Это не заменяет надёжную аутентификацию по ключам, но снижает шум от автоматических переборщиков.
Проверка, что порт открыт
Локально служба должна слушать порт:
sudo ss -tulpn | grep :443
Снаружи проверьте доступность с другого хоста:
nmap -p 443 203.0.113.10
Частые вопросы
Открыл порт, но снаружи он недоступен — почему?
Порт открыт в фаерволе, но служба на нём не слушает, либо есть второй фаервол (облачная security group провайдера). Проверьте ss -tulpn и настройки сети в панели.
ufw enable разорвал мой SSH — как быть?
До включения ufw всегда добавляйте ufw allow 22/tcp. Если доступ потерян, восстановите через KVM-консоль.
Правила iptables пропали после перезагрузки — что делать?
iptables не сохраняет правила сам. Установите iptables-persistent и выполните netfilter-persistent save.
Как временно закрыть порт?
В ufw — sudo ufw deny 443/tcp или удалить разрешающее правило. В iptables — удалить правило командой -D.
Нужно ли открывать порт для исходящих соединений? Нет, по умолчанию политика OUTPUT разрешает исходящий трафик. Открывают именно входящие (INPUT) порты для служб.
Нужен сервер с root-доступом и своим фаерволом? Разверните VPS на Linux в разделе аренда VPS или закажите Администрирование серверов.
