Linux-palvelimen tietoturva
Ajattelin keräillä tähän listan toimenpiteistä, joilla kukin voi parantaa oman kotipalvelimensa tietoturvaa. Täydentäkää listaa omien tietojenne ja kokemustenne perusteella.
Oletetaan, että palvelimella pyörivät ainakin seuraavat palvelut: Apache2, php, mysql, openssh.
Yleistä:
- Älä aja ohjelmia root-tunnuksilla
- Pidä kaikkien ohjelmistojen päivitykset ajantasalla!
Apache:
- Muuta web-palvelimen portti pois portista 80
- Aja Apache omalla tunnuksellaan ja ryhmällään
- Piilota Apachen versio numero ja muu yksityiskohtainen tieto (httpd.conf: ServerSignature off, ServerTokens Prod)
- Estä Apachea lukemasta tiedostoja web-roottisi ulkopuolelta
- Estä Apache seuraamasta symbolisia linkkeja
- Kytke CGI suoritus pois
- Poistakäytöstä tarpeettomat moduulit
- Varmista, että vain root-käyttäjällä on lukuoikeus apachen binääreihin ja asetustiedostoihin
- Aja Apache chrootatussa ympäristossä
- Käytä mod_security:a http://www.modsecurity.org/
- Päivitä 3. osapuolen scriptit (esim. phpfoorumit), välttääksesi tunnettujen haavoittuvuuksien hyväksikäytön
PHP:
- näytä virheet vain itsellesi (php.ini error_reporting)
- REGISTER_GLOBALS pois päältä php.ini:sta
- MAGIC_QUOTES_GCP päälle php.ini:sta
- SAFE_MODE päälle mikäli käyttösi sallii asetuksen tuomat rajoitukset
- ALLOW_URL_FOPEN pois päältä
- Disabloi vaarallisia funktioita (disable_functions: exec, popen)
- Aja php-sivut .html pääteisistä tiedostoista
MySQL:
- Määritä käyttäjätunnus ja salasana
- Salli pääsy vain tarvittaville ip-osoitteille
OpenSSH:
- Muuta ssh-portti 22 toiseen porttiin
- Käytä salasanan sijasta "Private key"-kirjautumista
- Estä pääsy ulkomaalaisista IP-osoitteista (esim. hosts.allow & hosts.deny -tiedostoista)
Muuta:
- Tarkkaile logeja hyökkäysten varalta (onnistuu vaikka ohjelmalla, joka raportoi sähköpostiisi)
- Asenna FAIL2BAN-ohjelma (tai vastavaa), joka seuraa logeja ja bannii ip:n mikäli havaitseen sen syöttävän X kertaa salasanan väärin ohjelmmassa Y.
Ajattelin keräillä tähän listan toimenpiteistä, joilla kukin voi parantaa oman kotipalvelimensa tietoturvaa. Täydentäkää listaa omien tietojenne ja kokemustenne perusteella.
Oletetaan, että palvelimella pyörivät ainakin seuraavat palvelut: Apache2, php, mysql, openssh.
Yleistä:
- Älä aja ohjelmia root-tunnuksilla
- Pidä kaikkien ohjelmistojen päivitykset ajantasalla!
Apache:
- Muuta web-palvelimen portti pois portista 80
- Aja Apache omalla tunnuksellaan ja ryhmällään
- Piilota Apachen versio numero ja muu yksityiskohtainen tieto (httpd.conf: ServerSignature off, ServerTokens Prod)
- Estä Apachea lukemasta tiedostoja web-roottisi ulkopuolelta
- Estä Apache seuraamasta symbolisia linkkeja
- Kytke CGI suoritus pois
- Poistakäytöstä tarpeettomat moduulit
- Varmista, että vain root-käyttäjällä on lukuoikeus apachen binääreihin ja asetustiedostoihin
- Aja Apache chrootatussa ympäristossä
- Käytä mod_security:a http://www.modsecurity.org/
- Päivitä 3. osapuolen scriptit (esim. phpfoorumit), välttääksesi tunnettujen haavoittuvuuksien hyväksikäytön
PHP:
- näytä virheet vain itsellesi (php.ini error_reporting)
- REGISTER_GLOBALS pois päältä php.ini:sta
- MAGIC_QUOTES_GCP päälle php.ini:sta
- SAFE_MODE päälle mikäli käyttösi sallii asetuksen tuomat rajoitukset
- ALLOW_URL_FOPEN pois päältä
- Disabloi vaarallisia funktioita (disable_functions: exec, popen)
- Aja php-sivut .html pääteisistä tiedostoista
MySQL:
- Määritä käyttäjätunnus ja salasana
- Salli pääsy vain tarvittaville ip-osoitteille
OpenSSH:
- Muuta ssh-portti 22 toiseen porttiin
- Käytä salasanan sijasta "Private key"-kirjautumista
- Estä pääsy ulkomaalaisista IP-osoitteista (esim. hosts.allow & hosts.deny -tiedostoista)
Muuta:
- Tarkkaile logeja hyökkäysten varalta (onnistuu vaikka ohjelmalla, joka raportoi sähköpostiisi)
- Asenna FAIL2BAN-ohjelma (tai vastavaa), joka seuraa logeja ja bannii ip:n mikäli havaitseen sen syöttävän X kertaa salasanan väärin ohjelmmassa Y.
Vastaukset 3
Vanhimmat
Lokien selailu onnistuneen hyökkäyksen löytämiseksi on ajan hukkaa. Tunkeutumisen havaitsemiseen on tehokkaampiakin työkaluja, kuten
http://www.cs.tut.fi/~rammer/aide.html
Tietoturvan parantaja voisi olla myös kiinnostunut virtuaalikoneista.
Currently there are no mirrors. The version at ftp.linux.hr is hacked. So for the moment please get the source from official site below.
Helpointahan on että blokkaa palomuurilla ulkoa tulevat yhteydet, näin ei pääse Apacheen käsiksi. Ja jos sisäverkon koneista pitää päästä niin sitten sallii niistä. Riippuu tietenkin mimmoinen kotipalvelin. Sekä palvelin kannattaa laittaa ihan eri koneelle kuin päivittäiskäytössä olevaan, nykyään saa kympilläkin käytettyjä koneita palvelin käyttöön.
"- Muuta web-palvelimen portti pois portista 80"
Pikkuinen portti skannaus niin tuo portti selviää. Sekä tuo hankaloittaa jos on tarkoitus tehdä julkinen kotipalvelin.
"- Varmista, että vain root-käyttäjällä on lukuoikeus apachen binääreihin ja asetustiedostoihin"
Meinaat ettei Apache tarvitse noihin tiedostoihin oikeuksia?
"- Aja php-sivut .html pääteisistä tiedostoista"
Miksi? .html tiedostot ovat staattisia eivätkä dynaamisia. Ja yleensä kotipalvelin on opettelu juttuihin, jolloin tulee opittua käyttämään noita asioita väärin.
Toki tiedosto päätteen vaihtaminen tuo hitusen turvallisuutta, mutta tämä asia on niin ja näin varsinkin jos käyttää tunnettuja PHP-scriptejä, silloin pienellä päättelyllä tuo asia selviää. Tosin tuo kannattaa tehdä niin että vaihtaa vain niiden tiedostojen päätteet joiden sisällöstä ei pysty päättelee että on jokin serveripuolenkieli.
Jos pääte halutaan .html niin silloin dynaamiset sivut .html ja staattiset .htm, näin staattisia sivuja ei laiteta turhaan PHP-tulkin kautta.
"- REGISTER_GLOBALS pois päältä php.ini:sta"
Näin on oletuksena, ja tuo asetus poistuu PHP 6
"- SAFE_MODE päälle mikäli käyttösi sallii asetuksen tuomat rajoitukset"
Kyllä ja ei. Tuo asetus poistuu PHP 6, sekä usein web-hotelleissa tuo on tehty hieman eritavalla jolloin päästään melkein samaan kuin safe mode, mutta ilman sen ongelmi.
"- Salli pääsy vain tarvittaville ip-osoitteille"
Yleensä järkevintä on estää pääsy IP-osotteista(verkosta), vain lokaali kirjaantuminen sallitaan (--skip-network) tällöin toki palvelimella olevat MySQL foorumit jne... toimivat normaalisti. Mikäli kantaa tarttee hallita netin kautta niin se hoidetaan scriptien kautta esim http://www.phpmyadmin.net .