Добавить server/server-init.sh
This commit is contained in:
55
server/server-init.sh
Normal file
55
server/server-init.sh
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
MARKER="/var/lib/first-boot-init.done"
|
||||||
|
LOG="/var/log/first-boot-init.log"
|
||||||
|
|
||||||
|
# Запускать только от root
|
||||||
|
if [[ "${EUID}" -ne 0 ]]; then
|
||||||
|
echo "Run as root (sudo)." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Одноразовый запуск
|
||||||
|
if [[ -f "$MARKER" ]]; then
|
||||||
|
echo "Already initialized. Marker exists: $MARKER"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec > >(tee -a "$LOG") 2>&1
|
||||||
|
|
||||||
|
echo "=== First boot init started at $(date -Is) ==="
|
||||||
|
|
||||||
|
# 1) Обновление системы
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
apt-get update
|
||||||
|
apt-get -y upgrade
|
||||||
|
apt-get -y autoremove --purge
|
||||||
|
|
||||||
|
# 2) Установка UFW и Fail2ban
|
||||||
|
apt-get -y install ufw fail2ban
|
||||||
|
|
||||||
|
# 3) Настройка UFW (важно: не отрезать себе доступ по SSH)
|
||||||
|
SSH_PORT="${SSH_PORT:-22}"
|
||||||
|
|
||||||
|
ufw --force reset
|
||||||
|
ufw default deny incoming
|
||||||
|
ufw default allow outgoing
|
||||||
|
ufw allow "${SSH_PORT}/tcp" comment "Allow SSH"
|
||||||
|
ufw --force enable
|
||||||
|
|
||||||
|
# 4) Fail2ban: включить и запустить
|
||||||
|
systemctl enable fail2ban
|
||||||
|
systemctl restart fail2ban
|
||||||
|
|
||||||
|
# (Опционально) показать статус
|
||||||
|
ufw status verbose || true
|
||||||
|
systemctl --no-pager --full status fail2ban || true
|
||||||
|
|
||||||
|
# 5) Маркер выполнения
|
||||||
|
mkdir -p "$(dirname "$MARKER")"
|
||||||
|
touch "$MARKER"
|
||||||
|
|
||||||
|
echo "=== First boot init finished at $(date -Is) ==="
|
||||||
|
echo "Marker created: $MARKER"
|
||||||
|
echo "Log: $LOG"
|
||||||
Reference in New Issue
Block a user