
Недавно я установил два сервера Ubuntu и хотел бы найти открытые порты на каждом из них.
Когда я запустил его nmap
со своей машины (Ubuntu 11.10), я заметил, что на обоих серверах есть
135/tcp filtered msrpc
4444/tcp filtered krb524
4662/tcp filtered edonkey
5000/tcp filtered upnp
5631/tcp filtered pcanywheredata
Я никогда не открывал эти порты. Я только установил LAMP и SAMBA. Почему эти порты открыты?
Полный список открытых портов:
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
135/tcp filtered msrpc
139/tcp open netbios-ssn
143/tcp open imap
445/tcp open microsoft-ds
993/tcp open imaps
995/tcp open pop3s
4444/tcp filtered krb524
4662/tcp filtered edonkey
5000/tcp filtered upnp
5631/tcp filtered pcanywheredata
Вопрос в том, почему открыты эти порты: 135/tcp filtered msrpc
, 4444/tcp filtered krb524
, 4662/tcp filtered edonkey
. 5000/tcp filtered upnp
, 5631/tcp filtered pcanywheredata
. Я никогда не открывал эти порты. Я только установил LAMP и SAMBA.
Этот список кажется надежным?
решение1
Список портов можно получить из файла /etc/services.
cat /etc/services | grep 137 (example)
Пример
Какие порты должны быть открыты для связи с Samba
netbios-ns - 137 # NETBIOS Name Service
netbios-dgm - 138 # NETBIOS Datagram Service
netbios-ssn - 139 # NETBIOS session service
microsoft-ds - 445 # if you are using Active Directory
выполните эту команду
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
решение2
Ваш вопрос довольно обширен, а «безопасность» — понятие относительное.
Когда вы устанавливаете сервер и открываете порт, всегда будут потенциальные уязвимости.
Когда вы устанавливаете сервер (ssh, samba) и запускаете сервер (обычно они запускаются по умолчанию при загрузке), вы открываете порт.
Для каждого сервера (ssh, samba, http) существуют изменения конфигурации, которые можно внести для повышения безопасности.
для ssh это может включать использование ключей (и отключение паролей), tcpwrapper, брандмауэра и т. д.
При использовании брандмауэра есть 3 основные стратегии:
1) Разрешить все и внести в черный список плохо работающие IP. Примером этого может быть http. В общем случае вы запускаете http как публичный сервер, разрешаете все IP и вносите в черный список тех, кто спамит ваш сервер.
2) Запретить все и разрешить белый список. Примером этого может быть ssh.
3) Ограничение. Иногда вы ограничиваете скорость соединения или количество пингов в секунду.
Надеюсь, это поможет вам начать, возможно, вы захотите увидеть
https://help.ubuntu.com/11.10/serverguide/C/index.html
https://help.ubuntu.com/community/Безопасность
Или задайте конкретный вопрос о конкретном сервере.
решение3
«отфильтрованный» не обязательно означает открытый порт на целевом хосте.
На самом деле, это может вообще ничего не значить.
Например, если между вашим компьютером nmap
и целью есть брандмауэр, и этот брандмауэр активно фильтрует порт 5000, то порт 5000 будет отображаться в вашем списке как «отфильтрованный», и целевой хост никогда не увидит никакого трафика на этот порт — поэтому то, открыт ли порт на цели, становится совершенно неважным.
Для получения точного списка открытых портов на сервере попробуйте:
sudo netstat -lnp --tcp --udp
-l : only show listening ports
-n : don't bother looking up DNS hostnames
-p : show which processes have the port open
--tcp : show tcp ports
--udp : show udp ports
Вы можете пропустить --tcp
и , --udp
но тогда вы получите довольно много ненужной информации о сокетах локальной файловой системы, которая недоступна по сети.
sudo
требуется для -p
правильной работы, иначе он просто будет печатать -
для любого процесса, не принадлежащего вашему пользователю.
решение4
Поскольку netstat
он больше не устанавливается по умолчанию, в отличие от lsof
, я подумал, что мог бы добавить опцию, которая работает «из коробки»:
sudo lsof -nP -iTCP -sTCP:LISTEN