你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置可插入身份验证模块 (PAM) 以审核登录事件

本文提供了配置可插入身份验证模块 (PAM) 以在未修改的 Ubuntu 20.04 或 18.04 安装上审核 SSH、Telnet 和终端登录事件的示例过程。

PAM 配置可能因设备和 Linux 发行版而异。

有关详细信息,请参阅登录收集器(基于事件的收集器)

注意

Defender for IoT 计划在 2025 年 8 月 1 日停用微代理。

先决条件

在开始之前,请确保已安装 Defender for IoT 微代理。

配置 PAM 需要技术知识。

有关详细信息,请参阅教程:安装 Defender for IoT 微代理

修改 PAM 配置以报告登录和注销事件

此过程提供了一个示例过程,用于配置针对成功登录事件的收集。

我们的示例基于未修改的 Ubuntu 20.04 或 18.04 安装,此过程中的步骤可能因系统而有所不同。

  1. 找到以下文件:

    • /etc/pam.d/sshd
    • /etc/pam.d/login
  2. 将以下行追加到每个文件的末尾:

    // report login
    session [default=ignore] pam_exec.so type=open_session /usr/libexec/defender_iot_micro_agent/pam/pam_audit.sh 0
    
    // report logout
    session [default=ignore] pam_exec.so type=close_session /usr/libexec/defender_iot_micro_agent/pam/pam_audit.sh 1
    

修改 PAM 配置以报告登录失败

此过程提供了一个示例过程,用于配置针对失败登录尝试的收集。

此过程中的此示例基于未修改的 Ubuntu 18.04 或 20.04 安装。 下面列出的文件和命令可能因配置或执行的修改而不同。

  1. 找到 /etc/pam.d/common-auth 文件并查找以下行:

    # here are the per-package modules (the "Primary" block)
    auth    [success=1 default=ignore]  pam_unix.so nullok_secure
    # here's the fallback if no module succeeds
    auth    requisite           pam_deny.so
    

    本部分通过 pam_unix.so 模块进行身份验证。 如果身份验证失败,本部分将继续使用 pam_deny.so 模块以阻止访问。

  2. 将指示的代码行替换为以下内容:

    # here are the per-package modules (the "Primary" block)
    auth	[success=1 default=ignore]	pam_unix.so nullok_secure
    auth	[success=1 default=ignore]	pam_exec.so quiet /usr/libexec/defender_iot_micro_agent/pam/pam_audit.sh 2
    auth	[success=1 default=ignore]	pam_echo.so
    # here's the fallback if no module succeeds
    auth	requisite			pam_deny.so
    

    在此修改的部分中,PAM 将一个模块跳到 pam_echo.so 模块,然后跳过 pam_deny.so 模块并成功进行身份验证。

    如果失败,PAM 会继续向代理日志文件报告登录失败,然后将一个模块跳到 pam_deny.so 模块,从而阻止访问。

验证配置

此过程介绍如何验证是否已正确配置 PAM 以审核登录事件。

  1. 使用 SSH 登录到设备,然后注销。

  2. 使用 SSH 登录到设备,使用不正确的凭据创建失败的登录事件。

  3. 访问设备并运行以下命令:

    cat /var/lib/defender_iot_micro_agent/pam.log
    
  4. 验证对于成功登录 (open_session)、注销 (close_session) 和登录失败 (auth) 是否记录了类似于下方的行:

    2021-10-31T18:10:31+02:00,16356631,2589842,open_session,sshd,user,192.168.0.101,ssh,0
    2021-10-31T18:26:19+02:00,16356719,199164,close_session,sshd, user,192.168.0.201,ssh,1
    2021-10-28T17:44:13+03:00,163543223,3572596,auth,sshd,user,143.24.20.36,ssh,2
    
  5. 对 Telnet 和终端连接重复验证过程。

后续步骤

有关详细信息,请参阅微代理事件集合