✏️
Linux
  • 前言介绍
    • Linux命令大全
  • RHEL 8
  • 第一部分 基本系统配置
  • 第一章 入门
    • 1.1 系统安装
    • 1.2 cockpit
    • 1.3 基本环境配置
    • 1.4 配置和检查网络接入
    • 1.5 设置运行级别
    • 1.6 注册系统和管理订阅的基础
    • 1.7 安装软件
    • 1.8 使系统服务在启动时运行
    • 1.9 通过防火墙,SELINUX和SSH日志记录增强系统安全性
    • 1.10 管理用户帐户的基础
    • 1.11 使用KDUMP机制将崩溃的内核转储
    • 1.12 使用REAR执行系统营救和创建系统备份
    • 1.13 使用日志文件解决问题
    • 1.14 访问红帽支持
  • 第二章 系统位置和键盘配置
  • 第三章 配置日期和时间
  • 第四章 管理用户和组
  • 第五章 访问控制列表
  • 第六章 获得特权
  • 第七章 磁盘分区管理
  • 第二部分 订阅和支持
  • 第七章 注册系统和管理订阅
  • 第八章 使用红帽支持工具访问支持
  • 第三部分 安装和管理软件
  • 第九章 YUM
  • 第四部分 基础设施服务
  • 第十章 使用SYSTEMD管理服务
  • 第十一章 配置系统的可访问性
  • 第十二章 OPENSSH
  • 第十三章 TIGERVNC
  • 第五部分 服务器
    • 第十四章 Web服务器
    • 第十五章 邮件服务器
    • 第十六章 文件和打印服务器
      • 16.1 SAMBA
        • 16.1.1 将Samba设置为域成员
      • 16.2 Rsync
        • 16.2.1 Rsync 异机备份
        • 16.2.1 Rsync本机备份
      • 16.4 FTP
      • 16.5 打印设置
    • 第十七章 数据库服务器
    • 第十八章 使用CHRONY SUITE配置NTP
    • 第十九章 使用NTPD配置NTP
    • 第二十章 使用PTP4L配置PTP
  • 第六部分 监控和自动化
    • 第二十一章 系统监视工具
    • 第二十二章 OPENLMI
    • 第二十三章 查看和管理日志文件
    • 第二十四章 自动系统任务
    • 第二十五章 自动错误报告工具(ABRT)
  • 第七部分 使用BOOTLOADER进行内核自定义
    • 第二十六章 使用GRUB 2
  • 第八部分 系统备份和恢复
    • 第二十七章 RELAX-AND-RECOVER (REAR)
  • LinuxProbe RHEL8(更新版)
    • 第1章 部署虚拟环境安装 Linux 系统
      • 1.1 准备您的工具
      • 1.2 安装配置VM虚拟机
      • 1.3 安装您的Linux系统
      • 1.4 重置root管理员密码
      • 1.5 RPM(红帽软件包管理器)
      • 1.6 Yum软件仓库
      • 1.7 systemd初始化进程
      • 1.8 系统运行级别
      • 复习题
  • 第2章 新手必须掌握的 Linux 命令
    • 2.1 强大好用的Shell
    • 2.2 执行查看帮助命令
    • 2.3 常用系统工作命令
    • 2.4 系统状态检测命令
    • 2.5 工作目录切换命令
    • 2.6 文本文件编辑命令
    • 2.7 文件目录管理命令
    • 2.8 打包压缩与搜索命令
    • 复习题
  • 第3章 管道符、重定向与环境变量
    • 3.1 输入输出重定向
    • 3.2 管道命令符
    • 3.3 命令行的通配符
    • 3.4 常用的转义字符
    • 3.5 重要的环境变量
    • 复习题
  • 第4章 Vim 编辑器与 Shell 命令脚本
    • 4.1 Vim文本编辑器
      • 4.1.1 编写简单文档
      • 4.1.2 配置主机名称
      • 4.1.3 配置网卡信息
      • 4.1.4 配置软件仓库
    • 4.2 编写Shell脚本
      • 4.2.1 编写简单的脚本
      • 4.2.2 接收用户的参数
      • 4.2.3 判断用户的参数
    • 4.3 流程控制语句
      • 4.3.1 if条件测试语句
      • 4.3.2 for条件循环语句
      • 4.3.3 while条件循环语句
      • 4.3.4 case条件测试语句
    • 4.4 计划任务服务程序
    • 复习题
  • 第5章 用户身份与文件权限
    • 5.1 用户身份与能力
    • 5.2 文件权限与归属
    • 5.3 文件的特殊权限
    • 5.4 文件的隐藏属性
    • 5.5 文件访问控制列表
    • 5.6 su命令与sudo服务
    • 复习题
  • 第6章 存储结构与磁盘划分
    • 6.1 一切从“/”开始
    • 6.2 物理设备的命名规则
    • 6.3 文件系统与数据资料
    • 6.4 挂载硬件设备
    • 6.5 添加硬盘设备
    • 6.6 添加交换分区
    • 6.7 磁盘容量配额
    • 6.8 虚拟数据优化
    • 6.9 软硬方式链接
    • 复习题
  • 第7章 使用 RAID 与 LVM 磁盘阵列技术
    • 7.1 RAID(独立冗余磁盘阵列)
    • 7.2 LVM(逻辑卷管理器)
    • 复习题
  • 第8章 iptables 与 firewalld 防火墙
    • 8.1 防火墙管理工具
    • 8.2 iptables
    • 8.3 firewalld
    • 8.4 服务的访问控制列表
    • 复习题
  • 第9章 使用 ssh 服务管理远程主机
    • 9.1 配置网络服务
    • 9.2 远程控制服务
    • 9.3 不间断会话服务
    • 复习题
  • 第10章 使用 Apache服务部署静态网站
    • 10.1 网站服务程序
    • 10.2 配置服务文件参数
    • 10.3 SELinux安全子系统
    • 10.4 个人用户主页功能
    • 10.5 虚拟主机功能
    • 10.6 Apache的访问控制
    • 复习题
  • 第11章 使用 vsftpd 服务传输文件
    • 11.1 文件传输协议
    • 11.2 vsftpd服务程序
    • 11.3 简单文件传输协议
    • 复习题
  • 第12章 使用 Samba或 NFS 实现文件共享
    • 12.1 Samba文件共享服务
    • 12.2 NFS(网络文件系统)
    • 12.3 autofs自动挂载服务
    • 复习题
  • 第13章 使用 BIND 提供域名解析服务
    • 13.1 DNS域名解析服务
    • 13.2 安装bind服务程序
    • 13.3 部署从服务器
    • 13.4 安全的加密传输
    • 13.5 部署缓存服务器
    • 13.6 分离解析技术
    • 复习题
  • 第14章 使用 DHCP 动态管理主机地址
    • 14.1 动态主机配置协议
    • 14.2 部署dhcpd服务程序
    • 14.3 自动管理IP 地址
    • 14.4 分配固定IP 地址
    • 复习题
  • 第15章 使用 Postifx 与 Dovecot 部署邮件系统
    • 15.1 电子邮件系统
    • 15.2 部署基础的电子邮件系统
    • 15.3 设置用户别名信箱
    • 复习题
  • 第16章 使用 Ansible服务实现自动化运维
    • 16.1 Ansible 介绍与安装
    • 16.2 设置主机清单
    • 16.3 运行临时命令
    • 16.4 剧本文件实战
    • 16.5 创建及使用角色
    • 16.6 创建和使用逻辑卷
    • 16.7 判断主机组名
    • 16.8 管理文件属性
    • 16.9 管理密码库文件
    • 复习题
  • 第17章 使用 iSCSI 服务部署网络存储
    • 17.1 iSCSI技术概述
    • 17.2 创建RAID磁盘阵列
    • 17.3 配置iSCSI服务端
    • 17.4 配置Linux客户端
    • 17.5 配置Windows客户端
    • 复习题
  • 第18章 使用 MariaDB 数据库管理系统
    • 18.1 数据库管理系统
    • 18.2 初始化MariaDB服务
    • 18.3 管理账户以及授权
    • 18.4 创建数据库与表单
    • 18.5 管理表单及数据
    • 18.6 数据库的备份及恢复
    • 复习题
  • 第19章 使用 PXE+Kickstart 无人值守安装服务
    • 19.1 无人值守安装系统
    • 19.2 部署相关服务程序
    • 19.3 自动部署客户端主机
    • 复习题
  • 第20章 使用 LNMP 架构部署动态网站环境
    • 20.1 源码包程序
    • 20.2 LNMP 动态网站架构
    • 20.3 搭建Discuz!论坛
    • 20.4 选购服务器主机
    • 复习题
  • RHCE 认证考试
    • 考试须知
    • 实验环境准备
    • RHCE 9
    • RHCE 8
    • 题库笔记 临时杂记待删
  • Linux 常用知识点总结
    • 一、生僻英文单词
    • 二、VIM & SHELL
    • 三、知识总结(重点)
    • 四、杂记知识点
    • 五、问答总结回顾(考试指南)
    • 六、淘汰命令和替代应用
  • 七、LinuxProbe学习进度
  • 实战案例
    • 1. SAMBA
      • 1.1 将SMABA设置为独立服务器
      • 1.2 将SAMBA设置为域成员服务器
    • 2. RHEL8 + Nginx + Node.js + PM2部署SYSIDC
  • 3. 搭建HTTPS 文件服务器
  • 4. 秘钥连接服务器
