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

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

几天前,我开始非常关心我的数据安全,最终我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

我唯一一个可能use is ssh(虽然它可能配置得不好,我将把这个问题留到另一个问题)。

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

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

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

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

答案1

确定您的曝光度

从命令的输出来看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

了解情况

看看这个列表,有几项服务我不想管。

  • dhclient
    • 负责获取你的IP地址的DHCP服务器守护进程,必须有这个。
  • 保管箱
    • 显然 Dropbox,必须有

开始减少它 - 禁用 Samba

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

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

$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423

关闭服务可能会混淆新贵、/etc/rc.d、业务的所有变化,因此可能很难弄清楚哪个服务采用哪种技术。对于 Samba,您可以使用以下service命令:

$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting

现在他们走了:

$ status nmbd 
nmbd stop/waiting
$ status smbd 
smbd stop/waiting

让它们远离......永久

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

$ sudo apt-get install sysv-rc-conf

   sysv-rc-conf 的 ss

禁用其余不需要的内容

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

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

对于剩下的 3 个,您也可以执行与 Samba 相同的操作来将其关闭。

杯?

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

按需提供这些服务?

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

#1 - systemd 与新贵

部分原因是目前的分裂系统暴发户。对两种竞争技术有很好的概述这里

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

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

#2 - 服务支持

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

这真的有必要吗?

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

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

参考

答案2

127.0.0.1不是“外面的世界”,它正在屋内四处张望。

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

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

改变密码变得更强。检查一下你的系统使用情况,不要随意去追任何有趣的网站。检查浏览器的反网络钓鱼、反脚本等配置。修改 SSH 和 su/sudo 的用法。

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

答案3

虽然您可以“关闭”个别服务 - 也许设置防火墙可能更容易。几乎所有常见发行版(Ubuntu、Debian、Centos 等)都内置了对 iptables 的支持。

一个简单的入门规则集:(您只需在命令提示符下输入这些规则;要使它们永久存在,请将它们添加到您的启动脚本中或告诉我们您正在使用什么发行版。例如在 Centos 上:system-config -firewall 是一个很好的用于配置 iptables 规则的 UI)

iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP

基本上 - 允许 ssh 入站;放下其他一切。

您的 INPUT 链现在如下所示:

  • 如果数据包通过“ssh”进入我的计算机 - 允许它
  • 如果数据包不符合任何先前的规则 - 只需将其丢弃即可。

然后稍后,假设您想要允许“samba”(Windows 文件共享):您可以运行

iptables -I INPUT-p tcp --dport 465 -j ACCEPT

-I列表的前置和规则;-A附加一条规则。所以你的链现在看起来像这样:

  • 如果“samba”数据包进入我的计算机 - 允许它
  • 如果数据包通过“ssh”进入我的计算机 - 允许它
  • 如果数据包不符合任何先前的规则 - 只需将其丢弃即可。

INPUT链指的是发往您系统的数据包。其他链OUTPUT用于来自您的计算机的数据包,进入互联网以及FORWARD通过您的计算机路由的数据包(即“传输”您的计算机的数据包,例如机场的中转区域 - 不是INPUT因为它没有进入您的计算机的东西)。

作为临别说明:nmap'ing 127.0.0.1 不是很有用;许多服务只能从 127.0.0.1 访问,而不能从其他地址访问。如果您没有另一台可以运行 nmap 的机器 - 尝试使用 Gibson Research 的 Shields UP! (https://www.grc.com/shieldsup) - 这是一个免费的在线 nmap-lite。或者添加您的 IP/电子邮件的评论,我将 nmap 您:)

相关内容