linux系统安全及应用

一、账号安全控制:筑牢系统第一道防线

用户账号是访问 Linux 系统的身份凭证,账号的安全配置直接决定了系统的基础安全等级。Linux 的账号安全控制主要围绕账号清理密码安全操作痕迹管控权限提权展开,从源头减少账号层面的安全风险。

1.1 系统账号清理,剔除冗余与风险

Linux 系统安装后会自带大量非登录账号(如 bin、daemon、adm 等),这类账号仅用于维护系统服务,默认登录 Shell 为/sbin/nologin,需确保其配置不被篡改。可通过以下命令查看非登录账号:

bash

复制代码
grep "/sbin/nologin$" /etc/passwd

对于服务器中长期闲置的用户账号 ,不建议直接删除(防止数据关联问题),可先通过usermodpasswd命令锁定:

bash

复制代码
usermod -L zhangsan  # 锁定账号
passwd -S zhangsan   # 查看账号锁定状态
usermod -U zhangsan  # 解锁账号

若服务器账号已固定,无需新增或修改,可通过chattr命令锁定账号配置文件/etc/passwd/etc/shadow,防止恶意篡改:

bash

复制代码
chattr +i /etc/passwd /etc/shadow  # 锁定文件
lsattr /etc/passwd /etc/shadow     # 查看锁定状态
chattr -i /etc/passwd /etc/shadow  # 解锁文件

1.2 密码安全控制,防止弱口令与暴力破解

简单密码或长期不变的密码是暴力破解的主要目标,管理员可从密码有效期强制修改密码两方面配置密码安全策略,兼顾安全性和易用性。

  1. 配置全局密码有效期 :修改/etc/login.defs文件,设置PASS_MAX_DAYS参数,适用于新建用户 ,例如下列配置表示密码有效期 30 天:

    bash

    复制代码
    vi /etc/login.defs
    PASS_MAX_DAYS 30  # 新增/修改该参数
    PASS_MIN_LEN 8    # 密码最小长度(仅对新建用户生效)
  2. 修改已有用户密码有效期 :使用chage命令,适用于已存在的用户,比如设置用户lisi的密码 30 天后过期、7 天前提醒:

    bash

    复制代码
    chage -M 30 -W 7 lisi
    chage -l lisi  # 查看用户密码策略详情
  3. 强制用户首次登录改密码 :创建新用户后,可设置其密码立即过期,强制用户在第一次登录时修改:

    bash

    复制代码
    passwd -e wangwu
  4. PAM 模块强化密码复杂度 :通过 PAM 的pam_pwquality.so模块,可强制密码包含大小写字母、数字和特殊字符,避免简单密码。编辑/etc/pam.d/password-auth/etc/pam.d/system-auth,添加如下配置:

    bash

    复制代码
    password requisite pam_pwquality.so retry=3 minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1

    含义:密码最小长度 10 位,至少包含 1 个小写字母、1 个大写字母、1 个数字、1 个特殊字符,最多重试 3 次。

1.3 权限提权安全:sudo 的精细化管控

直接使用root账号登录操作风险极高,一旦误操作或账号泄露,会直接危及整个系统。sudo命令允许普通用户以其他用户(通常是root)的身份执行指定命令,是 Linux 权限管控的核心工具。

  • 核心作用 :既避免了直接登录root的风险,又能灵活分配权限,让普通用户仅能执行必要的管理操作。

  • 配置文件 :通过/etc/sudoers文件(推荐用visudo命令编辑,避免语法错误)实现精细化控制:

    bash

    复制代码
    visudo

    示例配置:允许用户zhangsan仅能执行/usr/bin/systemctl restart nginx/usr/bin/df命令,且无需输入密码:

    bash

    复制代码
    zhangsan ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart nginx, /usr/bin/df
  • 安全实践

    • 遵循最小权限原则,只给用户分配完成工作必需的命令权限。
    • 避免使用ALL=(ALL) ALL这类过度授权的配置。
    • 可配置Defaults logfile开启sudo操作日志,方便审计追溯。

1.4 用户切换与环境隔离:susu -的区别

