系统安全及应用

目录

一:账号安全控制

1:基本安全措施

(1)系统账号清理

(2)密码安全控制

(3)命令历史、自动注销

2:用户切换与提权

(1)su命令的用法

[1. 基本语法](#1. 基本语法)

[2. 常用选项](#2. 常用选项)

[3. 与 sudo 的对比](#3. 与 sudo 的对比)

(2)PAM认证

3:sudo命令------提升执行权限

(1)在配置文件/etc/sudoers中添加授权

(2)通过sudo执行特权命令

二:系统引导和·登录控制

1:开关机安全控制

(1)调整BISO引导设置

(2)限制更改GRUB引导参数

2:终端及登录控制

(1)禁止root用户登录

[禁止 root 用户登录配置方法](#禁止 root 用户登录配置方法)

(2)禁止普通用户登录

三:弱口令、端口扫描

[1:弱口令检测------John the Ripper](#1:弱口令检测——John the Ripper)

(2)检测弱口令账号

(3)使用密码字典文件

2:网络扫描------NMAP

(1)安装NMAP软件包

(2)扫描语法及类型


一:账号安全控制

用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在 Linux 系统中,提供了多种机制来确保用户账号的正当、安全使用。

1:基本安全措施

(1)系统账号清理

在 Linux 系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他大量账号。除了超级用户 root 之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户账号。

常见的非登录用户账号包括 bin、daemon、adm、lp、mail 等。为了确保系统安全,这些用户账号的登录 Shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动,如下所示。

各种非登录用户账号中,还有相当一部分是很少用到的,如 games。这些用户账号可以视为冗余账号直接删除即可。除此之外,还有一些随应用程序安装的用户账号,若卸载程序以后未能自动删除,则需要管理员手动进行清理。

对于 Linux 服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定。例如,若要锁定、解锁名为 zhangsan 的用户账号,可以执行以下操作(passwd、usermod 命令都可用来锁定、解锁账号)。

如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。使用chattr 命令,分别结合"+i""-i"选项来锁定、解锁文件,使用 lsattr 命令可以査看文件锁定情况。

在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加、删除账号,也不能更改用户的密码、登录 Shell、宿主目录等属性信息。

(2)密码安全控制

在不安全的网络环境中,为了降低密码被猜出或被暴力破解的风险,用户应养成定期更改密码的习惯,避免长期使用同一个密码。管理员可以在服务器端限制用户密码的最大有效天数,对于密码已过期的用户,登录时将被要求重新设置密码,否则将拒绝登录。

操作类型 命令或配置方法 适用场景 效果说明
设置密码有效期 修改 /etc/login.defs 文件,设置 PASS_MAX_DAYS 30 适用于新建用户 新创建用户的密码有效期将被设为 30 天,到期后需修改密码。
设置密码有效期 chage -M 30 lisi 适用于已有用户(如 lisi) 将指定用户(lisi)的密码有效期设为 30 天,到期后需修改密码。
强制下次登录修改密码 chage -d 0 zhangsan 适用于需要强制修改密码的用户 用户(zhangsan)下次登录时会被强制要求修改密码,否则无法登录系统。

(3)命令历史、自动注销

shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。
Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。

安全控制项 配置方法 适用场景 效果说明
命令历史管理 修改 ~/.bashrc/etc/profile,添加: export HISTSIZE=1000 export HISTFILESIZE=2000 export HISTTIMEFORMAT="%F %T " export HISTCONTROL=ignoredups:erasedups 限制历史命令记录数量,避免敏感信息泄露 控制历史命令存储条数,避免重复记录,并添加时间戳便于审计。
禁用历史记录 ~/.bashrc/etc/profile 中添加: unset HISTFILE export HISTSIZE=0 export HISTFILESIZE=0 高敏感环境,禁止记录命令历史 完全禁用命令历史记录,防止敏感操作被泄露。
自动注销(TMOUT) ~/.bashrc/etc/profile 中添加: export TMOUT=300 readonly TMOUT 防止用户长时间无操作导致会话保持 用户 300 秒(5 分钟)无操作后自动注销,增强会话安全。
锁定终端超时 /etc/profile/etc/bashrc 中添加: TMOUT=600 readonly TMOUT 适用于多用户环境或服务器运维 10 分钟无操作后自动锁定终端,防止未授权访问。

2:用户切换与提权

命令 功能 使用示例 适用场景 安全注意事项
su 切换用户身份(需输入目标用户密码) su - root(切换到 root) su - username(切换到普通用户) 需要完全切换用户环境(如 root 运维)时使用。 直接切换至 root 存在风险,建议限制 root 远程登录,仅允许受信任用户使用。
sudo 临时以 root(或其他用户)权限执行命令 sudo apt update sudo -u username command 普通用户需要执行特定管理命令时使用(如安装软件、修改系统配置)。 需在 /etc/sudoers 精细配置权限,遵循最小权限原则,避免滥用。
sudo -i sudo su 切换到 root shell(需当前用户有 sudo 权限) sudo -i sudo su - 需要长时间以 root 身份操作时使用(比 su 更安全,因需验证当前用户密码)。 仍可能带来安全风险,建议仅在必要时使用,操作完成后及时退出 root 环境。

(1)su命令的用法

1. 基本语法

su [选项] [用户名]

1.若不指定用户名,默认切换到 root 用户。

2.切换用户后,需输入目标用户的密码(root 切换普通用户无需密码)。

2. 常用选项

选项 作用
--l 完全切换用户环境(加载目标用户的 ~/.bashrc~/.profile 等配置)。
-c 以目标用户身份执行单条命令后退出,例如:su -c "command" username
-s 指定切换后的 Shell(如 su -s /bin/bash username)。
-m 保留当前环境变量(不加载目标用户配置)。

3. 与 sudo 的对比

场景 su sudo
需密码 目标用户的密码 当前用户的密码
权限粒度 切换完整用户会话 仅提升单条命令权限
日志记录 记录用户切换 记录具体执行的命令
安全建议 限制 root 切换 精细控制 /etc/sudoers

(2)PAM认证

PAM 认证核心概念与配置

分类 说明 配置文件/示例 相关模块(pam_*.so)
PAM 简介 Linux 的可插拔认证模块,提供统一的用户认证机制,支持灵活的策略配置。 主配置文件:/etc/pam.conf(旧版) 服务独立配置:/etc/pam.d/ 目录下(如 /etc/pam.d/sshd -
认证流程 1. 服务(如 sshd)调用 PAM 2. 加载对应服务的 PAM 配置 3. 通过模块(如 pam_unix.so)完成认证。 示例流程: sshd → /etc/pam.d/sshd → pam_unix.so pam_unix.so(基础认证)
PAM 配置类型 四类配置行(每行包含 类型控制标志模块参数): 示例配置行auth required pam_unix.so nullok pam_deny.so(拒绝访问)
类型(Type) - auth:用户身份验证 - account:账户有效性检查(如过期、权限) - password:密码策略 - session:会话管理 account required pam_time.so(限制用户登录时间) pam_time.so(时间限制)
控制标志(Control) - required:必须成功,但失败后继续检查其他模块 - sufficient:成功则立即通过 - optional:结果忽略 - requisite:失败则立即终止 auth sufficient pam_ldap.so(LDAP 认证成功则跳过后续) pam_ldap.so(LDAP 认证)
常用模块 - pam_unix.so:本地账户认证 - pam_tally2.so:登录失败计数 - pam_cracklib.so:密码复杂度检查 - pam_limits.so:资源限制 password requisite pam_cracklib.so minlen=8 pam_cracklib.so(密码强度)
安全应用场景 - 限制 su 命令(仅 wheel 组可用) - 强制密码复杂度 - 防止暴力破解(失败锁定) - 限制用户资源(CPU、内存) 限制 suauth required pam_wheel.so use_uid pam_wheel.so(限制特权切换)

如果想査看某个程序是否支持 PAM 认证,可以用 1s 命令进行査看,例如执行以下命令可以査看 su是否支持 PAM 模块认证。

su 的 PAM 配置文件的具体内容如下所示。

字段 类型/选项 说明 示例
认证类型 auth 验证用户身份(如检查密码、指纹等)。 auth required pam_unix.so
account 检查账户状态(是否过期、是否有登录权限等)。 account requisite pam_time.so
password 管理密码策略(修改密码时的复杂度检查等)。 password requisite pam_cracklib.so minlen=8
session 管理用户会话(如登录时加载环境变量、记录日志等)。 session optional pam_limits.so
控制类型 required 必须成功,若失败会继续检查其他模块,最终返回失败。 auth required pam_deny.so
requisite 必须成功,若失败立即终止验证并返回失败。 auth requisite pam_succeed_if.so uid >= 1000
sufficient 若成功则立即通过认证(跳过后续模块),失败则忽略并继续。 auth sufficient pam_ldap.so
optional 仅用于显示信息,不影响认证结果(通常用于 session 类型)。 session optional pam_motd.so
PAM 模块示例 pam_unix.so 基础认证模块(本地用户密码验证)。 auth required pam_unix.so shadow nullok
pam_cracklib.so 强制密码复杂度(如最小长度、数字等)。 password requisite pam_cracklib.so difok=3 minlen=12
pam_tally2.so 限制登录失败次数(防暴力破解)。 auth required pam_tally2.so deny=5 unlock_time=600
pam_limits.so 限制用户资源(如进程数、内存等)。 session required pam_limits.so

安全应用场景

场景 PAM 配置方法 作用
禁止 root 远程登录 /etc/pam.d/sshd 中添加: auth required pam_securetty.so 仅允许 root 从安全终端登录。
强制密码复杂度 /etc/pam.d/system-auth 中添加: password requisite pam_cracklib.so minlen=10 密码长度至少 10 字符。
限制用户切换 /etc/pam.d/su 中添加: auth required pam_wheel.so use_uid 仅允许 wheel 组用户使用 su

3:sudo命令------提升执行权限

sudo 命令核心功能与配置

分类 说明 配置示例 适用场景
基本功能 允许授权用户以 root 或其他用户身份执行命令,无需共享目标用户密码。 sudo apt update 普通用户需临时执行特权命令(如软件安装)。
配置文件 权限规则存储在 /etc/sudoers,需通过 visudo 编辑(避免语法错误)。 visudo 管理员配置用户或组的 sudo 权限。
授权语法 用户/组 主机=(目标用户) 命令 jerry ALL=(ALL) /usr/bin/apt 精确控制用户可执行的命令范围。
免密码执行 添加 NOPASSWD 选项,适用于自动化脚本。 %admin ALL=(ALL) NOPASSWD: ALL 需无交互执行的场景(如 cron 任务)。
日志记录 所有 sudo 操作记录在 /var/log/auth.log,便于审计。 grep sudo /var/log/auth.log 安全审计与故障排查。
限制权限 通过 ! 排除危险命令,或限制参数。 user1 ALL=(ALL) /usr/bin/systemctl restart *, !/usr/bin/systemctl * root 防止滥用特权命令(如重启关键服务)。

常用 sudo 命令示例

命令 作用
sudo -l 列出当前用户可执行的 sudo 命令。
sudo -u username command 以指定用户身份执行命令(如 sudo -u mysql vi /etc/mysql/my.cnf)。
sudo -isudo -s 启动交互式 root shell(需用户有完整 sudo 权限)。
sudo !! 以 sudo 权限重新执行上一条命令。

(1)在配置文件/etc/sudoers中添加授权

配置项 说明 语法格式 示例
文件权限 默认权限为 440,需使用 visudo 编辑(避免语法错误)。 chmod 440 /etc/sudoers -
授权格式 基本结构:用户 主机=(目标用户) 命令 user MACHINE=(RUNAS_USER) COMMANDS jerry localhost=(root) /usr/bin/apt
用户字段 - 直接指定用户名(如 jerry) - 使用 %组名 授权整个组(如 %admin)。 username%groupname %wheel ALL=(ALL) ALL
主机字段 指定主机名(通常为 localhost 或实际主机名),支持通配符 ALL hostnameALL user1 webserver=(root) /usr/bin/systemctl
目标用户字段 指定可以切换到的用户身份(默认为 root),可设为 ALL 或具体用户(如 mysql)。 (username)(ALL) alice ALL=(mysql) /usr/bin/mysqladmin
命令字段 需填写完整命令路径,多个命令用逗号分隔。 支持通配符 *,排除命令用 ! full_path_to_command!full_path_to_command bob ALL=(ALL) /usr/bin/apt, !/usr/bin/apt remove *
特殊选项 - NOPASSWD: 免密码执行 - PASSWD: 需要密码(默认) - SETENV: 保留环境变量。 NOPASSWD: COMMANDS %devops ALL=(ALL) NOPASSWD: /usr/bin/docker

配置示例与场景说明

场景 配置示例 作用
允许用户执行所有命令 jerry ALL=(ALL) ALL 用户 jerry 可切换到任何用户执行任意命令(需密码)。
允许组内用户免密码重启服务 %admin ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx admin 组成员无需密码即可重启 Nginx。
限制用户使用特定命令 alice localhost=(mysql) /usr/bin/mysql, /usr/bin/mysqldump 用户 alice 仅能以 mysql 身份执行 MySQL 相关命令。
禁止危险操作 user1 ALL=(ALL) /usr/bin/*, !/usr/bin/passwd, !/usr/bin/rm -rf / 允许使用大部分命令,但禁止修改密码和强制删除根目录。

(2)通过sudo执行特权命令

对于已获得授权的用户,通过 sudo 方式执行特权命令时,只需要将正常的命令行作为sudo 命令的参数即可。由于特权命令程序通常位于/sbin、/usr/sbin 等目录下,普通用户执行时应使用绝对路径。以下操作验证了使用 sudo 方式执行命令的过程。

在当前会话过程中,第一次通过 sudo 执行命令时,必须以用户自己的密码(不是 root 用户或其他用户的密码)进行验证。此后再次通过 sudo 执行命令时,只要与前一次 sudo 操作的间隔时间不超过5min(分),则不再重复验证。

sudo 权限查看与日志记录

操作 命令/方法 输出说明 示例
查看当前用户权限 sudo -l 显示当前用户被授权的 sudo 命令列表,未授权用户提示 may not run sudo <br>用户 syrianer 可以在该主机上运行以下命令:<br>(root) /sbin/*<br>
验证密码 执行 sudo -l 时需输入当前用户密码(若未配置 NOPASSWD)。 密码验证通过后显示权限列表。 [sudo] password for syrianer:
查看所有用户权限 管理员可通过 visudo 或查看 /etc/sudoers 文件。 显示系统中所有用户的 sudo 授权配置。 %admin ALL=(ALL) ALL
检查 sudo 日志 tail /var/log/sudogrep sudo /var/log/auth.log(系统日志路径可能不同)。 记录用户、时间、终端、执行的命令等详细信息。 <br>Aug 25 00:00:46 : syrianer : ... COMMAND=list<br>
日志字段含义 - TTY:用户终端 - PWD:当前目录 - USER:切换到的用户 - COMMAND:执行的命令。 用于审计用户操作。 USER=root ; COMMAND=/sbin/ifconfig

常见场景示例

场景 操作 结果
用户自查权限 普通用户执行 sudo -l 显示允许执行的命令列表或提示无权限。
管理员审计日志 `cat /var/log/sudo grep "COMMAND=/usr/bin/apt"`
排查异常操作 `grep "USER=root" /var/log/auth.log grep "COMMAND=rm"`

二:系统引导和·登录控制

在互联网环境中,大部分服务器是通过远程登录的方式来进行管理的,而本地引导和终端登录过程往往容易被忽视,从而留下安全隐患。特别是当服务器所在的机房环境缺乏严格、安全的管控制度时,如何防止其他用户的非授权介入就成为必须重视的问题。

1:开关机安全控制

对于服务器主机,其物理环境的安全防护是非常重要的,不仅要保持机箱完好、机柜锁闭,还要严格控制机房的人员进出、硬件设备的现场接触等过程。在开关机安全控制方面,除了要做好物理安全防护以外,还要做好系统本身的一些安全措施。

(1)调整BISO引导设置

将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。
禁止从其他设备(如光盘、U 盘、网络等)引导系统,对应的项设为"Disabled"

将 BIOS 的安全级别改为"setup",并设置好管理密码,以防止未授权的修改。

(2)限制更改GRUB引导参数

GRUB 密码保护配置流程

步骤 操作命令/配置 说明
1. 生成 PBKDF2 加密密码 grub2-mkpasswd-pbkdf2 输入两次密码,生成加密字符串(基于 PBKDF2 算法)。
2. 备份配置文件 cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak cp /etc/grub.d/00_header /etc/grub.d/00_header.bak 防止配置错误导致系统无法启动。
3. 创建用户密码文件 vim /etc/grub.d/01_users,内容如下: <br>#!/bin/sh -e<br>cat << EOF<br>set superusers="root"<br>password_pbkdf2 root [生成的PBKDF2哈希]<br>EOF<br> 定义超级用户(如 root)及其加密密码。
4. 设置文件权限 chmod 755 /etc/grub.d/01_users 确保脚本可执行。
5. 生成新 GRUB 配置 grub2-mkconfig -o /boot/grub2/grub.cfg 应用密码保护到 GRUB 菜单。
6. 验证配置 重启系统,尝试修改 GRUB 参数时需输入密码。 若未提示密码,检查步骤 3 和 5 是否执行正确。

注意事项

  1. 密码安全

    • 使用强密码并妥善保存 PBKDF2 哈希值,避免泄露。
  2. 配置文件权限

    • /etc/grub.d/ 下的脚本需为 755 权限,/boot/grub2/grub.cfg 需为 600
  3. 恢复方法

    • 若忘记密码,需通过救援模式或 Live CD 恢复备份的 grub.cfg 文件。
  4. 兼容性

    • 不同 Linux 发行版路径可能不同(如 CentOS 为 /boot/grub2/,Ubuntu 为 /boot/grub/)。

2:终端及登录控制

在 Linux 服务器中,默认开启了六个 tty 终端,允许任何用户进行本地登录。关于本地登录的安全控制,可以从以下几个方面着手。

(1)禁止root用户登录

禁止 root 用户登录配置方法

配置方式 操作步骤 效果说明 适用场景
1. 修改 /etc/securetty 编辑文件,注释或删除对应终端行(如 tty5tty6): #tty5 #tty6 root 用户将无法从被注释的终端登录(如本地控制台 tty5/tty6)。 限制 root 本地登录的终端。
2. 禁用 SSH root 登录 修改 /etc/ssh/sshd_configPermitRootLogin no 重启服务: systemctl restart sshd 完全禁止 root 通过 SSH 远程登录,强制使用普通用户 + sudo 生产服务器远程访问安全加固。
3. 使用 PAM 限制 /etc/pam.d/login 中添加: auth required pam_securetty.so 仅允许 root 从 /etc/securetty 中列出的终端登录(需结合方式 1 使用)。 增强终端登录控制。

(2)禁止普通用户登录

禁止普通用户登录配置方法

配置方式 操作步骤 效果说明 适用场景
1. 创建 /etc/nologin 文件 执行命令: touch /etc/nologin 所有普通用户登录时会被拒绝(显示默认提示信息),仅允许 root 用户登录。 服务器维护期间临时禁止用户登录。
2. 自定义提示信息 编辑 /etc/nologin 文件,写入自定义内容: echo "系统维护中,禁止登录。预计恢复时间:2023-12-01 18:00" > /etc/nologin 用户登录时会显示自定义的维护信息,提升用户体验。 需向用户说明维护情况的场景。
3. 恢复登录 删除 /etc/nologin 文件: rm -f /etc/nologin 普通用户登录权限立即恢复。 维护结束后快速恢复服务。

三:弱口令、端口扫描

1:弱口令检测------John the Ripper

分类 说明 操作命令/示例 注意事项
工具简介 开源密码破解工具,支持 DES、MD5、SHA 等多种加密算法,用于检测系统弱口令。 - 仅限合法授权使用(如内部安全审计)。
安装方法 1. 源码安装<br>wget http://www.openwall.com/john/j/john-1.9.0.tar.gz<br>tar -zxvf john-1.9.0.tar.gz<br>cd john-1.9.0/src<br>make clean && make<br> 2. 包管理器安装 (部分系统): apt install john(Debian) yum install john(RHEL) 需提前安装编译工具(如 gccmake)。
基本使用步骤 1. 提取密码哈希: unshadow /etc/passwd /etc/shadow > hashes.txt 2. 运行破解: john hashes.txt 3. 查看结果: john --show hashes.txt 密码哈希文件需管理员权限获取。
破解模式 - 字典攻击john --wordlist=password.lst hashes.txt - 暴力破解john --incremental hashes.txt 字典文件(如 password.lst)需自行准备或从安全渠道获取。
检测结果示例 <br>user1:123456<br>user2:admin<br> 发现弱口令后,应立即通知用户修改或强制重置。
安全建议 - 定期运行检测,结合密码策略(如 pam_cracklib)。 - 对弱口令账号强制密码过期: chage -d 0 username 避免在生产环境直接破解,建议在隔离测试环境中进行。

常用命令

命令 作用
john --wordlist=dict.txt hashes.txt 使用字典文件 dict.txt 破解哈希。
john --format=sha512crypt hashes.txt 指定哈希类型(如 sha512crypt)。
john --rules hashes.txt 启用规则变形(如大小写、数字替换)。
john --restore=session 恢复上次中断的破解会话。

(2)检测弱口令账号

弱口令检测方法与工具对比

工具/方法 使用场景 操作步骤 优点 缺点
John the Ripper Linux/UNIX 系统本地密码检测 1. 提取哈希:unshadow /etc/passwd /etc/shadow > hashes.txt 2. 破解:john hashes.txt 3. 查看结果:john --show hashes.txt 支持多种加密算法,灵活高效 暴力破解耗时,需高性能硬件支持
Hydra 远程服务弱口令爆破(SSH/FTP等) hydra -l user -P password.lst ssh://192.168.1.1 支持多协议,可针对网络服务测试 易触发防火墙封锁,需谨慎使用
CrackLib 密码策略强制检测 /etc/pam.d/system-auth 中配置: password requisite pam_cracklib.so minlen=8 difok=3 实时阻止弱口令设置 仅适用于新密码设置,不检测现有密码
自定义脚本 批量检查默认/常见密码 编写脚本遍历用户列表,尝试登录: `echo "123456" su - user` 可定制化,适合特定场景

检测结果处理与加固措施

检测结果 风险等级 应对措施 命令示例
密码为常见弱口令(如 123456 高危 强制立即修改密码并记录: chage -d 0 username 通知用户 passwd username
密码为简单变形(如 Admin123 中危 要求用户设置复杂密码,启用多因素认证(MFA) chage -M 30 username(缩短有效期)
密码强度足够 低危 定期复查(建议每季度一次) -

(3)使用密码字典文件

分类 说明 操作命令/示例 适用场景
字典文件作用 包含常见密码组合的文本文件,用于暴力破解或弱口令检测。 - 安全审计、渗透测试、密码强度验证。
常见字典类型 - 通用字典 :如 rockyou.txt - 定制字典 :根据目标信息生成(如公司名+年份) - 规则字典:基于规则变形(如大小写、数字替换) john --wordlist=rockyou.txt hashes.txt 针对性破解或全面扫描。
生成字典工具 - Crunch :按规则生成密码 - Cewl :爬取网站内容生成字典 - Hashcat:规则引擎生成变形字典 crunch 6 8 0123456789 -o num_dict.txt(生成6-8位数字组合) 需要定制化字典时使用。
使用字典破解 1. John the Ripperjohn --wordlist=dict.txt hashes.txt 2. Hydrahydra -l user -P dict.txt ssh://192.168.1.1 结合工具快速检测弱口令。 本地密码哈希或远程服务爆破。
字典优化技巧 - 去重:`sort dict.txt uniq > clean_dict.txt - 合并:cat dict1.txt dict2.txt > combined.txt - 过滤长度:awk 'length($0) >=8' dict.txt > long_dict.txt` awk 'length($0) >=12' rockyou.txt > strong_pass.txt
防护措施 - 禁用常见密码:在 /etc/pam.d/system-auth 中配置 pam_pwquality.so - 强制密码复杂度:minlen=12 difok=3 password requisite pam_pwquality.so retry=3 minlen=12 enforce_for_root 防止字典攻击生效。
法律与伦理 仅限授权测试,禁止未授权使用。 - 合法渗透测试或内部安全审计。
字典名称 内容特点 下载来源 适用场景
rockyou.txt 包含数百万常见密码(如 123456password Kali Linux 默认路径:/usr/share/wordlists/ 快速检测极弱口令。
SecLists 集合多种字典(用户名、密码、目录等) GitHub: danielmiessler/SecLists 综合渗透测试。
CrackStation.txt 包含哈希预计算密码(约15亿条) CrackStation官网 高效破解复杂哈希。

2:网络扫描------NMAP

NMAP 是一个强大的端口扫描类安全评测工具,官方站点是 http://nmap.org/。NMAP 被设计为检测众多主机数量的巨大网络,支持 ping 扫描、多端口检测、0s 识别等多种技术。使用 NMAP 定期扫描内部网络,可以找出网络中不可控的应用服务,及时关闭不安全的服务,减小安全风险。

(1)安装NMAP软件包

在 Linux 系统中,既可以使用光盘自带的 nmap-6.40-7.e17.x8664.rpm 安装包,也可以使用从NMAP 官方网站下载的最新版源码包,这里以 YUM 方式安装的 nmap 软件包为例。

复制代码
[root@localhost ~]# yum install -y nmap

(2)扫描语法及类型

NMAP 基本命令格式

组成部分 说明 示例
基本语法 nmap [扫描类型] [选项] <扫描目标> nmap -sS -p 80 192.168.1.1
扫描目标 支持主机名、IP 地址或网络段(空格分隔多个目标)。 nmap 192.168.1.1 192.168.1.2
常用选项 - -p:指定端口(如 -p 80,443-p 1-1000) - -n:禁用 DNS 反向解析(加速扫描)。 nmap -p 22,80 -n 192.168.1.0/24

NMAP 常用扫描类型对比

扫描类型 命令选项 原理 优点 缺点 适用场景
TCP SYN 扫描 -sS 发送 SYN 包,收到 SYN/ACK 则认为端口开放(半开连接,不完成三次握手)。 速度快,隐蔽性强(不留下完整连接记录)。 需 root 权限。 默认扫描方式,高效探测开放端口。
TCP 连接扫描 -sT 完成完整 TCP 三次握手,确认端口状态。 无需 root 权限。 速度慢,易被日志记录。 无特权用户的基本扫描。
TCP FIN 扫描 -sF 发送 FIN 包,关闭的端口会返回 RST,开放的端口无响应。 绕过简单防火墙规则。 部分系统不遵循 RFC 标准(可能误判)。 检测防火墙配置。
UDP 扫描 -sU 发送 UDP 包,根据响应(或无响应)判断端口状态。 检测 UDP 服务(如 DNS、DHCP)。 速度极慢(需等待超时)。 识别 UDP 服务。
ICMP 扫描 -sP 仅发送 ICMP Echo 请求(类似 ping),检测主机存活。 快速确认主机在线状态。 不扫描端口。 初步网络存活探测。
跳过 Ping 检测 -Pn 假设所有目标存活,直接扫描指定端口(避免因禁 Ping 导致的漏扫)。 绕过禁 Ping 的主机。 可能增加无效扫描时间。 目标禁用 ICMP 时的扫描。

常用组合命令示例

场景 命令示例 说明
快速扫描常用端口 nmap -sS -p 80,443,22,3389 192.168.1.1 SYN 扫描指定端口。
扫描整个网段的 UDP 服务 nmap -sU -p 53,67,68 192.168.1.0/24 检测 DNS、DHCP 等 UDP 服务。
绕过防火墙检测 nmap -sF -T4 192.168.1.1 FIN 扫描(躲避简单过滤)。
全面扫描(含版本探测) nmap -sV -O -p 1-65535 192.168.1.1 识别服务版本和操作系统。
相关推荐
kp000001 小时前
PHP弱类型安全漏洞解析与防范指南
android·开发语言·安全·web安全·php·漏洞
Hello.Reader3 小时前
EDR与XDR如何选择适合您的网络安全解决方案
安全·web安全
cooldream20093 小时前
信息安全的基石:深入理解五大核心安全服务
数据库·安全·系统架构师
观测云4 小时前
观测云产品更新 | 安全监测、事件中心、仪表板AI智能分析等
人工智能·安全
谈不譚网安4 小时前
Cross-Site Scripting(XSS)
安全·web安全·xss
蚰蜒螟7 小时前
jvm安全点(二)openjdk17 c++源码垃圾回收安全点信号函数处理线程阻塞
jvm·安全
moonsims7 小时前
低空态势感知:基于AI的DAA技术是低空飞行的重要安全保障-机载端&地面端
人工智能·安全
神经毒素15 小时前
WEB安全--Java安全--shiro721反序列化漏洞
安全·web安全
RestCloud20 小时前
产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布
数据仓库·系统安全·api·数字化转型·ipaas·数据集成平台·集成平台