确保 Linux 服务器的安全

确保 Linux 服务器的安全

当你买下一台 Linux 服务器或者 VPS 时,通常所有的设置都是默认的,这意味你的服务器容易受到攻击。本文将介绍加强服务器的安全性的几种办法

修改 root 密码

刚买到 Linux 服务器的时候,提供商会提供一个默认的 root 密码给你。如果这个密码过于简单,很容易被暴力破解,建议修改为复杂(含有大小写英文,数字以及特殊字符)密码。

修改 SSH 的端口

一般登录远程服务器的方式是 SSH(Secure Shell),SSH 的默认端口是 22,如果黑客发现你的服务器上端口 22 是开放的,那么他们会尝试获得 root 权限:ssh root@your_ip

应对这种攻击很简单,修改 SSH 端口就可以了。由于常见服务的默认端口都很低,通常会修改 SSH 端口为一个大一点的数字,比如 8000。(端口的范围是 0 ~ 65353,其中 0 - 1023 被预留给常用的服务,所以合理的选择应当在 1014 ~ 65353 之间)

要修改 SSh 端口, 编辑 /etc/ssh/sshd_config, 将数字 22 修改为你想要的的数值即可

修改后使用 SSH 登录要说明端口, 这里以端口 8000 为例: ssh -p 8000 user@your_ip

设置防火墙

防火墙是(Firewall)一堆规则,这些规则规定了哪些端口是对外开放的。如果在服务器的 3000 端口启动了一个服务,而我们又不想外界使用这个服务。也既,我们想建立一个沙箱(Sandbox),用这个沙箱把端口 3000 对应的服务和外部网络隔离开。

Linux 上常用的防火墙控制工具是 ufw (Uncomplicated Firewwall), 在 Ubuntu 上 apt install ufw 即可安装 ufw。以下是 ufw 的常用命令:

  1. ufw allow 8000 comment "ssh port":允许外界访问 8000 端口并注明 8000 端口是 ssh port 便于我们理解
  2. ufw enable:开启防火墙,注意在开启之前一定要确保 SSH 端口被放行,不然就无法登陆服务器了
  3. ufw status numbered:显示所有规则

这 3 个措施将极大提升服务器的安全性,但安全通常会造成不便。比如你忘记了开过防火墙,在服务器上启动了一个服务,却无法在外部访问;或者你改过了 SSH 的默认端口,那么每次使用 SSH 都必须指定 SSH 的端口,如果你使用 scp(一种基于 SSH 的文件传输工具),你也需要手动指定。每个管理员都需要在安全性和便捷性之间权衡。这通常和需求相关:如果服务器上跑着商业应用,为安全牺牲一点便捷性是理智的;如果是个人项目,选择便捷也无可厚非。