|
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 |
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
|
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"
ServerIdent on "Go Away"
RequireValidShell off
AuthUserFile "/etc/proftpd/passwd"
AuthGroupFile "/etc/proftpd/group"
Umask 077
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
DefaultRoot ~
User nobody
Group nogroup
TransferLog /var/log/transferlog
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
write_enable=NO
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
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
|
|