Gentoo Logo

1.  Apache

Apachessa on melko hyvät asetukset suoraan, mutta joitain asioita pitää vielä parantaa. Apache pitää sitoa vain yhteen osoitteeseen, jottei se vuoda. Alla on asetuksia, joita kannattaa käyttää.

Jos Apache on asennettu ssl-flägi päällä, sitä voi käyttää ssl:n kanssa. Hakemistossa /etc/apache2/vhosts.d on esimerkkiasetustiedostoja. Nämä ovat käytössä olevia esimerkkejä, joten ne kannattaa käydä läpi tai poistaa käytöstä.

Asetusten määrittely kuuntelemaan oikeita osoitteita on tärkeää (jottei palvelin kuuntele kaikkia rajapintoja). Esimerkiksi asetustiedostossa 00_default_vhost.conf:

Koodilistaus 1.1: /etc/apache2/vhosts.d/00_default_vhost.conf

# Käytä oikeaa IP:tä
Listen 127.0.0.1

Kannattanee myös estää Apacheja kertomaan tietoja itsestään. Oletuksena annetaan palvelimen asetukset ja virtuaaliosotteiden nimet palvelimen luomille sivuille. Tämän saa pois päältä asettamallan ServerSignature arvoksi' Off:

Koodilistaus 1.1: /etc/apache2/modules.d/00_default_settings.conf

ServerSignature Off

Apache käännetään asetuksin --enable-shared=max ja --enable-module=all. Tämä mahdollistaa moduulien poiston kommentoimalla asetustiedoston LoadModule-osiot (LoadModule ja AddModule) pääasetustiedostosta /etc/apache2/httpd.conf. Apache uudelleenkäynnistetään komennolla /etc/init.d/apache2 restart.

Apachen ohjeet löytyvät osoitteesta http://www.apache.org.

1.  Bind

Bindin ohjeet löytyvät Internet Software Consortiumin BIND-sivuilta. BIND 9 Administrator Reference Manual löytyy myös hakemistosta /doc/arm.

Uusin BIND tukee chrootausta suoraan. Asennuksen jälkeen:

Koodilistaus 1.1: BINDin chroottaus

# emerge --config bind
(Ennen komennon ajamista chroot-hakemiston voi vaihtaa tiedostossa
/etc/conf.d/named. Oletuksena on /chroot/dns.)

1.  Djbdns

Djbdns on DNS-palvelin, jonka tietoturvasta sen tekijä on lyönyt vetoa. Se on merkittävästi erilainen kuin Bind 9, mutta kokeilun arvoinen. Lisätietoja löytyy osoitteesta http://www.djbdns.org.

1.  FTP

FTP (File Transfer Protocol) on yleisesti ottaen huono idea. Se lähettää kaiken salaamattomana (esim. salasanat), kuuntelee kahta porttia (tavallisesti 20 ja 21), ja hyökkääjät skannaavat niitä anonyymipalvelinten varalle vaihtaakseen mahdollisesti laitonta dataa. FTP-käytännön sijasta kannattaa harkita sftp:tä tai HTTP:tä. Jos tämä ei ole mahdollista, kannattaa varmistautua turvata hyvin palvelu.

1.  Mysql

Jos mysql:ään tarvitsee päästä vain paikallisesti kiinni, poista komnentit seuraavilta riveiltä tiedostossa /etc/mysql/my.cnf.

Koodilistaus 1.1: Verkkoyhteyksien poisto

skip-networking

Seuraavaksi poistetaan komento LOAD DATA LOCAL INFILE. Tällä vältetään paikallisten tiedostojen luvaton lukeminen, joka liittyy moniin SQL-injektiohaavoittuvuuksiin suosituissa PHP-sovelluksissa.

Koodilistaus 1.1: Poista LOAD DATA LOCAL INFILE käytöstä [mysqld]-osasta

set-variable=local-infile=0

Seuraavaksi poistetaan esimerkkitietokanta (test) ja kaikki muut käyttäjät paitsi paikallinen root.

Koodilistaus 1.1: Esimerkkitietokannan ja turhien käyttäjien poisto

mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where not (host="localhost" and user="root");
mysql> flush privileges;

Varoitus: Kannattaa varoa, ettei poista jo asetettuja käyttäjiä.

