[自学课程]Centos7安全加固

一、概述

        1.什么是系统安全加固

  • 安全加固就是对信息系统中的主机系统的脆弱性进行分析与修补,构建动态、完整的安全体系,增强系统的安全性
  •  安全加固同时包含了对主机系统的身份鉴别认证访问控制以及审计跟踪策略的增强

        2.为什么进行安全加固

  • 默认的操作系统安全配置通常不满足系统安全性的要求

        薄弱环节:

  •                 安装和运行了冗余的服务{如打印机)
  •                 弱密码及匿名访问
  •                 开放了不必要的对外通讯端口
  •                 易受攻击的TCP/IP参数配置等

        3.安全加固的影响

  • 操作系统加固后会调整部分操作系统参数、用户权限等设置,以提升操作系统的防御能力
  • 解决目标系统在安全评估中发现的技术性安全问题
  • 对系统进行优化配置,杜绝系统配置不当出现的弱点,提高操作系统的防御能力

        4.安全加固的注意事项

  • 加固内容不能影响目标系统所承载的业务运行
  • 加固不能影响与目标系统相连的其他系统的运行
  • 确保系统原配置已备份或记录的前提下对系统进行加固操作
  • 监视系统加固过程,确保系统正常工作

二、基础安全加固建议

        1.文件系统安全

        A.设置系统磁盘分区

                Linux系统的每个分区都是构成支持一组文件和目录所必需的存储区的一部分,一个分区必须挂载在一个目录下才能使用

                Linux常见目录:

                        /                        根目录

                        /boot                 内核及系统引导程序的文件目录

                        /dev                  系统设备文件目录

                        /etc                   系统主要配置文件目录

                        /usr                   系统资源文件目录

                        /tmp                  临时缓存目录

                        /var                   软件缓存数据存放目录

                划分不同的分区,数据可以分组并隔离开来,出现意外时只有出问题的分区的数据会被破坏,其他分区的数据可以保留下来

                出于对安全的考虑,一般建议  /     /boot     /usr    /var    /home    /tmp    /opt等重要目录和缓存目录单独分区

                加固方法
  •                         新安装的系统:安装期间创建一个自定义分区设置,并为系统重要目录和缓存目录分离并指定一个单独的分区
  •                         以前安装的系统:可以创建一个新的分区进行分配,并根据需要 配置存放文件系统挂载信息的 /etc/fstab 文件,来让系统启动时可以自动挂载新的分区目录
                检查方法

                运行以下命令并验证所设置的目录分区是否挂载

mount | grep <目录名称>

[自学课程]Centos7安全加固_第1张图片

        B.设置挂载分区的控制选项

                设置分区挂载后被允许的操作,提高操作系统安全性

                例如:禁止系统分区挂载特殊设备,禁止在某个分区上执行二进制文件

                命令:

                        nodev:指定文件系统分区,不解析挂载上的块特殊设备

                        nosuid:指定文件分区不允许suid位

                        noexec:指定文件分区上不允许二进制文件

                一般在  /tmp   /var/tmp   /dev/shm    以及可移动介质分区上设置nodev,nosuid,noexec选项,在/home目录设置nodev选项

        加固方法

        1.先编辑/etc/fstab文件设置nodev,nosuid,noexec挂载选项,nodev,nosuid,noexec选项增加到第四列defaults参数的后面

[自学课程]Centos7安全加固_第2张图片        2.再运行以下命令重新挂载目录即可让挂载控制选项生效:

mount -o remount.<挂在控制选项> <目录名称>

        检测方法

        运行下面的命令验证noexec,nosuid,nodev选项是否设置

 mount | grep <目录名称> 

[自学课程]Centos7安全加固_第3张图片

        C.设置配置用户权限文件的权限

                linux中,/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow是用户和用户组的基础配置文件,通过配置文件可以对系统用户和组进项相关信息查询和控制管理

                为减少对这些配置文件的修改利用达到攻击控制系统用户和组的目的,有必要对用户权限配置文件进行权限限制

  • /etc/passwd 记录操作系统用户信息
  • /etc/shadow 用户影子口令文件;记录所有用户的密码信息
  • /etc/group 记录用户组的信息
  • /etc/gshadow 记录用户组密码
        加固方法

        配置只有root账户是配置文件的所有者:

chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow

        配置/etc/group,/etc/passwd只有管理员具有读写权限,/etc/shadow,/etc/gshadow只有管理员具有读权限:

chmod 0644 /etc/group /etc/passwd

chmod 0400 /etc/shadow /etc/gshadow

        检查方法

ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow

        命令确保用户权限配置文件的权限配置正确

[自学课程]Centos7安全加固_第4张图片

        2.更新和启动设置

        A.系统更新配置

                由于安全漏洞或其他功能,系统会定期为包含的软件发布补丁,最好一直保证系统包含了最新版本的补丁、安全修复和可用内核

                原理:较新的修补程序包含通过最新的完整更新而增强安全功能。因此,建议使用最新的软件补丁来实现最新安全功能。与任何软件安装一样,对于给定的更新需要确定是否满足其要求,并根据所选的更新修订验证任何其他软件的兼容性和可支持性

        加固方法

        使用包管理器更新系统软件包,但是我们需要根据站点策略更新系统。

        centos7系统安装所有可用更新:

yum update

        检测方法

        运行以下命令验证有没有软件和补丁需要安装:

yum check-update

        B.设置bootloader配置的权限

                grub是Centos7的引导加载程序,grub配置文件包含关于启动设置和解锁启动选项的密码的信息。Centos7的grub配置文件为/boot/grub2/grub.conf,并链接到/etc/grub2.conf

                原理:对引导加载程序bootloader设置root权限才能进行读写和执行能防止未经授权的用户输入引导参数或更改引导分区。读取引导参数的非root用户可能在系统引导时识别安全性方面的弱点并能够利用他们。

        加固方法

        设置/boot/grub2/grub.cfg文件的所有者和组为root用户

chown root:root /boot/grub2/grub.cfg

        设置/boot/grub2/grub.cfg文件只有root用户可读写

chmod og-rwx /boot/grub2/grub.cfg

        检测方法

        运行以下命令验证/boot/grub2/grub.cfg的Uid和Gid均为0/root,Access权限不授予组或其他用户

stat /boot/grub2/grub.cfg

验证结果如下

[自学课程]Centos7安全加固_第5张图片

        C.确保单用户模式需要身份验证

        描述:单用户模式是在类Unix系统上工作时的一种拥有超级用户权限的模式。当系统在引导期间检测到问题或通过从引导加载程序手动选择时,会使用单用户模式进行恢复

        原理:单用户模式下的root用户对系统有完全的操作权限、可用修复系统的同时,也能随时的对系统进行破坏。在单用户模式下要求身份验证可防止未经授权的用户通过单用户模式重启系统,以获得没有凭据的root权限

        加固方法

        编辑/usr/lib/systemd/system/rescue.service和/usr/lib/systemd/system/emergency.service文件并设置ExecStart为/usr/sbin/sulogin:

        检测方法

        运行以下命令并验证single是否设置为"/sbin/sulogin" 

grep /sbin/sulogin /usr/lib/systemd/system/rescue.service

