如何“关闭”打开的端口?

RSF*_*on7 23 security smtp cups nmap

几天前,我开始非常关心我的数据安全,结果我nmap自己:nmap 127.0.0.1

惊喜,惊喜,我有很多活跃的服务监听本地主机:

$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
53/tcp  open  domain
111/tcp open  rpcbind
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Run Code Online (Sandbox Code Playgroud)

可能会使用的唯一一个是ssh(虽然它可能没有很好地配置,但我会将这个问题留到另一个问题中去)。

据我所知ipp,CUPS 使用协议来共享我的打印机,我不需要共享它们,只需从服务器访问打印机。

这是netstat -lntuproot 用户的输出,删除本地主机地址:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      497/sshd        
tcp        0      0 0.0.0.0:17500           0.0.0.0:*               LISTEN      2217/dropbox    
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:50022           0.0.0.0:*               LISTEN      1021/rpc.statd  
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      906/rpcbind     
tcp6       0      0 :::22                   :::*                    LISTEN      497/sshd        
tcp6       0      0 :::42712                :::*                    LISTEN      1021/rpc.statd  
tcp6       0      0 :::445                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::139                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::111                  :::*                    LISTEN      906/rpcbind     
udp        0      0 0.0.0.0:51566           0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:68              0.0.0.0:*                           7362/dhclient   
udp        0      0 0.0.0.0:111             0.0.0.0:*                           906/rpcbind     
udp        0      0 192.168.1.255:137       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:137        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:137             0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.255:138       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:138        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:138             0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:655             0.0.0.0:*                           906/rpcbind     
udp        0      0 0.0.0.0:17500           0.0.0.0:*                           2217/dropbox    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:34805           0.0.0.0:*                           1021/rpc.statd  
udp6       0      0 :::40192                :::*                                1021/rpc.statd  
udp6       0      0 :::111                  :::*                                906/rpcbind     
udp6       0      0 :::655                  :::*                                906/rpcbind     
udp6       0      0 :::5353                 :::*                                615/avahi-daemon: r
udp6       0      0 :::42629                :::*                                615/avahi-daemon: r
Run Code Online (Sandbox Code Playgroud)

我如何配置这些服务,以便它们只在我实际使用它们时监听外部世界?

slm*_*slm 27

确定您的曝光率

netstat命令中获取输出,看起来很多服务实际上是一个非常短的列表:

$ netstat -lntup | awk '{print $6 $7}'|sed 's/LISTEN//'| cut -d"/" -f2|sort|uniq|grep -v Foreign
avahi-daemon:r
dhclient
dropbox
nmbd
rpcbind
rpc.statd
smbd
sshd
Run Code Online (Sandbox Code Playgroud)

获得土地

查看此列表,我会忽略一些服务。

  • 客户端
    • DHCP 服务器守护进程负责获取您的 IP 地址,必须拥有这个。
  • 保管箱
    • 显然是 Dropbox,必须有

开始减少它 - 禁用 Samba

您可以立即禁用 Samba,它占上述服务中的 2 个,nmbd并且smbd. 值得怀疑的是,您是否真的需要在笔记本电脑上运行它,无论是在本地主机上还是在您面对网络的 IP 上。

要检查它们是否正在运行,您可以使用以下命令status

$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423
Run Code Online (Sandbox Code Playgroud)

关闭服务可能会与 upstart、/etc/rc.d、business 发生的所有变化混淆,因此可能很难确定哪种服务采用哪种技术。对于 Samba,您可以使用以下service命令:

$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting
Run Code Online (Sandbox Code Playgroud)

现在他们关闭了:

$ status nmbd 
nmbd stop/waiting
$ status smbd 
smbd stop/waiting
Run Code Online (Sandbox Code Playgroud)

让他们远离......永久

为了让他们远离我一直在使用这个工具,sysv-rc-conf从控制台管理服务,它比大多数都好。它允许您检查要运行的服务以及它们应该在哪个运行级别启动/停止:

$ sudo apt-get install sysv-rc-conf
Run Code Online (Sandbox Code Playgroud)

   sysv-rc-conf 的 ss

禁用其余不需要的

所以现在 Samba 关闭了,我们只剩下以下内容:

  • avahi 守护进程
    • zeroconf(即插即用)的一部分,将其关闭
  • 绑定
    • NFS 需要 - 将其关闭
  • rpc.statd
    • NFS 需要 - 将其关闭

对于剩下的 3 个,您也可以执行我们为 Samba 所做的相同操作来关闭它们。

杯子?

要关闭 CUPS(顺便说一下您并不真正需要它),您可以按照关闭服务然后禁用它启动的相同步骤。为了能够打印,您需要在系统上单独设置每台打印机。您可以通过system-config-printerGUI 执行此操作。

按需提供这些服务?

这确实是您问题的核心,但并没有真正的灵丹妙药使这些服务变得“智能”,以便它们在使用时运行,而不是一直运行。

#1 - systemd 与新贵

部分原因是目前systemdupstart之间的分歧。此处对 2 种竞争技术进行了很好的概述。

两种技术都试图做略有不同的事情,IMO,鉴于它们的功能集,systemd 似乎更适合服务器,而 upstart 似乎更适合桌面卷。随着时间的推移,这将自行解决,IMO,并且这两种服务都将稳定且功能丰富。

最终,这两种服务都将为它们管理的所有服务提供按需启动和停止服务。例如,诸如此类的功能StopWhenUnneeded=yes已经存在systemd,因此这些功能得到充实只是时间问题。

#2 - 服务支持

有些服务根本不支持停止/启动。像这样的服务sshd按需运行似乎没有什么意义,尤其是在它们被大量使用的情况下。此外,一些服务(例如 Apache)在其自身内部提供了机制,以启动或多或少的自己的侦听器来管理自己。因此,尚不清楚这些类型的服务如何按需提供systemdupstart将如何与这些类型的服务集成。

这真的有必要吗?

您会听到双方都说这是矫枉过正,或者您应该采取极简主义的方法,只安装您绝对需要的东西,但这确实是个人选择。了解这些服务的存在以及它们的作用才是真正重要的。归根结底,计算机是一种工具,通过使用 Unix 系统,您已经表示您愿意窥视幕后并了解是什么让您的计算机运转。

我想说这种类型的提问正是人们在处理计算机和 Unix 时应该努力的心态。

参考

  • @RSFalcon7 - 不客气!感谢提问! (2认同)

von*_*and 12

127.0.0.1 不是“外面的世界”,它是在屋内环顾四周。

检查您的防火墙配置(当今 Linux 中的 iptables),其中大部分不应从外部访问。

不要运行不需要的服务。卸载所有不需要的软件。

更改密码以使其更强大。检查您对系统的使用情况,不要随意去追逐任何有趣的网站。检查浏览器的反网络钓鱼、反脚本等配置。修改您对 SSH 和 su/sudo 的使用。

但最重要的是,过度的偏执会适得其反。不要被技术闪光所困。

  • @HaukeLaging,俗话说,“老鼠窝在一堆没用过的衣服里”。任何软件都可能存在可能被利用的漏洞。如果该程序不存在,则该风险不存在。如果不使用,成本可以忽略不计。此外,更简单的系统更容易监督和保持整洁。 (6认同)
  • 我同意“不要运行你不需要的服务”。但是“卸载所有不需要的软件。”,认真的?那有什么帮助呢? (3认同)
  • @RSFalcon7,如果它们 _were_ 有用(或者对其他人有用,毕竟它们在发行版中)没有任何关联。如果你不使用它,扔掉它。更少的磁盘使用、更少的更新、更低的总体风险。如果以后需要,请重新安装。 (2认同)