Gentoo Logo

[ << ] [ < ] [ Kezdőlap ] [ > ] [ >> ]


10. Biztonságos szolgáltatások

Tartalom:

10.a. Apache

Az Apache egy nagyon kedves kis beállítási fájllal rendelkezik, de néhány apró kis változtatás szükséges, hogy betömjük a kis hajónkon lévő információs lékeket, valamint meg kell adnunk neki egy címet. Lejjebb láthatod, hogy milyen feltételeknek kéne megfelelnie a beállítófájlnak.

Ha nem tiltod le az ssl-t a /etc/make.conf-odban mielőtt telepíted az Apache-t, és kellene egy szerver, amin engedélyezve van az ssl, akkor add hozzá a következő sort:

Kódlista 1.1: /etc/conf.d/apache

HTTPD_OPTS="-D SSL"

Kódlista 1.2: /etc/apache/conf/apache.conf

#Írd fel a listára az IP-det
Listen 127.0.0.1
BindAddress 127.0.0.1
#Nem jó ötlet nobody vagy nogroup jogosultsággal fottatni - 
#Persze a root is pocsék ötlet 
#(használd nyugodtan az apache felhasználót az apache csoportban)
User apache
Group apache
#Tartsd magad távol az apache verziójának a kifecsegésétől
ServerSignature Off
ServerTokens Prod

Az Apache --enable-shared=max és--enable-module=all kapcsolókkal lett lefordítva, így alapértelmezésben engedélyezve van az összes modul, és az összes modult commenteld a LoadModule részben (LoadModule és AddModule) amit nem használsz. Indítsd újra az /etc/init.d/apache restart futtatásával.

Elérhető dokumentációk: http://www.apache.org.

10.b. Bind

A dokumentációt az Internet Szoftver Konzorcium oldalán keresd. A BIND 9 Adminisztrátorok Kézikönyve a doc/arm részen van.

Az újabb BIND ebuildok alapból támogatják a chrootolást. Miután emergelted a bind-et kövest az alábbi egyszerű példát:

Kódlista 2.1: BIND chrootolás

# emerge --config bind
(Mielőtt futtatod a fenti parancsot lehet, hogy cserélni szeretnéd a 
chroot könyvtárát az /etc/conf.d/named-ben. Minden egyéb esetben a /chroot/dns 
lesz használva.)

10.c. Djbdns

A Djbdns egy olyan DNS implementáció, amelyért a szerző hajlandó pénzt áldozni. Ez nagyon különbözik a Bind 9 működésétől, de megér egy próbát. További információkért keresd meg a hivatalos http://www.djbdns.org oldalt.

10.d. FTP

Nagy általánosságban az FTP (Fájlt Átviteli Protokol) használata rossz ötlet. Titkosítatlan adatokat használ (pl. a jelszavat tiszta szövegként küldi), két portot figyel (tipikusan a 20, 21), és a támadó gyakran anonymous loginnal lép be a saját warezeivel (tört szoftver). Az FTP protokol megalkotása óta ezekre a problémákra már találtak megoldást: használj sftp-t vagy HTTP-t. Ha ez nem lehetséges, tedd a lehető legbiztonságosabbá a szolgáltatásaidat, és készülj fel a legrosszabbra.

10.e. Mysql

Ha csak helyi használatra szükséges a mysql adatbázis-kezelőhöz hozzáférni, akkor kommentld ki a következő sort a /etc/mysql/my.cnf-ban.

Kódlista 5.1: Disable network access

skip-networking

Most pedig tiltsuk le a LOAD DATA LOCAL INFILE parancs használatát. Ezzel megakadályozod, hogy azonosítás nélkül lehessen olvasni a helyi fájlokat. Ez akkor fontos, ha a PHP alkalmazásokban SQL Injektáló sebezhetőséget találnak.

Kódlista 5.2: LOAD DATA LOCAL INFILE tiltása a [mysqld] részben

set-variable=local-infile=0

A következő az, hogy eltávolítod a mintaadatbázist (test) és minden számlát, kivéve a root számlát.

Kódlista 5.3: A példaadatbázis, és minden felesleges felhasználó eltávolítása

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;

Figyelmeztetés: Légy óvatos, ha van már beállított felhasználód.

Megjegyzés: Ha megváltoztatod a jelszót a MySQL promptjában, akkor utána mindig tisztítsd ki a ~/.mysql_history-t és a /var/log/mysql/mysql.log-t, mert ezek tiszta szövegként tárolják a begépelt parancsokat, így a jelszó minden különösebb erőfeszítés nélkül olvasható.