grep /sbin/sulogin /usr/lib/systemd/system/emergency.service

        3.加固核心参数

        A.限制核心转储

        核心转储是可执行程序的内存空间,通常用于确定程序中止的原因,还可以用于从核心文件中收集机密信息。系统提供了为核心转储设置软限制的功能,但是用户可以重写这一功能。
        原理:设置核心转储的硬限制可防止用户覆盖软变量。如果需要核心转储,请考虑为用户组设置限制。

        加固方法

        1.将以下参数行添加到/etc/security/limits.conf和/etc/security/limits.d/*文件中

* hard core 0

        2.在/etc/sysctl.conf文件中设置以下参数

fs.suid_dumpable=0

        3.运行以下命令以设置活动内核参数

sysctl -w fs.suid_dumpable=0

        检测方法

        运行以下三条命令并验证输出匹配

grep "hard core" /etc/security/limits.conf /etc/security/limits.d/*

sysctl fs.suid_dumpable

grep "fs\.suid_dumpable" /etc/sysctl.conf

[自学课程]Centos7安全加固_第6张图片

        B.启用地址空间布局随机化(ASLR)

        描述:
        ASLR是一种利用缓解技术随机排列进程数据区域的地址空间的手段,增大入侵者预测目的地址难度从而降低进程被成功入侵的风险。
        原理:
        随机放置虚拟内存区域使得内存放置将一直在变化,内存页面漏洞难以编写。

        加固方法

        1.在/etc/sysctl.conf文件中设置以下参数:

kernel.randomize_va_space=2

        2.运行以下命令以设置活动内核参数:

sysctl -w kernel.randomize_va_space=2

        检测方法

        运行以下命令并验证输出匹配

sysctl kernel.randomize_va_space

        验证输出如下

三、服务安全加固

        虽然应用更新和补丁有助于纠正已知的漏洞,但是保护系统不受尚未报告的漏洞影响的最佳方法之一是正确安全地配置系统服务,这才可以防止以后发现的漏洞因为服务的安全配置而不能利用他

1.SSH服务安全配置

        SSH是对常见登录服务(如telnet、ftp、 rlogin、 rsh和rcp)的安全加密替代服务。强烈建议站点放弃旧的明文登录协议,使用SSH防止会话劫持和从网络嗅探敏感数据
        SSH配置文件为/etc/ssh/sshd_ config文件,一旦对SSH配置文件进行了更改,就必须运行以下命令重新加载sshd配置令SSH服务配置生效:

systemctl reload sshd

        A.使用SSH V2协议

        描述:SSH支持两种不同且不兼容的协议:SSH V1和SSH V2。SSH V1是最初的协议,存在安全问题,SSH V2是改进后更安全的协议
        原理:SSH V1包含一些基本的漏洞,这些漏洞使会话易受中间人攻击。SSHV2暂时未有安全影响

        加固方法

        编辑/etc/ssh/sshd_config文件来设置如下所示参数:

Protocol 2

        检测方法

        运行以下命令验证输出是否匹配:

grep "^Protocol" /etc/ssh/sshd_config

        验证输出结果如下:

        B. 设置禁用SSH X11转发

        描述:SSH X11 Forwarding参数提供了通过连接隧道X11传输流量的功能,以启用远程图形连接。SSH X11 Forwarding提供通过SSH链接并运行Linux.上有GUI需要的程序的服务
        原理:使用SSH X11 Forwarding远程登录X11服务器的用户的可能会受到X11服务器上其他用户的攻击,这是一个小风险。除非有直接使用X11应用程序的操作需求,否则建议禁用X11 Forwarding。

        加固方法

        编辑/etc/ssh/sshd_config文件来设置如下参数

X11Forwarding no

        检测方法

        运行以下命令验证输出是否匹配

grep "^X11Forwarding" /etc/ssh/sshd_config

        验证输出结果如下:

         C.设置SSH最大认证尝试次数

        描述::MaxAuthTries参数指定每个连接允许的最大身份验证尝试次数。当登录失败数量达到一半时,错误消息将被详细写入说明登录失败的syslog文件中。
        原理:MaxAuthTries控制SSH最大认证尝试次数,将MaxAuthTries参 数设置为一个较低的值,可以将成功的暴力攻击SSH服务器的风险降到最低。

        加固方法

        编辑/etc/ssh/sshd_config文件设置SSH MaxAuthTries参数为3到6之间:

MaxAuthTries 4

        测试方法

        运行以下命令验证输出是否匹配:

grep "^MaxAuthTries" /etc/ssh/sshd_config

        验证输出结果如下:

         D.禁止root账户直接SSH登录系统

        描述:PermitRootLogin参数指定root用户是否可以使用ssh登录系统
        原理:不允许通过root帐户直接SSH登录,需要系统管理员使用自己的个人帐户进行身份验证,然后通过sudo或su升级到root权限。这反过来增加了不可抵赖性的可能性,并在发生安全事件时提供了清晰的审计跟踪

        加固方法

        编辑/etc/ssh/sshd_config文件来设置如下所示参数:

PermitRootLogin no

        检测方法

        运行以下命令验证输出是否匹配:

grep "^PermitRootLogin" /etc/ssh/sshd_config

        验证输出如下:

 

你可能感兴趣的:(linux,centos,网络安全)