由 GitBook 提供支持
在本页
  • 1. 安装nginx
  • 2. 配置 Let's Encrypt SSL 证书
  • 3.配置 Nginx 作为文件服务器
  • 4. 配置防火墙
  • 5. 配置 SELinux
  • 6. 安全加固(可选项,配置复杂未配置成功)
  • 7. 配置自动更新证书
  • 8. 总结

这有帮助吗?

3. 搭建HTTPS 文件服务器

AI协助(ChatGpt)提问:

基于 RHEL 9.5 + Nginx + Let's Encrypt 的 HTTPS 文件服务器配置,文件路径为 /home/fs/sysidc/files,并通过端口 8888 提供文件下载服务,并且实现 安全加固

1. 安装nginx

  1. 更新系统并安装 Nginx:

dnf update -y
dnf install -y nginx
  1. 启动 Nginx 并设置为开机启动:

systemctl enable --now nginx
  1. 检查 Nginx 状态,确认是否正常运行:

systemctl status nginx

2. 配置 Let's Encrypt SSL 证书

  1. 安装 Certbot

dnf install -y certbot python3-certbot-nginx
  1. 申请证书

  • 使用 DNS 验证方式申请证书,按照提示在 DNS 配置中添加 TXT 记录:

certbot certonly --manual --preferred-challenges dns -d fs.sysidc.com
  • 生成证书后,证书和私钥将存储在以下路径:

