Порты и правила файрвола простыми словами: база для осознанной настройки | AdminWiki

Порты и правила файрвола простыми словами: база для осознанной настройки

22 сентября 2026 7 мин. чтения

Файрвол решает, пропустить пакет или отбросить, опираясь на три параметра: IP-адрес, порт и протокол. Из них собирается правило. Фраза «разрешить трафик на порт 443 с любого адреса» расшифровывается так: источник - любой IP (0.0.0.0/0), протокол - TCP, порт назначения - 443, действие - разрешить.

Понимание этих четырёх элементов убирает зависимость от чужих команд. Вы начинаете видеть, какой именно трафик пропускает ваша конфигурация и что произойдёт, если служба переключится на другой протокол или порт.

Ниже разобраны все элементы по отдельности, затем они собираются в готовое правило и разбираются типичные ошибки.

Что такое порт, протокол и IP-адрес в контексте файрвола

Каждая из трёх сущностей отвечает на свой вопрос: куда адресован пакет, как он передаётся и от кого пришёл. Правило фильтрации связывает их в одно условие.

Порт: числовой идентификатор службы

Порт - это числовой идентификатор, закреплённый за сетевой службой на устройстве. Номера портов распределяются по трём диапазонам: системные порты (0-1023), пользовательские порты (1024-49151) и динамические или частные порты (49152-65535). Имена служб и номера портов нужны, чтобы различать разные службы, работающие поверх транспортных протоколов, таких как TCP, UDP, DCCP и SCTP (реестр IANA).

Когда браузер открывает защищённый сайт, трафик идёт на порт 443, который соответствует HTTPS. Тот же порт 443 часто используют для обхода блокировок, переключая VPN-трафик на TCP через этот порт (privateliving.life).

Файрвол фильтрует трафик по номеру порта назначения или источника. Порт назначения указывает службу на вашем сервере: 80 для HTTP, 22 для SSH, 443 для HTTPS. Порт источника операционная система клиента назначает случайно, и для серверных правил он почти никогда не важен.

Один и тот же номер порта может обслуживаться разными протоколами: служба на порту 53 работает и по UDP, и по TCP. Правило без указания протокола покрывает больше трафика, чем вы задумали.

Протокол: TCP и UDP

Протокол определяет способ передачи данных. TCP - это протокол с установлением соединения: его надёжность строится на обнаружении потерь пакетов по порядковым номерам и ошибок по контрольным суммам сегментов, а также на их исправлении. Современная спецификация TCP описана в RFC 9293, который заменяет спецификацию из RFC 793 (RFC 9293). UDP, в отличие от TCP, не устанавливает соединение и не гарантирует доставку, поэтому он быстрее, но часть пакетов может потеряться. В правилах файрвола протокол указывают явно: для порта 443 обычно задают TCP (privateliving.life).

Некоторые протоколы файрволы блокируют целиком. L2TP/IPSec может блокироваться файрволами, и тогда VPN-подключение не устанавливается даже при открытых портах (safewaylife.life).

IP-адрес: откуда и куда идёт трафик

IP-адрес идентифицирует устройство в сети. В правилах указывают конкретный адрес, подсеть или любой адрес, что записывается как 0.0.0.0/0. VPN скрывает реальный IP-адрес клиента, поэтому адрес в логах может принадлежать VPN-серверу, а не самому пользователю (safewaylife.life).

Удобная аналогия: IP-адрес - это адрес дома, порт - номер квартиры, протокол - способ доставки (курьер с распиской или обычная почта). Файрвол стоит на входе и решает, пускать ли конкретного гостя в конкретную квартиру выбранным способом.

Открытый и закрытый порт: в чём разница и почему это критично

Как файрвол решает: пропустить или заблокировать

Файрвол проверяет каждый пакет на соответствие правилам. Находится разрешающее правило - пакет проходит, и порт снаружи выглядит открытым. Разрешающего правила нет или срабатывает блокирующее - пакет отбрасывается, порт закрыт. Порядок правил определяет результат: то, что стоит выше, срабатывает раньше.

Stateful-файрвол дополнительно отслеживает состояние соединения. Механизм connection tracking позволяет ядру вести учёт логических сетевых соединений и сессий и связывать между собой все пакеты, из которых состоит соединение. По записям в таблице соединений входящему пакету присваивается одно из состояний: new, invalid, established или related (документация по connection tracking). В nftables правило, сопоставляющее ct state established,related accept, принимает пакеты, относящиеся к установленному соединению, и связанные с ним пакеты, тогда как политика цепочки по умолчанию отбрасывает весь остальной входящий трафик (nftables wiki).

Риски открытых портов и принцип минимальных привилегий

Каждый открытый порт - точка входа. SSH, открытый наружу, становится целью сканирования и подбора паролей. Открытый порт веб-приложения позволяет эксплуатировать уязвимости службы. Чем больше портов доступно снаружи, тем шире поверхность атаки.