10.f. Proftpd

A proftpd több biztonsági problémával is rendelkezik, de úgy néz ki, hogy mindegyik rendezve lesz. Mindazonáltal jó ötlet addig is némely ponton megerősíteni:

Kódlista 6.1: /etc/proftpd/proftpd.conf

ServerName "Az én ftp démonom"
#Ne mutasd a szerver azonosítóját
ServerIdent on "Elment sörözni" # "Go away"

#Könnyen csinálhatsz egy virtuális felhasználókat
RequireValidShell off

#Használj másik jelszó és csoportfájlt (passwd titkosított formát használ)
AuthUserFile "/etc/proftpd/passwd"
AuthGroupFile "/etc/proftpd/group"

# Engedélyek
Umask 077

# Időtúllépések és korlátozások
MaxInstances 30
MaxClients 10 "Csak 10 kapcsolat engedélyezett"
MaxClientsPerHost 1 "Már bejelentkeztél egyszer"
MaxClientsPerUser 1 "Már bejelentkeztél egyszer"
TimeoutStalled 10
TimeoutNoTransfer 20
TimeoutLogin 20

#Mindenki chrootba
DefaultRoot ~

#Ne fusson rootként
User  nobody
Group nogroup

#Naplózzon minden átvitelt
TransferLog /var/log/transferlog

#Problémák a globbing-gal
DenyFilter \*.*/

H érdekel bővebben, akkor részletesebb dokumentációt itt találsz: http://www.proftpd.org.

10.g. Pure-ftpd

A pure-ftpd az eredeti trollftpd egyik ága, biztonsági és funkcionális kiegészítésekkel Frank Dennistől.

Virtuális felhasználókat használj (sose a rendszer felhasználóit), amit az AUTH opció megfelelő beállításával tudsz elérhetővé tenni. Állítsd be a -lpuredb:/etc/pureftpd.pdb-t, és a felhasználók létrehozásához használd a /usr/bin/pure-pw-t.

Kódlista 7.1: /etc/conf.d/pure-ftpd

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

## Mindenki egyéb ##
MISC_OTHER="-A -E -X -U 177:077 -d -4 -L100:5 -I 15"

A bemutatott MISC_OTHER beállítások elutasítják a névtelen (anonymous) logint (-E), mindenki chrootolt (-A), megelőzi, hogy a felhasználók írják-olvassák a .-tal (ponttal) kezdődő fájlokat (-X), beállítja a maximális tétlen időt (-I), a rekurzív limitet (-L), és egy ésszerű umask-ut.

Figyelmeztetés: Ne használd a -w vagy -W kapcsolókat! Ha te warez oldalt szeretnél működtetni, akkor hagyd abba ennek az útmutató olvasását!

A további dokumentációkat a http://www.pureftpd.org oldalon találod.

10.h. Vsftpd

Vsftpd (röviden very secure /nagyon biztonságos/ ftp) egy kicsi ftp démon meglehetősen alapértelmezett futási opciókkal. Ez egyszerűvé teszi, és nincs is annyi beállítási lehetősége, mint a pureftp-nek vagy a proftp-nek.

Kódlista 8.1: /etc/vsftpd

anonymous_enable=NO
local_enable=YES

#csak olvasható
write_enable=NO

#az átvitelek naplózásának engedélyezése
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

Mint láthatod nem lehet ezzel a szolgáltatással egyedi hozzáférést kérni, de névtelen (anonymous) beállításnak egészen jó.Néha nagyon jól tud jönni, amikor szükség támad egy anomymous ftp szerverre (pl. open source megosztáshoz). A vsftpd-t pont ilyen helyzetekre találták ki.

10.i. Netqmail

A netqmaillel nagyon gyakran szemléltetik a nagyon biztonságos levelező szervert. Ez egy nagy biztonsággal (és paranoiával) írt program. 1996 óta nem változott az alapértelmezése, és szintén azóta nem találtak benne egy biztonsági rést. Egyszerűen emerge netqmail, és irány beállítani!

10.j. Samba

A samba protokoll a Microsoft/Novell hálózatok közötti fájlmegosztásra hivatott, de nem kéne Interneten keresztül használni. Ettől függetlenül ez a legbiztonságosabb.

Kódlista 10.1: /etc/samba/smb.conf