证书:/etc/letsencrypt/live/fs.sysidc.com/fullchain.pem

私钥:/etc/letsencrypt/live/fs.sysidc.com/privkey.pem

3.配置 Nginx 作为文件服务器

  1. 创建存放文件的目录

mkdir -p /home/fs/sysidc/files
chmod -R 755 /home/fs/sysidc/files
chown -R nginx:nginx /home/fs/sysidc/files
  1. 配置 Nginx

编辑 /etc/nginx/conf.d/fs_sysidc.conf 文件,确保(开启目录浏览)配置正确:

server {
    listen 8888 ssl;
    server_name fs.sysidc.com;

    ssl_certificate /etc/letsencrypt/live/fs.sysidc.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/fs.sysidc.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /home/fs/sysidc/files;
    index index.html;
    
    autoindex on;
    autoindex_exact_size off;
    autoindex_format html;
    autoindex_localtime on;

    location / {
        allow all;
        limit_except GET {
            deny all;
        }
        try_files $uri $uri/ =404;
    }

    # 禁止执行脚本,防止安全风险
    location ~* \.(php|pl|py|cgi|sh)$ {
        return 403;
    }

    # 限制 .htaccess, .git, .svn, .DS_Store 文件访问
    location ~ /\. {
        deny all;
    }

    error_log /var/log/nginx/fs_sysidc_error.log;
    access_log /var/log/nginx/fs_sysidc_access.log;
}

安全起见,禁止目录浏览如下:(可选)

server {
    listen 8888 ssl http2;
    server_name fs.sysidc.com;

    ssl_certificate /etc/letsencrypt/live/fs.sysidc.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/fs.sysidc.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /home/fs/sysidc/files;
    index index.html index.htm;

    location / {
        autoindex off;
        try_files $uri $uri/ =404;
    }

    # 禁止执行脚本,防止安全风险
    location ~* \.(php|pl|py|cgi|sh)$ {
        return 403;
    }

    # 限制 .htaccess, .git, .svn, .DS_Store 文件访问
    location ~ /\. {
        deny all;
    }

    error_log /var/log/nginx/fs_sysidc_error.log;
    access_log /var/log/nginx/fs_sysidc_access.log;
}
  1. 检查 Nginx 配置并重启

  • 检查 Nginx 配置是否正确:

nginx -t
  • 重启 Nginx 使配置生效:

