Linux服务器安全设置

发布于 约 3 分钟

本文内容仅使用Ubuntu测试过,其余Linux发行版可能有细微差别,请自行修改。

1.更新系统,设置时区

  1. 更新内核与依赖,并清理无用包
    sudo apt update
    sudo apt full-upgrade -y
    sudo apt autoremove -y

  1. 设置时区
    sudo timedatectl set-timezone Asia/Shanghai

2.创建普通用户

通过普通管理员用户进行日常操作,防止root用户密码泄露。

创建普通管理员用户并设置权限,uesrname为用户名自行修改

sudo adduser uesrname
sudo usermod -aG auto uesrname

测试,应输出root

su - uesrname
sudo whoami 

3.配置SSH密钥

通过SSH密钥对登录,可提升安全性。

  1. 本地创建密钥对

    %USERPROFILE%为Windows的用户路径,即C:\Users\UserName xxx为你的密钥对名字 在windows终端中使用命令创建密钥对

    ssh-keygen -t ed25519 -f %USERPROFILE%\.ssh\xxx

    此时你的Windows的用户路径.ssh文件夹下,应该会出现xxx和xxx.pub文件 xxx.pub为公钥,xxx为私钥

    注意!!!

    一定要好好保管你的私钥,防止因为泄露私钥引发安全问题。


  1. 绑定SSH密钥 在用户目录创建.ssh文件夹,并配置权限,这里绑定的是刚创建的管理员用户,不是root,因为root会配置禁止SSH登录。
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    随后通过nano配置公钥
    sudo nano ~/.ssh/authorized_keys
    把刚才生成的公钥内容写入配置并保存 然后再修改权限,让公钥只能被自己读写
    sudo chmod 600 ~/.ssh/authorized_keys

4.禁止root用户SSH登录

使用nano编辑设置

sudo nano /etc/ssh/sshd_config

将文件中的对应设置根据需求修改 禁止root用户ssh登录:

PermitRootLogin no

禁止密码登录:

PasswordAuthentication no

开启公钥登录:

PubkeyAuthentication yes

放通用户的SSH登录,uesrname为用户名自行修改

AllowUsers uesrname

修改完成后,重启服务生效:

sudo systemctl restart ssh

注意!!!!

禁止账号密码登录前先确认你的 SSH 密钥是否配置完成,否则关闭密码登录后可能无法进入。

如果已经配置完成,导致登录不上去,可以通过VNC暂时连接到服务器,重新配置密码登录即可。

5. 修改SSH默认端口

因为SSH连接默认端口为22,很容易被人恶意扫描,所以改为高位端口可有效防止扫描。 使用nano编辑设置

sudo nano /etc/ssh/sshd_config

将配置中的Port根据需求修改

Port 22222

修改完成后,重启服务生效

sudo systemctl restart ssh

6. 配置防火墙

防火墙有很多种选择,这里本文使用ufw来配置。 首先安装ufw

sudo apt install ufw -y

然后开放端口 建站端口通常为80、443 SSH端口则选择你刚才配置的端口

sudo ufw allow 22222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

默认拒绝所有入站,默认允许所有出站。这个根据个人需要来设置。

default deny incoming
default allow outgoing

删除规则方法为

sudo ufw delete allow 443/tcp

配置完成后,打开防火墙

sudo ufw enable

如果需要重新加载防火墙规则,则使用

sudo ufw reload

如果需要查看当前防火墙规则,则使用

sudo ufw status

7.安装Fail2Ban 防暴力破解(可选)

先安装Fail2Ban

sudo apt install fail2ban -y

启动Fail2Ban

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

创建配置

sudo nano /etc/fail2ban/jail.local

写入配置,这里port写入你配置的端口 maxretry最大重试次数 findtime多长时间内的重试失败 bantime重试超出后禁止时间 下面的配置为10分钟内失败五次,ban一小时

[sshd]
enabled = true
port = 22222
maxretry = 5
findtime = 10m
bantime = 1h

重启Fail2Ban

sudo systemctl restart fail2ban

查看Fail2Ban运行情况

sudo fail2ban-client status sshd

至此,服务器设置完成。