1.本文所包含的所有信息和建议仅供参考和介绍性目的。我不对这些信息的准确性、完整性或实用性作任何明示或暗示的保证。

2.您采取本文中提供的任何建议或指南的行动完全是基于您自己的决定和风险。我不对您因依赖本文中提供的信息而导致的任何直接或间接损失或损害承担责任。

3.本文可能提及或推荐使用第三方脚本、工具或服务。我不对这些第三方内容的功能性、安全性或合法性作任何声明或保证,并且不对您因使用这些内容而导致的任何问题承担责任。

4.您需对其系统安全负有责任,并且应该根据其需求、技能和环境来决定采取哪些安全措施。本文提供的建议仅供参考,不应视为最终的、全面的安全解决方案。

5.本文所介绍的操作基于Debian和Ubuntu Linux发行版。我无法保证这些操作适用于所有Linux发行版,因为不同的发行版可能具有不同的配置和软件包管理方式。在执行本文中提到的操作之前,请确保您理解并确认这些操作适用于您正在使用的Linux发行版。

升级安装Packages

1
2
3
4
5
6
#切换到root用户
sudo -i
#更新软件包列表和软件及删除无用软件依赖
apt update && apt upgrade -y && apt dist-upgrade -y && apt full-upgrade -y && apt autoremove -y
#Debian系统比较干净,安装常用的软件
apt install wget curl vim git lsof ufw unzip -y

DD系统(推荐)

DD系统,就是通过网络重装系统,而不是传统的通过u盘或者是控制面板重装系统。而DD脚本就是一键网络重装系统,通过自动化脚本执行所有的DD步骤,你只需要执行一行命令即可DD完成,方便快捷。

为什么要DD系统?

基本所有的VPS服务器商家,都会提供免费的Linux系统供安装,比如CentOS、Debian、Ubuntu等。那为什么还要使用一键DD脚本重装/更换系统呢?

服务商提供的系统版本有限,可能没有自己需要的版本。
服务商的系统安装有自己不想要的服务,比如国内的阿里云盾(安骑士)
服务商的系统无法安装特定软件,比如很挑内核的锐速。
服务商限制重装系统的次数,DD系统可以绕过。

以上的情况,一键DD脚本就可以为服务器更换一个纯净的系统,帮你解决问题。

DD脚本

leitbogioro脚本

项目地址及详细用法:https://github.com/leitbogioro/Tools

应该是目前最好的DD脚本,个人推荐用来DD成Linux

1
bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh') -debian 12 -pwd '自定义root密码' -port "自定义ssh端口"

MoeClub脚本

项目地址及详细用法:https://github.com/veip007/dd

大多数DD脚本都是依照萌咖脚本(已删库,目前为网友备份的)二次开发的

1
bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 12 -v 64 -p 密码 -port 端口 -a -firmware

安装 XanMod(可选)

XanMod内核是基于Linux内核的优秀第三方定制魔改内核,通过改善网络连接,增强硬件兼容性等提高系统性能。

linux-xanmod-x64v3,v1/v2/v3/v4版本的区别在于对各个时期 CPU 的 ISA(指令集架构)的优化不同,你可以使用check_x86-64_psabi.sh脚本或通过查询CPU官网来选择版本

1
2
3
4
5
6
7
8
9
10
11
12
#安装gpg程序
apt install gpg -y
#下载、导入并将 gpg 密钥转换为二进制文件
wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg
##在下载gpg密钥时部分云服务提供商的服务器无法下载,报错为gpg: no valid OpenPGP data found.出现该情况请下载密钥到本地后上传到服务器/root路径并运行以下命令(没问题跳过该步)
gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg /root/archive.key
#添加"dl.xanmod.org"附加存储库
echo 'deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-release.list
#刷新包依赖项并安装
sudo apt update && sudo apt install linux-xanmod-x64v3
#重启
reboot

开启BBR加速(推荐)

一键安装XanMod内核和开启BBR加速

1
2
3
4
#ylx的bbr脚本-不卸载内核版本
wget -O tcpx.sh "https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcpx.sh" && chmod +x tcpx.sh && ./tcpx.sh
#ylx的bbr脚本-卸载内核版本
wget -O tcp.sh "https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

