Автоматично (AI) Мануально
Автоматичне налаштування через AI
Надайте вашому AI-асистенту доступ до цього репозиторію. Він автоматично виконає всі перевірки, налаштує безпеку та згенерує файл з усіма доступами (credentials guide) на вашому комп'ютері.
Відкрити GitHub Репозиторій
1. Створення SSH-ключа (Локально)
Виконується на вашому комп'ютері (Mac або Linux) ДО того, як ви підключитесь до сервера.
ssh-keygen -t ed25519 -C "{username}@{nickname}" -f ~/.ssh/{nickname}_key -N ""
cat ~/.ssh/{nickname}_key.pub
Скопіюйте вивід другої команди (він починається на ssh-ed25519 ...). Це ваш публічний ключ.
2. Вхід як Root
Підключіться до сервера за допомогою пароля, який Hetzner надіслав на пошту.
Увага
Hetzner може попросити змінити пароль. Введіть поточний пароль, потім двічі новий тимчасовий. Якщо після цього з'єднання розірветься — просто підключіться знову за допомогою нового пароля.
3. Оновлення системи
Оновлення всіх пакетів у неінтерактивному режимі (без спливаючих вікон grub).
apt update && DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt upgrade -y
4. Створення користувача з sudo
Працювати з-під root небезпечно. Створюємо звичайного користувача та даємо йому права адміністратора.
useradd -m -s /bin/bash {username}
echo "{username}:YOUR_SECURE_PASSWORD" | chpasswd
usermod -aG sudo {username}
5. Розгортання SSH-ключа
Запишемо ваш публічний ключ, який ви скопіювали в Кроці 1, на сервер.
mkdir -p /home/{username}/.ssh
echo "{PUBLIC_KEY_CONTENT}" > /home/{username}/.ssh/authorized_keys
chmod 700 /home/{username}/.ssh
chmod 600 /home/{username}/.ssh/authorized_keys
chown -R {username}:{username} /home/{username}/.ssh
6. Перевірка входу
Важливо
ОБОВ'ЯЗКОВИЙ ЧЕКПОІНТ
Не закривайте сесію root! Відкрийте нове вікно терміналу на своєму ПК та спробуйте зайти по ключу. Тільки після успішного входу можна продовжувати.
Перевірте, чи працює sudo (система має попросити пароль, який ви задали в Кроці 4, і вивести "root"):
ssh -i ~/.ssh/{nickname}_key {username}@{SERVER_IP}
sudo whoami
7. Firewall (UFW)
Всі наступні команди виконуйте від імені вашого нового користувача (з sudo). Налаштовуємо політику "заборонити все вхідне, крім SSH, HTTP та HTTPS".
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable
sudo ufw status
8. Захист ядра (sysctl)
Застосовуємо параметри для захисту від мережевих атак.
sudo tee /etc/sysctl.d/99-security.conf << 'EOF'
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
EOF
sudo sysctl -p /etc/sysctl.d/99-security.conf
9. Базові пакети та час
Точний час критичний для логів, SSL-сертифікатів та fail2ban.
sudo apt install -y chrony curl wget git unzip net-tools
sudo systemctl enable chrony
10. Локальний SSH-конфіг
Налаштування шорткату на вашому локальному ПК , щоб надалі підключатися короткою командою ssh {nickname}.
mkdir -p ~/.ssh && touch ~/.ssh/config && chmod 600 ~/.ssh/config
cat >> ~/.ssh/config << 'EOF'
Host {nickname}
HostName {SERVER_IP}
User {username}
IdentityFile ~/.ssh/{nickname}_key
IdentitiesOnly yes
EOF
11. Перевірка безпеки
Перевірте, чи працює коротка команда з локального ПК і чи увімкнені базові захисти.
ssh {nickname}
sudo ufw status
sysctl net.ipv4.tcp_syncookies
12. Фінальне блокування
Встановлюємо захист від брутфорсу (fail2ban) та назавжди забороняємо вхід по паролю і вхід для root.
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo tee /etc/ssh/sshd_config.d/99-hardening.conf << 'EOF'
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
EOF
sudo sshd -t && sudo systemctl restart ssh
Порада
Готово! Сервер повністю налаштовано та захищено.