本章目标:对阿里云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登录服务器修复配置。
本章目标:配置DNS域名解析,安装Nginx,部署个人静态主页,实现域名访问网站。
@代表主域名,www代表www子域名。Host字段区分不同网站,对应配置里的server_name。# 安装并启动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写错,没有包含完整域名。
本章目标:使用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输出的真实路径。
本章目标:同一台服务器单个公网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。