Főoldal
A következő címkéjű bejegyzések mutatása: debian. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: debian. Összes bejegyzés megjelenítése

2010. június 28., hétfő

RCS mini hogyan

Biztosan már mindenkivel előfordult hogy konfigolás után működött a rendszer majd hirtelen valami történt és a szolgáltatások akadoznak, a beállítások módosultak. Ez bekövetkezhet a kedves kollégák munkájaként is, de akár a saját figyelmetlenségünk következtében. Megfontolandó ilyenkor egy vátozáskövető rendszer kiépítése, amivel a fontosabb konfigfájlokról készíthetünk lenyomatot. Ha hálózati támogatással szeretnénk használni akkor a CVS az erre alkalmas program, nagyon sokat segíthet ha pl. programozók vagyunk és egy nagy projektben veszünk részt. A CVS segítségével a megváltozott forráskód mindenkihez eljuthat, nem kell kézzel másolgatni, FTP-zni stb. Ha csak egy gépen szeretnénk nyilvántartani a változásokat tökéletes választás az RCS.

Első lépés, telepítsük a programot:

test:~# apt-get install rcs
Csomaglisták olvasása... Kész
Függőségi fa építése
Állapot adatok olvasása... Kész
Az alábbi ÚJ csomagok lesznek telepítve:
rcs
0 frissített, 1 újonnan telepített, 0 eltávolítandó és 5 nem frissített.
Letöltés az archívumokból: 326kB
E művelet után további 606kB lemez-területetet használok fel.
Letöltés:1 http://ftp.bme.hu lenny/main rcs 5.7-23 [326kB]
Letöltve 326kB 42s alatt (7636B/s)
Új csomag kiválasztása: rcs.
(Adatbázis olvasása ... Most 25287 fájl és könyvtár telepített.)
Kicsomagolás: rcs innen: .../archives/rcs_5.7-23_i386.deb ...
Processing triggers for man-db ...
Beállítás: rcs (5.7-23) ...
Ha feltelepítettük hozzuk létre az RCS tárolóját:

test:~# cd /
test:/# mkdir RCS
Ezután vegyük fel a kívánt fájlokat a tárolóba. Ha pl. a /etc könyvtár fájljait akarod figyelni akkor edd ki ezt a parancsot ( az alkönyvtárakat nem veszi figyelembe). Az egész könyvtárat nem ajánlom másolni, néhány fájllal, pl. nekem adott ki ilyen hibaüzit( ez már a co kimenete lesz) A csillag helyébe a fontosabb fájlok neveit helyettesítsd be. Ha lusta vagy mint én, akkor készíts egy szöveges fájlban egy listát a fontos fálokról. Minden sorban legyen egy fájlnév abszolút eléréssi úttal. Ha írsz hozzá egy szöveges fájlból sorokat beolvasó shel scriptet, ami for ciklussal még a sorokat be is helyettesíti a * helyébe, akkor sok időt megtakaríthatsz:


co: RCS/alternatives,v: No such file or directory
co: RCS/amavis,v: No such file or directory
co: RCS/apparmor.d,v: No such file or directory
co: RCS/apt,v: No such file or directory

test:/# cd /etc
test:/etc# ci -i *
Ezután a fűjlokhoz egyenként adhatsz leírást, de szerintem egy passwd nevű fájlról úgy is tudod hogy micsoda xD. Ha . ot ütsz akkor továbbugrik. A fájlt eltávolítja az eredeti helyéről, így tudjuk kikérni:

test:/etc# co *
Ez visszaállítja a fájlokat. Hogy dolgozni is tudjunk rajta kérjük ki lockolva:

test:/etc# co -l *
Ha szerkesztettük a fájlt rakjuk vissza és unlockoljuk:

test:/etc# ci -u *
Most nézzük azt, hogyha gond van mit kellene tenned! Megváltozott mondjuk az rc.local fájlod és a benne lévő tűzfal scripteket is rendesen összedúrták. Valahogyan össze kéne hasonlítanunk:

