Как можно посмотреть открытые порты и определить, с каких IP-адресов можно обращаться к ним, не используя команду netstat?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Можно использовать утилиту ss (socket statistics) или lsof (list open files).
Сравнение netstat и ss:
| Особенность | netstat | ss |
|---|---|---|
| Скорость | Медленнее при большом трафике | Быстрее, напрямую работает с Netlink |
| Информация об inodes | Нет | Есть |
| Поддержка протоколов | Ограниченная | Широкая |
Пример использования ss:
# Показать все слушающие сокеты TCP
ss -tuln
Для определения IP-адресов, с которых можно обращаться к портам, нужно смотреть правила файрвола. Чаще всего используется iptables или firewalld.
Пример просмотра правил iptables для INPUT цепочки:
# Показать все правила в цепочке INPUT с нумерацией строк
sudo iptables -L INPUT -n --line-numbers
В выводе нужно искать правила, разрешающие трафик на интересующие порты. В этих правилах может быть указан исходный IP-адрес или подсеть (-s).
Пример правила, разрешающего TCP трафик на порт 22 с IP 192.168.1.10:
# Пример вывода iptables -L INPUT
# 1 ACCEPT tcp -- 192.168.1.10 anywhere tcp dpt:ssh
Пример использования firewalld:
# Показать активные зоны
sudo firewall-cmd --get-active-zones
# Показать разрешенные сервисы и порты для конкретной зоны (например, public)
sudo firewall-cmd --zone=public --list-all
В выводе firewall-cmd --zone=<zone> --list-all будут указаны разрешенные сервисы и порты. Для определения исходных IP-адресов нужно смотреть правила "rich rules", которые дают более детализированный контроль.
Пример rich rule, разрешающего доступ к TCP порту 80 с IP 192.168.1.0/24:
# Пример вывода firewall-cmd --zone=public --list-all (секция rich rules)
# rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept
Таким образом, для определения открытых портов и адресов, с которых возможен доступ, используется комбинация утилит для просмотра сокетов (ss) и инструментов управления файрволом (iptables, firewalld).