Сетевые порты - это ключевые компоненты сетевой коммуникации, действующие как шлюзы для взаимодействия конкретных сервисов и протоколов. Например, порт 80 обычно используется для HTTP-трафика, а порт 22 - для SSH-соединений. Эффективное понимание и управление этими портами имеет решающее значение для обеспечения безопасности и оптимизации среды Linux.

Управление портами в Linux: полное руководство
В этой статье мы объясним, что такое сетевые порты, какие они бывают и как управлять ими в Linux с помощью практических команд и инструментов.
1. Что такое сетевые порты?
Сетевой порт - это виртуальная конечная точка, используемая устройствами для установления и управления соединениями. Каждый порт связан с определённым приложением или сервисом, работающим на устройстве, и определяется номером порта в диапазоне от 0 до 65535.
Типы портов:
- Well-Known Ports (0–1023): зарезервированы для стандартных сервисов, таких как HTTP (80), HTTPS (443), FTP (21) и SSH (22)
- Registered Ports (1024–49151): используются определёнными приложениями (например, 3306 для MySQL)
- Dynamic/Private Ports (49152–65535): используются для временных или пользовательских соединений
2. Как работают порты?
Когда устройство передаёт данные по сети:
- Source Port: Приложение устройства открывает конкретный порт для исходящей связи
- Destination Port: Принимающее устройство прослушивает предопределённый порт для входящего трафика
Пример: при посещении веб-сайта ваш браузер использует динамический исходящий порт (например, 50000) для подключения к порту 80 сервера
3. Управление портами в Linux
Linux предоставляет несколько инструментов для просмотра, управления и защиты портов. Вот основные шаги:
3.1 Просмотр открытых портов
С помощью netstat:
sudo netstat -tuln
- -t: показывает TCP-соединения
- -u: показывает UDP-соединения
- -l: выводит прослушиваемые порты
- -n: показывает номера портов вместо имён сервисов

С помощью ss:
sudo ss -tuln
ss быстрее и современнее, чем netstat.
С помощью lsof:
sudo lsof -i -P -n
Эта команда показывает процессы, использующие порты.
3.2 Проверка доступности портов
Проверка открытого порта:
nc -zv localhost 22
Сканирование всех открытых портов:
nmap localhost

3.3 Открытие и закрытие портов
Порты управляются с помощью файрволов, таких как ufw, iptables или nftables.
С ufw:
sudo ufw allow 80 # открыть порт sudo ufw deny 80 # закрыть порт sudo ufw status # статус файрвола
С iptables:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j DROP
С nftables:
sudo nft add rule inet filter input tcp dport 80 accept sudo nft add rule inet filter input tcp dport 80 drop
4. Защита сетевых портов
4.1 Отключение неиспользуемых портов
Неиспользуемые порты - потенциальные точки входа для злоумышленников. Используйте netstat или ss для их выявления и закрытия.
4.2 Ограничение доступа по IP
Ограничьте доступ к портам только доверенным IP-адресам.
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.10 -j ACCEPT
4.3 Использование port knocking
Port knocking добавляет уровень безопасности, требуя специальной последовательности подключений для открытия порта.
Установка knockd:
sudo apt install knockd
Настройте последовательность в /etc/knockd.conf.
5. Попрактикуйтесь!
- Просмотр активных портов с помощью netstat или ss.
- Безопасность SSH: изменение порта по умолчанию в /etc/ssh/sshd_config:
Port 2222 sudo systemctl restart ssh
- Сканирование системы: используйте nmap для поиска открытых портов.
- Создание пользовательских правил файрвола с ufw или iptables.
6. Применение на практике
- Веб-серверы: открытие портов 80 и 443 для HTTP и HTTPS
- Серверы баз данных: ограничение порта 3306 для конкретных IP
- Удалённый доступ: защита порта 22 с помощью SSH-ключей и ограничений по IP
Итого
Сетевые порты - основа коммуникации между устройствами и сервисами. Понимание принципов их работы и грамотное управление портами в Linux позволяют оптимизировать производительность системы и повысить её безопасность