test:/etc# rcsdiff rc.local
Ez megmutatja a változásokat.

olvass tovább...

2010. június 12., szombat

Postfix alapok

A Postfix jelenleg az egyik legmegbízhatóbb, leggyorsabb, legbiztonságosabb és testreszabhatóbb levelező kiszolgáló program. Önmagában ugyan csak SMTP szolgáltatást nyújt, de POP3 és IMAP4 daemonokkal is könnyen kiegészíthető. Autentikáláshoz használhatunk PAM, LDAP, SQL adatbázisokat is. Mivel moduláris felépítésű a levéltovábbítási folyamatba könnyen beemelhetünk kölönböző programokat, scripteket, pl. spamszűrőt, vírusirtót stb... A Postfix képes a levelek Mime fejrészében regexp keresést végezni, így könnyedén kiszűrhetjük a nemkívánatos kiterjesztésű fájlcsatolmányokat. Képes SASL autentikációra ( PAM-ból, LDAP-ból stb...) , TLS-re és még sok apró, de annál lényegesebb funkcióra.
Először egy egyszerűbb, alap telepítést és konfigurálást mutatok be Lennyn.

test:~# apt-get install postfix postfix-ldap
Csomaglisták olvasása... Kész
Függőségi fa építése
Állapot adatok olvasása... Kész
Az alábbi extra csomagok kerülnek telepítésre:
openssl openssl-blacklist ssl-cert
Javasolt csomagok:
ca-certificates postfix-mysql postfix-pgsql postfix-pcre sasl2-bin resolvconf postfix-cdb ufw
Az alábbi csomagok el lesznek TÁVOLÍTVA:
exim4 exim4-base exim4-config exim4-daemon-light
Az alábbi ÚJ csomagok lesznek telepítve:
openssl openssl-blacklist postfix postfix-ldap ssl-cert
0 frissített, 5 újonnan telepített, 4 eltávolítandó és 4 nem frissített.
Letöltés az archívumokból: 8660kB
E művelet után további 14,1MB lemez-területetet használok fel.
Folytatni akarod [Y/n]? y
Letöltés:1 http://ftp.bme.hu lenny/main openssl 0.9.8g-15+lenny6 [1036kB]
Letöltés:2 http://ftp.bme.hu lenny/main openssl-blacklist 0.4.2 [6338kB]
Letöltés:3 http://ftp.bme.hu lenny/main ssl-cert 1.0.23 [13,1kB]
Letöltés:4 http://ftp.bme.hu lenny/main postfix 2.5.5-1.1 [1224kB]
Letöltés:5 http://ftp.bme.hu lenny/main postfix-ldap 2.5.5-1.1 [48,6kB]
Letöltve 8660kB 51s alatt (167kB/s)

Postfix is now set up with a default configuration. If you need to make
changes, edit
/etc/postfix/main.cf (and others) as needed. To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Beállítás: postfix-ldap (2.5.5-1.1) ...
Adding ldap map entry to /etc/postfix/dynamicmaps.cf
Azért telepítettem a postfix-ldap csomagot is, mert később szeretnék egy OpenLDAP-ot alá tenni, de ezt akár a slapd telepítésekor is megtehettem volna. Ha feltepeítettük létrejött egy postfix nevű felhasználó és hozzá a csoport, valamint a /etc/psotfix alatt a konfigurációs állományok. A fő konfigfájl a main.cf, a master.cf pedig a modularitás miatt kell. Ismerkedjünk a main.cf-el először. A felépítése az alábbi:

opció = érték
A beállításokat a postfix reload paranccsal tölthetjük újra. A mynetworks rész jelenti azt, hogy milyen IP-kről fogadjon kérést a szervert. Itt feltétlenül legyen ott a loopback interfészünk IP-címe, ill. pl. a belső hálózatunk IP-je. A mailbox_command részt azért kommenteztem ki mert maildir formátumot akarok használni a levelek tárolására. Ez meggyorsítja a levelek elérését, mivel nem egy nagy fájlban csücsül az összes. Lockolható és NFS-en is használható. A home_mailbox = Maildir/ mondja meg hogy Maildirbe kézbesítse a leveleket a postfix. Az alap beállítások még a mailbox mérete, relay host beállítása aki továbbítja a levelünket, a domén, hostnév stb... Mentsük a fájlt, majd postfix reload!
Telepítsünk fel egy levelező klienst, ami létrehozza a legelső maildir könyvtárat a szerverünkön.