Huomaa: Jos muutat salasanoja MySQL:n komentokehotteesta, pitää aina puhdistaa ~/.mysql_history ja /var/log/mysql/mysql.log jonne salasanat jäisivät muistiin salaamattomina.

1.  Proftpd

Proftpd:ssä on ollut joitakin tietoturvaongelmia, mutta useimmat on korjattu Joka tapauksessa on hyvä lisätä joitain asetuksia:

Koodilistaus 1.1: /etc/proftpd/proftpd.conf

ServerName "Minun ftp:ni"
#Don't show the ident of the server
ServerIdent on "Go Away"

#Makes it easier to create virtual users
RequireValidShell off

#Use alternative password and group file (passwd uses crypt format)
AuthUserFile "/etc/proftpd/passwd"
AuthGroupFile "/etc/proftpd/group"

# Permissions
Umask 077

# Timeouts and limitations
MaxInstances 30
MaxClients 10 "Only 10 connections allowed"
MaxClientsPerHost 1 "You have already logged on once"
MaxClientsPerUser 1 "You have already logged on once"
TimeoutStalled 10
TimeoutNoTransfer 20
TimeoutLogin 20

#Chroot everyone
DefaultRoot ~

#don't run as root
User  nobody
Group nogroup

#Log every transfer
TransferLog /var/log/transferlog

#Problems with globbing
DenyFilter \*.*/

Ohjeita löytyy verkkosivuilta http://www.proftpd.org.

1.  Pure-ftpd

Pure-ftpd on trollftpd:n kehityshaara, jossa tietoturvaa on parannettu ja toimintoja lisätty. Siitä vastuussa on Frank Dennis.

Näennäiskäyttäjät (eivät vastaa järjestelmän käyttäjiä) saa päälle AUTH-asetuksesta. Sen arvoksi kannattaa panna -lpuredb:/etc/pureftpd.pdb ja luoda käyttäjiä komennolla /usr/bin/pure-pw.

Koodilistaus 1.1: /etc/conf.d/pure-ftpd

AUTH="-lpuredb:/etc/pureftpd.pdb"

## Misc. Others ##
MISC_OTHER="-A -E -X -U 177:077 -d -4 -L100:5 -I 15"

Asetuksella MISC_OTHER kielletään anonyymit kirjautumiset (-E), chrootataan kaikki (-A), estetään käyttäjiä kirjoittamasta pisteellä . alkavia tiedostoja (-X), asetetaan idlausaika (-I), rajoitetaan rekursiotasoja (-L) ja asetetaan umask.

Varoitus: Asetuksia -w tai -W ei tule käyttää, jollei jaa laitonta materiaalia, ja silloin tämä on väärä opas lukea.

Ohjeet löytyvät verkosta http://www.pureftpd.org.

1.  Vsftpd

Vsftpd (Very Secure FTP) on pieni ja yksinkertainen ftp-palvelu.

Koodilistaus 1.1: /etc/vsftpd

anonymous_enable=NO
local_enable=YES

#read only
write_enable=NO

#enable logging of transfers
xferlog_std_format=YES

idle_session_timeout=20
data_connection_timeout=20
nopriv_user=nobody

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chrootlist

ls_recurse_enable=NO

Kuten huomataan, ei ole mahdollista asettaa tälle palvelulle oikeuksia erikseen, mutta anonyymiasetukset toimivat hyvin. Joskus anonyymitiedostonjako on hyödyllistä, ja vsftpd sopii siihen.

1.  Netqmail

Netqmailia pidetään hyvin tietoturvallisena postipalvelimena. Se onkin kirjoitettu nimenomaan tietoturvaa silmällä pitäen. Se ei pidä sähköpostien edelleensiirtämistä oletuksena päällä, eikä siinä ole ollut tietoturva-aukkoja sitten 1996:n. Asennus tapahtuu komennolla emerge netqmail, jonka jälkeen voi säätää asetuksia.

1.  Samba

Samba on Microsoft/Novell-verkkojen yhteyskäytäntö, eikä sitä tulisi käyttää Internetin ylitse. Se tarvitsee myös tietoturva-asettamista:

Koodilistaus 1.1: /etc/samba/smb.conf

