前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell编程——实战3(防御网络攻击)

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

原创
作者头像
奇零才子
发布2024-08-05 23:44:19
810
发布2024-08-05 23:44:19
举报
文章被收录于专栏:Linux运维之路

项目计划

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 的规则文件来进一步增强防护能力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目计划
    • 1. 需求分析
      • 2. 设计与规划
        • 3. 实施开发
          • 4. 测试与验证
            • 5. 部署与维护
            • 技术栈
            • 详细步骤
              • 1. 需求分析
                • 2. 设计与规划
                • 脚本说明:
                • 脚本代码:
                • 使用说明:
                • 注意事项:
                相关产品与服务
                云服务器
                云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档