Слабые протоколы усугубляют картину. Microsoft объявила об исключении PPTP и L2TP из будущих версий Windows Server и рекомендует переходить на SSTP и IKEv2: уязвимости этих протоколов хорошо задокументированы, и они больше не соответствуют современным стандартам безопасности. При этом SSTP легко проходит через большинство файрволов и прокси-серверов (Microsoft Tech Community).

Принцип минимальных привилегий: открывать только те порты, без которых служба не работает, и ограничивать источники конкретными IP или подсетями. Административные интерфейсы не выставляют в интернет, доступ к ним выдаётся через VPN или бастион. Найти лишние открытые порты помогает аудит сетевой инфраструктуры с Nmap и анализом правил межсетевых экранов, а общие требования к доступу собраны в руководстве по политике безопасности Linux-сервера.

Как формируется правило файрвола: разбор на примере порта 443

Элементы правила: источник, протокол, порт, действие

Любое правило фильтрации собирается из четырёх полей:

  • источник - IP-адрес или подсеть, откуда приходит трафик (0.0.0.0/0 означает любой адрес);
  • протокол - TCP, UDP или другой;
  • порт назначения - номер службы, к которой адресован пакет;
  • действие - разрешить (ACCEPT), отбросить без ответа (DROP) или отклонить с ответом (REJECT).

Сложив поля, получаем условие: источник любой, протокол TCP, порт 443, действие разрешить.

Пример правила для порта 443 с любого адреса

В iptables правило строится из опций -A INPUT, -p tcp, --dport, -s и -j ACCEPT. Например, правило для веб-трафика записывается как iptables -A INPUT -p tcp --dport 80, а ограничение по источнику - как iptables -A INPUT -s 192.168.0.0/16 -m comment --comment "A privatized IP block" (man iptables). Общий шаблон с несколькими портами выглядит так: iptables -A INPUT -p tcp --match multiport --dports 20,21,25,80,8080,3000:4000 -j ACCEPT (настройка iptables).

Разбор по полям для порта 443: -p tcp задаёт протокол, --dport 443 - порт назначения, -s 0.0.0.0/0 - любой источник, -j ACCEPT - действие «разрешить». В nftables аналогичное условие записывается в виде правила, сопоставляющего порт назначения и действие accept. Синтаксис различается, смысл одинаковый.

Такое правило типично для веб-сервера, доступного из интернета: посетители приходят с любых адресов, и ограничить их по IP невозможно. Для административных интерфейсов подход другой. Правило с 0.0.0.0/0 открывает доступ всем, и если служба не защищена, это прямая уязвимость. Источник ограничивают по IP или подсети.

Учитывайте ограничение: точная строка правила для порта 443 с источником 0.0.0.0/0 и синтаксис nftables в использованных источниках дословно не встречаются, поэтому конкретные конфигурации стоит сверять с документацией вашего инструмента и проверять на тестовом стенде.

Типичные ошибки при составлении правил

  • Забыт протокол. Правило, где порт указан без протокола, либо не применится к нужному трафику, либо покроет лишний.
  • Перепутаны порт источника и назначения. --dport 443 и --sport 443 означают разное: первый - служба на вашем сервере, второй - служба на стороне клиента.
  • Разрешён весь трафик вместо конкретного порта. Правило вида -j ACCEPT без указания порта открывает всё.
  • Не учтён порядок правил. Блокирующее правило ниже разрешающего не сработает никогда.
  • Нет логирования. Без логов трудно понять, почему соединение не проходит.

Перед изменением правил на удалённом сервере проверяйте конфигурацию на тестовом окружении или используйте отложенный сброс по таймеру, чтобы не потерять SSH-доступ. Пошаговый алгоритм проверки собран в статье о том, как проверить работу файрвола и протестировать порты в Linux и Windows.

Почему понимание терминов важнее заучивания команд

Скопированная команда работает, пока контекст совпадает с исходным. Стоит изменить окружение, и результат расходится с ожиданием. Пример: администратор копирует правило для порта 443, чтобы поднять веб-сервер, не замечает отсутствия ограничения по источнику и открывает во внешний мир административную панель, слушающую на том же порту.

Понимание элементов правила даёт предсказуемость. Вы видите, какой протокол выбран, какой порт открыт, кто источник и что произойдёт, если служба переключится на UDP. На примере VPN это видно отчётливо: L2TP/IPSec может блокироваться файрволами, а Microsoft исключает PPTP и L2TP из будущих версий Windows Server, рекомендуя SSTP и IKEv2 (safewaylife.life, Microsoft Tech Community). Выбор протокола напрямую влияет на доступность и защищённость.

Практический порядок действий перед правкой правил: выписать службы, доступные снаружи; для каждой указать порт и протокол; определить допустимые источники; только затем писать правила. Результат проверяют сканированием портов и чтением логов. Если обход блокировки нужен по рабочей задаче, заранее убедитесь, что сценарий законен и согласован с политикой безопасности: разбор таких случаев есть в материале про законные сценарии обхода файрвола и их ограничения. Готовые конфигурации с политикой deny all и точечным открытием портов приведены в руководстве по настройке файрвола на Linux-сервере.

Поделиться:
Сохранить гайд? В закладки браузера