【Linux安全基线】- CentOS 7/8安全配置指南

devtools/2024/10/18 5:44:24/

在企业业务的生产环境中,Linux服务器的安全性至关重要,尤其是对于具有超级用户权限的root账号。滥用或被入侵后,可能会造成数据泄露、系统损坏等严重安全问题。为了减少这种风险,本文将详细介绍如何通过一系列安全措施来增强CentOS 7/8服务器的安全性,降低系统被攻击的风险。

1. 创建普通用户并禁用Root用户直接登录

场景说明: 在Linux系统中,root用户拥有最高权限,允许其对系统进行任何操作。然而,root账户的滥用或者由于弱密码被破解,可能会导致系统被完全控制。因此建议创建普通用户并为其赋予管理权限,而非直接使用root账户。

操作步骤:

  • 创建新用户:adduser ecs-user

  • 设置用户密码:passwd ecs-user

  • 确认账户可正常登录:通过新的ecs-user账户登录系统,确保一切正常。

  • 为新用户添加免密sudo权限:

    vim /etc/sudoers
    

    ,在

    root ALL=(ALL) ALL
    

    下添加:

    ecs-user ALL=(ALL) NOPASSWD:ALL
    
  • 禁止root登录:编辑SSH配置文件/etc/ssh/sshd_config,找到PermitRootLogin项,将其设置为PermitRootLogin no,如果不存在此项,手动添加。

解释: 通过禁用root直接登录,可以避免因root账户被入侵导致的系统完全失控。此外,普通用户通过sudo提权执行管理操作,增加了一层安全保护。

2. 设置SSH空闲超时退出

场景说明: 在业务运维过程中,如果管理人员通过SSH远程登录服务器并长时间未操作,保持会话活跃可能会导致未授权人员接管该会话。设置超时退出机制可以有效降低这种风险。

操作步骤:

  • 编辑SSH配置文件

    /etc/ssh/sshd_config
    

    ,设置:

    ClientAliveInterval 600
    ClientAliveCountMax 2
    

解释: 这意味着系统会在10分钟(600秒)内没有收到客户端响应时发起两次探测(ClientAliveCountMax),如果依然没有回应,会自动断开连接,避免空闲会话带来的风险。

3. 设置密码修改最小间隔时间

场景说明: 如果允许用户频繁更改密码,可能会导致弱密码的重用,或形成恶意行为,例如通过多次快速更改绕过系统的密码策略。因此需要设置密码修改的最小间隔时间。

操作步骤:

  • 编辑文件

    /etc/login.defs
    

    ,设置:

    PASS_MIN_DAYS 7
    
  • 为root用户设置相同策略:

    chage --mindays 7 root
    

解释: 该设置确保用户在7天内无法更改密码,从而防止通过频繁更改密码试图绕过系统安全策略。

4. 设置密码失效时间

场景说明: 密码长期不修改会增加密码被暴力破解或泄露的风险。设置密码失效时间可以强制用户定期更换密码,提升系统安全性。

操作步骤:

  • 编辑文件

    /etc/login.defs
    

    ,设置:

    PASS_MAX_DAYS 90
    
  • 为root用户设置相同策略:

    chage --maxdays 90 root
    

解释: 密码失效时间为90天,超过这个时间段,用户必须更改密码才能继续使用系统。这一措施可以减少密码泄露或被猜测的风险。

5. 限制密码重用

场景说明: 限制用户重复使用以前的密码可以降低由于暴力破解导致的安全威胁。强制用户使用全新的密码有助于提升整体系统安全性。

操作步骤:

  • 编辑文件

    /etc/pam.d/password-auth
    

    /etc/pam.d/system-auth
    

    ,在

    password sufficient pam_unix.so
    

    后面添加:

    remember=5
    

解释: 该配置强制用户至少使用5次不同的密码后才能重新使用某个旧密码,防止密码重复使用造成的安全隐患。

6. 密码复杂度检查

场景说明: 密码复杂度的提高能够有效防止弱密码的使用,从而增强系统的安全性。通过强制要求密码使用多种字符类型,系统可以有效抵御暴力破解等攻击。

操作步骤:

  • 编辑文件

    /etc/security/pwquality.conf
    

    ,设置:

    minlen=10
    minclass=3
    

解释: minlen=10要求密码长度至少为10个字符,minclass=3表示密码中至少要包含三种不同类型的字符(如大写、小写、数字、特殊符号等),从而增强密码强度。

7. 禁止SSH空密码用户登录

场景说明: 允许用户使用空密码登录SSH会大大降低系统的安全性,容易被恶意攻击者利用。因此需要禁止使用空密码登录。

操作步骤:

  • 编辑

    /etc/ssh/sshd_config
    

    ,设置:

    PermitEmptyPasswords no
    

解释: 禁用空密码用户登录SSH,确保所有用户账户都有设置密码,以此提高系统的安全性。

8. SSH登录最大尝试次数

场景说明: 攻击者通过暴力破解尝试多次错误登录有可能最终获得系统访问权限。限制最大登录尝试次数可以有效防止此类攻击。

操作步骤:

  • 编辑文件

    /etc/ssh/sshd_config
    

    ,设置:

    MaxAuthTries 4
    

解释: 该设置表示用户在SSH登录时最多可尝试4次密码输入错误,超过4次系统将自动断开连接,防止暴力破解。

9. 确保rsyslog服务已启用

场景说明: rsyslog服务用于收集并记录系统日志,帮助运维人员进行审计和故障排查。确保该服务的正常运行对于安全审计至关重要。

操作步骤:

  • 启动并启用

    rsyslog
    

    服务:

    systemctl enable rsyslog
    systemctl start rsyslog
    

