v.1.0.4
This commit is contained in:
68
ib.sh
68
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}"
|
||||
|
||||
Reference in New Issue
Block a user