Ubuntu 开放端口

Ubuntu 开放端口

我最近安装了两台 Ubuntu Server 机器,我想找到机器中的开放端口。

当我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 krb5244662/tcp filtered edonkey5000/tcp filtered upnp5631/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 的典型 Web 服务器将有如下输出:

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 并将行为不当的 IP 列入黑名单。例如 http。通常,您将 http 作为公共服务器运行,允许所有 IP,并将向您的服务器发送垃圾邮件的人列入黑名单。

2) 拒绝所有并允许白名单。例如 ssh。

3) 限制。有时您会限制连接速率或每秒的 ping 次数。

希望这能让你开始,你可能想看看

https://help.ubuntu.com/11.10/serverguide/C/index.html

https://help.ubuntu.com/community/Security

或者询问有关特定服务器的特定问题。

答案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

相关内容