v1.0 Vasárnap Április 7 15:45:31 2001
Írta: Micskó Gábor [trey trey@debian.szintezis.hu ]
Ez a dokumentum leírja, hogyan állítsunk be egy Solaris 8 rendszer alapkonfigurációt
2.1 Helyi (local) eszközök
2.2 Tripwire
2.3 Hálózati eszközök
2.4 TCP wrapper-ek
2.5 Összefoglalás
3.0 Solaris 8 konfiguráció
3.1
Install
3.2 Post-Install
3.3 a TCP/IP beállítása
3.4 DNS konfiguráció
3.5 Firewall Install
1.0 A biztonság alapjai
Miután sikeresen
feltelepítettük az OS-t, neki kell állnunk beállítani azt. Mint
minden operációs rendszer, a Solaris is egy alap (default) beállítással
települ fel a gépünkre. Ezekkel a beállításokkal a rendszer sok esetben
már működőképes, de nem nagyon felel meg egy korszerű UN*X szerverrel
szemben támasztott biztonsági elvárásoknak (az alapbeállítások azért
vannak, hogy legyen mit módosítani).
Solaris 8 egy robosztus, biztonságos OS, de mint minden az életben,
ez sem tökéletes. Akik azt hiszik, hogy a saját
szerverük 100%-ban védve van minden támadással szemben, azok tévednek,
és hamis biztonságérzetük van. Egy rendszer biztonságát nem lehet
tökéletesre beállítani, hiszen ha mindent engedünk, akkor könnyen áldozatok
lehetünk, ha pedig mindent tiltunk, akkor egy szerver elveszti elsődleges
funkcióját, azt hogy rajta service-ek fussanak, és kiszolgálja a
hozzá érkező kéréseket. Ha azt akarjuk, hogy hozzánk biztos ne törjenek
be gonosz cracker-ek, akkor húzzuk ki a gépünk LAN csatlakozóját,
és kapcsoljuk ki.
Ehelyett én az javaslom, próbáljuk megkeresni a középutat
a jól funkcionáló, de még a biztonságra maximálisan törekvő konfiguráció
létrehozásával.
1.1 Lokális biztonság
Ha adataidat biztonságban szeretnéd tudni, akkor a lokális
biztonság felépítésével kell kezdened a munkát. A rendszer elleni támadások
~60-70%-át a lokális támadások teszik ki, ezért fontos, hogy ügyeljünk
erre. Ha egy fontos szervert üzemeltetsz, szorítsd minimálisra a lokális
felhasználók számát. Ezzel nagymértékben csökkenthető a kockázata annak,
hogy valaki lokális 'root exploit '-tal támadja a géped.
1.2 Jelszavak
A Solaris egy multiuser operációs rendszer, és
ez nemcsak a felhasználó adminisztrációra vonatkozik, hanem a teljes authentikációs
mechanizmusra is. Az elsődleges szabály, hogy minden felhasználónak, aki
a gépen létezik, password-del kell rendelkeznie. A jelszavak kiválasztása
fokozott körültekintéssel történjék: tartalmazzon betű-, szám-,
írásjel kombinációt, minimum 8 karakter hosszú legyen (a minimális
password hossza, amit a rendszer elfogad beállítható). A superuser (root)
jelszó kiválasztása a legfontosabb, hiszen ő az, aki korlátlan ura a rendszernek,
aki bármit megtehet. Az ő jelszava lehetőleg NE'root' legyen.
Ha a gépünk olyan helyen van, hogy más is hozzáférhet
célszerű lelassítani az adathozzáférést (megakadályozni úgyse lehet). Használjunk
BIOS password-öt. Tiltsuk le a floppy, CD boot lehetőségeket.
Mint rendszeradminisztrátor,
használjuk a John the Ripper nevű programot, hogy biztosak legyünk
abban, hogy a felhasználóink nem használnak 'insecure' jelszavakat.
1.3 Vírusok
Vannak olyan esetek, amikor tartanunk kell vírusfertőzésektől.
Maga a Solaris, mint a többi UN*X rendszer a mai napig immunis
az ismert vírusokkal szemben (mostanában már hallani életképes LiNUX/UN*X,
stb. vírusokról, amelyek veszélyt jelenthetnek). Amik igazi veszélyt
jelenthetnek, azok az ún. macrovirus-ok. Ezek a vírusok a Microsoft
Office dokumentumokat támadják meg, és ezeket a mi szerverünk is szállíthatja
elektronikus levélben. Ha a szerverünk mailszerverként is üzemel,
erre figyelnünk kell. Vannak olyan 'Mail User Agent'-ek amelyek
automatikusan scan-elik az e-mail-eket.
1.4 Permissziók (engedélyek)
Az összes felhasználó lehetőleg a legkevesebb engedéllyel
rendelkezzen. Mi magunk, ha csak tehetjük, a napi munka során ne dolgozzunk
'root'-ként. Senkinek ne adjuk ki a 'root' jelszót. Lehetőleg
gyakran változtassuk meg. Ha valamihez szükség van 'superuser' jogokra
használjuk a 'su' parancsot. Hasznos dolog a 'sudo' is, éljünk vele.
1.5 Puffer Túlcsordulások
(Buffer overruns)
A puffer túlcsordítása az egyik legkedveltebb eljárása
a cracker-eknek arra, hogy 'root' jogot szerezzenek a gépünkön.
Jól ismert még az ún. 'stack smashing vulnerabilities' (nem tudom
jól lefordítani), ezek az exploitok felülírják a statikus bejegyzéseket
a program 'user stack'-jében olyan értékkel, ami a parancsot végrehajtva
egy shellt kapunk (ez lehet akár root shell, de lehet más user shellje is).
Ez azoknál a programoknál lehetséges, amelyek rendelkeznek 'static array
dimensions'-al vagy nem lettek leellenőrizve puffer túlcsordulás szempontjából.
Csak azok a programok sebezhetők, így amelyeken a SUID
bitbe van állítva. Ezek a programok a futásuk idejére a tulajdonos jogaival
futnak. Nyilván, ha a tulajdonos a 'root' azaz a superuser, és erre
a programra létezik buffer overflow exploit, akkor bajban vagyunk,
mert Cracker Harry máris 'root'-ként garázdálkodik a gépünkön.
Ilyen program, pl. a passwd, SUID bit be van rajta állítva (szükségszerű,
hogy a felhasználó meg tudja változtatni a jelszavát, ahhoz pedig írni kell
tudnia a /etc/password (shadow) file-t ezt normális esetben nem tudja,
ezért kell a SUID bit a passwd-re). Ezért azon kell lennünk, hogy
csak a legszükségesebb programokon legyen a SUID bit beállítva. Ha
egy ilyen új bug-ot felfedeznek, arról rendszerint információt kaphatunk
a jól ismert security mail listáról: BugTraq vagy newsgroup
októl pl: comp.security.announce. Az X Window System (XFree86)
hírhedt a bug-okról.
Alapszabály:
szerveren NE futtassunk X-et.
1.6 Hálózati biztonság
A szerverek azért szerverek, mert hozzájuk kliensek kapcsolódnak.
A server valamilyen hálózaton működik. Ez lehet lokális hálózat (LAN
- Local Area Network), vagy távoli hálózat (WAN - Wide Area Network),
mostanában éli fénykorát egy másik típus (ami nem új találmány) a VPN
(Virtual Privat Network), és végül a legnagyobb hálózat
az INTERNET.
A Solaris kimondottan hálózati operációs rendszer,
az INTERNET -re fejlesztve. Ahogy a SUN mondja a Solaris
a "." a ".com" -ban. Egy Solaris server -t használhatunk: http, mail,
ftp, router, firewall, proxy, gateway és még ezer funkcióra. Mint
ilyen server nagyon sok támadásnak lehet kitéve a HÁLÓZAT felől. Ezek
ellen a támadások ellen védekezhetünk egy védelmi rendszer felépítésével,
egy firewall (tűzfal) felállításával. Egy átlagos rendszert naponta
30 percenként ér támadás. A támadásfajtája is sokféle lehet, nézzük
a leggyakoribbakat.
1.7 DDOS (distributed
denial of service)
A DDOS támadás lényege, hogy a támadó megbénítsa
a serverünk működését. Ezt elérheti úgy, hogy a gépünket nagy mennyiségű
adathalmazzal (vagy hálózati kéréssel) bombázza (flood). A támadás után
a gépünk nem lesz elérhető, és ezzel a támadó elérte a célját. Legtöbb
esetben a DDOS -t kombinálják az IP spoofing -al. A támadó
több gépről a mi IP -nkel ping -el (ICMP echo request)
nagy hálózat broadcast -jét. Az eredmény az, hogy a nagy hálózat összes
gépe válaszol a ping kérésre (ICMP echo reply) és a válasza
mi gépünkre özönlik. A gépünk sávja lassan betelik, majd teljesen elfogy.
Tipikus jelenség, hogy az áldozatgép erőforrásai lassan elfogynak, a
service -k leállnak és rossz esetben a kernel is 'elszáll'.
Sok hozzáértő szerint a DDOS ellen nem lehet védekezni, a támadó
személyét szinte lehetetlen kideríteni. Ha egy program DOS -al
támadható (pl. a BIND 8.xx szériájából elég sok), és ezt felfedezik,
annak javítása órákon belül elérhető az INTERNET -en. Az adminisztrátor
feladata, hogy naprakész-információkkal, és patch -ekkel rendelkezzen.
1.8 Man in the
Middle
"Man in the Middle" támadásnak akkor lehetünk
áldozatai, ha olyan hálózaton dolgozunk, ami több host -on keresztül
van route -olva. A támadó megszerzi az irányítást az egyik route
-en, és megfelelő program segítségével az immár rajta keresztül haladóforgalmat
ellenőrizheti. Képes a 'sniffelni' az IP csomagokat, eltéríteni azokat,
vagy teljesen kicserélni. Azokon a router -eken amelyek nem kérnek authentikációt
ez nagyon egyszerű. Az új standard, IPv6 -os protokoll, már fel van
készítve ez ellen.
Az egyetlen védelmet ez ellen, valamilyen criptografikus
(titkosító) eszköz jelenthet. Soha ne használj telnet -t, rsh
-t, mert ezek a jelszavakat titkosítás nélkül küldik (vannak kivételek).
Ez azt jelenti, hogy egy átlagos cracker ezeket 'ellopva' el tudja
olvasni őket. Ehelyett használj SSH-t (Secure SHell - http://www.openssh.com/).
Email -jeidet titkosítsd pgp -vel. Ha a WEB oldalad tartalmát
akarod titkosítani (pl. banki, e-commers, stb. oldalt üzemeltetsz), titkosítsd
SSL (Secure Socket Layer - http://www.openssl.org/
) protokoll segítségével.
1.9 IP spoofing
Az IP spoofing a TCP/IP (IPv4) protokoll
hibáját használja ki, ami nem ellenőrzi a visszatérő címet. Ez a cím így
módosítható a támadó által. vagyis a támadó spoof -olva az én IP
-met, a nevemben működhet (lásd. DDOS). Ezért fontos, hogy a router
-ek jól legyenek konfigurálva, nem csak a saját router -ek. Ehhez az is
kell, hogy az ISP -k is jól konfigurálják a router -eiket. Csak azokat
a csomagokat route -oljuk a belső hálózat felé, amelyek külső címeket tartalmaznak,
és csak azokat a csomagokat route -oljuk kifelé amelyek belső címeket tartalmaznak.
Lássuk azokat az eszközöket, amelyekkel ellenőrizhetjük, karbantarthatjuk
a rendszerünket (a teljesség igénye nélkül).
2.1 Helyi (local) eszközök
Két nagy előnye van a Solaris -nak (és a többi UN*X
rendszereknek) a többi operációs rendszerrel szemben. Ez a stabilitás
és a multiuser rendszer. Viszont a multiuser mivolta nagyobb rizikót is
jelent. A nem megfelelő permissziók alkalmazása, kihasználható egy
járatosabb felhasználónak. Pl: a SUID bit (Lásd. Puffer Túlcsordulások).
Fontos, hogy tudjuk melyek azok a programok, amelyek potenciális veszélyt
rejtenek. Ezért derítsük fel a rendszerünkben a gyenge pontokat. Keressük
meg azokat a programokat, amelyek rendelkeznek SUID bittel és a 'root'
a tulajdonosuk. Ezek a legveszélyesebbek:
root@earth:~$ > find / -uid 0 -perm +4000
-rwsr-xr-x 1 root
root 13216 Mar
19 15:32 /bin/ping
Ez az egyik módja, hogy felfedezzük a veszélyes programokat.
Senki nem tudja állandóan monitorozni a gépet. Szerencsére vannak eszközök,
amelyek segítenek nekünk. Van egy, amely a CERT (Computer
Emergency Response Team - http://www.cert.dfn.de/dfncert/info.html/
) által ajánlott eszköz. Ez a Tripwire nevű program.
2.2 Tripwire
A Tripwire működése egyszerű. Állandóan ellenőrzi
a rendszert és az állapotot egy adatbázisban tárolja. Be tudod állítani
mely file -ket ellenőrizze. A Tripwire nem ellenőrzi a 'fertőzött'
file -ket és a rendszerhibákat. Egy frissen telepített rendszerre kell telepíteni.
Azelőtt még mielőtt a gépünkre felhasználót veszünk fel, vagy mielőtt a
gépet a hálózathoz kapcsolnánk (gondolom érthető okokból). Itt az áll, hogy
kell az alapadatbázist létrehozni:
root@earth:~$ > /var/adm/tripwire/bin/tripwire -init
Ezzel elkészíti az adatbázist , amelyet legjobb, ha
egy floppy -n helyezünk el. Ezután a Tripwire a legközelebbi
futtatáskor a különbségeket jelzi a rendszeren. Legjobb, ha a Tripwire
-t cron -ból futtatjuk rendszeresen.
2.3 Hálózati eszközök
inetd
Az inetd ( Internet 'Super Server') kétségtelenül
a legfontosabb service -ket kontrolálja azzal, hogy engedélyez, tilt
portokat (itt most nem beszélünk a különböző firewall -okról). Alapesetben
az inetd -ben sok olyan service van engedélyezve, ami veszélyes lehet
(ez nem csak a Solaris -ban van, így hanem pl. a Debian -ban is).
A konfigurációs file a /etc/inetd.conf . Csak azokat a service -ket engedélyezzük,
amelyekre feltétlenül szükség van. A telnet -et, shell -t
, rlogin -t , stb. azonnal tiltsuk le.
2.4 TCP wrapper -ek
TCP wrapper -el (tcpd) ellenőrzésed alá vonhatod az IP alapú
service -ket a hálózaton. A konfigurációs file -k:
A hozzáférés engedélyezett,
ha a kliens és host kombináció szerepel a /etc/host.allow -ban. A hozzáférés
tiltott, ha a kliens és host kombináció szerepel a /etc/host.deny-ben. Csak
TCP wrapper alkalmazása nem elég, kell mellé még egy jól konfigurált firewall
is.
2.5 Összefoglalás
Ennyi bevezető után térjünk át a Solaris 8 konkrét beállítására.
A user/rendszer beállításoknál lehetőleg ne használjuk az
admintools nevű programot. Több okból se. Az egyik hogy X
kell hozzá, a másik, hogy inkább írjunk mindent kézzel =). A telepítésnél,
amikor a 'root' jelszót kell beállítani a jelszó mezőt üresen lehet hagyni.
"The optional root password will help protect your system from unauthorized access. We recommend that you supply a root password but itis not required."
7/tcp echo 9/tcp discard 13/tcp daytime 19/tcp chargen 21/tcp ftp 23/tcp telnet 25/tcp smtp 37/tcp time 79/tcp finger 111/tcp sunrpc 161/udp snmp 177/udp xdmcp 512/tcp exec 513/tcp login 514/tcp shell 515/tcp printer 540/tcp uucp 4045/tcp lockd 6000/tcp X11 6112/tcp dtspc 7100/tcp font-service 8888/tcp sun-answerbook 32771/tcp sometimes-rpc5 32772/tcp sometimes-rpc7 32773/tcp sometimes-rpc9 32774/tcp sometimes-rpc11 32775/tcp sometimes-rpc13 32776/tcp sometimes-rpc15 32777/tcp sometimes-rpc17 32778/tcp sometimes-rpc19
Ezeket
a /etc/inetd.conf -ban egy # jellel kommentezzük ki. A /etc/rc2.d
-ben indulnak el a rendszer alap beállításai (network, stb.), a runlevel
3 -ban indul az X. Ha server -ként akarod használni, NE indíts X -et!
Ezzel megelőzhetsz egy csomó támadást.
3.1 Install
Az install előtt (és itt most nem foglalkozok otthoni multiboot
rendszerrel) ha a disk már használatban volt előtte, szedjük le a masterboot
record -ot. Ezt egyszerűen egy DOS bootlemezről az fdisk
/mbr paranccsal oldhatjuk meg. Akinek nem tetszik, keressen másmegoldást
=).
3.2 Post-Install
Ne használd az AdminTool -t a hostname beállítására.
Editáld a /etc/inet/hosts kézzel. Alapból a root -nak
nincs ~ könyvtára, hozz létre neki egyet.
root@earth:~$ > cd /
root@earth:~$ > mkdir root ; chown
root:root root/
Írdd át a /etc/password file első sorát,
hogy a 'root' home -ja /root legyen. Ha a sh nem szimpatikus,
a shell -t változtasd meg /bin/bash -ra.
3.3 A TCP/IP beállítása
Ha az install alatt nem állítottad be a hálózati
paramétereket, itt az ideje, hogy megtedd :
3.4 DNS konfiguráció
nameserver 1.2.3.4
domain example.org
search example.org
3.5 Firewall Install
Azzal, hogy nem installáltunk X -et a server
-re elveszítettük a lehetőségét annak, hogy a local gépen a tűzfalat
adminisztrálni tudjuk. De ki akar a server -en lokálisan tűzfalat birizgálni?
A SUN -tól ingyenesen beszerezhetjük a SUNSCREEN Lite
nevű tűzfal software -t. Ezzel 2 interface -t tudunk kezelni, de nem
tudunk más SUNSCREEN -elt firewall -t managelni távolról. Egy
firewall server -nek (screen) egy saját VPN-el , ez bőven
elég. Töltsük le a SUNSCREEN -t ami kb. 60MB tarball, és csomagoljuk
ki valahova biztonságos helyre (lehetőleg ne a /tmp -be). Olvassuk el
az INSTALL Instruction -t a README -ba. Első olvasatra
elég bonyolultnak tűnhet, de ha követjük a leírást könnyen fel tudjuk
támasztani. Az install után egy WEB alapú adminisztrációs felületet
kapunk, aminek az előnye, hogy bármilyen gépről azonnal tudjuk a firewall
beállításokat módosítani. Fontos: az alapjelszót admin/admin
változtassuk meg. Alapban nincs rule létrehozva a 22 -es port -hoz (SSH)
ezt mindenképpen hozd létre.Ezzel bővebben egy másik how-to foglalkozik
majd.
SunScreen Lite
http://www.sun.com/software/securenet/lite/
Sun documentáció
http://docs.sun.com/
OpenSSL and OpenSSH
csomagok Solaris 8.0 Intel és Sparc -ra
ftp://ftp.cryptoarchive.net/pub/cryptoarchive/ftp-site/solaris-8.0/x86/