[global]
  #Interfészhez kötés
  interfaces = eth0 10.0.0.1/32

  #Titkosított jelszavakat használjon
  encrypt passwords = yes
  directory security mask = 0700

  #Mindig engedje be: 10.0.0.*
  hosts allow = 10.0.0.

  #Engedélyezi a felhasználó azonosítását
  #(nem működik share módban)
  security = user

  #Elutasított hozzáférések
  invalid users = root @wheel

  #A maximum méret, amit az smb mutat a megosztásból (nem korlát)
  max disk size = 102400

  #Jelszó előírásai
  min password length = 8
  null passwords = no

  #Használd a PAM-ot (ha támogatott)
  obey pam restrictions = yes
  pam password change = yes

Győződj meg róla, hogy az engedélyek hibátlanul vannak beállítva, és ne felejtsd el elolvasni a dokumentációt.

Most indítsd újra a szervert és add hozzá azokat a felhasználókat, akiknek joguk van elérni a szolgáltatást. Ehhez használd a /usr/bin/smbpasswd parancsot a -a kapcsolóval.

10.k. ssh

Az egyetlen biztonságos módja az OpenSSH használatának az erős azonosításhoz a nyilvános kódolt kulcs. Túl sok site (például a http://www.sourceforge.net, a http://www.php.net és a http://www.apache.org) szenvedett el jogosulatlan behatolást jelszóhiba vagy rossz jelszó miatt.

Kódlista 11.1: /etc/ssh/sshd_config

#Csak a verzió 2 engedélyezett
Protocol 2

#Root login letiltása. Használják a felhasználók a su-t az azonosításra
PermitRootLogin no

#Az azonosításhoz a publikus kulcs elérése
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

#Letiltva az .rhost és a normál jelszavas azonosítás
HostbasedAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no

#Csak a wheel és admin csoprtok tagjainak engedélyezi a távoli bejelentkezést
AllowGroups wheel admin

#Ezekben a csoportokban is csak azok elfogadottak, akik a 
#@<domainname> alá tartoznak, 
#de írhatod ehelyett a régebbi AllowHosts meghatározást is.
AllowUsers kn@gentoo.org bs@gentoo.org

#Naplózás
SyslogFacility AUTH
LogLevel INFO

(Változtasd meg a saját címedre)
ListenAddress 127.0.0.1

Ellenőrizd le, hogy nincs benne a UsePAM yes a beállításokban, mert az felülírja a nyilvános kulcsú azonosítás mechanizmusát.

Most pedig minden felhasználónak hozz létre egy kulcsot (azon a gépen, amiről be szeretnének lépni) a következő paranccsal:

Kódlista 11.2: Egy DSA kulcspár létrehozása

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

És add meg a jelszót.

Kódlista 11.3: Az ssh-keygen kimenete

Generating public/private dsa key pair.
Enter file in which to save the key (/home/kn/.ssh/id_dsa):[Nyomj entert]
Created directory '/home/kn/.ssh'.
Enter passphrase (empty for no passphrase): [Add meg a jelszót]
Enter same passphrase again: [Add meg a jelszót mégegyszer]
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

Ez két fájlt ad a saját ~/.ssh/ könyvtáradba: id_dsa és id_dsa.pub. Az id_dsa nevű a saját privát kulcsod, és mindenképpen tartsd távol mindenkitől, viszont legyen nálad. A másik id_dsa.pub nevű a nyilvános kulcsod, és azt kell azokra a szerverekre tenni, ahová be szeretnél jelentkezni. Tedd be a felhasználó könyvtár ~/.ssh/authorized_keys alkönyvtárába, és a felhasználó a következő módon tud mostantól bejelentkezni:

Kódlista 11.4: Az id_dsa.pub fájl hozzáadása az authorized_keys fájlhoz

$ scp id_dsa.pub egyéb-host:/var/tmp/currenthostname.pub
$ ssh egyéb-hoszt
password:
$ cat /var/tmp/currenthostname.pub >> ~/.ssh/authorized_keys

Mostantól a felhasználónak nagyon vigyáznia kell a privát kulcsára. Vagy tartsa egy olyan médiumon, ami mindig nála van, vagy tartsa a saját számítógépén (tegye ezt a jelszavakról szóló intézkedéseid alapján).

További információkat az OpenSSH weboldalán találsz.

10.l. Xinetd használata

A xinetd az inetd (ami nincs a Gentoon) helyettesítése, az Internet szolgáltatások démona. A távoli hoszt nevének, és az elérés idejének alapján ellenőrzésként szolgál. Kiterjedt naplózási képességekkel rendelkezik, beleértve a szolgáltatás indulásának az idejét, a távoli hoszt címét, a szolgáltatás futási idejét, és a kért tevékenységet.

Mint az összes egyéb szolgáltatás,ez is jó alapértelmezett beállításokkal rendelkezik. Vigyázz, mert a xinetd root jogkörrel fut, és lehet hogy nem ismered teljesen a támogatott protokolt, így nem ajánlott ilyen esetben piszkálni. Ha te csak használni szeretnéd, akkor megmutatom, hogyan tudsz néhány biztonsági paramétert megadni:

Kódlista 12.1: xinetd telepítése

# emerge xinetd tcp-wrappers

És szerkeszd a beállítófájlt:

Kódlista 12.2: /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
}

