Wolkra

Oppaat

Näin suojaat Ubuntu-palvelimen

Suojaa Ubuntu 24.04 -palvelin vaihe vaiheelta: pelkät SSH-avaimet, UFW, Fail2ban, automaattiset päivitykset, pilvipalomuuri, auditointi ja varmuuskopiot. Oikeat komennot ja tarkistukset.

Päivitetty 4 min lukuaika

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

bash
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ä:

bash
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:

bash
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
  • AllowUsers rajaa SSH:n nimeämiisi tileihin. Korvaa deploy omalla käyttäjälläsi.
  • sshd -t tarkistaa 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ää:

bash
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ä

bash
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ä:

bash
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

bash
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:

bash
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ä:

bash
sudo apt purge --autoremove <package>

7. Suojaa ydin ja verkkopino

Ubuntun oletukset ovat järkeviä. Muutama lisäasetus auttaa julkisella palvelimella:

bash
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 sudo listaa heidät.
  • Älä koskaan aseta NOPASSWD: ALL interaktiivisille 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

bash
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:

bash
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, AllowUsers asetettu
  • UFW estää oletuksena, vain tarvittavat portit auki
  • Pilvipalomuuri edessä, SSH rajattu tunnettuihin osoitealueisiin
  • Fail2ban käynnissä
  • Ei mitään odottamatonta komennon ss -tulpn tulosteessa
  • 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.

Käynnistä palvelin Frankfurtissa

Luo tili, lataa saldoa ja aja palvelinta alkaen €3.49 kuukaudessa. Maksat vain käyttämistäsi tunneista. Mittaamaton kaistanleveys kaikissa paketeissa.