diff --git a/ib.sh b/ib.sh index 777a6fc..394fd3c 100644 --- a/ib.sh +++ b/ib.sh @@ -400,6 +400,119 @@ setup_disks_advanced() { echo "📝 Добавлено в /etc/fstab" pause } +install_fail2ban_interactive() { + echo "${GREEN}🛡️ FAIL2BAN — ИНТЕРАКТИВНАЯ НАСТРОЙКА${NC}" + + pkg_install fail2ban + + # Остановка если запущен + systemctl stop fail2ban 2>/dev/null || true + + # Бэкап + cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak 2>/dev/null || true + + clear + echo "${YELLOW}⚙️ ОСНОВНЫЕ НАСТРОЙКИ${NC}" + read -p "Время бана (по умолчанию 1h): " BANTIME + BANTIME=${BANTIME:-3600} + + read -p "Макс. попыток (по умолчанию 5): " MAXRETRY + MAXRETRY=${MAXRETRY:-5} + + read -p "Время проверки попыток (по умолчанию 10m): " FINDTIME + FINDTIME=${FINDTIME:-600} + + echo "" + echo "${YELLOW}🤝 IP КОТОРЫЕ НЕ БАНИТЬ (через запятую):${NC}" + echo "Примеры: 192.168.1.0/24, 10.0.0.0/8" + read -p "Белый список: " IGNOREIP + IGNOREIP=${IGNOREIP:-"127.0.0.1/8 ::1"} + + # SSH Jail настройки + echo "" + echo "${GREEN}🔒 SSH ЗАЩИТА${NC}" + echo "1) Только стандартный порт 22" + echo "2) Несколько портов (22,2222)" + echo "3) Ручной ввод портов" + read -p "► " SSH_PORT_CHOICE + + case $SSH_PORT_CHOICE in + 1) SSH_PORT="ssh" ;; + 2) SSH_PORT="22,2222" ;; + 3) read -p "Порты (через запятую): " SSH_PORT ;; + *) SSH_PORT="ssh" ;; + esac + + # Дополнительные сервисы + echo "" + echo "${YELLOW}➕ ДОПОЛНИТЕЛЬНЫЕ СЕРВИСЫ${NC}" + echo "1) Только SSH" + echo "2) SSH + Nginx/Apache" + echo "3) SSH + все популярные" + read -p "► " SERVICES_CHOICE + + case $SERVICES_CHOICE in + 2) SERVICES="sshd nginx-http-auth nginx-botsearch" ;; + 3) SERVICES="sshd nginx-http-auth nginx-botsearch apache-auth dropbear" ;; + *) SERVICES="sshd" ;; + esac + + # Создание jail.local + cat > /etc/fail2ban/jail.local << EOF +[DEFAULT] +bantime = $BANTIME +findtime = $FINDTIME +maxretry = $MAXRETRY +backend = systemd +ignoreip = $IGNOREIP + +EOF + + # Добавление SSH + cat >> /etc/fail2ban/jail.local << EOF +[sshd] +enabled = true +port = $SSH_PORT +logpath = /var/log/auth.log +backend = systemd + +EOF + + # Дополнительные сервисы + for service in $SERVICES; do + cat >> /etc/fail2ban/jail.local << EOF +[$service] +enabled = true + +EOF + done + + # Фикс auth.log + [ ! -f /var/log/auth.log ] && ln -sf /var/log/syslog /var/log/auth.log + + # Тест и запуск + if fail2ban-client -t 2>/dev/null; then + systemctl daemon-reload + service_enable fail2ban + + echo "${GREEN}✅ Fail2Ban настроен и запущен!${NC}" + echo "" + echo "📊 АКТИВНЫЕ JAIL:" + fail2ban-client status | grep -E '^[a-z]' | sed 's/^/ /' + echo "" + echo "🔍 Подробный статус:" + echo " fail2ban-client status sshd" + echo " fail2ban-client status" + + else + echo "${RED}❌ Ошибка конфигурации!${NC}" + echo "📋 Проверьте:" + echo " fail2ban-client -t" + echo " journalctl -u fail2ban -xe" + fi + + pause +} # --- ГЛАВНОЕ МЕНЮ --- @@ -440,7 +553,7 @@ while true; do 7) curl -fsSL https://git.io/wireguard -o wg.sh && bash wg.sh; pause ;; 8) curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh && chmod +x openvpn-install.sh && ./openvpn-install.sh; pause ;; 9) pkg_install glances htop; pause ;; - 10) pkg_install fail2ban; service_enable fail2ban; pause ;; + 10) install_fail2ban_interactive ;; 11) $PKG_MGR autoremove -y && $PKG_MGR autoclean -y; pause ;; 12) install_unattended_upgrades ;; 13) install_smb_interactive ;;