在SQL注入紧急防护场景下,阻断恶意IP地址是防止攻击进一步扩散和保护系统安全的重要措施。以下为你详细介绍几种常见的阻断恶意IP地址的方法:
plaintextaccess-list BLOCK_SQL_INJECTION extended deny ip host 192.168.1.100 any
access-group BLOCK_SQL_INJECTION in interface outside上述命令创建了一个名为 BLOCK_SQL_INJECTION 的访问控制列表,拒绝来自IP地址192.168.1.100的所有IP流量,并将其应用到外部接口(outside)的入站方向。
bashiptables -A INPUT -s 192.168.1.100 -j DROP这条命令将添加一条规则到INPUT链,当源IP地址为192.168.1.100的数据包进入服务器时,直接丢弃(DROP)该数据包。
plaintext<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir "/var/log/mod_evasive"
DOSEmailNotify admin@example.com
DOSWhitelist 192.168.1.0/24 # 白名单IP段
</IfModule>同时,可以结合脚本在检测到攻击时自动将恶意IP添加到防火墙规则中。例如,创建一个脚本 /usr/local/bin/block_ip.sh:
bash#!/bin/bash
BLOCK_IP=$1
iptables -A INPUT -s $BLOCK_IP -j DROP
echo "$(date): Blocked IP $BLOCK_IP due to SQL injection attempt" >> /var/log/block_ip.log然后在mod_evasive的配置中指定该脚本作为响应动作:
plaintextDOSSystemCommand "/usr/local/bin/block_ip.sh %s"nginxhttp {
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
server {
listen 80;
server_name example.com;
location / {
limit_req zone=req_limit burst=20 nodelay;
limit_conn conn_limit 10;
# 其他配置项
}
}
}当某个IP地址超过限制时,Nginx会返回相应的错误状态码。可以通过分析Nginx的访问日志,编写脚本识别出频繁触发限制的IP地址,并使用iptables或其他防火墙工具将其阻断。