SSH Login Manager
一个专注于SSH登录限制和IP访问控制的Python工具,用于管理Linux系统的SSH登录安全。
功能特性
- 🔐 用户-IP绑定: 限制用户只能从指定IP登录SSH
- 🌐 IP访问控制: 基于IP地址的访问限制管理
- 📊 登录监控: 实时监控SSH登录失败记录
- 🚫 IP封锁: 自动封锁恶意IP地址
- 🛡️ Fail2Ban集成: 集成Fail2Ban进行动态防护
- 💾 自动备份: 修改前自动备份配置文件
- 🖥️ 交互界面: 友好的命令行交互界面
安装
从源码安装
# 克隆仓库
git clone https://gitee.com/liumou_site/ssh-pam-management.git
cd ssh-pam-management
# 安装到系统
pip3 install .
# 或者使用开发模式
pip3 install -e .
从PyPI安装(未来版本)
pip3 install ssh-login-manager
使用方法
交互式界面
# 启动交互式界面
ssh-login-manager
主要功能菜单
启动工具后,您将看到以下功能菜单:
- 查看当前SSH配置 - 显示当前SSH配置文件内容
- 添加用户-IP限制 - 限制用户只能从指定IP登录
- 移除用户-IP限制 - 移除用户的IP登录限制
- 添加IP白名单 - 添加允许访问的IP地址
- 查看登录失败记录 - 查看最近的SSH登录失败记录
- 封锁恶意IP - 使用iptables封锁恶意IP
- 解除IP封锁 - 解除已封锁的IP地址
- 设置Fail2Ban保护 - 配置Fail2Ban进行动态防护
- 退出 - 退出程序
权限要求
由于需要修改系统配置文件,建议使用root权限运行:
sudo ssh-login-manager
项目结构
ssh-login-manager/
├── src/
│ └── ssh_login_manager/
│ ├── __init__.py # 包初始化
│ ├── main.py # 主入口点
│ ├── ssh_config_manager.py # SSH配置管理器
│ ├── ip_access_manager.py # IP访问控制管理器
│ ├── login_monitor.py # 登录监控器
│ └── ssh_cli_interface.py # SSH命令行交互界面
├── pyproject.toml # 现代打包配置
├── setup.py # 兼容性打包配置
├── README.md # 项目文档
└── LICENSE # 许可证文件
模块说明
ssh_config_manager.py
- SSHConfigManager类: 负责管理SSH配置文件
- 读取和修改SSH配置文件(/etc/ssh/sshd_config)
- 支持用户-IP绑定配置管理
- 自动备份机制确保操作安全
ip_access_manager.py
- IPAccessManager类: 核心IP访问控制功能
- 管理基于pam_access.so的IP访问限制
- 支持IP白名单和黑名单管理
- 处理access.conf配置文件
login_monitor.py
- LoginMonitor类: 登录失败监控功能
- 实时监控SSH登录失败记录
- 统计IP登录失败次数
- 集成iptables进行IP封锁
ssh_cli_interface.py
- SSHCLIInterface类: 用户交互界面
- 提供菜单驱动的命令行操作
- 集成所有SSH登录管理功能
技术实现
用户-IP绑定
通过修改SSH配置文件实现用户与特定IP的绑定:
# 在/etc/ssh/sshd_config中添加
Match User username Address 192.168.1.100
PasswordAuthentication yes
IP访问控制
使用pam_access.so模块进行IP级别的访问控制:
# 在/etc/security/access.conf中添加
+ : username : 192.168.1.100
- : ALL : ALL
登录失败监控
通过解析系统日志文件监控SSH登录失败:
# 监控/var/log/auth.log中的失败记录
Failed password for username from 192.168.1.100
IP封锁
使用iptables封锁恶意IP:
# 添加iptables规则封锁IP
iptables -A INPUT -s 192.168.1.100 -j DROP
开发
设置开发环境
# 克隆项目
git clone https://gitee.com/liumou_site/ssh-pam-management.git
cd ssh-pam-management
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装开发依赖
pip install -e .
运行测试
# 运行基本功能测试
python -m pytest tests/
# 运行代码风格检查
flake8 src/
# 运行类型检查
mypy src/
贡献
欢迎提交Issue和Pull Request来改进这个项目。
许可证
本项目采用MIT许可证。详见LICENSE文件。
免责声明
此工具用于系统管理目的。在使用前请确保:
- 理解SSH配置和IP访问控制的工作原理
- 在测试环境中验证配置更改
- 备份重要的系统配置文件(/etc/ssh/sshd_config, /etc/security/access.conf等)
- 了解修改SSH配置和防火墙规则可能带来的安全影响
- 确保有备用的SSH访问方式,以防配置错误导致无法登录
作者对使用此工具造成的任何系统问题不承担责任。
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ssh_login_manager-1.0.0.tar.gz
(17.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ssh_login_manager-1.0.0.tar.gz.
File metadata
- Download URL: ssh_login_manager-1.0.0.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8a4364cf53ee694152bb7a8aec4897f2a2ee34b3591f8bc4f8b168071e20abb
|
|
| MD5 |
4eb7f932f75c3aead2eec08fa00ac60f
|
|
| BLAKE2b-256 |
96f73c25063c1c4c62cf8d99227175a0e85e3d79445c0d64a653e7f84c4dabf9
|
File details
Details for the file ssh_login_manager-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ssh_login_manager-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
761cb055f26d7039655521968e189eef014c9fcd62c1e5b60425afbbd22a8d44
|
|
| MD5 |
ae0c091b1c80b3c72b57e428a3862a39
|
|
| BLAKE2b-256 |
b84dde0dbb852279cd1146877789acfe776822ebb3e6e583092294f42d4d4c8a
|