[global]
  #Bind to an interface
  interfaces = eth0 10.0.0.1/32

  #Make sure to use encrypted password
  encrypt passwords = yes
  directory security mask = 0700

  #allow traffic from 10.0.0.*
  hosts allow = 10.0.0.

  #Enables user authentication
  #(don't use the share mode)
  security = user

  #Disallow privileged accounts
  invalid users = root @wheel

  #Maximum size smb shows for a share (not a limit)
  max disk size = 102400

  #Uphold the password policy
  min password length = 8
  null passwords = no

  #Use PAM (if added support)
  obey pam restrictions = yes
  pam password change = yes

Varmista oikeudet kaikissa jaetuissa hakemistoissa ja lue ohjeet Samban kotisivuilta.

Palvelu pitää vielä käynnistää uudelleen ja lisätä käyttäjät, joilla on oikeus käyttää sitä. Tämä tehdään komennolla /usr/bin/smbpasswd käyttäen valitsinta -a.

1.  Ssh

Ainoa tietoturva-asetus jonka OpenSSH tarvitee on vahvemman, julkisen avaimen varmennuksen kääntäminen päälle. Monet palvelimet, kuten http://www.sourceforge.net, http://www.php.net ja http://www.apache.org ovat kärsineet hyökkääjistä, jotka ovat päässeet vuotaneiden tai huonojen salasanojen avulla sisään.

Koodilistaus 1.1: /etc/ssh/sshd_config

#Only enable version 2
Protocol 2

#Disable root login. Users have to su to root
PermitRootLogin no

#Turn on Public key authentication
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

#Disable .rhost and normal password authentication
HostbasedAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no

#Only allow userin the wheel or admin group to login
AllowGroups wheel admin

#In those groups only allow the following users
#The @<domainname> is optional but replaces the
#older AllowHosts directive
AllowUsers kn@gentoo.org bs@gentoo.org

#Logging
SyslogFacility AUTH
LogLevel INFO

# Korvaa osoitteellasi
ListenAddress 127.0.0.1

Ota myös asetus UsePAM yes pois käytöstä, koska se estää julkisen avaimen varmennusta toimimasta. Voi myös poistaa käytöstä joko asetuksen PasswordAuthentication tai ChallengeResponseAuthentication. Näistä lisää ohjesivulla sshd_config.

Nyt kaikkien käyttäjien tarvitsee tehdä avain (koneella jolta sisään kirjaudutaan) seuraavalla komennolla:

Koodilistaus 1.1: DSA-avainparin tekeminen

# /usr/bin/ssh-keygen -t dsa

Ja kirjoittaa salasana.

Koodilistaus 1.1: Ssh-keygenin eräs tuloste

Generating public/private dsa key pair.
Enter file in which to save the key (/home/kn/.ssh/id_dsa):[Press enter]
Created directory '/home/kn/.ssh'.
Enter passphrase (empty for no passphrase): [Enter passphrase]
Enter same passphrase again: [Enter passphrase again]
Your identification has been saved in /home/kn/.ssh/id_dsa.
Your public key has been saved in /home/kn/.ssh/id_dsa.pub.
The key fingerprint is:
07:24:a9:12:7f:83:7e:af:b8:1f:89:a3:48:29:e2:a4 kn@knielsen

Tämä lisää kaksi tiedostoa hakemistoon ~/.ssh/. Tiedosto id_dsa on yksityinen avain, jota ei anneta muille ihmisille. Tiedost id_dsa.pub taasen jaetaan kaikille palvelimille, joille halutaan päästä. Avain pitää lisätä tiedostoon ~/.ssh/authorized_keys että käyttäjä pystyy kirjautumaan:

Koodilistaus 1.1: Id_dsa.pubin lisäys authorized_keysiin

$ scp id_dsa.pub other-host:/var/tmp/currenthostname.pub
$ ssh other-host
password:
$ cat /var/tmp/currenthostname.pub >> ~/.ssh/authorized_keys

Käyttäjien pitäisi suojella yksityisavainta hyvin. Sitä kannattaa säilyttää tallenteella, jota kuljetetaan mukana, tai työaseman suojatussa paikassa.

Lisätietoja OpenSSH:n verkkosivuilla.

1.  Xinetd

