This commit is contained in:
2026-01-12 19:24:19 +07:00
parent 2f1fa03509
commit c67a2fe0e1

68
ib.sh
View File

@@ -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}"