新安装的服务器 VPS 需要做的事情

当新购买或者安装 VPS 后,出去安全等目的,需要进行一些设置等,这里纪录一些必要的步骤。
以下步骤以 Ubuntu 为例。

添加新用户

很多时候创建的 VPS 是 root 用户为了安全,建议去创建一个新的用户。

sudo adduser username

按照提示输入信息即可

然后在修改配置文件添加 sudo 权限

sudo vim /etc/sudoers

在文件里面最后添加

username ALL=(ALL:ALL) NOPASSWD:ALL

更新系统

首先更新系统能及时获取已经修复的漏洞

sudo apt-get update  // 更新源
sudo apt-get upgrade // 更新已经安装的包

执行以上两个命令更新源和已经安装的包

配置 SSH

启用密钥登录,禁止密码登录等能减少被暴力破解的风险。

密钥登录

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

生成密钥,按照提示输入即可生成。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

执行以上命令添加公钥,如果使用自己已经有的密钥,直接添加进 authorized_keys 即可。如果文件或者目录不存在创建即可。

ssh localhost

如果能登录即配置成功
如果还是无法登录,注意修改文件目录和文件权限。

SSH 配置

SSH 配置在 /etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

进入配置文件,开始修改

修改 SSH 登录端口

#端口,修改成另外的端口。
Port 22
#关闭密码登录,如果没有,就添加配置
PasswordAuthentication no  
#禁止 root 用户登录
PermitRootLogin no

配置 fail2ban

fail2ban 可以限制登录次数,保证不被穷举破解。
安装 fail2ban 执行命令

sudo apt-get install fail2ban

配置 fail2ban 复制 jail.conf 到 jail.local 修改都在 jail.local 文件里

cd /etc/fail2ban
sudo cp jail.conf jail.local

编辑配置文件

sudo vim jail.local

修改配置文件,配置忽略 IP ,屏蔽时间,最大尝试次数。如下:

[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1
bantime  = 3600
maxretry = 3

可以根据自己的需要修改参数

设置邮件提醒,配置文件修改成自己的邮件地址

destemail = your_email@domain.com

找到并修改:

action = %(action_)s   # 找到这行
action = %(action_mw)s # 修改成这样

日志

[ssh]
enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 3

配置完成后,退出 vim 并且重启 fail2ban

sudo /etc/init.d/fail2ban restart

修改时区

因为服务器或 VPS 机房可能在国外。不在同一个时区可能会有时差问题,修改服务器时间修改成本地时间,避免操作服务器的时候出现穿越的错觉。

sudo tzconfig  //如果命令不存在请使用
dpkg-reconfigure tzdata

选择 Shanghai(上海)
然后复制配置,防止系统重启后时区改变

sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime

设置网络时间同步

ntpdate cn.pool.ntp.org

查看下当前时间是不是和本时区一致

date

支持中文

如果系统不支持中文,那么需要去配置中文环境

sudo apt-get install language-pack-zh-hant language-pack-zh-hans

编辑/etc/default/locale 文件,如果不存在就创建。

sudo vim /etc/default/locale

添加内容

LANG="en_US.UTF-8"
LANGUAGE="en_US:"

保存后输入locale查看当前配置,如果提示

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

是缺少en_US.UTF-8造成的

sudo locale-gen en_US.UTF-8

安装 en_US.UTF-8 后查看当前配置 locale 就正常了。

启用 BBR

不支持 OpenVZ 虚拟化 VPS,需要内核版本4.9以及以上。
下载最新版内核

http://kernel.ubuntu.com/~kernel-ppa/mainline/

选择最新版本

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001_4.10.1-041001.201702260735_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001-generic_4.10.1-041001.201702260735_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_amd64.deb

下载后开始安装

sudo dpkg -i linux-*.deb

更新 grub

sudo update-grub

重启 VPS

sudo reboot

查看当前内核

uname -r

修改配置

sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'

需要关闭 BBR 的时候,从配置文件里面移除这两行配置。

使配置生效

sysctl -p

查看配置

# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno

查看是否启用成功

# lsmod | grep bbr
tcp_bbr                20480  4

如果没有启动成功。再在重启一次服务器。

# 服务器