[ << ]
[ < ]
[ 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
|
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
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 ]
[ > ]
[ >> ]
Ez a dokumentum a Creative Commons -
Attribution / Share Alike licensz védelme alatt áll.
|