Linux服务器安全简明指南

发表于:2017-1-06 10:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Phil Zona    来源:51Testing软件测试网采编

  使用 Fail2Ban 保护 SSH 登录
  Fail2Ban 是一个应用程序,它会在太多的失败登录尝试后禁止 IP 地址登录到你的服务器。由于合法登录通常不会超过三次尝试(如果使用 SSH 密钥,那不会超过一个),因此如果服务器充满了登录失败的请求那就表示有恶意访问。
  Fail2Ban 可以监视各种协议,包括 SSH、HTTP 和 SMTP。默认情况下,Fail2Ban 仅监视 SSH,并且因为 SSH 守护程序通常配置为持续运行并监听来自任何远程 IP 地址的连接,所以对于任何服务器都是一种安全威慑。
  有关安装和配置 Fail2Ban 的完整说明,请参阅我们的指南:使用 Fail2ban 保护服务器。
  删除未使用的面向网络的服务
  大多数 Linux 发行版都安装并运行了网络服务,监听来自互联网、回环接口或两者兼有的传入连接。 将不需要的面向网络的服务从系统中删除,以减少对运行进程和对已安装软件包攻击的概率。
  查明运行的服务
  要查看服务器中运行的服务:
  sudo netstat -tulpn
  如果默认情况下 netstat 没有包含在你的 Linux 发行版中,请安装软件包 net-tools 或使用 ss -tulpn 命令。
  以下是 netstat 的输出示例。 请注意,因为默认情况下不同发行版会运行不同的服务,你的输出将有所不同:
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      7315/rpcbind
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3277/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3179/exim4
tcp        0      0 0.0.0.0:42526           0.0.0.0:*               LISTEN      2845/rpc.statd
tcp6       0      0 :::48745                :::*                    LISTEN      2845/rpc.statd
tcp6       0      0 :::111                  :::*                    LISTEN      7315/rpcbind
tcp6       0      0 :::22                   :::*                    LISTEN      3277/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      3179/exim4
udp        0      0 127.0.0.1:901           0.0.0.0:*                           2845/rpc.statd
udp        0      0 0.0.0.0:47663           0.0.0.0:*                           2845/rpc.statd
udp        0      0 0.0.0.0:111             0.0.0.0:*                           7315/rpcbind
udp        0      0 192.0.2.1:123           0.0.0.0:*                           3327/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           3327/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           3327/ntpd
udp        0      0 0.0.0.0:705             0.0.0.0:*                           7315/rpcbind
udp6       0      0 :::111                  :::*                                7315/rpcbind
udp6       0      0 fe80::f03c:91ff:fec:123 :::*                                3327/ntpd
udp6       0      0 2001:DB8::123           :::*                                3327/ntpd
udp6       0      0 ::1:123                 :::*                                3327/ntpd
udp6       0      0 :::123                  :::*                                3327/ntpd
udp6       0      0 :::705                  :::*                                7315/rpcbind
udp6       0      0 :::60671                :::*                                2845/rpc.statd
  netstat 告诉我们服务正在运行 RPC(rpc.statd 和 rpcbind)、SSH(sshd)、NTPdate(ntpd)和Exim(exim4)。
  TCP
  请参阅 netstat 输出的 Local Address 那一列。进程 rpcbind 正在侦听 0.0.0.0:111 和 :::111,外部地址是 0.0.0.0:* 或者 :::* 。这意味着它从任何端口和任何网络接口接受来自任何外部地址(IPv4 和 IPv6)上的其它 RPC 客户端的传入 TCP 连接。 我们看到类似的 SSH,Exim 正在侦听来自回环接口的流量,如所示的 127.0.0.1 地址。
  UDP
  UDP 套接字是无状态的,这意味着它们只有打开或关闭,并且每个进程的连接是独立于前后发生的连接。这与 TCP 的连接状态(例如 LISTEN、ESTABLISHED和 CLOSE_WAIT)形成对比。
  我们的 netstat输出说明 NTPdate :1)接受服务器的公网 IP 地址的传入连接;2)通过本地主机进行通信;3)接受来自外部的连接。这些连接是通过端口 123 进行的,同时支持 IPv4 和 IPv6。我们还看到了 RPC 打开的更多的套接字。
  查明该移除哪个服务
  如果你在没有启用防火墙的情况下对服务器进行基本的 TCP 和 UDP 的 nmap 扫描,那么在打开端口的结果中将出现 SSH、RPC 和 NTPdate 。通过配置防火墙,你可以过滤掉这些端口,但 SSH 除外,因为它必须允许你的传入连接。但是,理想情况下,应该禁用未使用的服务。
  你可能主要通过 SSH 连接管理你的服务器,所以让这个服务需要保留。如上所述,RSA 密钥和 Fail2Ban 可以帮助你保护 SSH。
  NTP 是服务器计时所必需的,但有个替代 NTPdate 的方法。如果你喜欢不开放网络端口的时间同步方法,并且你不需要纳秒精度,那么你可能有兴趣用 OpenNTPD 来代替 NTPdate。
  然而,Exim 和 RPC 是不必要的,除非你有特定的用途,否则应该删除它们。
  本节针对 Debian 8。默认情况下,不同的 Linux 发行版具有不同的服务。如果你不确定某项服务的功能,请尝试搜索互联网以了解该功能是什么,然后再尝试删除或禁用它。
  卸载监听的服务
  如何移除包取决于发行版的包管理器:
  Arch
  sudo pacman -Rs package_name
  CentOS
  sudo yum remove package_name
  Debian / Ubuntu
  sudo apt-get purge package_name
  Fedora
  sudo dnf remove package_name
  再次运行 sudo netstat -tulpn,你看到监听的服务就只会有 SSH(sshd)和 NTP(ntpdate,网络时间协议)。
  配置防火墙
  使用防火墙阻止不需要的入站流量能为你的服务器提供一个高效的安全层。 通过指定入站流量,你可以阻止入侵和网络测绘。 最佳做法是只允许你需要的流量,并拒绝一切其他流量。请参阅我们的一些关于最常见的防火墙程序的文档:
  iptables 是 netfilter 的控制器,它是 Linux 内核的包过滤框架。 默认情况下,iptables 包含在大多数 Linux 发行版中。
  firewallD 是可用于 CentOS/Fedora 系列发行版的 iptables 控制器。
  UFW 为 Debian 和 Ubuntu 提供了一个 iptables 前端。
  接下来
  这些是加固 Linux 服务器的最基本步骤,但是进一步的安全层将取决于其预期用途。 其他技术可以包括应用程序配置,使用入侵检测或者安装某个形式的访问控制。
  现在你可以按你的需求开始设置你的服务器了。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号