该文章摘自红帽官方产品文档
| 红帽建议为 /boot、/、/home、/tmp 和 /var/tmp/ 目录创建单独的分区。 |
| |
| /boot |
| 这个分区是系统在启动过程中读取的第一个分区。用于将系统引导至 Red Hat Enterprise Linux 8 的引导加载程序和内核镜像保存在这个分区里。此分区不应加密。如果此分区包含在 / 中,并且该分区已加密或者不可用,那么您的系统将无法引导。 |
| |
| /home |
| 当用户数据(/home)存储在 / 而不是独立分区中时,分区可能会填满,从而导致操作系统不稳定。另外,当将您的系统升级到 Red Hat Enterprise Linux 8 的下一个版本时,当您可以将数据保存在 /home 分区中,则在安装过程中不会被覆盖,这样就容易多了。如果 root 分区(/)损坏,则您的数据将永久丢失。通过使用单独的分区,对数据丢失有稍微多一点的保护。您还可以将此分区作为频繁备份的目标。 |
| |
| /tmp 和 /var/tmp/。 |
| /tmp 和 /var/tmp/ 目录都是用来存储不需要长期存储的数据。但是,如果大量数据填充了其中一个目录,则它可能会消耗掉您的所有存储空间。如果发生这种情况,且这些目录存储在 / 中,则您的系统可能会变得不稳定并崩溃。因此,将这些目录移到它们自己的分区中是一个不错的想法。 |
| |
| 注意 |
| 在安装过程中,可选择加密分区,但必须提供密码,该密码充当解锁批量加密密钥的密钥,用于保护分区的数据。 |
| 在安装 Red Hat Enterprise Linux 8 后应该立即执行的与安全相关的流程 |
| 更新您的系统(root用户) |
| # yum update |
| |
| 尽管安装 Red Hat Enterprise Linux 后会自动启用防火墙服务 firewalld,但在某些情况下它可能会被明确禁用,例如在 kickstart 配置中。该情况下建议考虑重新启用防火墙 |
| # systemctl start firewalld && systemctl enable firewalld |
| |
| 要提高安全性,请禁用您不需要的服务。例如禁用 cups 服务 |
| # systemctl disable cups |
| 要查看活动状态的服务 |
| $ systemctl list-units | grep service |
| rpcbind 服务是用于远程过程调用(RPC)服务的动态端口分配守护进程,如网络信息服务(NIS)和网络文件共享(NFS)。由于其身份验证机制较弱,并可为其控制的服务分配大量端口,因此保护 rpcbind 服务非常重要。 |
| |
| 您可通过对服务器添加防火墙规则来保护 rpcbind 服务。 |
| |
| 注: |
| NFSv2 和 NFSv3 服务器需要 rpcbind 服务,在使用 rpcbind 服务时,应确保其安全。 |
| NFSv4 不需要 rpcbind 服务来侦听网络。 |
| |
| firewalld 命令的示例: |
| 限制 TCP 连接,并只接受来自 192.168.0.0/24 主机 111 端口的包: |
| # firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="111" protocol="tcp" source address="192.168.0.0/24" invert="True" drop' |
| |
| 限制 TCP 连接,并只接受来自本地主机 111 端口的包: |
| # firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="111" protocol="tcp" source address="127.0.0.1" accept' |
| |
| 限制 UDP 连接,并只接受来自 192.168.0.0/24 主机 111 端口的包: |
| # firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="111" protocol="udp" source address="192.168.0.0/24" invert="True" drop' |
| |
| # firewall-cmd --reload 重新加载防火墙以接受新规则 |
| |
| 验证防火墙规则: |
| # firewall-cmd --list-rich-rule |
| rule family="ipv4" port port="111" protocol="tcp" source address="192.168.0.0/24" invert="True" drop |
| rule family="ipv4" port port="111" protocol="tcp" source address="127.0.0.1" accept |
| rule family="ipv4" port port="111" protocol="udp" source address="192.168.0.0/24" invert="True" drop |
| rpc.mountd 守护进程实现 NFS 挂载协议的服务器端。NFS 挂载协议用于 NFS 版本 2(RFC 1904)和 NFS 版本 3(RFC 1813)。 |
| 可通过对服务器添加防火墙规则来保护 rpc.mountd 服务。也可限制对所有网络的访问并使用防火墙规则定义特定的异常。 |
| |
| 接受来自 192.168.0.0/24 主机的mountd 连接 |
| # firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" service name="mountd" source address="192.168.0.0/24" invert="True" drop' |
| |
| 接受来自本地主机的 mountd 连接: |
| # firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="127.0.0.1" service name="mountd" accept' |
| |
| # firewall-cmd --reload 重新加载防火墙以接受新规则 |
| |
| 验证防火墙规则: |
| # firewall-cmd --list-rich-rule |
| |
| NFS 允许远程主机通过网络挂载文件系统,并与这些文件系统进行交互,就像它们被挂载到本地一样。这使系统管理员能够将资源整合到网络上的集中式服务器上。您可以在 /etc/nfsmount.conf 文件中自定义 NFS 挂载选项,该文件还用于设置默认选项。 |
| |
| 系统管理员应定期检查 NFS 服务器和 NFS 客户端是否存在任何可能的威胁或攻击,以确保 NFS 的安全。 |
| |
| NFS 服务器确定哪个文件系统要导出到哪个主机。所有这些详细信息都添加到 /etc/exports 文件中。在配置文件中添加目录和主机时应非常谨慎。编辑此文件时请注意,不要添加额外的空格,因为它可能会导致重大的安全隐患。 |
| |
| 以下是几个编写 /etc/exports 文件时的示例: |
| |
| 在以下行中 /tmp/nfs/ 目录提供共享服务给域名 bob.example.com 的主机并具有读写权限。 |
| /tmp/nfs/ bob.example.com(rw) |
| |
| 以下行与上一行相同,但对 bob.example.com 主机共享具有只读权限的相同的目录,由于主机名后面有一个空格字符,因此可以对 世界 共享具有读写权限的目录。 |
| /tmp/nfs/ bob.example.com (rw) ===> 不要有空格,空格会带来很大的安全隐患 |
| |
| 要验证系统中共享的内容,请在bob.example.com主机上执行 showmount -e <对端主机名/IP> 命令 |
| |
| |
| NFS 客户端的挂载选项: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/security_hardening/_mount_options_for_securing_an_nfs_client |
| FTP 文件传输协议通过网络传输文件,是一种不安全的协议,因为与服务器进行的所有事务(包括用户身份验证)均未加密,因此应仔细配置。 |
| |
| Red Hat Enterprise Linux 8 提供两个 FTP 服务器: |
| 1、红帽内容加速器(tux)- 具有 FTP 功能的内核空间 Web 服务器。 |
| 2、非常安全的 FTP 守护进程(vsftpd)- FTP 服务的一种独立的、面向安全的实现。 |
| |
| |
| 以下安全指南是用于设置 vsftpd FTP 服务: |
| # yum -y install vsftpd ftp |
| # systemctl start vsftpd && systemctl enable vsftpd |
| |
| |
| 保护标语 |
| FTP 服务向所有用户显示问候标语。默认情况下,此标语包含版本信息,其有助于攻击者识别系统中的漏洞。默认标语类似如下: |
| $ ftp localhost |
| Trying ::1... |
| Connected to localhost (::1). |
| 220 (vsFTPd 3.0.3) |
| Name (localhost:root): ===> 这里需要输入用户名 |
| |
| |
| # 要更改 vsftpd FTP 服务的问候标语,请在 /etc/vsftpd/vsftpd.conf 文件中修改以下指令: |
| #ftpd_banner=Welcome to blah FTP service. |
| 取消注释 |
| ftpd_banner=Welcome to blah FTP service. |
| |
| |
| # 重启服务 |
| systemctl restart vsftpd |
| |
| $ ftp localhost |
| Trying ::1... |
| Connected to localhost (::1). |
| 220 Welcome to blah FTP service. ===> 这里已经出现定义的问候标语 |
| Name (localhost:root): |
| |
| |
| |
| 要制作多行标语,最好使用标语文件。要简化对多个标语的管理,请将所有标语放在 /etc/banners/ 目录中。 |
| 本例中 FTP 连接的标语文件为 /etc/banners/ftp.msg |
| 注: 将上述ftpd_banner注释掉 |
| |
| # mkdir /etc/banners |
| # vim /etc/banners/ftp.msg |
| 1 |
| 22 |
| 332 |
| 4444 |
| |
| |
| 引用 ftp.msg 问候标语文件,新添加该选项 |
| # vim /etc/vsftpd/vsftpd.conf |
| banner_file=/etc/banners/ftp.msg |
| |
| # 重启服务 |
| systemctl restart vsftpd |
| |
| # 再来测试登陆 |
| ftp localhost |
| Trying ::1... |
| Connected to localhost (::1). |
| 220-1 |
| 220-22 |
| 220-332 |
| 220-4444 |
| 220 |
| Name (localhost:root): |
| |
| |
| |
| # 防止匿名访问和上传 |
| 安装 vsftpd 软件包时,会创建 /var/ftp/ 目录。默认情况下,此软件包为对目录具有只读权限的匿名用户建立目录树。由于匿名用户可以访问数据,因此请注意敏感数据的存储位置。 |
| 要允许匿名用户在 FTP 服务器上上传文件: |
| 1、在 /var/ftp/pub/ 目录中创建一个只有写权限的目录 |
| # mkdir /var/ftp/pub/upload |
| # chmod 730 /var/ftp/pub/upload |
| # ll -d /var/ftp/pub/upload |
| drwx-wx--- 2 root root 6 Feb 5 12:55 /var/ftp/pub/upload |
| |
| |
| # vim /etc/vsftpd/vsftpd.conf |
| anon_upload_enable=YES |
| anonymous_enable=YES |
| |
| 注:启用 SELinux 并强制实现时,您还应检查 SELinux 布尔属性 allow_ftpd_anon_write 和 allow_ftpd_full_access。 |
| |
| # 重启服务 |
| systemctl restart vsftpd |
| |
| |
| 保护用户帐户 |
| FTP 通过不安全的网络传输用户名和密码来进行身份验证,最好拒绝系统用户从其用户帐户访问服务器。 |
| 要在 vsftpd 服务器中禁用所有用户帐户,请将以下指令添加到 /etc/vsftpd/vsftpd.conf 中: |
| local_enable=NO |
| |
| 要禁用特定帐户或特定帐户组(如 root 用户和具有 sudo 特权的组)的 FTP 访问,您可以使用 vsftpd 服务的 /etc/pam.d/vsftpd PAM 配置文件。 |
| 可在 vsftpd 服务中禁用用户帐户。为此,请将用户名添加到 /etc/vsftpd/ftpusers 文件中。 |
| # yum -y install nginx |
| # systemctl start nginx |
| # curl -sI http://localhost | grep Server |
| Server: nginx/1.14.1 |
| |
| 关闭nginx显示版本号 |
| vim /etc/nginx/nginx.conf |
| http { |
| .... |
| .... |
| server_tokens off; ====> 添加该项,为on时则打开 |
| .... |
| .... |
| |
| server { |
| listen 80; |
| .... |
| } |
| } |
| |
| |
| |
| # systemctl restart nginx |
| # curl -sI http://localhost | grep Server |
| Server: nginx |
| |
| |
| |
| |
| 包括其他与安全相关的标头 |
| NGINX 服务的每个请求都可以包括额外的 HTTP 标头来缓解某些已知的 Web 应用程序漏洞: |
| |
| 此选项拒绝域外的任何页面框,以构建由 NGINX 提供的任何内容,从而减少了点击攻击。 |
| 添加_header X-Frame-Options SAMEORIGIN; |
| |
| 这个选项可防止在某些较旧的浏览器中使用 MIME 类型嗅探功能。 |
| add_header X-Content-Type-Options nosniff; |
| |
| 此选项启用跨站点脚本(XSS)过滤,可防止浏览器呈现 NGINX 响应中包含的潜在恶意内容。 |
| add_header X-XS-Protection "1; mode=block"; |
| |
| |
| 限制 HTTP 方法 |
| 您可以限制面向公众的服务,并限制他们从事的工作和接受访客的行为。例如,以下代码片段将限制对除 GET 和 HEAD 以外的所有方法的访问: |
| limit_except GET { |
| allow 192.168.1.0/32; |
| deny all; |
| } |
| |
| |
| |
| 禁用 HTTP 方法 |
| 如果启用,一些 HTTP 方法可能会允许攻击者在 Web 服务器上执行专为开发人员测试 Web 应用的操作。例如,了解 TRACE 方法允许跨站点跟踪(XST)。NGINX 服务器可以通过仅允许特定方法禁止这些错误的 HTTP 方法以及任意方法。例如: |
| |
| # Allow GET, PUT, POST; return "405 Method Not Allowed" for all others. |
| if ( $request_method !~ ^(GET|PUT|POST)$ ) { |
| return 405; |
| } |
| |
| 先决条件 |
| AppStream存储库已启用。 |
| |
| |
| # 安装 |
| 1、安装 openscap-scanner 和 bzip2 软件包 |
| yum -y install openscap-scanner bzip2 |
| |
| |
| 2、下载系统的最新 RHSA OVAL 定义 |
| wget -O - https://www.redhat.com/security/data/oval/v2/RHEL8/rhel-8.oval.xml.bz2 | bzip2 --decompress > rhel-8.oval.xml |
| |
| |
| 3、扫描系统漏洞并将结果保存到 vulnerability.html 文件中: |
| oscap oval eval --report vulnerability.html rhel-8.oval.xml |
| |
| |
| # 使用 Red Hat Subscription Manager (RHSM) 将系统注册到红帽客户门户网站,并自动关联与这个系统相匹配的有效订阅 |
| subscription-manager register --username <登录用户名> --password <登录密码> --auto-attach |
| |
| # 安装elinks |
| yum -y install elinks |
| |
| |
欢迎加入QQ群一起讨论Linux、开源等技术

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」