# Ez a példa egy xinetdvel használt pserver (cvs) beállításait mutatja be:
# max 10 lekérés (10 kapcsolat egy időben)
# pserver korlátozása csak tcp-re
# a felhasználó futtathatja a cvs-t ezzel a szolgáltatással
# az interfész csak egy IP-hez kötött
# megengedi az elérést a 10.0.0.*-ból
# a fejlesztők reggel 8-tól délután 5-ig használhatják a cvs-t
# Használja a tcp wrappers-t (a hozzáférések korlátozása az
# /etc/hosts.allow és az /etc/hosts.deny alapján)
# max_load gépek beállításaiban 1.0
# A kikapcsolt (disable) zászló nem alapértelmezett, 
# de szeretem arra az esetre megtartani, ha munkaképtelen lesz.
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
}

További információkért kérlek olvasd el a man 5 xinetd.conf oldalt.

10.m. X

Az alapértelmezett Xorg tartalmaz egy beállított Xservert. Ez nagyon veszélyes, mert Az X titkosítatlan TCP kapcsolatot használ, és így figyeli az Xclient-eket.

Fontos: Ha lehet a szolgáltatást tiltsd le!

Viszont, ha neked muszály az Xservert használnod, akkor használd óvatosságból az /usr/X11R6/bin/xhost parancsot. Ez a parancs megengedi, hogy kliensek csatlakozhassanak a gépedre, és használják a kijelződ. Így be tudsz jelentkezni a gépedre, és grafikus alkalmazást futtathatsz, egy másik gépről a hálózaton keresztül. Viszont ugyanezt szeretnék elérni a támadók is. A pontos utasítás ehhez /usr/X11R6/bin/xhost +hosztnév

Figyelmeztetés: Ne használd mindenkire az xhost + tulajdonságát! Ez megengedi mindenkinek a csatlakozást, és ellenőrzése alatt tarthatja az X-ed. Ha egy támadó bejelentkezik, akkor naplózhatja a billentyű-leütéseid, és használni fogja a munkaasztalod. Ha használod, akkor a hosztot részletezve írd le.

Egy még biztonságosabb megoldás, ha ezt a tulajdonságot teljesen tiltod induláskor a startx -- -nolisten tcp-vel, vagy teljesen letiltod a beállításokban.

Kódlista 13.1: /usr/X11R6/bin/startx

defaultserverargs="-nolisten tcp"

Győződj meg róla, hogy a startx nem íródik felül, amikor emergeled a Xorg frissebb változatát. Vigyázz rá, vagy add hozzá a következő sort a /etc/make.conf-hoz:

Kódlista 13.2: /etc/make.conf

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

Ha grafikus bejelentkezéskezelőt alkalmazol, akkor másképpen kell megközelítened a problémát.

A gdm-nek (Gnome Display Manager)

Kódlista 13.3: /etc/X11/gdm/gdm.conf

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

Az xdm-nek (X Display Manager /Kijelző Menedzser/) és a kdm-nek (Kde Display Manager /Kijelző Menedzser/)

Kódlista 13.4: /etc/X11/xdm/Xservers

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

[ << ] [ < ] [ Kezdőlap ] [ > ] [ >> ]


Nyomtatás

View all

Frissítve 2007. július 8.

Ezen dokumentum eredeti változatának utolsó frissítési dátuma 2010. április 2.

Összefoglaló: Biztonságosan indítsd el a démonokat!

Kim Nielsen
Szerző

John P. Davis
Szerkesztő

Eric R. Stockbridge
Szerkesztő

Carl Anderson
Szerkesztő

Jorge Paulo
Szerkesztő

Sven Vermeulen
Szerkesztő

Benny Chuang
Szerkesztő

Sune Jeppesen
Szerkesztő

Tiemo Kieft
Szerkesztő

Zack Gilburd
Szerkesztő

Dan Margolis
Szerkesztő

Lónyai Gergely
Fordító, Lektor

Donate to support our development efforts.

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