test:~# apt-get install mailx


Küldjünk egy levelet a root felhasználónak ( úgysem ő fogja megkapni, hanem a /etc/aliases fájlban definiált user, ha szerkesztjük ezt a fájlt utána ki kell adni a newaliases parancsot).

test:~# ps ax | grep postfix | mailx -s"maildirhez" root


Ez elküldi a ps ax | grep postfix parancs kimenetét a root felhasználóhoz társított felhazsnálónak. Nézzük meg a home könyvtárát és az új levelét! Ha meglestük, töröljük a levelet, majd a maildir könyvtárat másoljuk a /etc/skel alá. Így ha egy új felhasználót hozunk létre akkor automatikusan létrejön a maildir könyvtára. Ha POP3 vagy IMAP4 protokollokon is el akarjuk érni a postfixet, telepítenünk kell a courier-pop illetve courier-imap csomagokat.

Folytatás következik!

olvass tovább...

2010. június 7., hétfő

DNS tutorial


Első komolyabb bejegyzésemként a DNS-ről és a Bind9-ről szeretnék egy kicsit többet beszélni. Ahogy lesz időm, kiegészítem még, jelenleg ez egy működőképes leírás
Először egy kis elméleti alapozás a programról és a DNS-ről általánosan:

DNS alapok



Amikor beírunk egy címet egy alkalmazásba (pl. internetböngésző), akkor az alkalmazás meghív egy ún. resolver() könyvtári eljárást aminek a paramétere a cím. Ezt elküldi a beállított DNS szervernek, ami a saját adatbázisából megpróbálja feloldani a név-IP hozzárendelést. Ha ez sikerül akkor visszaküldi UDP csomagban az adott névhez tartozó IP címet.Ha nem sikerül, akkor a fölötte álló DNS szervert kérdezi meg, hátha ő tudja. Ez a folyamat egészen elhaladhat a root szerverekig, amikből összesen 13 van, A-M-ig jelölve. Minden root szerver elsődleges ( ún. top level) doménekért felel és „csak” annyit tudnak, hogy a DNS faszerkezetében melyik ágon kell elindulni hogy megkapjuk az IP-címet.




A DNS szervereknek lehetnek saját körzeteik, ezeket zónáknak hívjuk. A zónák rekordokból épülnek fel, ezek közül a legfontosabbak:

SOA A hatókör kezdete, ez az első rekord
A A név-IP cím hozzárendelésekre használjuk
NS Az adott zónáért felelős DNS szerverek nevét tartalmazza
MX Az adott zónába tartozó leveleket egy számítógépre irányítja
PTR A reverz zónában IP-hez rendel nevet
CNAME Kanonikus neveket rendelhetünk egy géphez, így több néven is elérhetjük
TXT Megjegyzéseket helyezhetünk el
SRV Erőforrás rekord
HINFO Az adott gépről adhatunk leírást






A névkomponensek maximálsan 63, a teljes név pedig 253 karakternyi lehet. Az angol ABC betűin kívül még használhatjuk a „-”-et illetve a számokat. Amikor tudjuk egy számítógép IP-címét, de a nevére vagyunk kíváncsiak, akkor fordított névfeloldást végzünk. Ekkor van szükségünk a reverz zónafájlra és a PTR rekordokra. A reverz zóna neve a kiszolgált hálózat IP címének azonosítójának változatlan oktetteiből épül fel, úgy hogy az oktetteket visszafelé írjuk fel és a végéhez illesztjük az „in-addr.arpa” szabványos kifejezést.
Ahhoz hogy saját zónákat üzemeltessünk tudnunk kell néhány fontos dolgot. Törvényileg szabályozva van, hogy minden körzethez tartoznia kell másodlagos névszervernek is, ráadásul másik hálózatban, más fizikai helyen és nagyon ajánlott másik internetszolgáltatónál
elhelyezni ( a legjobb ha másik AS-ben is van). A másodlagos névszervernek nincsenek saját zónái, azokat az elsődleges szerverről másolja le. Ha véletlenül kiesik a master szerverünk, akkor a másodlagos kit tudja szolgálni a kéréseket addig míg az első helyreáll.
Az elméletről ennyit, most jöjjön egy kis gyakorlati példa:

