自从入坑服务器之后, 陆陆续续买了不少小鸡. 由于暴露在公网上, 因此一些关于创建用户和安全设置的也是需要的. 这里记录一下我刚开一台🐤的时候是怎么配置的. 一般我用Debian/Ubuntu, 这里用Ubuntu示例, 其他系统个别设置可能会不同, 但是大差不差. 里面很多内容是参考阮一峰老师的Linux服务器的初步配置流程.

新建用户

由于root用户权限下一些误操作容易导致严重后果, 不建议日常用root操作VPS. 最好是创建个用户然后平时通过这个用户使用VPS.

首先用ssh登陆root用户, 如果root密码是官方默认给你的, 建议先修改root的密码. 密码最好复杂点, 毕竟暴露在公网上.

# 生成一个复杂的密码
openssl rand -base64 16
# 修改密码
passwd

然后在里面创建自己的用户和目录并赋予权限.

# 新建用户组
addgroup admin
# 创建用户和用户的目录, 这里以usrname为例, 改成自己想要的用户名就好
useradd -d /home/usrname -s /bin/bash -m usrname
# 设置该用户的密码
passwd usrname
# 将新用户添加到用户组
usermod -a -G admin usrname

接下来为用户设定权限. 修改权限需要修改/etc/sudoers文件, 这个文件的权限一般是440. 需要先修改文件权限才能编辑.

# 修改文件权限
chmod 777 /etc/sudoers
# 编辑sudoers文件
vim /etc/sudoers

然后编辑文件, 在文件里找到root ALL=(ALL:ALL) ALL, 在下面加上自己的用户名并设置权限. 这样设置是sudo的时候需要密码, 防止有时候手滑误操作造成不可避免的损失.

root    ALL=(ALL:ALL) ALL
usrname ALL=(ALL:ALL) ALL

如果想无密码使用sudo, 也可以在%admin%sudo下面设置NOPASSWD, 如下.

%admin  ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
# 在这下面设置
usrname ALL=(ALL) NOPASSWD:ALL

编辑结束后文件权限改回原来样子.

chmod 440 /etc/sudoers

最后退出root, 再用新用户的身份登录.

配置SSH服务

先弄个免密登陆.

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

特别的, 如果之前这个IP已经登陆过然后机子重装了怎么的 (比如系统玩崩了然后重装), 要先删除本机对IP的记录才能用ssh登陆.

ssh-keygen -R 123.456.789

配置免密登陆后登陆小鸡就不用输密码了. 接下来配置ssh.

# ssh登陆
ssh [email protected]
# 备份配置文件
sudo cp /etc/ssh/sshd_config ~
# 编辑配置文件
sudo vim /etc/ssh/sshd_config

在里面, 建议修改以下条目. 名字前有#号的话删除, 否则条目不会生效.

NameValue
Port 12345修改默认登陆端口名到12345
PermitRootLogin no不允许root用户登陆
PermitEmptyPasswords no不允许空密码登陆
PasswordAuthentication no不使用密码授权登录, 只允许免密登陆
RSAAuthentication yes使用RSA算法进行安全验证
PubkeyAuthentication yes允许公钥认证
UseDNS no禁用DNS反向解析, 用以提速
SyslogFacility AUTHPRIV记录用户登陆信息
MaxAuthTries 6最多认证尝试次数, 防止暴力破解密码
Protocol 2ssh协议使用新版的

上面加粗的两条需要注意一下. 第一个是Port, 改成自己想要的端口不一定要12345. 然后PasswordAuthentication设置成no后不能用密码登录只能免密登陆. 因此如果设置为no则企图用密码登录的请求都会返回Permission denided (publickey).的错误. 如果想用密码登录就设置成yes.

Update: 最好添加上PubkeyAcceptedKeyTypes=+ssh-rsa, 以支持RSA公私钥免密登陆. 可能是因为OpenSSH library新版本的原因, 在一些比较新的系统上如Ubuntu 22.04上我免密登陆失败. 添加这条命令后问题解决.

然后改变文件权限.

sudo chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh/

重启ssh

sudo service ssh restart

配置locale

推荐都设置成en_US.UTF-8. 在~/.profile中添加

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

然后

sudo locale-gen en_US en_US.UTF-8 en_CA.UTF-8
sudo dpkg-reconfigure locales

更新软件并重启

配置完后更新一下软件然后重启.

# 更新
sudo apt update
sudo apt upgrade -y
# 重启
sudo reboot

配置防火墙

Ubuntu系统的防火墙命令是ufw, 建议开启. 只开启需要的端口, 不需要的端口拒绝访问, 这样更安全.

一般都是默认安装了的, 如果没有安装用apt安装.

# 安装ufw
sudo apt install ufw

然后开启防火墙.

# 开启ufw
sudo ufw enable

开启允许的端口, 一般会开启80, 443用以访问搭建的服务, 然后开启登陆的端口比如上面设置的的12345用以ssh登陆, 其他端口用得到的时候再开.

# 开启80, 443, 12345端口
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 12345

设置防火墙默认拒绝

sudo ufw default deny

如果想关闭端口, 只需要detele就好.

# 关闭80端口
sudo ufw delete allow 12345

查看开放了哪些端口.

sudo ufw status

一些日常应用安装 (自用)

sudo apt install build-essential vim neofetch lolcat curl git vnstat nload

Tags: none

1 Comment

  1. 配图与文字相辅相成,直观易懂。

Leave a comment...