薄弱环节:
Linux系统的每个分区都是构成支持一组文件和目录所必需的存储区的一部分,一个分区必须挂载在一个目录下才能使用
Linux常见目录:
/ 根目录
/boot 内核及系统引导程序的文件目录
/dev 系统设备文件目录
/etc 系统主要配置文件目录
/usr 系统资源文件目录
/tmp 临时缓存目录
/var 软件缓存数据存放目录
划分不同的分区,数据可以分组并隔离开来,出现意外时只有出问题的分区的数据会被破坏,其他分区的数据可以保留下来
出于对安全的考虑,一般建议 / /boot /usr /var /home /tmp /opt等重要目录和缓存目录单独分区
运行以下命令并验证所设置的目录分区是否挂载
mount | grep <目录名称>
设置分区挂载后被允许的操作,提高操作系统安全性
例如:禁止系统分区挂载特殊设备,禁止在某个分区上执行二进制文件
命令:
nodev:指定文件系统分区,不解析挂载上的块特殊设备
nosuid:指定文件分区不允许suid位
noexec:指定文件分区上不允许二进制文件
一般在 /tmp /var/tmp /dev/shm 以及可移动介质分区上设置nodev,nosuid,noexec选项,在/home目录设置nodev选项
1.先编辑/etc/fstab文件设置nodev,nosuid,noexec挂载选项,nodev,nosuid,noexec选项增加到第四列defaults参数的后面
mount -o remount.<挂在控制选项> <目录名称>
运行下面的命令验证noexec,nosuid,nodev选项是否设置
mount | grep <目录名称>
linux中,/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系统安装所有可用更新:
yum update
运行以下命令验证有没有软件和补丁需要安装:
yum check-update
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
验证结果如下
描述:单用户模式是在类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
核心转储是可执行程序的内存空间,通常用于确定程序中止的原因,还可以用于从核心文件中收集机密信息。系统提供了为核心转储设置软限制的功能,但是用户可以重写这一功能。
原理:设置核心转储的硬限制可防止用户覆盖软变量。如果需要核心转储,请考虑为用户组设置限制。
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
描述:
ASLR是一种利用缓解技术随机排列进程数据区域的地址空间的手段,增大入侵者预测目的地址难度从而降低进程被成功入侵的风险。
原理:
随机放置虚拟内存区域使得内存放置将一直在变化,内存页面漏洞难以编写。
1.在/etc/sysctl.conf文件中设置以下参数:
kernel.randomize_va_space=2
2.运行以下命令以设置活动内核参数:
sysctl -w kernel.randomize_va_space=2
运行以下命令并验证输出匹配
sysctl kernel.randomize_va_space
验证输出如下
虽然应用更新和补丁有助于纠正已知的漏洞,但是保护系统不受尚未报告的漏洞影响的最佳方法之一是正确安全地配置系统服务,这才可以防止以后发现的漏洞因为服务的安全配置而不能利用他
SSH是对常见登录服务(如telnet、ftp、 rlogin、 rsh和rcp)的安全加密替代服务。强烈建议站点放弃旧的明文登录协议,使用SSH防止会话劫持和从网络嗅探敏感数据
SSH配置文件为/etc/ssh/sshd_ config文件,一旦对SSH配置文件进行了更改,就必须运行以下命令重新加载sshd配置令SSH服务配置生效:
systemctl reload sshd
描述:SSH支持两种不同且不兼容的协议:SSH V1和SSH V2。SSH V1是最初的协议,存在安全问题,SSH V2是改进后更安全的协议
原理:SSH V1包含一些基本的漏洞,这些漏洞使会话易受中间人攻击。SSHV2暂时未有安全影响
编辑/etc/ssh/sshd_config文件来设置如下所示参数:
Protocol 2
运行以下命令验证输出是否匹配:
grep "^Protocol" /etc/ssh/sshd_config
验证输出结果如下:
描述: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
验证输出结果如下:
描述::MaxAuthTries参数指定每个连接允许的最大身份验证尝试次数。当登录失败数量达到一半时,错误消息将被详细写入说明登录失败的syslog文件中。
原理:MaxAuthTries控制SSH最大认证尝试次数,将MaxAuthTries参 数设置为一个较低的值,可以将成功的暴力攻击SSH服务器的风险降到最低。
编辑/etc/ssh/sshd_config文件设置SSH MaxAuthTries参数为3到6之间:
MaxAuthTries 4
运行以下命令验证输出是否匹配:
grep "^MaxAuthTries" /etc/ssh/sshd_config
验证输出结果如下:
描述:PermitRootLogin参数指定root用户是否可以使用ssh登录系统
原理:不允许通过root帐户直接SSH登录,需要系统管理员使用自己的个人帐户进行身份验证,然后通过sudo或su升级到root权限。这反过来增加了不可抵赖性的可能性,并在发生安全事件时提供了清晰的审计跟踪
编辑/etc/ssh/sshd_config文件来设置如下所示参数:
PermitRootLogin no
运行以下命令验证输出是否匹配:
grep "^PermitRootLogin" /etc/ssh/sshd_config
验证输出如下: