欢迎光临
我们一直在努力

Linux系统安全学习

系统安全核心目标

Linux系统安全的核心是保障系统“机密性、完整性、可用性”

常见安全风险分类

  • 账号安全风险:弱密码、默认账号未删除、权限分配过高、账号被盗用
  • 网络安全风险:端口暴露、恶意端口扫描、DDoS攻击、未授权远程访问
  • 文件系统风险:敏感文件权限过高、系统文件被篡改、恶意软件植入
  • 系统配置风险:不必要的服务开启、防火墙未配置、内核漏洞未修复
  • 应用安全风险:部署的应用(如Web服务)存在漏洞,被利用入侵系统

安全防护核心原则

  • 最小权限原则:仅授予必要权限,避免过度授权(如普通用户不赋予root权限)

  • 纵深防御原则:多层面防护(账号、网络、文件、应用),单一防护失效后仍有其他屏障

  • 定期更新原则:及时更新系统内核、软件包,修复已知漏洞

  • 日志审计原则:开启系统日志,定期审计,及时发现异常操作和入侵痕迹

  • 账号与权限安全

    账号安全配置

    禁用/删除无用账号

    Linux系统默认存在一些无用账号(如bin、daemon、lp等),这些账号若被利用可能带来安全风险,需禁用或删除(核心账号不可删除,避免系统崩溃

    # 查看系统所有账号(包括系统账号和普通账号)
    cat /etc/passwd

    # 查看可登录账号(排除nologin的系统账号)
    cat /etc/passwd | grep -v nologin

    # 禁用账号(不删除,仅禁止登录,推荐)
    usermod -L 用户名 # 锁定账号,解锁用 usermod -U 用户名

    # 删除无用账号(确认无依赖后操作)
    userdel 用户名 # 仅删除账号,保留家目录
    userdel -r 用户名 # 删除账号及家目录(彻底删除)

    2.1.2 密码安全配置

    弱密码是账号被盗的主要原因,需强制设置复杂密码,并定期更换,同时限制密码尝试次数

    # 1. 设置密码复杂度(编辑/etc/login.defs文件)
    vim /etc/login.defs
    # 修改以下参数:
    PASS_MAX_DAYS 90 # 密码最长有效期(90天,定期更换)
    PASS_MIN_DAYS 7 # 密码最短修改间隔(7天,避免频繁修改)
    PASS_MIN_LEN 12 # 密码最小长度(12位)
    PASS_WARN_AGE 7 # 密码过期前7天提醒

    # 2. 强制密码复杂度(安装pam_cracklib模块,CentOS默认安装)
    vim /etc/pam.d/system-auth
    # 添加以下行(在password sufficient pam_unix.so之后)
    password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
    # 说明:ucredit=-1(至少1个大写字母)、lcredit=-1(至少1个小写字母)、dcredit=-1(至少1个数字)、ocredit=-1(至少1个特殊字符)、retry=3(最多尝试3次)

    # 3. 限制SSH密码尝试次数(防止暴力破解)
    vim /etc/ssh/sshd_config
    # 修改参数:
    MaxAuthTries 3 # 最多尝试3次,超过则断开连接
    MaxSessions 5 # 最大并发会话数,减少恶意连接

    禁用root远程登录

    root是Linux最高权限账号,若允许远程登录,一旦密码泄露,将导致系统完全被控制。建议禁用root远程登录,通过普通用户+sudo授权的方式管理系统

    # 1. 先创建一个普通用户(用于远程登录和管理)
    useradd admin # 创建admin用户
    passwd admin # 为admin设置复杂密码

    # 2. 给普通用户授予sudo权限(编辑/etc/sudoers文件)
    vim /etc/sudoers
    # 添加以下行(在root ALL=(ALL) ALL下方)
    admin ALL=(ALL) ALL # admin用户可执行所有root命令(需输入自身密码)
    # 可选:免密sudo(谨慎使用,适合信任环境)
    # admin ALL=(ALL) NOPASSWD: ALL

    # 3. 禁用root远程登录(编辑SSH配置文件)
    vim /etc/ssh/sshd_config
    # 修改参数:
    PermitRootLogin no # 禁用root远程登录
    # 重启SSH服务生效
    systemctl restart sshd

    权限管理

    Linux文件/目录权限分为读(r=4)、写(w=2)、执行(x=1),对应所有者(owner)、所属组(group)、其他用户(other)三类对象,权限配置需遵循“最小权限”

    # 查看文件/目录权限
    ls -l 文件名/目录名 # 输出格式:权限 所有者 所属组 大小 时间 名称

    # 修改文件/目录所有者和所属组
    chown 所有者:所属组 文件名/目录名 # 例:chown admin:admin /home/admin
    chgrp 所属组 文件名/目录名 # 仅修改所属组

    # 修改权限(数字法,推荐)
    chmod 755 文件名 # 所有者rwx(7),所属组r-x(5),其他r-x(5)(适合可执行文件)
    chmod 644 文件名 # 所有者rw-(6),所属组r–(4),其他r–(4)(适合普通文件)
    chmod 700 目录名 # 仅所有者可读写执行(适合敏感目录,如/home/admin)

    # 关键权限配置(必做)
    # 1. /etc/passwd(用户信息文件):权限644,禁止写入
    chmod 644 /etc/passwd
    # 2. /etc/shadow(密码加密文件):权限400,仅root可读
    chmod 400 /etc/shadow
    # 3. /etc/sudoers(sudo配置文件):权限440,避免被篡改
    chmod 440 /etc/sudoers

    网络安全防护

    防火墙配置(CentOS 8为例)

    Linux防火墙(firewalld)是网络安全的第一道屏障,需关闭不必要的端口,仅开放服务所需端口(如Nginx的80、443端口)

    # 1. 查看防火墙状态
    systemctl status firewalld # 运行中为active(running)
    # 启动/停止/重启防火墙
    systemctl start firewalld
    systemctl stop firewalld
    systemctl restart firewalld
    # 设置开机自启(推荐)
    systemctl enable firewalld

    # 2. 查看已开放端口
    firewall-cmd –list-ports
    # 查看已开放服务
    firewall-cmd –list-services

    # 3. 开放必要端口(永久开放,需重新加载生效)
    # 开放Nginx所需80(HTTP)、443(HTTPS)端口
    firewall-cmd –add-port=80/tcp –permanent
    firewall-cmd –add-port=443/tcp –permanent
    # 开放SSH所需22端口(远程登录必备)
    firewall-cmd –add-port=22/tcp –permanent

    # 4. 关闭不必要的端口
    firewall-cmd –remove-port=端口号/tcp –permanent

    # 5. 重新加载防火墙,使配置生效
    firewall-cmd –reload

    端口安全管理

    除了防火墙限制端口,还需定期检查系统开放的端口,排查异常端口(可能是恶意程序开启)

    # 查看所有监听端口(包括TCP和UDP)
    netstat -tulnp # -t(TCP)、-u(UDP)、-l(监听)、-n(数字显示)、-p(显示进程)
    # 或使用ss命令(更高效)
    ss -tulnp

    # 排查异常端口:
    # 1. 查看端口对应的进程,确认是否为正常服务
    netstat -tulnp | grep 异常端口号
    # 2. 若为未知进程,查看进程详情
    ps -ef | grep 进程ID
    # 3. 确认是恶意进程后,终止进程并删除对应的程序
    kill -9 进程ID # 强制终止进程

    禁止不必要的网络服务

    Linux系统默认开启一些不必要的服务(如telnet、ftp、rpcbind等),这些服务可能存在漏洞,且占用系统资源,需禁用

    # 1. 查看系统正在运行的服务
    systemctl list-unit-files –type=service | grep enabled # 查看开机自启的服务
    systemctl status 服务名 # 查看单个服务状态

    # 2. 禁用不必要的服务(以telnet为例)
    systemctl stop telnet # 停止当前服务
    systemctl disable telnet # 禁止开机自启

    # 常见需禁用的服务:
    # telnet(远程登录,不安全,推荐用SSH)
    # ftp(文件传输,不安全,推荐用sftp)
    # rpcbind(远程过程调用,非必要不开启)
    # cups(打印服务,服务器无需开启)

    文件系统与系统配置安全

    敏感文件保护

    Linux系统中部分文件存储着敏感信息(如密码、配置),需加强保护,防止被篡改或读取

    • /etc/shadow:存储用户密码加密信息,权限设为400,仅root可读
    • /etc/passwd:存储用户基本信息,权限设为644,禁止普通用户写入
    • /etc/ssh/sshd_config:SSH配置文件,权限设为600,仅root可读写
    • /var/log/:系统日志目录,权限设为700,仅root可访问,防止日志被篡改

    # 锁定敏感文件,防止被篡改(锁定后无法修改,解锁用chattr -i)
    chattr +i /etc/shadow
    chattr +i /etc/passwd
    chattr +i /etc/ssh/sshd_config

    # 查看文件是否被锁定
    lsattr /etc/shadow # 显示有i标识,说明已锁定

    系统更新与漏洞修复

    Linux系统和软件包会不断发现漏洞,及时更新是修复漏洞的关键,需定期执行更新命令

    # CentOS/RHEL系统(yum包管理器)
    yum update -y # 更新所有软件包(包括内核)
    yum upgrade -y # 升级系统版本(与update类似,更彻底)

    # Ubuntu/Debian系统(apt包管理器)
    apt update # 更新软件包列表
    apt upgrade -y # 更新所有软件包

    # 查看已安装的内核版本
    uname -r

    # 安装安全补丁(仅更新安全相关补丁,不更新其他软件)
    yum install -y yum-security # 安装安全更新工具
    yum update-minimal –security -y # 仅安装安全补丁

    禁用不必要的内核功能

    部分内核功能可能被恶意利用 需禁用

    # 1. 禁用SUID/SGID权限(避免恶意程序通过SUID获取高权限)
    # 查找系统中所有带SUID/SGID权限的文件
    find / -type f \\( -perm -4000 -o -perm -2000 \\) -print0 | xargs -0 ls -l
    # 对不必要的文件,取消SUID/SGID权限(如find命令)
    chmod u-s /usr/bin/find
    chmod g-s /usr/bin/find

    # 2. 禁止ICMP ping响应(防止被扫描)
    echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
    sysctl -p # 生效配置

    # 3. 禁用IP转发(防止系统被用作路由器,被恶意利用)
    echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf
    sysctl -p

    日志审计与应急处理

    系统日志配置与查看

    Linux系统日志记录了所有用户操作、系统事件和异常情况,是排查安全问题的重要依据,需开启并定期审计

    常见日志文件位置

    • /var/log/secure:记录用户登录、sudo操作、SSH登录等安全相关日志(最常用)
    • /var/log/messages:记录系统整体运行日志,包括服务启动、系统错误等
    • /var/log/nginx/access.log:Nginx访问日志(若部署了Nginx)
    • /var/log/nginx/error.log:Nginx错误日志(若部署了Nginx)

    日志查看常用命

    # 查看最近100行安全日志(排查登录异常)
    tail -100 /var/log/secure
    # 实时监控安全日志(实时查看新的登录和操作)
    tail -f /var/log/secure

    # 查找失败的登录记录(排查暴力破解)
    grep "Failed password" /var/log/secure
    # 查找成功的登录记录(查看正常登录情况)
    grep "Accepted password" /var/log/secure

    # 统计登录失败次数最多的IP(可能是恶意IP)
    grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr

    5.2 应急处理流程

    当发现系统存在安全异常(如账号被盗、恶意程序、数据被篡改)需按以下流程处理 减少损失

  • 隔离系统:立即断开服务器网络 防止恶意程序扩散 数据被窃取

  • 排查异常:查看系统日志 进程 端口 定位异常原因

  • 清除威胁:终止恶意进程 删除恶意程序 修改被盗账号密码 禁用异常账号

  • 修复漏洞:更新系统和软件包 修复配置漏洞

  • 恢复服务:确认威胁清除后 重新连接网络 恢复服务 检查数据完整性

  • 审计复盘:记录应急处理过程 分析安全漏洞原因 优化防护措施 避免再次发生

  • 六、常见安全工具推荐

    • chkrootkit:检测系统是否被植入rootkit(恶意后门程序)命令:chkrootkit
    • rkhunter:与chkrootkit功能类似 更全面的rootkit检测工具 命令:rkhunter -c
    • fail2ban:防止SSH暴力破解 自动封禁多次登录失败的IP 需手动安装配置
    • iptables:传统防火墙工具(CentOS 7及以下常用)功能强大 可自定义复杂规则
    • auditd:系统审计工具 可详细记录文件访问 用户操作 便于后续审计和排查

    # 安装常用安全工具(CentOS)
    yum install -y chkrootkit rkhunter fail2ban auditd
    # 启动auditd审计服务
    systemctl start auditd
    systemctl enable auditd

    赞(0)
    未经允许不得转载:171主机测评 » Linux系统安全学习
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址