Понимание того, что такое открытые порты, важно для управления приложениями и обеспечения безопасности вашей системы. Открытые порты могут обеспечивать связь между службами, но они также могут подвергать вашу систему угрозам. В этом руководстве мы объясним, как проверить открытые порты и защитить их в Linux с помощью правил брандмауэра и рекомендаций.
Существует несколько способов проверить, какие порты открыты и прослушиваются в вашей системе.
netstat
netstat
может отображать активные порты и связанные с ними службы.
sudo netstat -tulnp
Здесь,
-t
: Показать TCP-порты.-u
: Показать UDP-порты.-l
: Показать порты прослушивания.-n
: Показывать числовые адреса вместо разрешения имен хостов.-p
: Показывать идентификаторы и имена процессов.
Пример вывода:
tcp6 0 0 :::8006 :::* LISTEN 1826/pveproxy tcp6 0 0 :::8080 :::* LISTEN 4744/Syncthing tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1022/cupsd [...]
Регулярно проверяйте наличие неожиданно открытых портов для обнаружения несанкционированного доступа:
sudo netstat -tulnp | grep LISTEN
ss
(Рекомендуется)ss
является более быстрой и современной альтернативой netstat
.
sudo ss -tulnp
Эта команда обеспечивает аналогичный вывод, но с улучшенной производительностью.
lsof
lsof
выводит список открытых файлов, включая сетевые сокеты.
lsof -i -P -n
-i
: Показывать сетевые подключения.-P
: Не преобразовывайте номера портов в имена.-n
: Не преобразовывайте IP-адреса в имена хостов.
nmap
(Для удаленного сканирования)Для проверки открытых портов в удаленной системе:
nmap -p- <IP-АДРЕС>
-p-
: Просканируйте все порты 65535.
Если услуга не нужна, отключите ее.
sudo systemctl stop <service> sudo systemctl disable <service>
Брандмауэр контролирует трафик, блокируя или разрешая работу портов.
ufw
(для Ubuntu / Debian)Разрешить определенные порты:
sudo ufw allow 22/tcp
Запретить определенные порты:
sudo ufw deny 23/tcp
Включить брандмауэр:
sudo ufw enable
firewalld
(для систем на основе RHEL)Разрешить использование порта:
sudo firewall-cmd --add-port=22/tcp --permanent sudo firewall-cmd --reload
Заблокировать порт:
sudo firewall-cmd --remove-port=23/tcp --permanent sudo firewall-cmd --reload
iptables
Разрешить SSH с определенного IP-адреса:
sudo iptables -A INPUT -p tcp --dport 22 -s <ALLOWED-IP> -j ACCEPT
Блокируйте весь входящий трафик, кроме SSH:
sudo iptables -P INPUT DROP sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Сохранение правил брандмауэра:
sudo iptables-save > /etc/iptables.rules
Проверка порта добавляет дополнительный уровень безопасности, требуя последовательности попыток подключения перед открытием порта.
Скоро мы рассмотрим эту тему в отдельной статье.
Проверка и защита открытых портов — основополагающая практика в системном администрировании Linux и DevOps. Регулярный мониторинг и правильная настройка брандмауэра помогут защитить вашу систему от угроз.