在运维场景中,经常需要临时切换到其他用户执行操作,susu -是最常用的切换命令,但两者效果差异很大:

  • su [用户名] :仅切换用户身份,不会加载目标用户的完整环境变量 ,当前目录、PATH 等保持不变,适合临时执行单条命令。

    bash

    复制代码
    su root  # 切换到root,但仍在原用户目录
  • su - [用户名] :完整模拟目标用户的登录过程,加载其家目录、Shell 配置文件(如.bashrc.bash_profile ,环境变量完全重置,等同于重新登录该用户。

    bash

    复制代码
    su - root  # 切换到root并进入root家目录,加载完整环境
  • 安全提示 :生产环境中建议优先使用sudo而非su,因为sudo可以记录每一次提权操作,而su仅记录切换行为,无法追溯具体执行了哪些命令。


二、PAM 安全认证:灵活的用户认证机制

PAM(Pluggable Authentication Modules,可插拔认证模块)是 Linux 系统中一套通用的认证框架,它将认证逻辑与具体应用解耦,让管理员可以为不同服务(如 SSH、登录、sudo)配置不同的认证方式,极大提升了系统认证的灵活性和安全性。

2.1 PAM 的核心作用

  • 统一认证入口 :无论是本地登录、SSH 远程登录,还是sudo提权、FTP 访问,都可以通过 PAM 配置统一的认证规则。
  • 灵活扩展认证方式:支持密码认证、密钥认证、双因素认证(如 Google Authenticator)、LDAP 认证等多种方式,无需修改应用程序代码。
  • 强化安全策略:除了密码复杂度控制,还能实现登录失败次数限制、时间限制、IP 限制等,有效防范暴力破解。

2.2 典型 PAM 配置示例

以限制 SSH 登录失败次数为例,编辑/etc/pam.d/sshd,添加pam_tally2.so模块:

bash

复制代码
auth required pam_tally2.so deny=5 unlock_time=1800
account required pam_tally2.so

含义:连续失败 5 次后锁定账号,1800 秒(30 分钟)后自动解锁,防止暴力破解 SSH 服务。


三、端口扫描与安全检测:主动发现系统风险

在完成账号和认证层面的安全配置后,还需要主动扫描系统开放的端口和服务,及时发现未授权访问、弱服务等安全隐患。NMAP是 Linux 下最强大的端口扫描工具,其中 半开扫描(SYN 扫描)是最常用的隐蔽扫描方式。

3.1 NMAP 半开扫描(SYN 扫描)原理

半开扫描也被称为隐形扫描,它不会建立完整的 TCP 连接,因此扫描行为更隐蔽,不易被目标主机的防火墙或日志系统发现。

  • 工作流程
    1. 扫描端向目标端口发送SYN 包(请求建立连接)。
    2. 若端口开放:目标主机回复SYN+ACK 包 (同意建立连接),扫描端立即发送RST 包(中断连接),不完成三次握手。
    3. 若端口关闭:目标主机回复RST 包(拒绝连接)。
  • 核心优势:速度快、隐蔽性强,不会在目标主机留下完整的连接日志,适合渗透测试和安全巡检。

3.2 半开扫描实操命令

执行半开扫描需要 root 权限,命令格式如下:

bash

复制代码
nmap -sS 192.168.1.100  # -sS 表示启用SYN半开扫描

扫描结果会清晰展示目标主机开放的端口、对应的服务(如 22 端口对应 SSH、80 端口对应 HTTP),方便管理员排查未授权开放的端口。

3.3 其他实用扫描选项

  • -p:指定扫描的端口范围,如-p 1-1000扫描 1-1000 端口。

  • -O:启用操作系统探测,识别目标主机的系统版本。

  • -sV:探测开放端口对应的服务版本。

  • -oN:将扫描结果保存到文件,方便后续分析:

    bash

    复制代码
    nmap -sS -p 1-1000 -oN scan_result.txt 192.168.1.100

四、总结

Linux 系统安全是一个持续优化的过程,本文从账号权限、认证机制、主动扫描三个维度讲解了核心安全配置和工具使用,核心要点如下:

  1. 账号安全 :锁定冗余账号,通过chage和 PAM 模块强化密码策略,用sudo精细化分配权限,避免直接使用root
  2. 认证安全:利用 PAM 框架为不同服务配置差异化认证规则,如限制登录失败次数、启用双因素认证。
  3. 主动防御 :定期使用NMAP半开扫描检测开放端口,及时关闭不必要的服务和端口,减少攻击面。
  4. 日志审计 :开启sudo、SSH 等关键操作的日志记录,定期审查日志,发现异常访问行为。
相关推荐
123过去4 小时前
hashid使用教程
linux·网络·测试工具·安全
C+++Python4 小时前
Linux/C++多进程
linux·运维·c++
最贪吃的虎4 小时前
GitHub推送又超时了?试试SSH
运维·ssh·github
XZY0284 小时前
如何使用grpc
运维·服务器
rleS IONS4 小时前
SQL2000在win10上安装的方法
运维·服务器
Stack Overflow?Tan905 小时前
linux ubuntu22.04安装ROS2humble完整版的流程
linux·docker·ros2
zly35005 小时前
centos7 sshd无法启动
linux·运维·服务器
编程大师哥6 小时前
Linux 命名管道(FIFO)通信 超清晰讲解
linux·运维·服务器
Smile_2542204186 小时前
linux服务器清理磁盘
linux·运维·服务器
KivenMitnick6 小时前
Claude Code--Ubuntu Linux超详细配置教程(附每步的可能报错及解决方法)
linux·运维·ubuntu