Szerver konfigurálás,
azaz hogyan tegyük szerverünket biztonságosabbá
Az első és legfontosabb dolog, hogy soha ne tegyük fel
magunknak vagy másoknak a következő kérdéseket :
-
Miért pont az én gépemre akarnának
betörni ?
-
Honnan tudnának az én szerveremről ?
-
Ugyan mit árthatnak, mit tehetnek tönkre ezen ?
-
Miért lenne ez nekik jó ?
Ezek egyrészére az a válasz, hogy "csak", másrészt
jobb félni, mint megijedni (utólag majd mindenki rádöbben
erre), egyszeűen fogadjuk el, hogy vannak "jófiúk"
és "rosszfiúk" (és ez a két halmaz nem feltétlenül
diszjunkt).
Aki azt hiszi az ő gépét nem fenyegeti ilyen
veszély az téved !
Nyilván a Dos és Windows 3.1, 3.11, 95 rendszerek esetén
nincs is értelme ezzel a kérdéssel foglalkozni. Windows
NT esetén ez felmerülhet, de aki olvas külömböző
security listákat az tudja, hogy még mindíg igaz az
alabbi igazság:
A Windows NT a C2-es security osztályba tartozik, ha workstation
módban üzemel, azaz nincs halózatba kötve és
nincs benne floppy (ehhez szokták hozzárakni "és ha
nincs bekapcsolva":-).
Tehát a továbbiakban Unix operációs rendszert
feltételezünk.
Milyen módjai vannak a betörésnek
Két alapvető eset van:
-
A rosszfiúnak nincs azonosítója az adott gépen.
Ebben az esetben az ún. Denial of Services (DoS, azaz valamelyik
szolgáltatást/szervert
kihasználva jutnak be pl. IMAP, SMTP). Ezert fontos a következő
fejezet "mit ne rakjunk fel" része.
-
A rosszfiúnak van azonosítója az adott gépen.
Ilyenkor általában a setuid-os, főként
a root setuid-os programokat használják ki.
-rwsr-xr-x 1 root root 18732 Apr 23 02:09 /bin/login
Itt a 4. karakteren álló "s" betü az érdekes.
Ezért ha lehet probáljuk meg elkerülni felesleges root
suid-os programok felrakását és amik már fentvannak
azok közül amit nem használunk arról vegyük
le a setuid bitet.
Mit tarsunk mindíg szem elött
-
Upgrade, upgrade, upgrade !!! ezt nem lehet elégszer elmondani.
-
Ha új rendszert telepítünk (és lehetőleg
máskor is) olvassuk el a leirásokat vagy kérdezzük
meg egy szakértőtől.
-
Ne telepítsünk fel semmilyen felesleges szoftvert (itt főkénet
a szerverekre gondolok).
-
Mégfontosabb, hogy ne futassunk felesleges szervereket.
Mik azok
amiket általaban felraknak pedig valójában soha nem
használják (ezek csak növelik a támadási
felületek nagyságát):
-
Name szerver (DNS, named, bind), általában mindenhol van
egy jól karbantartott name szerver, használjuk inkább
azt. Sajnos a világ jelenlegi DNS-einek, legalább 99.99%-ban
van egy nagy elméleti hiányosság (és persze
ezt ki is használjak a rosszfiúk). Ha mégis szükség
van rá akkor az
bind-8.1.1
verziót használjuk.
-
IMAP (imapd, pop3d), ha nem tudjuk mire való akkor valósznűleg
nem is kell (ez vonatkozik az összes többi esetre is), ha mégis
szükség van rá akkor az
imap-4.1.BETA verziót használjuk.
-
Samba (smbd, nmbd), ha mégis szükség van rá akkor
az
samba-1.9.17
verziót használjuk.
-
Web szerver (igen láttam már olyat hogy nem tudták
mi az csak ment), IMHO
Apache-1.2.4 vagy
Roxen-Chalanger-1.2.
-
Mail szerver (MTA, smtpd), ha másik gépet használunk
levelezésre, akkor nem biztos, hogy kell, ha mégis szükség
van rá akkor az
sendmail-8.8.7-os verziót
használjuk, bár úgy tünik, hogy ez a legkevésbé biztoságos
(az utobbi idők tapasztalati alapján). Használjuk
inkább a
qmail-1.01-et, a
zmail-t vagy a
smail-3.2.0.92-et.
-
Mik azok a szerverek amit ha lehet rakjunk fel :
-
Secure Shell. Mikor bejelentkezünk egy másik gépre,
telnet, ftp, stb... és a szerver jelszót kér a passwordjeink
úgy nyersen száguldoznak át a hálózaton
(tehát a rosszfiúknak csak figyelniük kell a halót
és máris megvan a jelszavunk - és figyelik is). Az
SSH-hoz tartozik egy szerver (sshd) és egy kliens program (ssh, ez önmaga
helyettesíti a telnet, rsh, rlogin, rexec parancsokat es van egy
scp nevu gépek közötti secure-copy) ezek a halózaton
titkosítva küldik át a jelszót és minden
mást is, továbbá forvardolják az X11-es kapcsolatot
is, sőt az ftp is át lehet erre irányitani. Mivel
a jelszónkkal már bármit megtehetnek, ez a program alapvető
feltétele a biztonságnak (az International verziót
használjuk)
ssh-1.2.20-3i.
-
Felhasználó azonosító
(identd, pidentd),
több szerver visszakérdez, hogy kik vagyunk és tényleg azok vagyunk-e akinek
mondjuk magunkat. Lassák, hogy mi adunk a biztonságra.
Konfigurációs fileok
Mindenhez van természetesen manual abból részletesebb
információkat is lehet szerezni. Alapvető, hogy :
Ami nem kell azt tiltsuk le !!!
-
/etc/inetd Ebböl a file-ból lehet inditani a különböző
szervereket egységesen. Érdemes odafigyelni rá, mert ha ebbe
valaki valamit elrejt akkor az root-ként fog futni.
-
/etc/ld.so.conf Az ebben lévő library-kat tekinti
rendszerkönyvtáraknak.
-
/etc/shadow shadow password-ot használjuk !!!
-
Szervereket/daemon-okat ha lehet akkor az inetd-ből indítsunk
(/etc/inetd.conf), csak azokat amikre tényleg szükség
van és tcpd-n vagy tcp_wrapper-en keresztük (ennek több
előnye is van).
-
/etc/hosts, /etc/hosts.allow, /etc/hosts.deny
/etc/hosts
Ide beírt gepeket nem keresi a DNS-ben, mert először ezt a file-t
nézi meg, így gyorsabb és nem kell tartani az esetleg kompromittalt
DNS adatoktól.
/etc/hosts.allow, /etc/hosts.deny
Ez talán a legfontosabb, ezekkel adhatjuk meg, hogy megy gépeknek
mit engedünk meg. Nézzük a következő peldát
(egy "jól" beállított esetet) :
portmap: 160.114.0.0/255.255.0.0
portmap: 255.255.255.255 0.0.0.0
in.talkd: ALL EXCEPT UNKNOWN PARANOID : rfc931
in.identd: ALL EXCEPT UNKNOWN PARANOID
in.ntalkd: ALL EXCEPT UNKNOWN PARANOID : rfc931
in.fingerd: .hu EXCEPT UNKNOWN PARANOID : rfc931
in.ftpd: ALL EXCEPT UNKNOWN PARANOID : rfc931
in.telnetd: .hu .hungary.net EXCEPT UNKNOWN PARANOID : rfc931
sshd: ALL EXCEPT UNKNOWN PARANOID : rfc931
ipop3d: .hu .hungary.net EXCEPT UNKNOWN PARANOID : rfc931
imapd: .hu .hungary.net EXCEPT UNKNOWN PARANOID : rfc931
smtpd: .hu .hungary.net EXCEPT UNKNOWN PARANOID : rfc931
Mindenki a saját rendszerén futó daemonok figyelembevételével
alakítsa ezeket a file-okat.
Itt az egyes protokolokhoz/szerverekhez való hozzáférések
vannak beállítva. Egyrészt adhatunk meg net/mask párokat
mint pl. a portmap-nál, másreszt megmondhatjuk, hogy pl.
telnet :
csak a *.hu es a *.hungary.net domain-ekből lehet elérni, tovabbá akit
nem talál meg a DNS-ben (UNKNOWN) vagy megtalál ugyan a DNS-ben
de ott más IP-szám tartozik hozzá mint amit ő
mondott (PARANOID) azokat nem engedi be és a végen pedig
indetd-n keresztül probálja azonosítani az illetőt
(rfc931). Nyiván ez csak példa de könnyen átirható
az igényeknek (szigorítani/lazítani). Ha egy embert
akarunk csak beengedni külföldről, akkor inkább
rakjuk be annak az egy gépnek a nevét és ne engedjunk
be akkor se mindenkit. De ehhez még kell, hogy az /etc/hosts.deny
a következőt tartalmazza :
ALL: ALL EXCEPT LOCAL 160.114.
Minden más tilos, kivéve esetleg Szegedről.
/etc/hosts.equiv fileba tényleg csak olyan
hostok neveit rakjuk be melyek éjjel-nappal mennek és 100%-osan
megbízunk bennük.
/etc/securetty ne rakjunk bele távoli terminált, azaz
a root csak a konzolról léphessen be.
/etc/ftpusers azaz kik nem mehetnek be ftp-vel:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
/etc/ftphosts azaz honnan lehet ftpzni.
/etc/limits egy user ne vihesse el az egész gépet
(memoria, cpu,...limitek).
A web szerver csak bombabiztos CGI-t használjon (na jó ilyen
nincs:-).
Ha már egyszer betörtek ? És betörtek-e ?
Ezt a részt majd legközelebb irom meg... :-)
Hasznos linkek
Mivel a rosszfiúk úgyis mindenről tudnak, legalább mi is tudjunk róla.
Milyen kiskapukat szoktak hagyni maguk után a rosszfiúk.
Created by
Levente Farkas
Last modified : September 15. 1997.
Any comments ?