新建服务器的安全设置

每次在部署新的服务器时,总要到处搜索一些常用的配置流程,次数多了不如自行总结一番(Debian 系为例)。

添加非 root 用户

有些服务商的机器部署后默认给的是 root 用户,一般不建议使用 root 用户进行日常操作。否则在手滑或者意识模糊的情况下,习惯性快速输入命令,并立即回车,容易造成不可挽回的局面。

  • 创建一个新用户,并设置密码:
1
adduser example_name
  • 如果系统默认没有安装 sudo 的话,先安装上:
1
apt install sudo
  • 然后给新添加的用户赋予 sudo 权限:
1
adduser example_name sudo

使用 SSH 密钥登录服务器

默认情况下,可以使用密码 SSH 登录服务器。使用加密密钥对登录相对来说更加安全,可以免密码登录(私钥可用密码加密)。

创建认证密钥对

  • 本地 创建 4096 位的 RSA 密钥对,可以在创建的时候选择用密码加密私钥,以及自定义密钥对的名称。注意:如果选择使用默认的 id_rsa 作为文件名,先确认是否已存在相同文件名的密钥对,否则有可能将原来的文件覆盖。
1
ssh-keygen -b 4096
  • 公钥 上传到服务器上:
1
ssh-copy-id -i id_rsa.pub example_name@hostname

修改 SSH 服务端选项

配置文件为 /etc/ssh/sshd_config,主要修改内容:

1
2
3
4
5
PermitRootLogin no    # 禁止 root 用户通过 SSH 登录
PasswordAuthentication no # 禁用 SSH 密码认证
Port 22 # 端口
AddressFamily inet # 可选,监听 IPv4
AddressFamily inet6 # 可选,监听 IPv6

安装 Fail2Ban

Fail2Ban 可以在多次失败的登录尝试后将对应的 IP 地址拉黑。默认配置下 Fail2Ban 只监控 SSH。

删除无用的网络服务

有些发行版会默认运行一些网络服务,可以自行筛选一遍。有些服务不是主动要用到的话没有必要保留,比如 Exim,Apache 以及 RPC 等。然后可通过包管理手动移除掉不需要的服务。

1
sudo ss -atpu

配置防火墙

建议使用 UFW,上手简单。