mirror of
https://github.com/vernu/vps-audit.git
synced 2025-01-23 13:35:06 +03:00
small change in system updates to prevent error if UPDATES variabel is empty, add CrowdSec as IPS check, add FAIL for unsecure ssh ports above unprivileged ports threshhold
This commit is contained in:
parent
07abec919f
commit
1d1cd173b5
38
vps-audit.sh
38
vps-audit.sh
@ -124,13 +124,14 @@ else
|
|||||||
check_security "SSH Password Auth" "FAIL" "Password authentication is enabled - consider using key-based authentication only"
|
check_security "SSH Password Auth" "FAIL" "Password authentication is enabled - consider using key-based authentication only"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check SSH default port
|
# Check for unsecure SSH ports
|
||||||
|
UNPRIVILEGED_PORT_START=$(sysctl -n net.ipv4.ip_unprivileged_port_start)
|
||||||
SSH_PORT=$(grep "^Port" /etc/ssh/sshd_config | awk '{print $2}')
|
SSH_PORT=$(grep "^Port" /etc/ssh/sshd_config | awk '{print $2}')
|
||||||
if [ -z "$SSH_PORT" ]; then
|
|
||||||
SSH_PORT="22"
|
|
||||||
fi
|
|
||||||
if [ "$SSH_PORT" = "22" ]; then
|
if [ "$SSH_PORT" = "22" ]; then
|
||||||
check_security "SSH Port" "WARN" "Using default port 22 - consider changing to a non-standard port for security by obscurity"
|
check_security "SSH Port" "WARN" "Using default port 22 - consider changing to a non-standard port for security by obscurity"
|
||||||
|
elif [ "$SSH_PORT" -ge "$UNPRIVILEGED_PORT_START" ]; then
|
||||||
|
check_security "SSH Port" "FAIL" "Using unprivileged port $SSH_PORT - use a port below $UNPRIVILEGED_PORT_START for better security"
|
||||||
else
|
else
|
||||||
check_security "SSH Port" "PASS" "Using non-default port $SSH_PORT which helps prevent automated attacks"
|
check_security "SSH Port" "PASS" "Using non-default port $SSH_PORT which helps prevent automated attacks"
|
||||||
fi
|
fi
|
||||||
@ -149,17 +150,26 @@ else
|
|||||||
check_security "Unattended Upgrades" "FAIL" "Automatic security updates are not configured - system may miss critical updates"
|
check_security "Unattended Upgrades" "FAIL" "Automatic security updates are not configured - system may miss critical updates"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check fail2ban
|
# Check Intrusion Prevention Systems (Fail2ban or CrowdSec)
|
||||||
|
IPS_INSTALLED=0
|
||||||
|
IPS_ACTIVE=0
|
||||||
|
|
||||||
if dpkg -l | grep -q "fail2ban"; then
|
if dpkg -l | grep -q "fail2ban"; then
|
||||||
if systemctl is-active fail2ban >/dev/null 2>&1; then
|
IPS_INSTALLED=1
|
||||||
check_security "Fail2ban" "PASS" "Brute force protection is active and running"
|
systemctl is-active fail2ban >/dev/null 2>&1 && IPS_ACTIVE=1
|
||||||
else
|
|
||||||
check_security "Fail2ban" "WARN" "Fail2ban is installed but not running - brute force protection is disabled"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
check_security "Fail2ban" "FAIL" "No brute force protection installed - system is vulnerable to login attacks"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if dpkg -l | grep -q "crowdsec"; then
|
||||||
|
IPS_INSTALLED=1
|
||||||
|
systemctl is-active crowdsec >/dev/null 2>&1 && IPS_ACTIVE=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$IPS_INSTALLED$IPS_ACTIVE" in
|
||||||
|
"11") check_security "Intrusion Prevention" "PASS" "Fail2ban or CrowdSec is installed and running" ;;
|
||||||
|
"10") check_security "Intrusion Prevention" "WARN" "Fail2ban or CrowdSec is installed but not running" ;;
|
||||||
|
*) check_security "Intrusion Prevention" "FAIL" "No intrusion prevention system (Fail2ban or CrowdSec) is installed" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
# Check failed login attempts
|
# Check failed login attempts
|
||||||
FAILED_LOGINS=$(grep "Failed password" /var/log/auth.log 2>/dev/null | wc -l)
|
FAILED_LOGINS=$(grep "Failed password" /var/log/auth.log 2>/dev/null | wc -l)
|
||||||
if [ "$FAILED_LOGINS" -lt 10 ]; then
|
if [ "$FAILED_LOGINS" -lt 10 ]; then
|
||||||
@ -172,12 +182,14 @@ fi
|
|||||||
|
|
||||||
# Check system updates
|
# Check system updates
|
||||||
UPDATES=$(apt-get -s upgrade 2>/dev/null | grep -P '^\d+ upgraded' | cut -d" " -f1)
|
UPDATES=$(apt-get -s upgrade 2>/dev/null | grep -P '^\d+ upgraded' | cut -d" " -f1)
|
||||||
|
if [ -z "$UPDATES" ]; then
|
||||||
|
UPDATES=0
|
||||||
|
fi
|
||||||
if [ "$UPDATES" -eq 0 ]; then
|
if [ "$UPDATES" -eq 0 ]; then
|
||||||
check_security "System Updates" "PASS" "All system packages are up to date"
|
check_security "System Updates" "PASS" "All system packages are up to date"
|
||||||
else
|
else
|
||||||
check_security "System Updates" "FAIL" "$UPDATES security updates available - system is vulnerable to known exploits"
|
check_security "System Updates" "FAIL" "$UPDATES security updates available - system is vulnerable to known exploits"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check running services
|
# Check running services
|
||||||
SERVICES=$(systemctl list-units --type=service --state=running | grep "loaded active running" | wc -l)
|
SERVICES=$(systemctl list-units --type=service --state=running | grep "loaded active running" | wc -l)
|
||||||
if [ "$SERVICES" -lt 20 ]; then
|
if [ "$SERVICES" -lt 20 ]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user