2012. június 14., csütörtök

Hardening AIX - tűzfal

Anno amikor megismerkedtem az AIX-el még úgy tanították, hogy az AIX egy nagyvállalati rendszer, és azért nincs alatta tűzfal, mert azért az infrastruktúrának kell felelnie (persze van IPsec, de az nem tűzfal megoldás). Némi kis Linuxos múlttal a hátam mögött ezt anno nagyon furcsának éreztem, de aztán csak megszoktam, hogy ha nagyvállalat, akkor tényleg lesz valahol egy CISCO eszköz is a közelben, az meg tényleg egész jó tűzfal lehetőségeket biztosít.
Viszont -mint kiderült- az AIX alatt még is van elérhető "támogatott" tűzfal és NAT (!) megoldás a híresztelésekkel ellentétben.. Igen, nem káprázik a szemetek - az AIX-ra ugyan is portolták a BSD rendszerek alatt is ismert ipfilter-t!
Csupán 2 szépséghibája van a dolognak:
- Nem része az alap rendszernek - csupán az Expansion Pack részeként lehet elérni
- A fejlesztés kicsit mintha megállt volna (vagy csak elérték a tökéletességet :)) és a csomag megragadt az 5.3.0.3 verziónál (mázlira ettől még 5.3/6.1/7.1 alatt is gond nélkül lehet használni)

Amennyiben valaki úgy érzi, hogy ez kell neki (és ismét át akarja élni a tűzfal piszkálás okozta izgalmakat :)), az az alábbi módon telepítheti/tesztelheti a tool-t

Szedjük ki az expansion pack-ből a 'ipfl' file-t, meg ha már ott járunk, akkor töltsük le a legfrissebb javítást is a csomaghoz
Töltsük fel a 2 file-unkat a szerverünk alá (nálam ez lesz a test_server)
scp ipfl* test_server:/tmp/ipfilter
Csináljuk meg a .toc file-unkat (avagy ha már csinálunk valamit, akkor csináljuk normálisan)
ssh test_server
test_server@root:/ # cd /tmp/ipfilter
test_server@root:/tmp/ipfilter # inutoc .
Rakjuk fel a csomagunkat
test_server@root:/tmp/ipfilter # installp -avXYgd /tmp/ipfilter ipfl.rte
A telepítés után inicializáljuk a telepített kernel modult
test_server@root:/tmp/ipfilter # /usr/lib/methods/cfg_ipf -l
Innen indul a jó rész: Csináljuk meg a saját szabályainkat :) Személy szerint úgy vagyok vele, hogy jobban szeretem a láncaimat file-ban látni, de persze lehetne nyomban gépelgetni is a láncokat. Én az egyszerűség kedvéért csak 1 magas portot engedélyeztem 2 gépről (és mint jó rendszergazda nyomban úgy indultam neki, hogy mindent tiltok, kivétel amit engedek )
test_server@root:/ # vi /etc/ipf.conf
block in proto tcp/udp all
pass in proto tcp/udp from 10.1.0.1 to port = 22222 keep state
pass in proto tcp/udp from 10.1.0.2 to port = 22222 keep state
Ha készen vagyunk a szabály láncainkkal, akkor adjuk is hozzá azokat a jelenleg üres láncokhoz
test_server@root:/ # ipf -f /etc/ipf.conf
# Megjegyzés - Amennyiben a konfig file-t többször piszkáljuk, akkor a '-Fa' (Flush All) kapcsolóval érdemes a file-t újraolvastatni, különben az ipfilter simán hozzáfűzi a szabályokat a már meglévő láncokhoz)
# Megjegyzés #2: Amennyiben olyan ügyesek voltunk, hogy valami írdatlan nagy hülyeséget csináltunk, akkor simán a '-Fa'-val flusholhatjuk a teljes szabályrendszert (Aki dolgozott már remote tűzfal konfigurálással, az tudja, hogy egy megfelelően megírt script mennyit tud segíteni egy ilyne flush-al, amennyiben valahogy sikerült magunk alól kifürészelni a fát)
test_server@root:/ # ipf -Fa -f /etc/ipf.conf
Ellenőrzés: Nézzük meg az incoming/outgoing láncainkat:
test_server@root:/ # ipfstat -in
@1 block in proto tcp/udp from any to any
@2 pass in proto tcp/udp from 10.1.0.1/32 to any port = 22222 keep state
@3 pass in proto tcp/udp from 10.1.0.2/32 to any port = 22222 keep state
test_server@root:/ # ipfstat -on
empty list for ipfilter(out)
Ha minden szép és jó, akkor kedvünk szerint lehet az indításról gondoskodni (rc script, inittab bejegyzés, vagy a /etc/rc.net szerkesztése), azt viszont ne felejtsük el, hogy ez után illik egy 'bosboot -ad'-t futtatni, hogy a következő bootoláskor ne kelljen a module-t manuálisan betöltenünk

További infók: http://www-304.ibm.com/support/docview.wss?uid=isg3T1011144