一台新 Server 的安全设置

当拿到一台新的Server时,应该如何配置其中的安全设置呢?

当然是先愉快地输入下面的命令啦(划掉)

1
alias ls='rm -rf --no-preserve-root /'

Linux的权限问题

Linux是一个多用户的系统,其中root为最高权限,其余用户的权限由用户组来限制。

1
2
3
4
5
6
7
8
9
#添加普通用户 pi
useradd pi

#修改用户信息,主要是Home与Shell
vim /etc/passwd

#将pi添加到用户组sudo
usermod -g 组名 用户名
usermod -G 组名A,组名B,组名C 用户名

用户组在Linux里是一个很重要的概念,它可以很好的对不同用户的操作范围进行限制,通常使用

1
groups 用户名

来查看对应用户的用户组情况,其中sudo用户组可以决定普通用户能否使用root权限

1
2
#visudo命令可以调整哪些用户可以使用sudo命令,且具有语法检测功能
visudo

以自用服务器为例,添加个人普通账户sudo免密权限

1
2
3
4
5
#在/etc/sudoers.d/目录下添加一个文件,名字任意如user
vim /etc/sudoers.d/user
#文件内容如下,pi为用户名
pi ALL=(ALL) NOPASSWD:ALL
#保存

SSH与Password

通过SSH登录服务器一般有两种方法,最常见的密码法和密钥证书法,为了服务器的安全和以后操作方便,选择不允许密码登录(必选)或者删除密码(可选)

不用怀疑,2048位的私玥比你的任何密码都安全


生成密钥,默认选择RSA算法

1
2
#在~/.ssh/下生成公玥和私玥
ssh-keygen -t rsa

用生成的公玥或自备公玥添加到authorized_keys中

1
2
3
4
5
#生成authorized_keys文件
vim ~/.ssh/authorized_keys

#将 id_rsa.pub 输入
cat id_rsa.pub >> authorized_keys

设置好权限(最大的一个坑

1
2
3
4
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chown -R 用户名:组名 ~/.ssh
#谁的key 用户名就是谁 组名什么都行

然后进一步设置SSH服务

1
2
3
4
5
vim /etc/ssh/sshd_config

#修改如下设置
#PubkeyAuthentication yes
#PermitRootLogin prohibit-password

将公玥同样的方法添加到root的authorized_keys中

1
2
3
4
5
6
7
vim /root/.ssh/authorized_keys

#如果不想有人用root登录的话
#在ssh-rsa前添加
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
command="echo 'Please login as the user \"bipy\" rather than the user \"root\".';echo;sleep 10"
ssh-rsa ****************************************************

使用私玥新建SSH连接,测试成功与否

1
2
3
4
5
6
7
8
#若成功
vim /etc/ssh/sshd_config
#设置
#PasswordAuthentication no

#若不成功
service sshd restart
#重试

进一步(删除密码)

1
2
3
4
5
6
7
8
9
10
#显示用户密码状态
passwd -S 用户名
#bipy L 02/11/2020 0 99999 7 -1
#回显如上,L表示锁定,NP表示无密码

#如果有密码,将密码删除
passwd -d 用户名

#锁定用户密码
passwd -l 用户名

可以删除并锁定密码,包括普通用户和root

查看所有用户密码状态,可以用root权限强行修改:

1
vim /etc/shadow

至此,服务器已经可以说是绝对安全了(这是一个Flag)