Blog.027 Linux 系统安全及应用

本章目录

 

 

 

 

 

1. 账号安全基本措施
  1.1 系统账号清理
  1.2 密码安全控制
  1.3 命令历史限制
  1.4 终端自动注销
2. 使用 su 命令切换用户
  2.1 用途及用法
  2.2 密码验证
  2.3 限制使用 su 命令的用户
  2.4 查看 su 操作记录
3. Linux 中的 PAM 安全认证
  3.1 su 命令的安全隐患
  3.2 PAM(Pluggable Authentication Modules)可插拔式认证模块
  3.3 PAM 认证原理
  3.4 PAM 认证的构成
  3.5 PAM 安全认证流程
4. 使用 sudo 机制提升权限
  4.1 su 命令的缺点
  4.2 sudo 命令的用途及用法
  4.3 配置 sudo 授权
  4.4 查看 sudo 操作记录
5. 开关机安全控制
  5.1 调整 BIOS 引导设置
  5.2 GRUB 限制
  5.3 终端登录安全控制
6. 系统弱口令检测
  6.1 弱口令穷举破解实验
7. 网络端口扫描
  7.1 nmap 的扫描

 

 

 

 

1. 账号安全基本措施
  1.1 系统账号清理

 

    (1)将非登录用户的 shell 设为/sbin/nologin:

  • 命令行格式
  • usermod -s /sbin/nologin 用户名

 Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

    (2)锁定长期不使用的账号:

  • 命令行格式
  • 锁定账户①usermod -L 用户名
  • 锁定账户②passwd -l 用户名
  • 解锁账户①usermod -U 用户名
  • 解锁账户②passwd -u 用户名
  • 查看某一个用户密码的状态passwd -S 用户名

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

    (3)删除无用的账号

  • 命令行格式
  • userdel [-r] 用户名

 

Blog.027 Linux 系统安全及应用

 

    (4)锁定账号文件passwd、shadow

  • 命令行格式
  • 锁定文件chattr +i /etc/passwd /etc/shadow(在vi编辑器里只能读,不能写)
  • 解锁文件chattr -i /etc/passwd /etc/shadow
  • 查看文件状态lsattr -i /etc/passdw /etc/shadow

 

Blog.027 Linux 系统安全及应用


  1.2 密码安全控制

 

  • 设置密码有效期

 Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

  • 要求用户下次登录时修改密码

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用
  1.3 命令历史限制

 

  • history 可以查看到用户的历史命令。历史命令默认保存1000 条。保存在 用户家目录 的 .bash_history 隐藏文件中
  • history -c 可以清空历史命令。但是,用户家目录下的 .bash_history 文件中依旧保存着历史命令
  • !命令字 可以执行最近使用的该命令字开头的命令
  • !编号 可以执行该编号的历史命令

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

  • 减少记录的命令条数

 Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

  • 登录时自动清空命令历史

 

    echo "echo '' >~/.bash_history " >> ~/.bashrc
    将 echo '' > ~/.bash_history 追加重定向写入 到 ~/.bashrc 文件中
    echo '' > ~/.bash_history 表示 将空字符 覆盖重定向写入 到 ~/.bash_history 文件中


  1.4 终端自动注销

  • 闲置 600 秒后自动注销

 Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用


2. 使用 su 命令切换用户
  2.1 用途及用法

  • 用途:Substitute User,切换用户
  • 命令行格式:

 Blog.027 Linux 系统安全及应用

 

  • 带“-”选项表示将使用目标用户的登录Shell环境


  2.2 密码验证

  • root→任意用户,不验证密码

 Blog.027 Linux 系统安全及应用

 

  • 普通用户→其他用户,验证目标用户的密码

 

Blog.027 Linux 系统安全及应用


  2.3 限制使用 su 命令的用户

  • 将允许使用 su 命令的用户加入 wheel 组
  • 启用 pam_wheel 认证模块

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

Blog.027 Linux 系统安全及应用

 

 

    Tips:在/etc/pam.d/su 文件里设置禁止用户使用 su 命令:
    vim /etc/pam.d/su
    auth sufficient pam_rootok.so
    ......
    #auth required pam_wheel.so use_uid
    ......

 

    以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的;
    两行都注释,也就是运行所有用户都能使用 su 命令,但 root 下使用 su 切换到其他普通用户需要输入密码:即 root 用户能够直接通过认证而不用输入密码;
    如果开启第二行,表示只有 root 用户和 wheel 组内的用户才能使用 su 命令;
    如果注释第一行,开启第二行,表示只有 wheel 组内的用户才能使用 su 命令,root 用户也被禁用 su 命令。


  2.4 查看 su 操作记录

  • 安全日志文件:/var/log/secure


