如何知道哪个用户绑定了哪个端口?


1

如何获得正在监听的端口的列表以及绑定它们的用户名(在Linux上)?

最终,我希望在系统上有几个用户,这些用户被分配了2个端口供使用,并且可能不绑定任何其他端口。

我不知道该怎么做,但是,如果我有了正确的bash-fu组合,我应该能够得到上述列表,并定期检查哪些用户绑定到了哪个端口,以及是否有绑定用户应被锁定使用未分配的端口。

Answers:


0

您可能可以使用netstat来获得答案,但是,我一直使用通常安装在服务器上的lsof。lsof非常适合调查Linux进程以及它们正在使用的文件和套接字。例如,lsof -i -P将产生这种类型的输出:

# lsof -i -P
COMMAND     PID    USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd       1468    root    3u  IPv4   599160      0t0  TCP *:22 (LISTEN)
mysqld     1718   mysql   10u  IPv4   599883      0t0  TCP *:3306 (LISTEN)
dovecot    1776    root    5u  IPv4   599934      0t0  TCP *:993 (LISTEN)
spamd      1789    root    5u  IPv4   600861      0t0  TCP localhost.localdomain:783 (LISTEN)

将其与cut,grep,sed等结合使用,您应该能够编写出可以为您提供报告的解决方案。


0

如何使用IPTABLES只允许您希望用户访问的端口:例如,允许端口80:

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

其他端口默认情况下被拒绝(需要再输入几个条目以指定默认行为)。此处解释相同的概念

另外,如果将来如果您希望允许任何用户访问某些特定端口,则可以使用选项-m owner --uid-owner {USERNAME}为特定用户添加IPTABLE条目

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.