我设置了 pingdom 来不断确保我的网站正常运行,并在网站不可用时通知我。是否有类似的服务可以不断从外部监控我的防火墙,并在开放端口发生变化时通知我?
答案1
您可以自己动手。这是一个快速的 bash 脚本,用于nmap
扫描主机的开放端口,如果端口自上次运行以来发生了变化,则以非零状态退出。
#!/bin/sh
nmap -oG - -d0 --open google.com | sed -n -e 3p > ports
NEW_SHA256=$(openssl sha256 ports)
OLD_SHA256=$(cat sha256)
# Output the old and new hash for humans
echo "OLD HASH: $OLD_SHA256"
echo "NEW HASH: $NEW_SHA256"
# Store the new hash in file for next run
echo $NEW_SHA256 > sha256
# Compare the hashes
if [ "$NEW_SHA256" != "$OLD_SHA256" ]; then
echo "No match!"
exit 1
fi
echo "Match!"
使用示例:
root@appman:/srv/test# ./checkports.sh 旧:SHA256(端口)= 3b144433c06e2ab62de43e544aa78538b3e480aeabe188ec448bde3416afdc89 新:SHA256(端口)= 3b144433c06e2ab62de43e544aa78538b3e480aeabe188ec448bde3416afdc89 匹配! root@appman:/srv/test# 服务 znc 停止 停止 ZNC... root@appman:/srv/test# ./checkports.sh 旧:SHA256(端口)= 3b144433c06e2ab62de43e544aa78538b3e480aeabe188ec448bde3416afdc89 新:SHA256(端口)= ae46f2a4b68d1529ccdc391e6e9ae9a4cab77a3213870a80003c2525c8841f22 不匹配!
您可以将其放入另一台服务器上的 cron 作业中,并在开放端口发生变化时向您发送邮件。
答案2
与扫描相比,定期检查配置更可能有效。这可以通过 SNMP 来完成,也可以通过登录防火墙并转储配置来完成。正如评论中提到的,有些软件包旨在实现此目的。选择哪一个取决于防火墙的类型和您的个人偏好。