#!/bin/bash GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' if [ "$EUID" -ne 0 ]; then echo -e "${RED}Запустите скрипт от имени root!${NC}" exit 1 fi pause(){ read -p "Нажмите [Enter], чтобы продолжить..." fackEnterKey } # --- ПРОВЕРКИ --- check_other_users() { # Считаем пользователей с UID >= 1000 (обычные пользователи) USER_COUNT=$(awk -F: '$3 >= 1000 && $3 != 65534 {print $1}' /etc/passwd | wc -l) if [ "$USER_COUNT" -eq 0 ]; then echo -e "${RED}ВНИМАНИЕ: В системе только root!${NC}" echo -e "${YELLOW}Сначала создайте обычного пользователя (пункт 3), прежде чем отключать SSH пароли.${NC}" return 1 fi return 0 } # --- ФУНКЦИИ --- install_audit() { echo -e "${GREEN}Установка и настройка аудита (auditd)...${NC}" apt update && apt install -y auditd audispd-plugins # Базовые правила аудита (логирование изменений в sudoers, passwd, и SSH) cat > /etc/audit/rules.d/audit.rules << EOF -w /etc/sudoers -p wa -k scope -w /etc/passwd -p wa -k identity -w /etc/ssh/sshd_config -p wa -k sshd_config EOF service auditd restart echo "Аудит запущен. Просмотр логов: ausearch -k sshd_config" } setup_ssh_security() { if ! check_other_users; then pause; return; fi echo -e "${YELLOW}ВНИМАНИЕ: Сейчас будет произведена настройка безопасности SSH.${NC}" read -p "Отключить вход по ПАРОЛЮ и оставить только КЛЮЧИ? (y/n): " SSH_CONFIRM if [ "$SSH_CONFIRM" == "y" ]; then SSHD_CONFIG="/etc/ssh/sshd_config" cp "$SSHD_CONFIG" "${SSHD_CONFIG}.bak" sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' "$SSHD_CONFIG" sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' "$SSHD_CONFIG" sshd -t && systemctl restart ssh echo -e "${GREEN}SSH защищен. Вход под root и по паролю запрещен.${NC}" else echo "Настройка SSH отменена." fi } install_openvpn_angristan() { echo -e "${GREEN}Установка OpenVPN (by Angristan)...${NC}" curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh chmod +x openvpn-install.sh ./openvpn-install.sh } # --- МЕНЮ --- while true; do clear echo "======================================" echo " SERVER ULTIMATE SETUP v3.0 " echo "======================================" echo "1) Сменить Hostname" echo "2) Настроить время и базу (mc, gdu...)" echo "3) СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ (SSH Key + sudo)" echo "4) БЕЗОПАСНОСТЬ SSH (Только после п.3!)" echo "5) Аудит системы (auditd)" echo "6) Установить Docker + Compose" echo "7) Установить WireGuard" echo "8) Установить OpenVPN (Angristan)" echo "9) Мониторинг (Netdata/Glances)" echo "10) Защита (Fail2Ban)" echo "11) ОЧИСТКА: Удалить старые ядра" echo "0) Выход" echo "======================================" read -p "Выберите пункт: " opt case $opt in 1) hostnamectl set-hostname "$(read -p 'Name: ' name; echo $name)" ; systemctl restart systemd-hostnamed ; pause ;; 2) timedatectl set-timezone Europe/Moscow ; apt update && apt install -y mc htop zip wget curl git net-tools gnupg2 ; pause ;; 3) read -p "Имя: " UNAME read -p "SSH Key: " UKEY useradd -m -s /bin/bash "$UNAME" usermod -aG sudo "$UNAME" mkdir -p /home/$UNAME/.ssh && echo "$UKEY" > /home/$UNAME/.ssh/authorized_keys chown -R $UNAME:$UNAME /home/$UNAME/.ssh echo "$UNAME ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$UNAME echo -e "${GREEN}Пользователь $UNAME готов.${NC}" ; pause ;; 4) setup_ssh_security ; pause ;; 5) install_audit ; pause ;; 6) curl -fsSL https://get.docker.com | sh ; apt install -y docker-compose-plugin ; pause ;; 7) wget https://git.io/wireguard -O wg.sh && bash wg.sh ; pause ;; 8) install_openvpn_angristan ; pause ;; 9) apt install -y glances ; pause ;; 10) apt install -y fail2ban ; systemctl enable --now fail2ban ; pause ;; 11) apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1) -y ; apt autoremove -y ; pause ;; 0) break ;; esac done