fLLJujb

如不想使用一键脚本,可使用以下命令(Linux Kernel 内核需要4.9及以上版本)

1
2
3
4
5
6
uname -srm
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr

检测脚本

融合怪测评脚本

项目地址及详细用法请参考:https://github.com/spiritLHLS/ecs

也许是最全能的VPS服务器测评脚本

1
bash <(wget -qO- bash.spiritlhl.net/ecs)

IP质量体检脚本

项目地址及详细用法请参考:https://github.com/xykt/IPQuality

1
bash <(curl -Ls IP.Check.Place)

流媒体检测

1
bash <(curl -L -s media.ispvps.com)

修改主机名

1
2
3
4
5
6
7
8
9
10
#查看主机名
hostname
#修改主机名
vim /etc/hostname
#更新 /etc/hosts 文件
vim /etc/hosts
#重启网络服务
systemctl restart systemd-hostnamed
#重启系统
reboot

UFW防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#启用 ufw
ufw enable
#允许流量通过端口
ufw allow 22
#删除规则
ufw delete allow 22
#禁止流量通过端口
ufw deny 22
#检查防火墙状态
ufw status
#重启防火墙
ufw reload
#检查开机启动状态-返回enabled
systemctl is-enabled ufw

添加SWAP虚拟内存(可选)

注意:VPS 的内存如果过小,建议设置一下 SWAP,一般为内存的 1-1.5 倍即可,可以让系统运行更流畅!

1
2
#moerats的swap脚本
wget https://www.moerats.com/usr/shell/swap.sh && bash swap.sh

nYhZAuFdwqu

更改SSH端口及密码

1
2
3
4
5
6
7
8
9
10
11
12
#打开SSH配置文件
vim /etc/ssh/sshd_config
#更改SHH端口为2222
Port 2222
#放行防火墙端口
ufw allow 2222
#重启SSH服务
systemctl restart sshd
#确认端口已修改
ss -ltn
#系统将提示您输入当前密码,然后再输入新密码两次以确认
passwd

配置密钥登陆(推荐)

本地CMD或Powershell生成公私钥,默认下pub后缀为公钥

1
2
#使用OpenSSH私钥格式生成迭代次数为256次的Ed25519类型的SSH密钥对
ssh-keygen -o -a 256 -t ed25519

aWXeVEU

复制公钥到服务器~/.ssh的authorized_keys文件

1
2
3
4
5
6
7
8
#如果目录不存在mkdir ~/.ssh
cd ~/.ssh
#将复制的公钥文件内容粘贴保存
vim authorized_keys
#配置文件权限
chmod 600 authorized_keys
#重启SSH服务
systemctl restart sshd

尝试使用密钥登录,这里我使用CMD完成,你也可以使用SSH客户端

1
2
3
4
#私钥登录
ssh -i "{/entire/path/to/your/privkey/with/filename}" {user}@{server ip}
#如果更改了默认端口需要加上-p 新端口
ssh -i "C:/Users/loverorien/.ssh/id_ed25519" -p 新端口号 root@192.3.255.66

如果登录失败,请配置sshd_config的PubkeyAuthentication yes

配置/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
46
47
48
49
50
51
52
# 端口, 默认22
#Port 22
# 监听地址相关, 不需修改
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
# Ciphers and keying
#RekeyLimit default none
# 日志
# 指定将日志消息通过哪个日志子系统(facility)发送
SyslogFacility AUTH
# 指定日志等级
LogLevel INFO
# 鉴权
# 限制用户必须在指定的时限(单位秒)内认证成功
LoginGraceTime 2m
# 允许root用户登录
PermitRootLogin yes
# 指定是否要求sshd(8)在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查
StrictModes yes
# 指定每个连接最大允许的认证次数
MaxAuthTries 6
# 最大允许保持多少个连接。默认值是 10
MaxSessions 10
# 是否开启公钥认证, 仅可以用于SSH-2. 默认值为"yes"
PubkeyAuthentication yes
# 是否允许密码验证
PasswordAuthentication no
# 是否允许空密码
PermitEmptyPasswords no
# 是否允许质疑-应答(challenge-response)认证
ChallengeResponseAuthentication no
# 是否通过PAM验证
UsePAM yes
# 是否允许X11转发
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
# 指定sshd是否在每一次交互式登录时打印 /etc/motd 文件的内容
PrintMotd no
# 指定sshd是否在每一次交互式登录时打印最后一位用户的登录时间
PrintLastLog yes
# 配置超时
TCPKeepAlive yes
ClientAliveInterval 120
ClientAliveCountMax 10
# 配置Pid
PidFile /var/run/sshd.pid
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server

