我的运维笔记

第 1 讲 服务器安全加固

学习要点

对云服务器做安全加固,使用SSH密钥登录,关闭密码登录;配置两层防火墙;部署fail2ban抵御暴力破解。 记住三条运维习惯:私钥永不外传;修改配置要留后路;先验证,再收口。 VNC是紧急救命通道,不受SSH配置与安全组限制。

常用命令

#生成密钥对
ssh-keygen -t ed25519 -C "study服务器"

#服务器密钥目录
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

#teacher巡检账号免密sudo
echo "teacher ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/teacher
sudo chmod 440 /etc/sudoers.d/teacher
sudo visudo -c

#sshd配置检查重载
sudo sshd -t
sudo systemctl reload sshd

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

#安装fail2ban
sudo dnf install -y epel-release
sudo dnf install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

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

#查看监听端口
sudo ss -tlnp

sshd_config关键配置

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

学习要点

DNS把域名翻译成IP;阿里云安全组+firewalld两层放行80端口;安装Nginx,使用conf.d下放独立站点配置文件。 Nginx依靠请求头Host区分不同域名;网页目录权限755,网页文件权限644;403大多是权限不足,优先查看错误日志。 网站首页底部必须放置ICP备案号。

常用命令

#解析测试
nslookup 你的域名
nslookup www.你的域名

#安装启动nginx
sudo dnf install -y nginx
sudo systemctl enable --now nginx
systemctl status nginx
nginx -v

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

#编辑站点配置
sudo vi /etc/nginx/conf.d/mysite.conf

#检查重载nginx
sudo nginx -t
sudo systemctl reload nginx

#防火墙放行http(80)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

#实时看访问日志 Ctrl+C退出
sudo tail -f /var/log/nginx/mysite_access.log

#curl模拟访问
curl -H "Host:你的域名" http://127.0.0.1
curl http://127.0.0.1 | head -5

Nginx配置重点

第 3 讲 HTTPS安全锁与证书自动续期

学习要点

HTTP明文传输会被窃听;HTTPS=HTTP+TLS加密,加密传输内容同时验证服务器身份。 Let’s Encrypt证书有效期90天,必须配置自动续期,不能关闭80端口(用于跳转和证书验证)。 使用certbot申请证书;80端口负责验证与跳转,443端口处理加密网页访问;续期成功执行钩子脚本重载Nginx。

常用命令

#防火墙放行https(443)
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

#安装certbot
sudo dnf install -y certbot
certbot --version

#演练申请证书
sudo certbot certonly --webroot -w /var/www/mysite \
-d example.com -d www.example.com \
-m 邮箱 --agree-tos --no-eff-email --dry-run

#正式申请去掉--dry-run
sudo certbot certonly --webroot -w /var/www/mysite \
-d example.com -d www.example.com \
-m 邮箱 --agree-tos --no-eff-email

#查看证书
sudo certbot certificates
sudo ls -l /etc/letsencrypt/live/example.com/

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

#钩子脚本 reload‑nginx.sh
#!/bin/bash
systemctl reload nginx

#给钩子执行权限并测试
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
sudo /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

#模拟续期
sudo certbot renew --dry-run

#抓包80明文
sudo tcpdump -i any -A -nn 'tcp port 80'
#抓包443加密
sudo tcpdump -i any -A -nn -c 40 'tcp port 443'

Nginx HTTPS关键点