← 返回到所有服务
GitHub 仓库信息
获取时间 · 2026年8月14日★ 2,482最新版本: v0.2.0最后更新: 2026年8月13日
README
# VPS Security Audit Script
A comprehensive Bash script for auditing the security and performance of your VPS (Virtual Private Server). This tool performs various security checks and provides a detailed report with recommendations for improvements.
**[nuverlabs.com/vps-audit](https://nuverlabs.com/vps-audit?ref=github)** · a [Nuver Labs](https://nuverlabs.com?ref=github) project
<!-- add a screenshot of the output here -->

## Features
### Security Checks
- **SSH Configuration**
- Root login status
- Password authentication
- Non-default port usage
- **Firewall Status** (UFW/firewalld/iptables/nftables)
- **Intrusion Prevention** (Fail2ban/CrowdSec) Configuration
- Fail2ban SSH jail port alignment (catches bans that silently do nothing)
- **Failed Login Attempts**
- **System Updates Status**
- **Running Services** Analysis
- **Open Ports** Detection
- **Sudo Logging** Configuration
- **Password Policy** Enforcement (via `pwquality.conf`)
- **SUID Files** Detection
### Performance Monitoring
- Disk Space Usage
- Memory Usage
- CPU Usage
- Active Internet Connections
---
## Requirements
- Ubuntu/Debian-based Linux system
- **Root access** or `sudo` privileges
- Basic packages (most are pre-installed):
- `ufw`
- `systemd`
- `netstat`/`ss`
- `grep`
- `awk`
---
## Installation
1. Download the script:
```bash
wget https://raw.githubusercontent.com/Nuver-Labs/vps-audit/main/vps-audit.sh
# or
curl -O https://raw.githubusercontent.com/Nuver-Labs/vps-audit/main/vps-audit.sh
```
2. Make the script executable:
```bash
chmod +x vps-audit.sh
```
---
## Usage
Run the script with `sudo` privileges:
```bash
sudo ./vps-audit.sh
```
The script will:
1. Perform all security checks
2. Display results in real-time with color coding:
- 🟢 [PASS] - Check passed successfully
- 🟡 [WARN] - Potential issues detected
- 🔴 [FAIL] - Critical issues found
3. Generate a detailed report file: `vps-audit-report-[TIMESTAMP].txt`
## Output Format
The script provides two types of output:
1. Real-time console output with color coding:
```
[PASS] SSH Root Login - Root login is properly disabled in SSH configuration
[WARN] SSH Port - Using default port 22 - consider changing to a non-standard port
[FAIL] Firewall Status - UFW firewall is not active - your system is exposed
```
2. A detailed report file containing:
- All check results
- Specific recommendations for failed checks
- System resource usage statistics
- Timestamp of the audit
---
## Customization
The script's behavior, file paths, and scoring limits are fully controlled by variables defined in the **`Configuration`** section at the top of the script file.
### 1. Dynamic Thresholds for PASS/WARN/FAIL Status
These variables define the numerical limits that trigger a **WARN** or **FAIL** status.
| Variable | Default Value | Check | Description |
| :--- | :--- | :--- | :--- |
| `RESOURCE_WARN` | `50` | Resource Usage | **WARN** if Disk/Memory/CPU usage is between 50-80%. |
| `RESOURCE_FAIL` | `80` | Resource Usage | **FAIL** if Disk/Memory/CPU usage is more than 80%. |
| `SERVICES_WARN` | `20` | Running Services | **WARN** if between 20-40 services are running. |
| `SERVICES_FAIL` | `40` | Running Services | **FAIL** if more than 40 services are running. |
| `LOGINS_WARN` | `10` | Failed Logins | **WARN** if between 10-50 failed login attempts are detected. |
| `LOGINS_FAIL` | `50` | Failed Logins | **FAIL** if more than 50 failed login attempts are detected. |
| `OPEN_PORTS_WARN` | `10` | Open Ports | **WARN** if between 10-20 listening ports are found. |
| `OPEN_PORTS_FAIL` | `20` | Open Ports | **FAIL** if more than 20 listening ports are found. |
| `PASSWORD_MINLEN` | `12` | Password Policy | **PASS** if `minlen` in `pwquality.conf` is at least this value. |
### 2. Report Output and Ownership
These variables control where the report is saved and the file permissions.
| Variable | Default Value | Description |
| :--- | :--- | :--- |
| `DEFAULT_REPORT_DIR` | `.` *(The current directory)* | The directory where the report file will be saved. |
| `ENABLE_CHOWN` | `false` | If `true`, sets ownership of the report file and (if newly created) the report directory to `REPORT_CHOWN_OWNER`. |
| `REPORT_CHOWN_OWNER` | `${SUDO_USER:-$(id -un)}:<their group>` | The target `user:group` for `chown`. Defaults to the user who invoked `sudo`, so reports are not left owned by `root`. |
| `REPORT_FILENAME` | `vps-audit-report-$(TIMESTAMP).txt` | The template name for the generated report file. |
### 3. Security Check File Paths
You can adjust the paths the script uses to check critical configuration files:
| Variable | Default Value | Description |
| :--- | :--- | :--- |
| `OS_RELEASE_FILE` | `/etc/os-release` | Path to the Operating System release file. |
| `REBOOT_REQUIRED_FILE` | `/var/run/reboot-required` | File indicating a system restart is needed. |
| `SSH_CONFIG_FILE` | `/etc/ssh/sshd_config` | Main SSH daemon configuration file. |
| `AUTH_LOG_FILE` | `/var/log/auth.log` | Log file checked for failed login attempts. |
| `SUDOERS_FILE` | `/etc/sudoers` | File checked for sudo logging configuration. |
| `PASSWORD_QUALITY_CONF` | `/etc/security/pwquality.conf` | Password complexity policy configuration file. |
| `FAIL2BAN_CONFIG_DIR` | `/etc/fail2ban` | Fail2ban config directory, read to verify the SSH jail port. |
---
## Best Practices
1. Run the audit regularly (e.g., weekly) to maintain security
2. Review the generated report thoroughly
3. Address any **FAIL** status immediately
4. Investigate **WARN** status during maintenance
5. Keep the script updated with your security policies
## Limitations
- Designed for Debian/Ubuntu-based systems
- Requires root/sudo access
- Some checks may need customization for specific environments
- Not a replacement for professional security audit
## Contributing
Feel free to submit issues and enhancement requests!
## License
This project is licensed under the MIT License - see the LICENSE file for details.
---
## About
vps-audit is built and maintained by [Nuver Labs](https://nuverlabs.com?ref=github).
- Project page: [nuverlabs.com/vps-audit](https://nuverlabs.com/vps-audit?ref=github)
- More from us: [github.com/nuver-labs](https://github.com/nuver-labs)
## Security Notice
While this script helps identify common security issues, it should not be your only security measure. Always:
- Keep your system updated
- Monitor logs regularly
- Follow security best practices
- Consider professional security audits for critical systems
## Support
For support, please:
1. Check the existing issues
2. Create a new issue with detailed information
3. Provide the output of the script and your system information
Stay secure! 🔒
VPS Audit 是一个专门用于VPS服务器安全审计的工具,帮助用户发现和修复潜在的安全问题,提高服务器安全性。
主要功能
- 安全配置检查:检查系统安全配置
- 漏洞扫描:检测已知安全漏洞
- 权限审计:检查文件权限和用户权限
- 服务审计:检查运行中的服务安全性
- 防火墙检查:检查防火墙配置
- 安全建议:提供安全加固建议
部署方式
- 脚本部署:支持一键部署脚本
- 手动安装:支持手动安装配置
系统要求
- Linux系统
- Root权限
- 建议配置:1核+ CPU,1GB+ 内存
- 网络:需要稳定的网络连接
