Проверка открытых портов на Ubuntu Linux
Проверка открытых портов на Ubuntu может понадобиться, чтобы убедиться, что в системе не запущены лишние службы. Если вы помните, порт это число, которое приложение будет использовать для связи с другой программой, предоставлять сервис и т.д. Чтобы получить представление о том, какие службы работают в системе, необходимо проверить открытые порты системы.
Часто мы устанавливаем программу, которая является сервисом, а потом забываем о ней, поэтому наша машина может прослушивать порты в ожидании соединения. Злоумышленники любят, когда порты открыты, так как приложения, прослушивающие эти порты, являются простыми целями. Чтобы обеспечить нашей системе Ubuntu Linux (или любой другой системе в этом отношении) максимальную безопасность, мы должны знать о том, какие порты открыты и для каких служб.
Проверка открытых портов на Ubuntu
Чтобы проверить, какие порты открыты на нашей рабочей станции Ubuntu, можно выполнить команду, показанную ниже. Обратите внимание, что она должна работать и для других разновидностей Linux, если установлена утилита netstat.
Выполните в терминале следующую команду:
netstat -anltp | grep "LISTEN"
Обычный веб-сервер, на котором запущены FTP, SSH и MySQL, выведет следующую информацию:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4090/apache2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7213/sshd
tcp6 0 0 :::21 :::* LISTEN 19023/proftpd
tcp6 0 0 :::22 :::* LISTEN 7234/sshd
Вышеуказанная команда запускает утилиту netstat с соответствующими флагами и передает вывод функции grep, которая извлекает строки, содержащие слово "LISTEN". В результате мы получаем список открытых портов и имена процессов, прослушивающих эти порты.
Какие порты открыты для внешнего мира?
Обратите внимание, что сервис может иметь открытый порт, который можно прослушивать только на текущей машине. То есть, порт открыт, но вы не сможете получить к нему доступ из сети.
Это полезно для безопасности, например, веб-сервер должен иметь открытый для остального мира порт 80, но мир не должен знать о (или иметь возможность подключения) порте 3306, который прослушивает сервер MySQL, поддерживающий вебсайт.
В идеале, если вы используете веб-сервер, единственные порты, которые должны быть видны извне это HTTP-порт 80, и возможно, SSH порт 22, поскольку вам понадобится подключаться к веб-серверу для выполнения команд.
Порты для служб, доступных только на локальном компьютере, будут иметь IP адрес 127.0.0.1 в поле локального адреса. В вышеприведенном примере это будет:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432/mysqld
Как видно, MySQL прослушивает порт 3306 по IP адресу 127.0.0.1. Это означает, что к MySQL серверу могут подключиться только программы на той же машине.