3. Linux 中的 PAM 安全认证
  3.1 su 命令的安全隐患

  • 默认情况下,任何用户都允许使用 su 命令。这将有机会反复尝试其他用户的登陆密码,从而带来安全风险;
  • 为了加强 su 命令的使用控制,可借助于 PAM 认证模块,只允许极个别用户使用 su 命令进行切换。 

 

  3.2 PAM(Pluggable Authentication Modules)可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式;
  • 也是当前 Linux 服务器普遍使用的认证方式。


  3.3 PAM 认证原理

  • PAM 认证一般遵循的顺序:Service(服务)>PAM(配置文件)>pam_*.so
  • PAM 认证首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证
  • 不同的应用程序所对应的PAM模块也是不同的
  • .so 为结尾的就是模块文件


  3.4 PAM 认证的构成

  • 查看某个程序是否支持PAM认证,可以用 ls 命令进行查看 /etc/pam.d,然后管道符号检索想要查询的程序;
  • 例如查看 su 是否支持 PAM 模块认证:ls /etc/pam.d | grep su
  • 查看su的PAM配置文件:cat /etc/pam.d/su
  • 每一行都是独立的认证过程;
  • 每一行可以区分为三个字段:认证类型、控制类型、PAM 模块及其参数


  3.5 PAM 安全认证流程

  • required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块执行完成后,再返回失败。
  • requisite:与 requried 类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
  • sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
  • optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。
  • include:表示在验证过程中调用其他的 PAM 配置文件。比如很多应用通过完整调用 /etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

 

Blog.027 Linux 系统安全及应用

 

4. 使用 sudo 机制提升权限
  4.1 su 命令的缺点

    su 的确为管理带来方便,通过切换到 root下,能完成所有系统管理工具,只要把 root 的密码交给任何一个普通用户,他都能切换到 root 来完成所有的系统管理工作;但通过 su 切换到 root 后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过 su 来切换到超级权限的 root ,必须把 root 权限密码都告诉这10个用户;如果这10个用户都有 root 权限,通过 root 权限可以做任何事,这在一定程度上就对系统的安全造成了威胁。


  4.2 sudo 命令的用途及用法

  • 用途:以其他用户身份(如 root)执行授权的命令
  • 命令行格式

Blog.027 Linux 系统安全及应用


  4.3 配置 sudo 授权

  • visudo 或者 vi /etc/sudoers
  • 语法格式
  • 用户 主机名=命令程序列表
    用户 主机名=(用户) 命令程序列表


  4.4 查看 sudo 操作记录

 

    (1)需启用Defaults logfile 配置

  • 默认日志文件: /var/log/sudo
  • vim /etc/sudoers 编辑配置文件
  • 添加:Defaults logfile="/var/log/sudo"

    (2)进行 sudo 操作,查看文件操作记录


5. 开关机安全控制
  5.1 调整 BIOS 引导设置

 

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为isetup,并设置管理员密码
  • Tips:禁止从其他设备引导系统操作,感觉若是出现忘记root密码就可能无法从光驱去修改,所以还是谨慎操作


  5.2 GRUB 限制

 

  • 使用grub2-mkpasswd-pbkdf2生成密钥
  • 修改/etc/grub.d/00_header文件中,添加密码记录
  • 生成新的grub.cfg配置文件


  5.3 终端登录安全控制

 

(1)限制 root 只在安全终端登录:

  • 安全终端配置:/etc/securetty

(2)禁止普通用户登录:

  • 建立 /etc/nologin 文件
  • 删除 nologin 文件或重启后即恢复正常


6. 系统弱口令检测

    弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等。


  6.1 弱口令穷举破解过程

 

    (1)Joth the Ripper密码分析工具,支持字典式的暴力破解

  • 通过对shadow文件的口令分析,可以检测密码强度

    (2)安装 JR 工具

  • 安装方法 make clean系统类型
  • 主程序文件为john

    (3)密码文件的暴力破解

  • 准备好密码字典文件,默认为password.lst
  • 执行john程序,结合–wordlist=字典文件


7. 网络端口扫描
  7.1 nmap 的扫描

    NMAP 是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术。

    NMAP 命令常用的选项和扫描类型:

  • -p:指定扫描的端口;
  • -n:禁用反向 DNS 解析(以加快扫描速度);
  • -sS:TCP 的 SYN 扫描(半开扫描),只向目标发出 SYN 数据包,如果收到 SYN/ACK 响应包就认为目标端口正在监听,并立即断开连接,否则视为目标端口并未开放;
  • -sT:TCP 连接扫描,这是完整的 TCP 扫描方式(默认扫描类型),用来建立一个 TCP 连接,如果成功则认为目标端口正在监听服务,否则视为目标端口并未开放。
  • -sF:TCP 的 FIN 扫描,开放的端口会忽略这种数据包,关闭的端口会回应 RST 数据包。许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性。
  • -sU:UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP扫描的速度会比较慢。
  • -sP:ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
  • -P0:跳过 ping 检测,这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。



 

 

-

 

上一篇:Linux 命令 su 和 sudo 的区别?


下一篇:Linux学习之路—文件权限与归属