做网站的员工怎么设置绩效考核,wordpress add_theme_support,wordpress模板电子书下载站,男性产品哪个网站可以做要编写一个脚本分析 Nginx 日志并自动把特定路径访问者的 IP 地址加入黑名单#xff0c;我们可以采用以下策略#xff1a;
分析日志#xff1a;定期分析 Nginx 日志文件以找到访问特定路径的 IP 地址。更新黑名单#xff1a;将这些 IP 地址添加到 Nginx 的黑名单配置中。重…要编写一个脚本分析 Nginx 日志并自动把特定路径访问者的 IP 地址加入黑名单我们可以采用以下策略
分析日志定期分析 Nginx 日志文件以找到访问特定路径的 IP 地址。更新黑名单将这些 IP 地址添加到 Nginx 的黑名单配置中。重新加载 Nginx 配置每次更新黑名单后重新加载 Nginx 配置以使更改生效。
首先你需要确定 Nginx 日志的路径和格式。假设日志路径为 /var/log/nginx/access.log并且使用的是 Nginx 的默认日志格式。
下面是一个基于 Bash 脚本的示例它会分析日志寻找访问 /sensitive-path 的 IP 地址并将其添加到黑名单
#!/bin/bash# 日志文件路径
LOG_PATH/var/log/nginx/access.log
# 黑名单配置文件路径
BLACKLIST_PATH/etc/nginx/blacklist.conf# 用于存储临时 IP 列表的文件
TEMP_IP_LIST/tmp/temp_ip_list.txt# 定义包含敏感关键字的数组
declare -a PATHS(/etc/passwd /exec/ /ad /sql /webservices /sh-swssjf-api/.elasticbeanstalk/)# 清空临时 IP 列表文件$TEMP_IP_LIST# 遍历所有敏感路径
for path in ${PATHS[]}
do# 搜索访问这些路径的 IP 地址并追加到临时文件awk -v path$path $7 ~ path {print $1} $LOG_PATH | sort | uniq $TEMP_IP_LIST
done# 对 IP 列表去重
sort $TEMP_IP_LIST | uniq $TEMP_IP_LIST.tmp
mv $TEMP_IP_LIST.tmp $TEMP_IP_LIST# 更新 Nginx 黑名单配置
while IFS read -r ip
do# 检查 IP 是否已在黑名单中if ! grep -q $ip $BLACKLIST_PATH; then# 将 IP 添加到黑名单配置文件echo deny $ip; $BLACKLIST_PATHfi
done $TEMP_IP_LIST# 重新加载 Nginx 配置使黑名单生效
nginx -s reload说明
脚本首先使用 awk 分析日志文件提取出访问 /sensitive-path 的 IP 地址并去重后存储在一个临时文件中。然后脚本读取临时文件中的每个 IP 地址检查其是否已经在黑名单配置文件中。如果不在就将其添加进去。最后使用 nginx -s reload 命令重新加载 Nginx 配置使得黑名单立即生效。
注意事项
确保 Nginx 的黑名单配置/etc/nginx/blacklist.conf已经包含在你的 Nginx 主配置文件中通常在 http 块内包含如下include /etc/nginx/blacklist.conf;此脚本需要适当的权限运行可能需要 sudo 权限。根据实际日志格式和 Nginx 配置可能需要调整脚本中的命令和路径。