DNS beállítása debianon



Adott egy domén, legyen root-tech.hu és hozzá egy hálózati cím pl. 192.168.56.0/24. A telepítést és konfigurálást Debianon mutatom be, a többi disztribúción is nagyon hasonlóak a lépések. DNS szerverként a Bind9-et alkalmazom, de több választásunk is lehet, pl.pl djbdns, Xyria stb..., természetesen ezeket máshogy kell konfigurálni.

Szóval kezdjük is, bind9 telepítése:
test:~# apt-get install bind9
Ezután állítsd le amíg konfigurálod:
test:~# /etc/init.d/bind9 stop


Debianon a beállításokat tartalmazó könyvtár a /etc/bind. Itt több fájlt is látsz, ami db.-vel kezdődik az zónafájl, van ami kulcsokat tárol és vannak a named-del kezdődik, azok a konfig fájlok.
Ha saját zónákat szeretnél akkor a named.conf.local-t kell először szerkesztened valahogy így:

//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "root-tech.hu" {
            type master;
            file "/var/cache/bind/db.root-tech.hu";
};


zone "0.168.192.in-addr.arpa"
           type master;
           file "/var/cache/bind/db.56.168.192.in-addr.arpa";
};



A zone tagokkal kezded dekralálni a zónák nevét. A type szóval megadhatod a zóna típusát ami elsődleges szervereknél master, másodlagosaknál slave... Ha slave zónák lennének, akkor egy master szervertől kérnéd le a zónafájlokat. Ezt másodlagos dns szervereknél szokták alkalmazni. A file paraméter a zónafájl helyét adja meg, hivatkozhatsz rá abszolútan, vagy relatívan is. Az alsó zónáról pár szót: A nevéből látszik hogy ez egy reverse zóna ( az in-addr.arpa egy szabványos név, minden reverz zóna nevéhez oda kell illeszteni), ez azért kell hogy IP alapján névre tudj keresni. Mivel ez egy C osztályú cím, ebből az első 24 bit az állandó ( mert ha egy hálózatban vannak a gépek akkor a hálózat címük nem változik csak az állomásazonosító), ezért az utolsó oktettet el kell hagyni, hogy a PTR rekordok az értékeikkel kiegészíthessék őket.Pl. 1 a zóna nevével kiegészítve ezt adja: 10.56.168.192.in-addr.arpa . Ebből már látszik a normális ip-címe ami 192.168.56.1. Bővebben erről még a zóna fájloknál írok.
Ha beállítottad a named.conf.local-t, akkor jöhetnek a másolós dolgok. A db. empty fájlt kell átmásolni az named.conf.local-ban a file paraméternél deklarált nevekkel. Itt most db.root-tech.hu és db.56.168.192.in-addr.arpa. Tehát másolod és megadod hogy ezen a néven másolja át a /var/cache/bind alá. Ha ezzel is megvagy, akkor szerkeszteni kell őket. Először a db.root-tech.hu-t nézzük:

; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA test.root-tech.hu. root.localhost. (
2010060401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS test.root-tech.hu.
test IN A 192.168.56.1
root-tech.hu. IN MX 10 test
www IN CNAME test

A fájlban a kukac jel a zónát jelenti. A SOA rekord tartalmaz információkat a zónáról, sorrendben a gép nevét, a szerverért felelős személy e-mail címét és a Serial, Refresh, Retry, Expire, Negative Cache TTL értékeket.
A Serial egy sorszám, amelyet módosítanunk kell ha megváltoztattuk a zónafájlt. Érdemes „emberi” számokat hazsnálni, nálam ez a mai dátum megtoldva a 01-el. Ennek akkor van fontos szerepe, ha van másodlagos névszerverünk, mert az ebből az értékből tudja hogy újra le kell-e kérnie a zónafájlt.
A Refresh egy másodpercekben megadott érték, a másodlagos névszerverek ennyi időközönként kérik le a Serial értékét. Ha nem sikerül a lekérdezés, akkor a Retry-ben szereplő idő leteltével próbálkozik újból.
Az Expire a zóna adatainak érvényességét jelenti, ennyi ideig szolgáltatja a másodlagos névszerver a zóna rekordjait.
A Negative Cache TTL a hibás lekérdezések tárolásának ideját jelenti másodpercben.

A következő fontos dolog az a rekordok általános felépítése és típusa.

Név Élettartam Osztály Típus Érték
Az élettartam mező elhagyható.

Az IN az osztályt jelenti, szinte mindig ezt használjuk. Ha a név után nem írunk pontot, akkor a bind hozzáilleszti a névhez a zóna nevét, ezért nem írtam oda a www-hez és az ftp-hez sem. Ha pontot teszek a végére, akkor nem illeszti mögé, ilyenkor ki kell írni az FQDN nevét! (FQDN- Teljesen minősített körzetnév: a gép teljes neve, a végére pontot szokás írni)
Nézzük a reverse fájlt:



; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA test.root-tech.hu. root.localhost. (
2010060401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS test.root-tech.hu.
1 IN PTR test.root-tech.hu.



Ebbe már nem túrtam bele annyira, csak a PTR rekordot vettem fel ami az test.root-tech.hu gépre mutat( az IP címe ebből adódik hogy 192.168.56.1 ) és átírtam a localhostot . Itt vigyázz hogy ha nevet írsz akkor írd ki az FQDN nevét és zárd le ponttal, különben valami ilyesmit kapnál : test.56.168.192.in-addr.arpa :D

Most jöhet a named.conf.option-s szerkesztése, az ebben a fájlban tárolt beállítások minden zónára érvényesek amit kezelsz ( ha finomítani akarsz akkor a named.conf.local-ban az adott zónánál kell beszúrni a beállítást)!



A legfelső nameserver kifejezés után a loopback címed szerepeljen!
Most indítsd el a Bind9 et:
/etc/init.d/bind9 start
Ha hiba nélkül indult akkor jó, különben a syslog-ba írná be hogy mi a baja. Szintaktikai hibák szoktak lenni, figyelj oda hogy a tagokat pontosvesszővel kell lezárni ( kivéve ha a tagot kapcsoszárójel követi). És a kapcsoszárójel bezáró tagját is ;-el zárjuk. Ha olyan hibaüzenetet kapnál hogy a fájlnak nincs vége, akkor valószínűleg lemaradt egy aposztróf lezárása.
Ezután ellenőrizd hogy feloldja-e a neveket a bind. 3 féle dologgal szoktuk teszteni, a dig-gel, nslookup-al és a host-tal.
Próbáld a dig et először:
test:~# dig www.root-tech.hu

; <<>> DiG 9.5.1-P3 <<>> www.root-tech.hu ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16922 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.root-tech.hu. IN A ;; ANSWER SECTION: www.root-tech.hu. 86400 IN CNAME test.root-tech.hu. test.root-tech.hu. 86400 IN A 192.168.56.1 ;; AUTHORITY SECTION: root-tech.hu. 86400 IN NS test.root-tech.hu. ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Jun 4 20:25:25 2010 ;; MSG SIZE rcvd: 83 <
A válasznál figyelni kell hogy kitől jön a válasz, ha a loopback címről akkor jó, és ha visszaadta az IP-t akkor működik (figyeld majd az ANSWER részt is, ha 0 akkorvalami gond van, ha legalább 1 akkor viszont jó :) )
Üdv. Tibi
olvass tovább...