From c67a2fe0e108d6842f48d99565bdba21ee82020f Mon Sep 17 00:00:00 2001 From: smolkik-code Date: Mon, 12 Jan 2026 19:24:19 +0700 Subject: [PATCH] v.1.0.4 --- ib.sh | 68 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/ib.sh b/ib.sh index 23696da..74d5515 100644 --- a/ib.sh +++ b/ib.sh @@ -14,8 +14,6 @@ pause(){ read -p "Нажмите [Enter], чтобы продолжить..." fackEnterKey } -# --- ПРОВЕРКИ --- - check_other_users() { USER_COUNT=$(awk -F: '$3 >= 1000 && $3 != 65534 {print $1}' /etc/passwd | wc -l) if [ "$USER_COUNT" -eq 0 ]; then @@ -35,13 +33,50 @@ check_other_users() { return 0 } -# --- ФУНКЦИИ --- +setup_timezone_interactive() { + echo -e "${GREEN}🌍 Настройка часового пояса${NC}" + echo "" + echo "Популярные зоны:" + echo "1) Europe/Moscow (МСК)" + echo "2) Europe/Kiev (Киев)" + echo "3) Asia/Almaty (Алматы)" + echo "4) Asia/Yekaterinburg (Екатеринбург)" + echo "5) Asia/Novosibirsk (Новосибирск)" + echo "6) Europe/Berlin (Берлин)" + echo "7) America/New_York (Нью-Йорк)" + echo "8) Asia/Tokyo (Токио)" + echo "0) Ручной ввод" + echo "" + + read -p "Выберите зону (0-8): " TZ_CHOICE + + case $TZ_CHOICE in + 1) TZ="Europe/Moscow" ;; + 2) TZ="Europe/Kiev" ;; + 3) TZ="Asia/Almaty" ;; + 4) TZ="Asia/Yekaterinburg" ;; + 5) TZ="Asia/Novosibirsk" ;; + 6) TZ="Europe/Berlin" ;; + 7) TZ="America/New_York" ;; + 8) TZ="Asia/Tokyo" ;; + 0) + echo "Доступные зоны: timedatectl list-timezones | grep" + read -p "Введите зону (например Europe/Moscow): " TZ + ;; + *) echo "Неверный выбор!"; pause; return ;; + esac + + timedatectl set-timezone "$TZ" + timedatectl set-ntp true + echo -e "${GREEN}✅ Часовой пояс: $TZ${NC}" + echo "📅 Текущее время: $(date)" + echo "🔄 NTP синхронизация включена" +} install_audit_with_rotation() { echo -e "${GREEN}🔒 Установка auditd с ротацией логов...${NC}" apt update && apt install -y auditd audispd-plugins logrotate - # Базовые правила аудита cat > /etc/audit/rules.d/server-setup.rules << EOF -w /etc/sudoers -p wa -k sudoers -w /etc/passwd -p wa -k identity @@ -50,9 +85,7 @@ install_audit_with_rotation() { -a always,exit -F arch=b64 -S execve -k process_exec EOF - # Ротация auditd (8 файлов по 50MB) cat >> /etc/audit/auditd.conf << EOF - max_log_file = 50 max_log_file_action = rotate num_logs = 8 @@ -60,7 +93,6 @@ space_left = 100 space_left_action = rotate EOF - # Ротация через logrotate cat > /etc/logrotate.d/auditd << EOF /var/log/audit/audit.log { weekly @@ -87,7 +119,6 @@ create_user_full() { echo "2) Пароль + SSH ключ" read -p "Выбор (1/2): " AUTH_METHOD - # Создание пользователя useradd -m -s /bin/bash "$UNAME" usermod -aG sudo "$UNAME" @@ -96,7 +127,7 @@ create_user_full() { read -p "> " UKEY mkdir -p /home/$UNAME/.ssh echo "$UKEY" > /home/$UNAME/.ssh/authorized_keys - passwd -l "$UNAME" # Блокируем пароль + passwd -l "$UNAME" echo -e "${GREEN}✅ Только SSH ключ${NC}" else read -s -p "Пароль: " PASS1 @@ -114,7 +145,6 @@ create_user_full() { fi fi - # Sudo без пароля chmod 700 /home/$UNAME/.ssh 2>/dev/null || true chmod 600 /home/$UNAME/.ssh/authorized_keys 2>/dev/null || true chown -R $UNAME:$UNAME /home/$UNAME/.ssh 2>/dev/null || true @@ -165,18 +195,18 @@ setup_ssh_security() { pause } -# --- МЕНЮ --- +# --- ОСНОВНОЕ МЕНЮ --- while true; do clear echo "=============================================" - echo " 🚀 SERVER ULTIMATE SETUP v3.1 🚀 " + echo " 🚀 SERVER ULTIMATE SETUP v3.2 🚀 " echo "=============================================" echo "1) 📛 Сменить Hostname" - echo "2) ⏰ Время МСК + база (mc, htop, gdu)" - echo "3) 👤 ${GREEN}СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ${NC} (пароль/ключ)" - echo "4) 🔒 ${RED}БЕЗОПАСНОСТЬ SSH${NC} ${YELLOW}(только после 3!)${NC}" - echo "5) 📊 Аудит + ${GREEN}ротация логов${NC}" + echo "2) 🌍 ${GREEN}ЧАСОВОЙ ПОЯС${NC} + база (mc, htop, gdu)" + echo "3) 👤 СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ (пароль/ключ)" + echo "4) 🔒 БЕЗОПАСНОСТЬ SSH (только после 3!)" + echo "5) 📊 Аудит + ротация логов" echo "6) 🐳 Docker + Compose" echo "7) 🌐 WireGuard" echo "8) 🔐 OpenVPN (Angristan)" @@ -189,7 +219,7 @@ while true; do case $opt in 1) read -p "Имя хоста: " HN; hostnamectl set-hostname "$HN"; systemctl restart systemd-hostnamed; pause ;; - 2) timedatectl set-timezone Europe/Moscow; apt update -y && apt install -y mc htop zip wget curl git net-tools gnupg2; curl -L "https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz" | tar xz && chmod +x gdu_linux_amd64 && mv gdu_linux_amd64 /usr/bin/; pause ;; + 2) setup_timezone_interactive; apt update -y && apt install -y mc htop zip wget curl git net-tools gnupg2; curl -L "https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz" | tar xz && chmod +x gdu_linux_amd64 && mv gdu_linux_amd64 /usr/bin/; pause ;; 3) create_user_full ; pause ;; 4) setup_ssh_security ;; 5) install_audit_with_rotation ; pause ;; @@ -198,8 +228,10 @@ while true; do 8) curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh && chmod +x openvpn-install.sh && ./openvpn-install.sh; pause ;; 9) apt install -y glances; pause ;; 10) apt install -y fail2ban && systemctl enable --now fail2ban; pause ;; - 11) apt-get autoremove -y && apt-get autoclean -y && apt-get purge $(dpkg -l 'linux-*' | awk '/^ii/{ print $2}' | grep -E 'linux-image-[0-9]+' | grep -v $(uname -r | cut -d- -f1)) -y; pause ;; + 11) apt-get autoremove -y && apt-get autoclean -y; pause ;; 0) break ;; *) echo -e "${RED}❌ Неверный пункт!${NC}"; sleep 1 ;; esac done + +echo -e "${GREEN}✅ Настройка завершена!${NC}"