Ubuntu-palvelimen suojaaminen tarkoittaa tätä: salli SSH vain avaimilla, käytä oletuksena kaiken estävää palomuuria, asenna tietoturvapäivitykset automaattisesti, estä toistuvat epäonnistuneet kirjautumiset, avaa vain tarvitsemasi palvelut ja pidä testattuja varmuuskopioita. Nämä kuusi askelta pysäyttävät valtaosan julkiseen palvelimeen kohdistuvista hyökkäyksistä.
Komennot on tehty Ubuntu 24.04 LTS:lle, ja ne toimivat Debian 12:ssa pienin eroin. Aja ne sudo-oikeudet omaavana käyttäjänä. Jos perusasiat ovat vielä tekemättä, aloita oppaasta ensimmäiset askeleet uudella VPS:llä.
1. Päivitä ensin ja pidä järjestelmä ajan tasalla
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Tarkista, että ajastin on käytössä:
systemctl list-timers | grep apt
Tietoturvapäivitykset asentuvat nyt joka päivä. Tarkista aika ajoin, odottaako uudelleenkäynnistys, komennolla cat /var/run/reboot-required.
2. Lukitse SSH
Vain avaimet
Varmista, että avaimesi toimii sudo-käyttäjällä (katso SSH-avaimet). Sitten:
sudo tee /etc/ssh/sshd_config.d/10-hardening.conf >/dev/null <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
X11Forwarding no
AllowUsers deploy
EOF
sudo sshd -t && sudo systemctl reload ssh
AllowUsersrajaa SSH:n nimeämiisi tileihin. Korvaadeployomalla käyttäjälläsi.sshd -ttarkistaa tiedoston; jos se ei tulosta mitään, syntaksi on kunnossa.
Testaa uudesta pääteikkunasta ennen kuin suljet nykyisen.
Tarkista voimassa olevat asetukset
Lisätiedostot luetaan järjestyksessä, ja ensimmäinen arvo voittaa. Varmista, mitä sshd todella käyttää:
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|allowusers'
Jos cloud-init-tiedosto, kuten 50-cloud-init.conf, asettaa PasswordAuthentication yes, oma 10--tiedostosi luetaan ensin ja voittaa.
3. Oletuksena kaiken estävä palomuuri UFW:llä
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw limit OpenSSH # salli SSH, rajoita toistuvia yrityksiä
sudo ufw allow 80,443/tcp # vain jos ajat verkkopalvelinta
sudo ufw enable
sudo ufw status numbered
ufw limit estää osoitteen, joka avaa vähintään kuusi yhteyttä 30 sekunnissa, mikä hidastaa skannereita.
UFW kattaa myös IPv6:n, kunhan tiedostossa /etc/default/ufw on asetettu IPV6=yes (Ubuntun oletus).
Rajaa SSH omiin osoitteisiisi
Jos yhdistät kiinteästä osoitteesta, salli SSH vain sieltä:
sudo ufw delete limit OpenSSH
sudo ufw allow from 198.51.100.0/24 to any port 22 proto tcp # esimerkkialue
Varoitus Dockerista
Docker kirjoittaa omat iptables-sääntönsä, ja julkaistut konttiportit ohittavat UFW:n. Sido kontit localhostiin (127.0.0.1:8080:80) ja aseta käänteinen välityspalvelin eteen, tai suodata pilvipalomuurissa. Docker Compose -opas näyttää toimintatavan.
4. Lisää pilvipalomuuri eteen
Palvelimen ulkopuolinen palomuuri toimii edelleen, vaikka joku poistaisi UFW:n käytöstä, ja yksi sääntökokonaisuus voi kattaa monta palvelinta. Wolkran palomuurit ovat tilallisia, tukevat saapuvan ja lähtevän liikenteen sääntöjä, liitetään palvelimiin tai tunnistevalitsimiin eivätkä maksa mitään. Tyypillinen sääntökokonaisuus:
| Suunta | Protokolla | Portti | Lähde |
|---|---|---|---|
| Saapuva | TCP | 22 | toimistosi tai VPN:si osoitealue |
| Saapuva | TCP | 80, 443 | mikä tahansa |
| Saapuva | ICMP | – | mikä tahansa |
Vaiheet löydät dokumentaation palomuurisivulta.
5. Estä väsytyshyökkäykset Fail2banilla
sudo apt install -y fail2ban python3-systemd
sudo tee /etc/fail2ban/jail.local >/dev/null <<'EOF'
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
[sshd]
enabled = true
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
backend = systemd lukee journalia suoraan, ja juuri sinne Ubuntu 24.04 kirjaa SSH-tapahtumat. Lisää oma osoitteesi [DEFAULT]-osion ignoreip-asetukseen, jotta et koskaan estä itseäsi.
6. Vähennä kuuntelevia palveluita
Jokainen avoin portti on jotain, mitä pitää päivittää. Listaa ne:
sudo ss -tulpn
Kysy jokaisen rivin kohdalla, pitääkö sen olla tavoitettavissa internetistä. Tietokantojen, Redisin ja hallintapaneelien ei yleensä tarvitse. Sido ne osoitteeseen 127.0.0.1 tai yksityisverkon osoitteeseen ja poista paketit, joita et käytä:
sudo apt purge --autoremove <package>
7. Suojaa ydin ja verkkopino
Ubuntun oletukset ovat järkeviä. Muutama lisäasetus auttaa julkisella palvelimella:
sudo tee /etc/sysctl.d/90-hardening.conf >/dev/null <<'EOF'
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_syncookies = 1
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
EOF
sudo sysctl --system
Jätä redirect-asetukset pois, jos palvelin reitittää liikennettä, esimerkiksi VPN-yhdyskäytävänä.
8. Käytä sudoa harkiten
- Anna sudo-oikeudet vain niitä tarvitseville:
getent group sudolistaa heidät. - Älä koskaan aseta
NOPASSWD: ALLinteraktiivisille tileille. Rajaa salasanaton sudo automaatiossa tiettyihin komentoihin. - Aseta sudo-käyttäjällesi salasana, vaikka SSH käyttäisi avaimia:
sudo passwd deploy.
9. Seuraa lokeja ja kirjautumisia
last -n 20 # viimeisimmät kirjautumiset
sudo journalctl -u ssh --since today
sudo journalctl -p err -b # virheet käynnistyksen jälkeen
Tiedostojen eheyden tarkistukseen ja nopeaan auditointiin Lynis on hyvä alku:
sudo apt install -y lynis
sudo lynis audit system
Se tulostaa koventamisindeksin ja listan ehdotuksia. Pidä niitä ideoina, älä käskyinä.
Wolkran konsoli näyttää palvelinkohtaiset prosessori-, levy- ja verkkokaaviot (valvonta). Äkillinen liikenne- tai prosessoripiikki on usein ensimmäinen merkki murretusta palvelusta.
10. Suojaa tili, ei vain palvelinta
Palvelimen koventaminen menee hukkaan, jos joku pääsee kirjautumaan pilvitilillesi. Wolkran konsolissa:
- ota käyttöön kaksivaiheinen tunnistautuminen (TOTP);
- käy läpi aktiiviset istunnot ja kirjaa vanhat ulos;
- anna tiimin jäsenille alin toimiva rooli;
- käytä mahdollisuuksien mukaan API-tunnisteita, jotka ovat vain luku -tunnisteita, IP-rajattuja ja vanhenevia.
Katso tilin tietoturva ja API-tunnisteet.
11. Varmuuskopioi ja testaa palautus
Tietoturvaan kuuluu myös palautuminen. Ota käyttöön päivittäiset varmuuskopiot tai tilannevedokset ja säilytä vähintään yksi kopio palvelimen ulkopuolella. Palauta sitten kerran uudelle palvelimelle varmistaaksesi, että se toimii. Varmuuskopiointistrategiaoppaassa on kokonainen suunnitelma.
Tarkistuslista
- Automaattiset tietoturvapäivitykset käytössä
- Vain SSH-avaimet, root-kirjautuminen pois,
AllowUsersasetettu - UFW estää oletuksena, vain tarvittavat portit auki
- Pilvipalomuuri edessä, SSH rajattu tunnettuihin osoitealueisiin
- Fail2ban käynnissä
- Ei mitään odottamatonta komennon
ss -tulpntulosteessa - Sysctl-koventaminen tehty
- Sudo rajattu, 2FA käytössä pilvitilillä
- Varmuuskopiot käytössä ja palautus testattu
Jos jokin menee pieleen sääntöjä kiristäessä, palvelinnäkymän selainkonsoli ja pelastustila päästävät sinut takaisin sisään ilman SSH:ta.
Usein kysytyt kysymykset
Mikä on tärkein askel Ubuntu-palvelimen suojaamisessa?
Käytä SSH-avaimia ja poista salasanakirjautuminen käytöstä. Useimmat uusiin palvelimiin kohdistuvat hyökkäykset ovat automaattisia salasanan arvauksia, ja pelkillä avaimilla kirjautuminen pysäyttää ne.
Tarvitsenko Fail2bania, jos salasanat on poistettu käytöstä?
Se ei ole yhtä kriittinen, mutta vähentää silti lokien kohinaa ja hidastaa skannereita. Siitä on hyötyä myös verkkokirjautumisille ja muille salasanoja käyttäville palveluille.
Pitäisikö SSH-portti vaihtaa?
Se vähentää lokien kohinaa, mutta ei ole todellista tietoturvaa. SSH:n rajaaminen tunnettuihin lähdeosoitteisiin palomuurilla tekee paljon enemmän.
Riittääkö UFW, vai tarvitsenko myös pilvipalomuurin?
UFW suojaa palvelinta sisältä päin. Pilvipalomuuri suodattaa liikenteen ennen kuin se saapuu ja toimii, vaikka joku rikkoisi palvelimen omat säännöt. Molempien käyttäminen on hyvä oletus.
Toimivatko nämä vaiheet Debian 12:ssa?
Lähes kaikki. Debian käyttää samoja paketteja; asenna ensin sudo ja ufw, jos ne puuttuvat.