云服务器一键DD重装
前言
记录一下云服务器的dd重装系统的过程,dd的原因就是更大程度使用云服务器的性能和避免被供应商监控,使系统更加纯净。
我的服务器是阿里云的2核4g的ECS云服务器,已经将系统设置为Debian 12。
我使用的是天权璇玑的脚本。
这篇文章可能以后也会慢慢更新。
过程
更新系统下载必要软件
1
2apt update
apt install wget -y
下载运行脚本
因为我是国内云服务器,所以从Gitee下载。
1
wget --no-check-certificate -qO InstallNET.sh 'https://gitee.com/mb9e8j2/Tools/raw/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh
国外服务器使用:
1
wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh
安装debian 12
1
bash InstallNET.sh -debian 12
这是安装完成后的提示信息:
安装完成后,需要等待几分钟才可以登录。
ssh端口不变,输入默认密码LeitboGi0ro进行登录。
修改密码
安全防护
任何涉及到安装的操作之前,先更新一下我们安装包的索引,可以的话,顺便更新一下软件。这本身也是安全的一部分,新的软件意味着更少的漏洞。
1 | apt update #更新软件包列表,以确保你看到的是最新的可用软件包信息。 |
SSH
更改端口
先来解决【端口 = 22】的问题。(注意:有些 VPS 服务商,默认的端口已经是非 22 端口,那么可以忽略这一步)
1 | vim /etc/ssh/sshd_config |
在里面查找到Port,我已经将22修改到了9867。
如果用的是国内服务器,还要记得在安全组放行新的端口。
最后,重启ssh服务即可。
1 | sudo service sshd restart |
注意:为了保证你不会失联,请不要关闭当前的ssh登录窗口!而是另外开一个窗口来测试!
使用复杂的密码
https://1password.com/zh-cn/password-generator/
1 | passwd |
出现提示让你修改密码。然后粘贴进去就行了。(注意为了安全的考量,Linux下输入密码是没有显示的)
新建普通用户
接下来,我们来解决【用户名 = root】的问题。
root账号是古希腊掌管Linux系统的神(浅浅玩一下梗),一旦它出现安全问题,那么整个系统都任人宰割了。
i. 新增一个普通用户并设置密码
1 | adduser username |
执行命令后,根据提示操作即可。请务必设置一个用户密码(别忘记设置密码时你时看不到 ****** 的)。之后系统会询问你一些用户的附加信息,这些就可以无视,一路回车即可。
ii. 安装sudo(普通账户临时获得root的权利)
1 | apt install sudo |
iii. 将用户加入sudo名单中
1 | visudo |
在 User Privilege Specification 下加入一行 lcf ALL=(ALL) NOPASSWD: ALL 即可。
NOPASSWD这个设置,它的意思是vpsadmin用户临时使用root权限时,不用额外输入密码。
如果你希望遵守传统习惯、每次使用sudo时需要输入密码,那么这一行改成 vpsadmin ALL=(ALL:ALL) ALL 即可。
禁止root登录
1 | nano /etc/ssh/sshd_config |
找到PermitRootLogin Yes这一项(ctrl+w),然后把它后面的设定值改为no即可。
保存是 ctrl+o,然后回车确认,退出是 ctrl+x。
重启ssh服务即可(不关闭当前ssh登录窗口)。
1 | sudo service sshd restart |
启用密钥验证登录并禁止密码登陆
SSH key是一对公钥和私钥。
大部分情况下,都是在客户端生成这对key,然后将public key放到服务端。然后客户端就可以免密登录服务器了。(大多数情况都是使用的这种方法)
但是,其实也是可以在服务端生成这对key的,然后将private key放到客户端。这样客户端也可以直接连接服务端。
其实这两种方法没什么区别。在进行验证的时候,客户端拿着的都是私钥,服务端拿着的是公钥。
我使用的方法是第一种方法。
本地
我的设备是windows11,先在命令行生成一对秘钥,我已经生成过了,就不选择覆盖了。
1 | ssh-keygen |
远程
1.将id_rsa.pub放到/root/.ssh文件夹中,复制内容到authorized_keys文件中,再注意下文件权限。
1 | cd /root/.ssh |
2.编辑ssh配置文件
1 | sudo nano /etc/ssh/sshd_config |
这里需要说一下,我的PasswordAuthentication no设置是没有生效的,网上搜索了一下,可能是个bug,需要将这一行放到文件开头才生效。
至此,我的云服务器只能使用我的私钥来登录了。
3.重启sshd服务
1 | systemctl restart sshd.service |
4.注意事项
上面每一步修改都不要关闭当前远程登录界面,测试完全通过之后,才可以关闭当前登录窗口,避免出现登录不上的情况。
全局
禁Ping
1 | sudo nano /etc/sysctl.conf |
修改文件 /etc/sysctl.conf,在文件末尾增加一行:net.ipv4.icmp_echo_ignore_all = 1
如果已经有 net.ipv4.icmp_echo_ignore_all 这一行了,直接修改 = 号后面的值即可的 0 表示允许,1 表示禁止。
修改完后执行sudo sysctl -p使配置生效。
UFW防火墙
i. 安装:
1 | apt-get update && apt-get install ufw |
ii. 检查一下ufw的状态,查看是否运行:
1 | ufw status |
状态是 inactive
,意思是没有被激活或不起作用。
iii. 设置ufw使用默认值
1 | sudo ufw default deny incoming |
允许连接
1. SSH
如果没有改端口:
1 | sudo ufw allow ssh |
现在我们改了端口:
1 | sudo ufw allow 9756/tcp comment 'SSH' |
2. 允许http连接
1 | sudo ufw allow http |
3. 允许https连接
1 | sudo ufw allow https |
4. 启动/禁用
1 | ufw enable #启用 |
5. 查看状态
1 | ufw status |
1 | ufw status numbered |
6. 删除一条规则
1 | sudo ufw delete 5 |