解释: 确保日志记录服务启动,防止系统事件未被记录,影响问题排查和安全审计。

10. 配置文件权限设置

场景说明: 配置文件如果被非授权用户访问或修改,可能会导致系统被攻破或配置信息泄露。确保关键配置文件仅可被root用户访问可以提升系统安全性。

操作步骤:

  • 设置权限:

    chown root:root /etc/hosts.allow
    chown root:root /etc/hosts.deny
    chmod 644 /etc/hosts.allow
    chmod 644 /etc/hosts.deny
    

解释: chown确保这些配置文件的拥有者是root用户,chmod 644确保只有root用户拥有写权限,其他用户只能读取,防止配置文件被篡改。

11. 设置用户权限文件的权限

场景说明: 系统中的passwdshadowgroup等文件存储了用户的敏感信息(如密码等)。设置适当的文件权限可以防止非授权用户访问这些信息。

操作步骤:

  • 执行以下命令:

    chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
    chmod 0644 /etc/passwd /etc/group
    chmod 0400 /etc/shadow /etc/gshadow
    

解释: 这些命令确保只有root用户可以修改这些文件,并且限制其他用户的访问权限。

12. 确保root是唯一UID为0的账户

场景说明: UID为0的用户拥有系统的最高权限,通常只有root账户拥有此权限。确保没有其他用户拥有UID=0可以避免权限被滥用。

操作步骤:

  • 检查系统中是否存在UID为0的用户:

    cat /etc/passwd | awk -F: '($3 == 0) { print $1 }' | grep -v '^root$'
    

解释: 如果出现非root的UID为0用户,建议立即删除或更改其UID,防止权限滥用。

13. 密码到期警告天数

场景说明: 提前通知用户密码即将过期,提醒用户及时更改密码可以减少因密码过期导致的账户无法访问问题。

操作步骤:

  • 编辑

    /etc/login.defs
    

    文件,设置:

    PASS_WARN_AGE 7
    
  • 为root用户设置相同策略:

    chage --warndays 7 root
    

解释: 密码到期前7天会提前发出警告,用户可以及时更改密码,确保账户的可用性和安全性。

14. SSH日志级别设置为INFO

场景说明: LogLevel设置为INFO可以记录更多有用的信息,便于管理员在出现问题时快速排查问题。

操作步骤:

  • 编辑

    /etc/ssh/sshd_config
    

    ,设置:

    LogLevel INFO
    

解释: 日志级别设置为INFO可以记录登录、认证失败等关键信息,提升安全审计能力。

15. 开启地址空间布局随机化(ASLR)

场景说明: 地址空间布局随机化(ASLR)通过随机化进程的内存地址布局来增加攻击者利用漏洞攻击的难度,从而提高系统的安全性。

操作步骤:

  • 编辑

    /etc/sysctl.conf
    

    /etc/sysctl.d/
    

    文件,添加以下内容:

    kernel.randomize_va_space = 2
    
  • 立即生效:

    sysctl -w kernel.randomize_va_space=2
    

http://www.ppmy.cn/devtools/126659.html

相关文章

双指针 — 复写零

目录 1. 题目解析 2. 算法讲解 1.算法原理 2.“异地”操作 3.“就地”操作 误解 正解 从后往前完成复写操作 找到最后一个复写的数 处理边界情况 3. 编写代码 正解顺序 1.找到最后一个复写的数 2.处理边界情况 3.从后往前完成复写操作 性能分析: …

腾讯云轻量服务器Lighthouse的前世今生

目录 序一、名字的由来二、Lighthouse的定位是什么,与CVM的差异化有哪些三、Lighthouse是如何实现简单易用的四、Lighthouse对于开发者有哪些具体的利好 序 印象中,腾讯云轻量应用服务器Lighthouse是在2020年正式上线的。 在其一经推出后,就…

Java利用itextpdf实现pdf文件生成

前言 最近公司让写一个数据页面生成pdf的功能,找了一些市面代码感觉都太麻烦,就自己综合性整合了一个便捷的工具类,开发只需简单组装数据直接调用即可快速生成pdf文件。望大家一起学习!!! 代码获取方式&am…

如何打开荣耀手机的调试模式?

问题描述: 最近用荣耀手机进行测试,打开开发者选项,打开USB调试,在选择USB配置时,发现仅有选择USB以太网才可以连接Android Studio,也就是打开ADB调试模式。 但是,打开USB以太网后&#xff0c…

群晖前面加了雷池社区版,安装失败,然后无法识别出用户真实访问IP

有nas的相信对公网都不模式,在现在基础上传带宽能有100兆的时代,有公网代表着家里有一个小服务器,像百度网盘,优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip,要么自己买个云服务器做内网穿…

dbt doc 生成文档命令示例应用

DBT提供了强大的命令行工具,它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个关键特性是能够为数据模型生成文档,这就是dbt docs命令发挥作用的地方。本教程将指导您完成使用dbt生成和提供项目文档的过程。 dbt doc 命令 dbt docs命令有…

基于SSM的个性化商铺系统【附源码】

基于SSM的个性化商铺系统 效果如下: 用户登录界面 app首页界面 商品信息界面 店铺信息界面 用户功能界面 我的订单界面 后台登录界面 管理员功能界面 用户管理界面 商家管理界面 店铺信息管理界面 商家功能界面 个人中心界面 研究背景 研究背景 科学技术日新月异…

国外电商系统开发-运维系统应用和软件部署

首先,本功能不仅仅是应用部署,更可以软件安装、应用部署,它就相当于是某软件的YML功能一般,可以自行定义要操作的步骤。所以,不管您是Tocmat应用代码更新上线,还是Apache软件安装,等等功能操作&…