4个版本
0.2.0 | 2021年10月15日 |
---|---|
0.1.2 | 2021年10月14日 |
0.1.1 | 2021年10月14日 |
0.1.0 | 2021年10月12日 |
#10 in #pam
16KB
173 行
pam-send-slack-message
pam-send-slack-message是一个程序,当通过ssh访问Linux服务器时,会在Slack上发布消息。
安装
前往发布页面下载最新版本。提供Linux(ARM64、x86_64、x86)的静态二进制文件和基于debian系统的deb包(Ubuntu)。
以下是如何使用upx(压缩)二进制文件安装它的示例
wget https://github.com/iuridiniz/pam-send-slack-message/releases/download/v0.2.0/pam-send-slack-message.$(uname -m).musl.upx
sudo mkdir -p /usr/local/bin/
sudo cp pam-send-slack-message.$(uname -m).musl.upx /usr/local/bin/pam-send-slack-message
chmod +x /usr/local/bin/pam-send-slack-message
配置
为了运行,你需要一个具有SLACK-TOKEN
和channel.write
权限的SLACK-CHANNEL-ID
。如果迷失方向,请遵循此处的说明。
# configure pam/sshd
echo "session optional pam_exec.so /usr/local/bin/pam-send-slack-message | sudo tee -a /etc/pam.d/sshd
创建一个包含以下内容的文件/etc/pam.d/pam-send-slack-message.conf
slack_token = "<SLACK-TOKEN>"
slack_channel_id = "<SLACK-CHANNEL-ID>"
# see https://api.slack.com/reference/surfaces/formatting
open_session_message = """🕵️ ▶️▶️▶️ IP `{addr}` logged in `{hostname}` as `{user}` using `{auth_info}` at `{when}`"""
close_session_message = """🕵️ 🛑🛑🛑 IP `{addr}` logout from `{hostname}` (is was `{user}` using `{auth_info}`) at `{when}`"""
# could be "America/Sao_Paulo" or "America/Los_Angeles" or "Europe/Oslo"
timezone = "UTC"
将<SLACK-TOKEN>
和<SLACK-CHANNEL-ID>
替换为你自己的。
用法
机器配置完成后,只需通过ssh登录机器即可。
pam/sshd配置
此程序需要在pam的会话阶段调用,你必须编辑/etc/pam.d/sshd
以包含此行
session optional pam_exec.so /path/to/pam-send-slack-message
您可以在此处了解有关pam配置的信息。
pam-send-slack-message配置
位于/etc/pam.d/pam-send-slack-message.conf
的文件用于配置此软件。
有效的键包括
slack_token
:您的Slack令牌(必需)slack_channel_id
:您的Slack频道ID(必需)open_session_message
:用户登录时发送的消息(如果未指定,将使用默认消息)close_session_message
:用户注销时发送的消息(如果未指定,将使用默认消息)。timezone
:要使用的时区(默认为UTC)
您可以在 src/settings.default.toml 中查看默认值。
黑客攻击
手动编译
前提条件:您需要的只是一个工作状态下的 cargo + rust 编译器、make 和 gcc。
make clean
make all
测试
为了进行测试,您需要一个具有 SLACK-TOKEN
和 channel.write
权限的 SLACK-CHANNEL-ID
。
使用 ssh 模拟 pam 登录
make SLACK_CHANNEL_ID=slack_channel_id SLACK_TOKEN=slack_token fake-open-session
使用 ssh 模拟 pam 注销
make SLACK_CHANNEL_ID=slack_channel_id SLACK_TOKEN=slack_token fake-close-session
为了避免始终传递环境变量,我建议使用 direnv
,在 envrc.sample
中有一个示例 .envrc
文件。
cp envrc.sample .envrc
direnv allow .
在使用 pam 内部时启用日志
将 /etc/pam.d/sshd
修改为
session optional pam_exec.so debug log=/tmp/file_to_log.txt /usr/local/bin/pam-send-slack-message SLACK-CHANNEL-ID SLACK-TOKEN
查看 /tmp/pam-slack.log
,也请查看审计日志,在 Ubuntu 中它们位于 /var/log/auth.log
贡献
欢迎 Pull 请求。对于重大更改,请先创建一个问题来讨论您想要进行哪些更改。
许可证
依赖关系
~6–19MB
~284K SLoC