Files
scripts/ib.sh
2026-01-12 19:15:21 +07:00

115 lines
4.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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