systemctl restart nginx

4. 配置防火墙

启用并配置 firewalld

  1. 启动 firewalld 并使其开机启动:

systemctl enable --now firewalld
  1. 开放 8888 端口并重新加载防火墙配置:

firewall-cmd --add-port=8888/tcp --permanent
firewall-cmd --reload
  1. 禁止 ICMP 请求(即禁止 ping):

firewall-cmd --add-icmp-block=echo-request --permanent
firewall-cmd --reload
  1. 检查防火墙状态和开放的端口:

firewall-cmd --list-all
  1. 开放 Ping(如需)

firewall-cmd --remove-icmp-block=echo-request --permanent
firewall-cmd --reload

5. 配置 SELinux

  1. 确保 SELinux 处于 enforcing 模式,检查 SELinux 状态:

sestatus

若输出是 SELinux status: disabled,则需要编辑 /etc/selinux/config 文件,修改为:

SELINUX=enforcing

然后重启服务器:

reboot
  1. 允许 Nginx 访问文件目录

semanage fcontext -a -t httpd_sys_content_t "/home/fs/sysidc/files(/.*)?"
restorecon -Rv /home/fs/sysidc/files/
  1. 允许 Nginx 监听 8888 端口

semanage port -a -t http_port_t -p tcp 8888
systemctl restart nginx

6. 安全加固(可选项,配置复杂未配置成功)

安装并配置 fail2ban 防止暴力破解

  1. 安装 fail2ban:

dnf install -y fail2ban
  1. 启动并设置为开机启动:

systemctl enable --now fail2ban
  1. 配置 Nginx 相关的 fail2ban 规则:

tee /etc/fail2ban/jail.d/nginx.conf <<EOF
[nginx] enabled = true filter = nginx logpath = /var/log/nginx/access.log maxretry = 5 bantime = 600 EOF
  1. 重启 fail2ban:

systemctl restart fail2ban
  1. 使用 nmap 检测端口,确认服务器只开放了 8888 端口:

nmap -p 1-65535 113.108.111.218
  1. 使用 curl 测试 HTTPS 访问

curl -kI https://fs.sysidc.com:8888

返回示例:

HTTP/1.1 200 OK
Server: nginx
...

7. 配置自动更新证书

  1. 创建自动续期脚本编辑 /root/renew_cert.sh:

#!/bin/bash

DOMAIN="fs.sysidc.com"
LOG_FILE="/var/log/letsencrypt/renew.log"

echo "$(date) - 开始 SSL 证书续期" >> "$LOG_FILE"

# 交互式方式,手动更新 DNS 记录
certbot certonly --manual --preferred-challenges dns -d "$DOMAIN" --force-renewal

# 检查 certbot 执行状态
if [ $? -eq 0 ]; then
    echo "$(date) - SSL 证书续期成功,检查 Nginx 配置..." >> "$LOG_FILE"

    # 检查 Nginx 配置是否正确
    nginx -t
    if [ $? -eq 0 ]; then
        echo "$(date) - Nginx 配置正确,重启 Nginx" >> "$LOG_FILE"
        systemctl restart nginx
    else
        echo "$(date) - Nginx 配置错误,请手动检查!" >> "$LOG_FILE"
    fi
else
    echo "$(date) - SSL 证书续期失败,请检查 TXT 记录并手动更新" >> "$LOG_FILE"
fi

或

#!/bin/bash
certbot certonly --manual --preferred-challenges dns -d fs.sysidc.com --force-renewal
systemctl restart nginx
  1. 赋予脚本执行权限

chmod +x /root/renew_cert.sh
  1. 设置定时任务

crontab -e

添加:

0 2 1 * * /root/renew_cert.sh >> /var/log/letsencrypt/renew.log 2>&1

8. 总结

  1. Nginx 文件服务器 在 8888 端口运行,文件存放路径为 /home/fs/sysidc/files/。

  2. HTTPS 证书 使用 Let's Encrypt 提供,需手动续签。

  3. 防火墙 只开放 8888 端口,禁止 Ping。

  4. SELinux 配置允许 Nginx 访问文件目录并监听 8888 端口。

  5. fail2ban 防止暴力破解,nmap 检查端口确保服务器安全。


这个配置将使 HTTPS 文件服务器 安全且高效地运行!

上一页2. RHEL8 + Nginx + Node.js + PM2部署SYSIDC下一页4. 秘钥连接服务器

最后更新于2个月前

这有帮助吗?