shell编程——实战3(防御网络攻击)

2024-08-05 23:44:19 浏览数 (2)

项目计划

1. 需求分析
  • 目的:定义项目的具体目标和技术要求。
  • 确定要保护的服务(如 SSH、FTP)。
  • 确定需要监控的日志文件和关键词。
  • 分析现有的安全措施和漏洞。
2. 设计与规划
  • 目的:设计系统架构并规划技术栈。
  • 选择合适的日志监控工具(如 fail2ban)。
  • 确定防火墙规则的配置(如 iptables)。
  • 设计脚本的逻辑流程。
  • 制定备份和恢复策略。
3. 实施开发
  • 目的:编写脚本和配置文件。
  • 编写 shell 脚本来监控日志文件。
  • 配置 fail2ban 规则文件。
  • 测试脚本的功能。
4. 测试与验证
  • 目的:确保系统的稳定性和可靠性。
  • 单元测试脚本的各个部分。
  • 集成测试整个系统。
  • 执行模拟攻击进行压力测试。
5. 部署与维护
  • 目的:将系统部署到生产环境,并持续监控其性能。
  • 在服务器上部署脚本和服务。
  • 设置定时任务来定期清理 iptables 规则。
  • 监控系统性能并进行必要的调整。

技术栈

  • 操作系统:Linux(例如 Ubuntu Server)
  • 日志监控工具fail2ban
  • 防火墙管理iptables
  • 脚本语言:Bash

详细步骤

1. 需求分析
  • 目标服务:SSH (端口 22)
  • 日志文件/var/log/auth.log
  • 关键词Failed password, authentication failure
2. 设计与规划
  • 日志监控工具fail2ban
  • 防火墙规则:使用 iptables 阻止可疑 IP 地址。
  • 脚本逻辑

  • 检查 fail2ban 服务状态。
  • 监控 /var/log/auth.log 文件中的关键词。
  • 当检测到关键词时,通过 iptables 添加规则阻止 IP 地址。
  • 定期清理不再活跃的规则。

脚本说明:

  1. 检查并启动 fail2ban:确保 fail2ban 服务正在运行。
  2. 添加 iptables 规则:用于阻止特定的 IP 地址或端口。
  3. 日志监控:定期检查系统日志以寻找异常行为。

脚本代码:

代码语言:shell复制
#!/bin/bash

# 检查 fail2ban 是否安装并启动
if ! systemctl is-active --quiet fail2ban; then
    echo "Starting fail2ban service..."
    sudo systemctl start fail2ban
    # 如果希望开机自启
    sudo systemctl enable fail2ban
fi

# 定义要监控的日志文件和关键字
LOG_FILE="/var/log/auth.log"
KEYWORDS="Failed password" "authentication failure"

# 监控日志文件中的关键字
monitor_logs() {
    tail -f $LOG_FILE | while read line; do
        for keyword in ${KEYWORDS[@]}; do
            if [[ "$line" == *"$keyword"* ]]; then
                # 获取 IP 地址
                IP=$(echo $line | awk '{print $9}')
                # 检查是否已经阻止了这个 IP
                if ! iptables -L -n | grep -q $IP; then
                    # 阻止 IP 地址
                    iptables -A INPUT -s $IP -j DROP
                    echo "Blocked IP: $IP"
                fi
                break
            fi
        done
    done
}

# 启动日志监控
monitor_logs &
PID=$!

# 清理工作
trap "kill $PID; exit" INT TERM EXIT

# 保持运行
while true; do
    sleep 1000
done

使用说明:

  1. 将上述脚本保存为文件,例如 defend.sh
  2. 赋予执行权限:chmod x defend.sh
  3. 运行脚本:./defend.sh

注意事项:

  • 请确保在安全的环境中测试脚本,并根据实际情况调整日志文件路径和关键字。
  • 此脚本适用于 Linux 系统,并且需要 root 权限来运行 iptables 命令。
  • 可能还需要安装 fail2ban,可以通过包管理器安装,例如 apt-get install fail2banyum install fail2ban
  • 根据实际需求,可能还需要配置 fail2ban 的规则文件来进一步增强防护能力。

0 人点赞