Xinetd on inetd:n (jota Gentoossa ei edes ole) korvike. Sen avulla asetetaan käyttörajoitukseia sen perusteella mistä verkosta otetaan yhteyttä ja mihin aikaan. Siinä on myös laajat lokituet, joilla saa selville palvelun aloitusajat, etäosoitteen, etäkäyttäjän, palvelun kestoajan ja käytetyt toiminnot.

Kuten muissakin palveluissa, oletusasetusten turvaaminen on tärkeää. Koska xinetd toimii rootin oikeuksin ja tukee yhteyskäytäntöjä, joiden toiminnasta ei välttämättä ole tarpeeksi tietoja, sen käyttämistä ei suositella. Sen suojaaminen muussa tapauksessa onnistuu seuraavasti:

Koodilistaus 1.1: Xinetd:n asennus

# emerge xinetd tcp-wrappers

Ja asetukset:

Koodilistaus 1.1: /etc/xinetd.conf

defaults
{
 only_from = localhost
 instances = 10
 log_type = SYSLOG authpriv info
 log_on_success = HOST PID
 log_on_failure = HOST
 cps = 25 30
}

# This will setup pserver (cvs) via xinetd with the following settings:
# max 10 instances (10 connections at a time)
# limit the pserver to tcp only
# use the user cvs to run this service
# bind the interfaces to only 1 ip
# allow access from 10.0.0.*
# limit the time developers can use cvs from 8am to 5pm
# use tpcd wrappers (access control controlled in
# /etc/hosts.allow and /etc/hosts.deny)
# max_load on the machine set to 1.0
# The disable flag is per default set to no but I like having
# it in case of it should be disabled
service cvspserver
{
 socket_type = stream
 protocol = tcp
 instances = 10
 protocol = tcp
 wait = no
 user = cvs
 bind = 10.0.0.2
 only_from = 10.0.0.0
 access_times = 8:00-17:00
 server = /usr/sbin/tcpd
 server_args = /usr/bin/cvs --allow-root=/mnt/cvsdisk/cvsroot pserver
 max_load = 1.0
 log_on_failure += RECORD
 disable = no
}

Lisätietoja ohjesivulta man 5 xinetd.conf.

1.  X

Xorg toimii oletusarvoisesti X-palvelimena. Tämä saattaa olla vaarallista koska X käyttää salaamatonta TCP-yhteyttä ja kuuntelee Xclientejä.

Tärkeää: Jos tätä palvelua ei tarvita, se kannattaa poistaa!

Mutta jos työasemaa tarvitsee käyttää X-etäpalvelimena, kannattaa olla varovainen /usr/X11R6/bin/xhost-komennon kanssa. Tämä komento antaa etäkoneille luvat ottaa yhteyden ja käyttää X-näyttöjä. Tämä on käytännöllistä jos tarvitsee etäkäyttää X-sovelluksia, mutta se on myös turvallisuusriski. Komentoa kutsutaan seuraavasti /usr/X11R6/bin/xhost +hostname

Varoitus: Ei kannata käyttää komentoa xhost +! Se antaa kaikille luvan ottaa yhteyden ja hallita X:ää. Jos hyökkääjä saa yhteyden X:ään, hän voi tallentaa näppäimistön näppäilyt ja ottaa koneen haltuunsa. Jos komentoa täytyy käyttää, pitää aina määritellä konenimi.

Turvallisempi ratkaisu on poistaa tämä kokonaan käytöstä käynnistämällä X komennolla startx -- -nolisten tcp tai poistaa se asetuksista kokonaan.

Koodilistaus 1.1: /usr/X11R6/bin/startx

defaultserverargs="-nolisten tcp"

Jotta startx ei korvaudu Xorgin päivityksessä, se pitää suojata lisäämällä seuraava rivi /etc/make.confiin:

Koodilistaus 1.1: /etc/make.conf

CONFIG_PROTECT_MASK="/usr/X11R6/bin/startx"

Graafinen kirjautuminen tarvitsee toisenlaista ratkaisua.

gdm (Gnome Display Manager)

Koodilistaus 1.1: /etc/X11/gdm/gdm.conf

[server-Standard]
command=/usr/X11R6/bin/X -nolisten tcp

xdm (X Display Manager) ja kdm (Kde Display Manager)

Koodilistaus 1.1: /etc/X11/xdm/Xservers

:0 local /usr/bin/X11/X -nolisten tcp

Viimeksi päivitetty 13. kesäkuuta 2008

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.