我的运维笔记

第1讲 服务器安全加固

本章目标:对阿里云Rocky9服务器做安全加固,配置SSH密钥登录、防火墙、fail2ban防爆破,保护服务器不被暴力破解。

核心知识点

关键命令

# 查看SSH登录失败日志
sudo journalctl -u sshd | grep -i "failed" | tail -30

# 安装EPEL源、fail2ban
sudo dnf install -y epel-release
sudo dnf install -y fail2ban

# 启动fail2ban开机自启
sudo systemctl enable --now fail2ban

# 查看fail2ban封禁状态
sudo fail2ban-client status sshd

# 防火墙永久放行ssh服务
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

# 测试ssh配置语法
sudo sshd -t
sudo systemctl reload sshd

遇到的问题与解决

SSH密钥登录失败:绝大多数是~/.ssh目录权限不是700、authorized_keys文件权限不是600;SSH权限过松会直接拒绝密钥登录。

改sshd配置出错导致SSH连不上:使用阿里云VNC登录服务器修复配置。

第2讲 网站上线:域名解析与Nginx个人主页

本章目标:配置DNS域名解析,安装Nginx,部署个人静态主页,实现域名访问网站。

核心知识点

关键命令

# 安装并启动Nginx
sudo dnf install -y nginx
sudo systemctl enable --now nginx

# 创建网站目录,修改归属与权限
sudo mkdir -p /var/www/mysite
sudo chown -R study:study /var/www/mysite
sudo chmod 755 /var/www/mysite

# 修改Nginx配置后先检查语法再重载
sudo nginx -t
sudo systemctl reload nginx

# 放行80端口http服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

# 实时查看网站访问日志
sudo tail -f /var/log/nginx/mysite_access.log

# windows电脑测试解析
nslookup cccnnn.xyz
nslookup www.cccnnn.xyz

遇到的问题与解决

403 Forbidden禁止访问:网页/目录权限不足,查看nginx错误日志确认Permission denied;目录设置755,html文件设置644。

域名访问看到Nginx默认页:server_name写错,没有包含完整域名。

第3讲 HTTPS给网站加上安全锁

本章目标:使用Let’s Encrypt免费证书,把网站升级HTTPS,配置证书自动续期。

核心知识点

关键命令

# 安装certbot证书工具
sudo dnf install -y certbot

# 演练申请证书(--dry-run测试环境,不真正发证)
sudo certbot certonly --webroot -w /var/www/mysite \
-d cccnnn.xyz -d www.cccnnn.xyz \
-m m19564888814@163.com --agree-tos --no-eff-email --dry-run

# 正式申请证书(去掉--dry-run)
sudo certbot certonly --webroot -w /var/www/mysite \
-d cccnnn.xyz -d www.cccnnn.xyz \
-m m19564888814@163.com --agree-tos --no-eff-email

# 查看本机所有证书
sudo certbot certificates

# 启用证书续期定时器
sudo systemctl enable --now certbot-renew.timer
systemctl list-timers 'certbot*'

# 模拟全部证书续期演练
sudo certbot renew --dry-run

# 开放443端口https服务
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

遇到的问题与解决

certbot申请报错NXDOMAIN:域名没有正确做A记录解析。

unauthorized 404:webroot目录和Nginx网站root路径不一致,验证文件无法被外网访问。

nginx -t cannot load certificate:证书路径写错,核对certbot certificates输出的真实路径。

第4讲 一台服务器部署多个站点(虚拟主机)

本章目标:同一台服务器单个公网IP部署第二个网站notes.cccnnn.xyz子站点,独立证书、独立日志。

核心知识点

关键命令

# 创建子站点目录
sudo mkdir -p /var/www/notes
sudo chown -R study:study /var/www/notes
sudo chmod 755 /var/www/notes
ls -ld /var/www/notes

# 查看全部生效nginx配置,列出所有listen、server_name
sudo nginx -T 2>/dev/null | grep -n -E "^\s*(listen|server_name)"

# openssl查看域名返回哪一张证书
openssl s_client -connect 127.0.0.1:443 -servername notes.cccnnn.xyz /dev/null | openssl x509 -noout -ext subjectAltName

# 分别监控两个网站日志
sudo tail -f /var/log/nginx/mysite_access.log
sudo tail -f /var/log/nginx/notes_access.log

遇到的问题与解决

访问notes子域名出现证书警告,显示主站证书:notes的443的server块没有配置或者没有reload nginx,443端口使用了默认站点(mysite)返回证书。

403访问禁止:检查/var/www/notes目录权限755,index.html权限644。