安装 Nginx

按照官方文档根据你的系统执行命令即可

1
https://nginx.org/en/linux_packages.html

uEXwqbs

相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#启动命令 (直接运行/系统服务管理器)
nginx
systemctl start nginx
#查看 Nginx 版本
nginx -v
#指定 Nginx 配置文件
nginx -c /etc/nginx/nginx.conf
#验证 Nginx 配置文件是否有误
nginx -t
#立即停止 Nginx
nginx -s stop
#平滑停止 Nginx
nginx -s quit
#重新加载 Nginx 配置文件并重启
nginx -s reload

安装 Docker 环境

安装 Docker(非中国大陆服务器)

1
2
3
4
5
6
7
8
#安装 Docker(官方源 阿里源 中国区Azure源)
wget -qO- get.docker.com | bash
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud
#查看 Docker 版本
docker -v
#设置 Docker 开机自启
systemctl enable docker

安装 Docker-compose(非中国大陆服务器)

1
2
3
4
5
6
7
8
#安装 指定版本Docker Compose
curl -L "https://github.com/docker/compose/releases/download/2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#安装 最新Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#添加执行权限
chmod +x /usr/local/bin/docker-compose
#查看 Docker Compose 版本
docker-compose --version

卸载 Docker

1
2
3
4
5
6
7
8
9
10
11
12
#停止并删除所有运行中的容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
#删除所有镜像
docker rmi $(docker images -q)
#卸载 Docker,并删除其相关的所有文件
apt-get purge docker-ce docker-ce-cli containerd.io
apt-get autoremove
#删除 Docker 存储数据的目录
rm -rf /var/lib/docker
#删除 Containerd 存储数据的目录
rm -rf /var/lib/containerd

修改 Docker 配置(可选)

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF

Acme证书

详细用法请参考 https://github.com/acmesh-official/acme.sh

DNS API方式 https://github.com/acmesh-official/acme.sh/wiki/dnsapi

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
#安装 Acme.sh
curl https://get.acme.sh | sh
#配置环境变量(软链接)
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
#查看 Acme.sh 版本
acme.sh --version
#切换CA证书颁发机构
acme.sh --set-default-ca --server letsencrypt
#DNS API方式申请证书 API令牌到对应服务商获取
##如name.com
export Namecom_Username="leakkc"
export Namecom_Token="edec485cdfa7e62511ab6b9e333ce94183bed261"
##如cloudflare
export CF_Token="glcOIFRlGEl2Yj8Escm8lRcdWbxodkQFyzV9bW3q"
export CF_Account_ID="ffa46c8dcb754ee169e5c2b566b52b25"
#申请泛域名证书
acme.sh --issue --dns dns_cf -d 你的域名 -d '*.你的域名' [-k ec-256]
acme.sh --issue --dns dns_cf -d love.com -d '*.love.com' -k ec-256
#安装证书到Nginx(可选)
acme.sh --install-cert -d love.com -d *.love.com --key-file /etc/cert/privkey.key --fullchain-file /etc/cert/fullchain.cer --ecc --reloadcmd "systemctl restart nginx"
#强制更新证书,默认60天自动更新
acme.sh --renew -d example.com --force [--ecc]
#停止更新证书(删除证书)证书/密钥文件需自行删除相应的目录
acme.sh --remove -d example.com [--ecc]
#升级acme.sh(可开启自动升级)
acme.sh --upgrade [--auto-upgrade]
#禁用自动升级
acme.sh --upgrade --auto-upgrade 0