#!/bin/bash set -euo pipefail # 全局配置 readonly LOG_FILE="/var/log/install_backtrance.log" readonly COWRIE_INSTALL_DIR="/opt/cowrie" readonly MAX_BACKUPS=3 readonly SSH_PORT_RANGE_MIN=1024 readonly SSH_PORT_RANGE_MAX=65535 # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' # 日志系统 log() { local level=$1 local message=$2 local timestamp=$(date +'%Y-%m-%d %H:%M:%S') case $level in "INFO") echo -e "${BLUE}[INFO]${NC} $timestamp $message" | tee -a "$LOG_FILE" ;; "WARN") echo -e "${YELLOW}[WARN]${NC} $timestamp $message" | tee -a "$LOG_FILE" ;; "ERROR") echo -e "${RED}[ERROR]${NC} $timestamp $message" | tee -a "$LOG_FILE"; exit 1 ;; esac } # 初始化检查 init_check() { log "INFO" "正在检查系统环境..." [[ $EUID -ne 0 ]] && log "ERROR" "必须使用root权限运行" [[ ! -f /etc/debian_version ]] && log "ERROR" "仅支持Debian系系统" } # 安装系统依赖 install_deps() { log "INFO" "开始安装系统依赖..." local deps=(net-tools ufw fail2ban git python3.9 python3.9-venv python3.9-dev python3-systemd) if ! apt-get update || ! apt-get install -y "${deps[@]}"; then log "ERROR" "依赖安装失败" fi log "INFO" "系统依赖安装完成" } # 配置防火墙 configure_firewall() { log "INFO" "开始配置防火墙..." if ! command -v ufw >/dev/null; then log "WARN" "未检测到UFW防火墙,跳过配置" return fi ufw --force reset ufw allow ssh ufw allow 2222/tcp comment 'Cowrie Honeypot' ufw --force enable log "INFO" "防火墙配置完成" } # 配置Fail2Ban configure_fail2ban() { log "INFO" "开始配置Fail2Ban..." if ! command -v fail2ban-client >/dev/null; then log "WARN" "未检测到Fail2Ban,跳过配置" return fi cat > /etc/fail2ban/jail.local < /etc/systemd/system/cowrie.service <