Palvelimien koventaminen ja Lynis-muistiinpanot – tekninen kuvaus
Käytän Lynis-työkalua apuna Linux-palvelimien koventamisessa ja kirjaan tärkeimmät muutokset muistiin. Tavoitteena ei ole “täydellinen” kovennus, vaan tasapaino: turvallinen, mutta silti hallittava ympäristö, jonka voi toistaa myöhemmin uudessa asennuksessa.
Lähtökohta ja työkalut
Perusprosessi jokaisella palvelimella on samankaltainen:
- asennan Lynis-työkalun ja ajan perusauditoinnin
- tunnistan kriittisimmät kohdat (SSH, kernel/sysctl, palvelut, lokitus)
- teen muutokset vaiheittain ja dokumentoin lyhyesti mitä muutin ja miksi
- ajan Lyniksen uudelleen ja varmistun, ettei kovennus riko olemassa olevia palveluita
Muistiinpanot dokumentoin tyypillisesti jaettavaksi esim. tekstitiedostona tai HTML-muodossa: “mitä tehtiin ja mitä pitää muistaa seuraavassa palvelimessa”.
SSH-asetukset
SSH on useimmilla palvelimilla ensimmäinen ja tärkein sisäänkäynti. Tyypilliset muutokset ja tarkistukset:
- poistan suoran root-kirjautumisen tai rajoitan sen vain tietyille verkoille
- siirryn mahdollisuuksien mukaan pelkkään avainpohjaiseen kirjautumiseen
- kirjaan ylös käytetyt asetukset, kuten
PasswordAuthentication,PermitRootLoginjaPubkeyAuthentication - määritän idlen aikakatkaisun (esim.
ClientAliveIntervaljaClientAliveCountMax) - varmistun, että lokitus on päällä ja SSH-tapahtumat päätyvät järjestelmälokeihin
Muutokset tehdään hallitusti: ensin konfiguraatio, sen jälkeen uusi sessio SSH:lla ja vasta kun se toimii, palvelun uudelleenkäynnistys ja vanhan session sulkeminen.
sysctl-säädöt: verkko, kernel ja muisti
Lynis nostaa usein esiin sysctl-tason parannuksia. Tyypillisesti käsittelen mm.:
- IP forwarding -asetukset ja tarpeettoman reitityksen kytkeminen pois
- ICMP-, source routing- ja redirect-asetusten kiristäminen
- TCP stackin peruskovennus (esim. SYN cookies, backlog-arvot)
- kernelin “hardening”-asetukset, jotka vähentävät turhia tietovuotoja ja parantavat prosessieristystä, jos distro tukee niitä
Muutokset teen erilliseen /etc/sysctl.d/-tiedostoon, jotta
ne ovat selkeästi rajattuja ja helposti siirrettävissä toiseen ympäristöön.
Palveluiden minimointi
Yksi helpoimmista ja tehokkaimmista kovennuksista on vähentää palveluiden määrää:
- kartoitus: mitä demoneita on käynnissä, mitä oikeasti tarvitaan
- turhien palveluiden pysäyttäminen ja disablointi (esim. käyttämättömät tulostus-, Bluetooth- tai testipalvelut)
- selkeä lista: “mitä jää päälle ja miksi”
Dokumentoin erikseen, jos palvelin on tarkoituksella moniroolinen (esim. DNS + web + varmistus), jotta kokonaisuus säilyy ymmärrettävänä myöhemminkin.
Lokitus ja seuranta
Kovennus ilman näkyvyyttä on lähinnä harras toive. Lokituksen osalta tarkistan:
- mitä kirjataan ja mihin: järjestelmälokit, sovelluskohtaiset lokit
- säilytysaika ja rotaatio (esim.
logrotate-konfiguraatio) - tarvitaanko erillinen lokipalvelin tai etärotaatio
- mitkä tapahtumat ovat “hälytyksen” arvoisia (esim. epäonnistuneet SSH-yritykset)
Lynis-raportista poimin erityisesti kohdat, joissa lokitus on kokonaan pois päältä tai hyvin suppea, ja kirjaan muutokset muistiin.
Tasapaino: turvallinen mutta hallittava
Tavoite ei ole rakentaa maksimaalista kovennusta, joka kaatuu ylläpidettävyyteen, vaan:
- selkeästi dokumentoidut muutokset (mitä, missä tiedostossa, miksi)
- toistettava “checklist”, jonka voi ajaa läpi uudessa palvelimessa
- ympäristö, jossa lokit kertovat riittävästi, mutta eivät täytä levyä
Lopuksi ajan Lyniksen uudelleen ja merkitsen talteen: mitä huomioita “hyväksyn” ympäristöön (esim. tarkoituksella auki olevat portit) ja mitkä korjaan vielä myöhemmin.