马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
该教程仅针对于Debian系统。
一、系统基本设置
1. 更新软件库
- apt update -y && apt upgrade -y
复制代码
2. 更新、安装必备软件
- apt install sudo curl wget nano vim -y
复制代码
3. 校正系统时间将时区改为改成上海 - sudo timedatectl set-timezone Asia/Shanghai
复制代码
查看当前时区:
列出所有时区:
- timedatectl list-timezones
复制代码
时间同步
- # 检查时间同步状态
- timedatectl status
- # 启用自动时间同步
- timedatectl set-ntp true
- # 手动触发时间同步
- systemctl restart systemd-timesyncd
复制代码
如果需要更精确的时间同步,可以安装和使用NTP:
- # 安装NTP
- apt install ntp
- # 启动并启用NTP服务
- systemctl start ntp
- systemctl enable ntp
- # 查看NTP同步状态
- ntpq -p
复制代码通过调整各种系统和网络参数来优化服务器的性能。
实现方法: - 拥塞控制算法:通过慢启动、拥塞避免、快重传和快恢复等算法避免网络拥塞。不同的拥塞控制算法(如Cubic、BBR、Reno)适用于不同的网络环境。调优这些算法的参数可以在避免拥塞的同时最大化吞吐量。
- 缓冲区管理:TCP的发送和接收缓冲区直接影响性能。缓冲区过小会限制吞吐量,过大则可能导致内存浪费和延迟增加。合理设置socket缓冲区大小需要考虑带宽延迟积和应用特性。
- 超时和重传机制:RTO(重传超时)算法根据RTT动态调整超时时间。调优相关参数可以在网络条件变化时快速适应,减少不必要的重传,提高传输效率。
- 连接管理优化:通过调整TIME_WAIT状态的管理、SYN队列大小、keepalive等参数提升服务器的并发处理能力和资源利用率。
查看TCP拥塞控制算法和队列调度器
- # 查看当前使用的拥塞控制算法
- sysctl net.ipv4.tcp_congestion_control
- # 查看系统支持的所有拥塞控制算法
- sysctl net.ipv4.tcp_available_congestion_control
- # 查看默认的队列调度器
- sysctl net.core.default_qdisc
- # 检查BBR模块是否加载
- lsmod | grep bbr
复制代码
这里我提供了一个简易的脚本进行相应的优化调整。(修改了部分参数设置)
- wget -qO TuneTCP.sh https://raw.githubusercontent.com/yuju520/Script/main/TuneTCP.sh && chmod +x TuneTCP.sh && clear && ./TuneTCP.sh
复制代码因此,SWAP 对于内存小的 VPS 非常有必要,可以提高我们的运行效率。 这里我们同样用脚本来添加。
- wget -O swap.sh https://raw.githubusercontent.com/yuju520/Script/main/swap.sh && chmod +x swap.sh && clear && ./swap.sh
复制代码
查看当前内存
四、安装 Docker、Docker-compose 以及修改配置
1. Docker
1.1 Docker 安装
1.1.1 非大陆服务器
- wget -qO- get.docker.com | bash
复制代码
或
- curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
复制代码
1.1.2 第三方 Docker 安装命令(中国大陆可用)
- bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
复制代码
1.2 Docker相关命令
- # 查看 Docker 版本
- docker -v
- # 开机自动启动
- sudo systemctl enable docker
- # 卸载 Docker
- sudo apt-get purge docker-ce docker-ce-cli containerd.io
- sudo apt-get remove docker docker-engine
- sudo rm -rf /var/lib/docker
- sudo rm -rf /var/lib/containerd
复制代码
2. Docker-composeDocker 从 18.06.0-ce 版本就开始自带 Docker Compose 工具,因此,我们只需要检验 Docker Compose 的版本。 查看 Docker Compose 版本
五、修改 SSH 端口修改 SSH 端口通常有以下几个主要原因: - 增强安全性:SSH 服务默认使用的 22 端口是攻击者经常扫描和尝试攻击的目标。通过将端口修改为一个不常见的数值,可以减少自动攻击和暴力破解的风险,因为攻击者通常会首先针对常见的默认端口进行攻击。
例如,如果攻击者使用自动化工具扫描大量服务器,这些工具可能主要集中在 22 端口。而修改了端口后,就降低了被这类工具轻易发现和攻击的可能性。 - 减少误连接和非法访问尝试:一些网络环境中可能存在大量的随机连接请求或非法访问尝试,针对默认的 22 端口。更改端口可以减少这类无意义的连接请求。
假设您的服务器处于一个公共网络环境中,经常会收到大量的随机连接尝试,其中很多是针对常见端口的。修改 SSH 端口可以减少这类不必要的干扰。 方法:修改/etc/ssh/sshd_config中Port的参数为Port 55520
用命令行将默认的 22 端口修改为 55520
- sudo sed -i 's/^#\?Port 22.*/Port 55520/g' /etc/ssh/sshd_config
复制代码
重启 sshd 服务
- sudo systemctl restart sshd
复制代码
六、密钥登录在生成密钥之前,先解释一下公钥和私钥的使用。 - 私钥 :只需要存放在客户端 (发起连接的机器)
- 公钥 :需要存放在服务器端 (被连接的机器)
在大多数人的使用场景下,应该是使用Windows系统作为发起连接的一方。
因此,我们生成密钥后,需要将私钥存放在Windows机器上(或SSH客户端中),并将公钥存放至被连接的机器上(也就是VPS)。 1. 生成密钥(非特殊需要一路回车即可)
- ssh-keygen -t ed25519 -f ~/.ssh/server1 -C "user@example.com"
复制代码
参数说明:
[td]参数 | 可选值 | 说明 | -t | ed25519【推荐】、rsa、ecdsa、dsa、ecdsa-sk | 指定密钥类型 | -f | | 指定输出文件名 | -C | | 添加注释(通常是邮箱地址) | -b | RSA建议2048或4096位 | 指定密钥长度 |
Tips:Windows端操作需要下载并安装Git Bash(在Git Bash内执行) git-scm.comGit - Downloading Package
2. 查看密钥
- # 查看server1公钥内容
- cat ~/.ssh/server1.pub
- # 查看server1私钥内容
- cat ~/.ssh/server1
复制代码
Success
此时你已经成功生成公钥和私钥!
接下来我们需要在VPS端配置公钥。 3. 在VPS写入公钥
- echo "你的公钥内容" >> ~/.ssh/authorized_keys
复制代码
4. 设置正确权限
- # 设置密钥相关的权限
- chmod 700 ~/.ssh
- # 授权密钥权限
- chmod 600 ~/.ssh/authorized_keys
复制代码
5. 设置 SSH,打开密钥登录功能编辑 /etc/ssh/sshd_config 文件,调整相关选项:
- RSAAuthentication yes
- PubkeyAuthentication yes
复制代码
或直接使用命令
- sudo sed -i 's/^#\?RSAAuthentication.*/RSAAuthentication yes/g' /etc/ssh/sshd_config
- sudo sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
复制代码
调整后重启SSH服务
Success
此时你已经成功在VPS上配置公钥!
接下来我们需要在Windows端(或SSH客户端)配置私钥。 6. 在主控端配置私钥
6.1 Windows端配置6.1.1 下载并安装Git Bash
git-scm.comGit - Downloading Package
6.1.2 手动在C:\Users\你的用户名\.ssh\下创建config文件(手动和命令行均可)
在其中添加配置内容:
- Host server1
- HostName 123.123.123.123
- User root
- Port 55520
- IdentityFile C:\Users\Administrator\.ssh\id_rsa
复制代码
备注:
[td]参数名 | 备注 | myserver | 可自定义的别名 | HostName | VPS的公网IP | User | 登录的用户名 | Port | SSH端口 | IdentityFile | 私钥的文件地址 |
6.1.3 检测是否成功配置在Git Bash中进行SSH连接
Success
此时应该不需要输入密码就可以直接连接!
6.2 SSH客户端将私钥填入或将私钥文件拖入即可。 7. 限制密码登录(在确保SSH能通过密钥登录后使用!)编辑 /etc/ssh/sshd_config 文件,调整相关选项:
- PasswordAuthentication no
复制代码
或直接使用命令
- sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config
复制代码
调整后重启SSH服务
七、安装 fail2ban
1. 安装 fail2ban
2. 配置 fail2banfail2ban 的配置文件通常位于 /etc/fail2ban/ 目录下,fail2ban 的.conf 配置文件都是可以被.local 覆盖,所以配置方式建议是添加.local 文件,不修改原来的配置文件。
- nano /etc/fail2ban/jail.local
复制代码
配置文件如下:
- [DEFAULT]
- #忽略的IP列表,不受设置限制(白名单)
- ignoreip = 127.0.0.1
- #允许ipv6
- allowipv6 = auto
- #日志修改检测机制(gamin、polling和auto这三种)
- backend = systemd
- #针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置
- [sshd]
- #是否激活此项(true/false)
- enabled = true
- #过滤规则filter的名字,对应filter.d目录下的sshd.conf
- filter = sshd
- #ssh端口
- port = ssh
- #动作的相关参数
- action = iptables[name=SSH, port=ssh, protocol=tcp]
- #检测的系统的登陆日志文件
- logpath = /var/log/secure
- #屏蔽时间,单位:秒
- bantime = 86400
- #这个时间段内超过规定次数会被ban掉
- findtime = 86400
- #最大尝试次数
- maxretry = 3
复制代码
Ctrl+S 保存并退出 设置开机自动启动 fail2ban
- sudo systemctl enable fail2ban
复制代码
重新启动 fail2ban
- sudo systemctl restart fail2ban
复制代码
查看 fail2ban 的状态
- sudo systemctl status fail2ban
复制代码
查看所有可用 jail 的状态
感谢你的观看和点赞,你的每一个小心心都会激励我写出更多文章
|