好的,以下是将您的服务器配置记录转换为标准 Markdown 格式的版本:
服务器重装及配置记录
一、更新组件与包管理
更新 Ubuntu 系统上的软件包:
- 不推荐(耗时较长):
apt update && apt upgrade -y
- 推荐:
sudo apt update # 更新软件包列表
sudo apt upgrade --only-upgrade # 安装可用的软件包更新
或者合并为一行:
sudo apt update && sudo apt upgrade --only-upgrade
二、常用工具
-
VIM 编辑器
检查是否安装 VIM:
如果没有安装,则安装:vim --version
将 VIM 配置为默认系统编辑器:apt install vim
sudo update-alternatives --config editor
-
安装 command-not-found
安装
command-not-found
工具,在命令输入错误时提供相应的软件包安装提示:#!/bin/bash # 更新软件包列表并升级系统 sudo apt update && sudo apt upgrade -y # 安装常用工具 sudo apt install -y curl wget git vim htop tree net-tools build-essential zip unzip ufw tmux # 可选:安装其他实用工具 # sudo apt install -y # python3-pip # openvpn # jq # neofetch echo "常用工具安装完成。"
-
修改时区与默认语言
sudo update-locale LANG=en_US.UTF-8 sudo timedatectl set-timezone Asia/Shanghai reboot # 重启
三、添加普通用户
-
添加新用户:
adduser {your-username}
-
授予 sudo 权限:
在visudo
User Privilege Specification
下添加一行:{your-username} ALL=(ALL) NOPASSWD: ALL
-
验证是否添加成功:
su - newuser # 切换到新用户 ls /root # 列出 /root 目录下的文件(没有 root 权限是无法查看的) sudo ls /root # 使用 sudo 命令授予普通用户 root 权限(这样就可以查看了,只要没有报错即成功,因为 /root 目录下可能没有东西) exit # 退出
四、防火墙配置 (ufw)
-
检查 ufw 是否安装:
sudo apt install ufw
-
开启端口:
sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443
-
启用防火墙:
sudo ufw enable
-
检查配置:
sudo ufw status
五、配置 SSH 登录及 SSH Server 安全设定
注意: 如果要禁用 root 密码登录并使用普通用户 {your-username}
通过 SSH 登录服务器,则 SSH 登录配置部分必须使用普通用户 {your-username}
进行配置,否则配置文件的权限和所有者将不正确,SSH 将无法正确读取公钥!
-
在 Windows 端生成 SSH 公私钥对:
ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxxx
-
在用户目录下创建
authorized_keys
文件,并将公钥(以 .pub 结尾)的内容粘贴到authorized_keys
文件中:su - {your-username} # 不要在 root 身份下配置 mkdir -p ~/.ssh touch ~/.ssh/authorized_keys # 将公钥(以 .pub 结尾)的内容粘贴到 <code>authorized_keys
文件中 vim ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys~
指的是当前用户的主目录(如果是 root 用户,则在/root/
下;如果是{your-username}
,则在/home/{your-username}/
下)。 如果配置在 root 目录下,则使用 SSH 密钥对登录时需要选择 root 用户登录! -
禁用 root 身份登录:
修改以下配置:sudo vim /etc/ssh/sshd_config
PermitRootLogin no # 开启 SSH 密钥对登录 PubkeyAuthentication yes # 禁止密码登录 PasswordAuthentication no # 修改 SSH 端口号(建议使用 10000 以上的端口) Port {SSH 端口号,最好在 10000 以上}
-
重启 SSH 服务生效:
sudo systemctl restart sshd.service
六、自定义 Shell 界面
安装 oh-my-zsh:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
其他主题、插件等配置参考:https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh
七、Docker 配置
-
安装 Docker 和 docker-compose:
官方地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/
安装好 Docker 后,将当前用户添加到 docker 用户组(如果不想每次都使用 sudo 运行 Docker 命令):# 国内一键安装 sudo curl -sSL https://get.daocloud.io/docker | sh # 国外一键安装 sudo curl -sSL get.docker.com | sh # docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
sudo gpasswd docker -a username
-
Docker 日志管理:
-
全局配置日志大小限制:
创建或修改文件
/etc/docker/daemon.json
,并添加以下配置(3 份日志,每份 10MB):
然后重启 Docker 服务:{ "log-driver": "json-file", "log-opts": { "max-file": "3", "max-size": "10m" } }
注意:已存在的容器不会生效,需要重建容器才能生效!sudo systemctl daemon-reload sudo systemctl restart docker
-
单个容器日志大小限制:
在 docker-compose 文件中添加以下配置:
logging: driver: json-file options: max-size: "100m" max-file: "3"
-
全局配置日志大小限制:
创建或修改文件
八、Swap 配置
sudo swapoff -a # 删除原分区
sudo dd if=/dev/zero of=/root/swapfile bs=1M count=1024 # 配置新分区大小
sudo mkswap /root/swapfile
sudo swapon /root/swapfile
sudo vim /etc/fstab
# 最后设置开机启动:可以编辑 /etc/fstab 文件,把最后一行改成:`/root/swapfile swap swap defaults 0 0`
参考文章:https://skywt.cn/blog/changeswap/
九、Logrotate 日志大小限制
sudo apt install logrotate
sudo apt install cron
配置文件目录:/etc/logrotate.d/
/var/log/syslog
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/cron.log
{
weekly
rotate 3
maxsize 100M
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
查看服务状态:
sudo systemctl status logrotate.service
sudo systemctl status logrotate.timer
十、Fail2ban 封禁 IP
一、正常安装
sudo apt-get install fail2ban
二、Debian 12 安装失败
解决 Ubuntu 20.04 上 Fail2Ban 启动失败问题:指定 systemd 后端
Fail2ban - 1Panel 文档
sudo apt-get install rsyslog
sudo apt install python3-systemd
1panel 配置参考
#DEFAULT-START
[DEFAULT]
bantime = 600
findtime = 300
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
#DEFAULT-END
[sshd]
ignoreip = 127.0.0.1/8
backend=systemd
enabled = true
filter = sshd
port = 22
maxretry = 2
findtime = 300
bantime = 600
action = %(action_mwl)s
banaction = iptables-multiport
logpath = /var/log/secure
十一、面板安装——1panel
#apt install curl
sudo curl -sSL [https://resource.fit2cloud.com/1panel/package/quick_start.sh](https://resource.fit2cloud.com/1panel/package/quick_start.sh) -o quick_start.sh && sudo bash quick_start.sh
#sudo apt autoremove docker-compose
参考文章:https://blog.pppfz.com/posts/5.html
十二、常规安全更新
安装 unattended-upgrades 来自动更新 security upgrade
通过 unattended-upgrades,可以使 Ubuntu 系统自动进行常规的安全相关更新,使系统一直保持 security。
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
参考资料:
- https://leonis.cc/sui-sui-nian/2023-11-11-necessary-config-of-new-server.html#ji-ben-she-zhi
- https://spenserj.com/posts/2013-07-15-securing-a-linux-server/
- https://www.ruanyifeng.com/blog/2014/03/server_setup.html
- https://blog.laoda.de/archives/vps-basic-configuration
- https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh
- https://xtls.github.io/document/level-0/ch04-security.html
十三、其他
- 服务器被撑爆的可能原因:
- 日志文件过大
- 数据库文件过大
- 备份文件过大
- 程序产生大量临时文件
- 恶意攻击导致磁盘空间被占用
- 解决磁盘空间不足问题的方法:
- 清理日志文件
- 清理临时文件
- 压缩备份文件
- 优化数据库
- 扩容磁盘
- 使用云存储
- 分析磁盘空间使用情况,找出占用空间较大的文件或目录
- 定期清理不必要的文件
- 服务器安全加固建议:
- 定期更新系统及软件
- 使用强密码
- 禁用不必要的服务
- 配置防火墙
- 安装入侵检测系统
- 定期备份数据
- 监控服务器状态
- 关注安全漏洞信息
- 使用安全审计工具
- 限制用户权限
- 配置日志审计
- 及时处理安全事件
文章评论