关于红帽

目录

该文章摘自红帽官方产品文档

安全加固

磁盘分区

红帽建议为 /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

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

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

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

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 文件中。

安全 NGINX 服务器

# 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


扫描远端系统漏洞


待续!!!
2022年2月5日  14:42


上一篇:独立安装 lamp 兄弟连


下一篇:在Ubuntu下搭建nextcloud