服务器初始化配置
自从入坑服务器之后, 陆陆续续买了不少小鸡. 由于暴露在公网上, 因此一些关于创建用户和安全设置的也是需要的. 这里记录一下我刚开一台🐤的时候是怎么配置的. 一般我用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
在里面, 建议修改以下条目. 名字前有#号的话删除, 否则条目不会生效.
Name | Value |
---|---|
Port 12345 | 修改默认登陆端口名到12345 |
PermitRootLogin no | 不允许root用户登陆 |
PermitEmptyPasswords no | 不允许空密码登陆 |
PasswordAuthentication no | 不使用密码授权登录, 只允许免密登陆 |
RSAAuthentication yes | 使用RSA算法进行安全验证 |
PubkeyAuthentication yes | 允许公钥认证 |
UseDNS no | 禁用DNS反向解析, 用以提速 |
SyslogFacility AUTHPRIV | 记录用户登陆信息 |
MaxAuthTries 6 | 最多认证尝试次数, 防止暴力破解密码 |
Protocol 2 | ssh协议使用新版的 |
上面加粗的两条需要注意一下. 第一个是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
配图与文字相辅相成,直观易懂。