SSH autentikacija be slaptažodžio
Savo kompiuteryje sugeneruojame privatų ir viešą raktą:
ssh-keygen -t rsa -b 4096 -C "user@server"
~/.ssh kataloge bus sukurti privatus ir viešas raktai (atitinkamai id_rsa ir id_rsa.pub failai).
Sugeneruotą viešą raktą įrašome į serverio vartotojo ~/.ssh/authorized_keys failą.
Bandome jungtis prie serverio ir, jei sėkmingai prisijungiame be slaptažodžio, redaguojame /etc/ssh/sshd_config failą ir išjungiame galimybę prisijungti su slaptažodžiu:
PasswordAuthentication no
Debian, systemd ir žurnalai
Debian 12 neturi /var/log/auth.log failo, sshd logus galima skaityti systemd journalctl priemonės pagalba:
sudo journalctl -u ssh.service
Išvalome logus su šia komanda:
sudo journalctl --rotate --vacuum-time=1s
ufw ugniasienės konfigūracija
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
sudo ufw status
fail2ban instaliacija ir konfigūracija
sudo apt install fail2ban python3-systemd #Debian 12 bugas - fail2ban automatiškai neįrašo python3-systemd paketo, kuris yra būtinas, nes Debian 12 neturi /var/log/auth.log failo, tad fail2ban neveikia kol nėra įrašomas python3-systemd, kuris leidžia fail2ban skaityti systemd žurnalus
Sukuriame /etc/fail2ban/jail.local failą su tokiu turiniu:
[DEFAULT]
backend = systemd
bantime = 24h
findtime = 120m
maxretry = 3
banaction = ufw
banaction_allports = ufw
port = 0:65535
[sshd]
mode = aggressive
enabled = true
Perkrauname fail2ban servisą ir patikriname ar viskas veikia:
sudo systemctl restart fail2ban
sudo systemctl status fail2ban
Jei viskas padaryta tvarkingai ir serveris yra atviras internetui, jau po poros minučių ufw status komanda pradės rodyti užblokuotus ip adresus:
