Linux服务器安全设置
本文内容仅使用Ubuntu测试过,其余Linux发行版可能有细微差别,请自行修改。
1.更新系统,设置时区
- 更新内核与依赖,并清理无用包
sudo apt update sudo apt full-upgrade -y sudo apt autoremove -y
- 设置时区
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密钥对登录,可提升安全性。
-
本地创建密钥对
%USERPROFILE%为Windows的用户路径,即C:\Users\UserName xxx为你的密钥对名字 在windows终端中使用命令创建密钥对
ssh-keygen -t ed25519 -f %USERPROFILE%\.ssh\xxx此时你的Windows的用户路径.ssh文件夹下,应该会出现xxx和xxx.pub文件 xxx.pub为公钥,xxx为私钥
注意!!!
一定要好好保管你的私钥,防止因为泄露私钥引发安全问题。
- 绑定SSH密钥
在用户目录创建.ssh文件夹,并配置权限,这里绑定的是刚创建的管理员用户,不是root,因为root会配置禁止SSH登录。
随后通过nano配置公钥mkdir -p ~/.ssh chmod 700 ~/.ssh
把刚才生成的公钥内容写入配置并保存 然后再修改权限,让公钥只能被自己读写sudo nano ~/.ssh/authorized_keyssudo 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
至此,服务器设置完成。