2023年的双十一,阿里云出大招,对于新老用户一视同仁,推出了99元/年的ECS服务器搞活动(99元/年),不少小伙伴也入手了一台服务器。那么,在入手云服务器或者VPS后,如何进行相关的设置才能让服务器安全高效运行呢?这里将以Ddebian系统为例,讲解基于Linux的VPS服务器的基本设置和安全设置,让服务器使用起来更加顺手,让服务器更加安全可靠。
对于各大IDC厂商提供的操作系统,安全性稳定性会更好一些,但会默认安装一些软件,并不是最纯净的。
对于阿里云提供的Debian系统镜像,不需要修改软件源。
一、安装基础软件
Debian系统使用 apt-get <软件名称> 命令安装软件。
1
|
apt-get install sudo wget curl htop screenfetch bash-completion zsh zip net-tools
|
| 软件名称 |
用途 |
| sudo |
让非 root 用户具有管理员的权限 |
| wget |
终端文件下载工具 |
| curl |
终端 URL 工具 |
| htop |
系统监控与进程管理工具 |
| screenfetch |
在终端显示系统信息 |
| bash-completion |
bash 自动补全 |
| zsh |
终端解释器 |
| zip |
压缩解压zip文件 |
| net-tools |
网络配置工具 |
二、创建普通用户并授权
(一)新建普通用户
要创建用户,当前用户必须是 root 用户或者 sudo 用户。
方式① :在root权限下,useradd只是创建了一个用户名,如 useradd <username> ,它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的。为了避免这样的情况出现,可以用 useradd -m <username> 的方式创建,它会在/home目录下创建同名文件夹,然后利用 passwd <username> 为指定的用户名设置密码。
1
2
|
useradd -m hadoop -s /bin/bash #新建名为 hadoop 的用户,加上命令/bin/bash就会创建同名文件。
passwd hadoop #为 hadoop 的用户设定密码
|
方式② :可以直接利用adduser创建新用户 adduser <username>,这样在/home目录下会自动创建同名文件夹和创建密码。
1
|
adduser hadoop #新建名为 hadoop 的用户
|
(二)赋予其ROOT权限
使用usermod -a -G sudo <username>命令将用户添加到 sudo 组中,以便赋予其 sudo 特权。
1
2
3
4
5
|
cat /etc/sudoers #查看sudo中是否有 hadoop 用户
usermod -a -G sudo hadoop #将用户添加到 sudo 组中,以便赋予其 sudo 特权
sudo -l -U hadoop #验证用户 hadoop的权限,输出可以 sudo 权限运行所有命令:(ALL : ALL) ALL
su - hadoop #切换到用户 hadoop
id hadoop #查看hadoop用户所拥有的权限
|
(三)设置环境变量
使用新用户 hadoop 登录系统
1
|
nano .bashrc # 编辑 .bashrc 文件
|
将 export PATH=$PATH:/sbin 内容添加到 .bashrc 文件的末尾。
1
2
|
source ~/.bashrc # 使 .bashrc 生效
echo $PATH #查看环境变量,将输出/sbin环境变量。
|
三、强化SSH访问
这部分主要是修改 /etc/ssh/sshd_config 文件。
1
|
nano /etc/ssh/sshd_config # 编辑 /etc/ssh/sshd_config
|
可以直接在文件末尾增加下面这些参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#使用52929端口作为SSH登录端口
#注意需要同时在阿里云安全组和服务器自身防火墙2个地方放行新的SSH端口。
Port 52929
#设置协议版本为SSH2
Protocol 2
#临时开启密码登录,以便上传公钥。
PasswordAuthentication yes
#允许root用户登录
PermitRootLogin yes
#禁止使用空密码登录
PermitEmptyPasswords no
#限制登录/访问尝试次数
MaxAuthTries 5
#设置空闲超时时间间隔
ClientAliveInterval 120
#是否使用RSA算法进行安全验证
RSAAuthenticationyes
#支持密钥的方式连接
PubkeyAuthenticationyes
#密钥文件存放路径
AuthorizedKeysFile .ssh/authorized_keys
#关闭 X11转发
#X11Forwarding no
#关闭TCP端口转发
AllowTcpForForwarding no
#是否对远程主机名进行反向解析(检查此主机名是否与其IP地址真实对应)
UseDNS no
#仅在 IPv4 上侦听
AddressFamily inet
#日志Facility为AUTHPRIV
SyslogFacility AUTHPRIV
|
修改完成后,重启SSH服务
1
|
systemctl restart sshd # 重启 ssh 服务
|
切记!切记!切记!
为了防止修改SSH服务后无法远程登录服务器的情况,建议是新开一个登录窗口,使用新建的用户登录,确保没有问题后,再关闭原来的登录窗口。
最后,根据文章《设置SSH密匙(免密码)登录Debian系统》,完成使用密匙登录的配置。
四、防止暴力破解
Fail2ban是一个开源工具,它使用正则表达式来扫描多种服务的日志文件,识别监视服务日志中的恶意活动,使用系统防火墙在设定时间段内阻止该IP的访问。
Fail2Ban 可以监控各种协议,包括 SSH、HTTP 和 SMTP等。默认情况下,Fail2Ban 仅监视 SSH,并且对任何服务器都是一种有用的安全威慑,因为 SSH 守护程序通常配置为持续运行并侦听来自任何远程 IP 地址的连接。
1
2
3
|
apt install fail2ban #安装fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local #复制默认的jail.conf为jail.local,用于存储自定义的设置参数
nano /etc/fail2ban/jail.local #修改设置参数
|
.local文件不必包含.conf文件中的所有设置,只需包含您要覆盖的参数和即可。这里需要防止SSH被暴力破解,将jail.local 配置文件内容修改:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[DEFAULT]
#设置IP白名单
ignoreip = 127.0.0.1/8 ::1 47.116.23.92 113.120.59.53 192.168.1.0/24
# 如果10分钟发生了5次失败的尝试,则永久禁止访问。
bantime = -1
findtime = 10m
maxretry = 5
#sshd-START
[sshd]
enabled = true
#port = ssh
#filter = sshd
#logpath = %(sshd_log)s
#backend = %(sshd_backend)s
#sshd-END
|
修改配置文件后,需要启动或者重新启动
1
2
3
4
5
|
systemctl enable fail2ban #设置fail2ban开机启动
systemctl status fail2ban #查看fail2ban的状态
systemctl start fail2ban #开始运行fail2ban服务
systemctl stop fail2ban #停止fail2ban服务
systemctl restart fail2ban #重启fail2ban服务
|
使用fail2ban-client命令查看服务的状态
1
2
3
4
|
fail2ban-client status '查看Fail2ban服务监控的服务
fail2ban-client status sshd '查看Fail2ban sshd服务的状态
fail2ban-client set sshd unbanip 23.34.45.56 '手动解除对某个IP地址的屏蔽,适用于误杀IP的情况。
fail2ban-client set sshd banip 23.34.45.56 '手动将某个IP地址手工屏蔽列表,禁止访问
|
更多详细信息,参考https://www.myfreax.com/install-configure-fail2ban-on-debian-10
Fail2ban是通过扫描日志找出恶意IP并调用防火墙直接封禁,达到防止恶意扫描和CC攻击的目的。所以可以使用Fail2ban分析FRPS日志,对频繁链接和断开的IP进行ban(因为FRPS日志中只有连接和断开记录,这是一种不完美的解决方案),具体参考https://blog.csdn.net/qq_45197445/article/details/129355741
五、配置防火墙
配置Firewalld或者ufw(Uncomplicated Firewall)防火墙,也可以直接使用运维管理面板(如1Panel、宝塔等)配置防火墙。
切记!切记!切记!
对于阿里云等厂商提供的云服务器,厂家还提供了“安全组”等虚拟防护墙,这与服务器里面的防火墙不是一回事,属于两个防火墙。对于需要访问的端口,需要在两个防火墙中都放行才可以。
建议是仅启用需要的端口,尽可能保证服务器安全。具体开启方法,详见Linux安全提升–firewalld防火墙的安装和常用操作命令。
六、操作建议
建议所有操作完成后,重启服务器,检查各个服务可以正常启动和运行。
如果无法远程连接服务器,对于阿里云ECS,可以在阿里云控制台ECS实例中使用VNC方式连接服务器,排查问题。