CATEGORII DOCUMENTE |
Introducere
La finele acestui modul, fiecare dintre dumneavoastra ar trebui sa poata
configura un server Linux cu un sistem Red Hat (indiverent de versiune) care sa
poata oferi retelei din care face parte cele mai comune servicii si care sa fie
securizat din toate punctele de vedere J.
Etapele care vor trebui parcurse sunt urmatoarele:
Instalarea sistemului de operare (etapa realizata la finele primului modul)
Stergerea tuturor pachetelor RPM care nu sunt folosite
Instalarea pachetelor RPM necesare pentru compilarea de software (daca este cazul)
Securizarea sistemului
Optimizarea sistemului
Reinstalarea, recompilarea si optimizarea Kernelului pentru sistemul pe care-l administrati
Configurarea unui firewall in conformitate cu serviciile pe care le veti rula pe server
Instalarea OpenSSL pentru a putea folosi avantajele comunicatiilor criptate
Instalarea OpenSSH pentru a va putea conecta securizat la server pentru administrarea lui distanta
Instalare sXid
Instalare Logcheck
Instalare PortSentry
Instalare Tripwire
Instalare ISC BIND & DNS
Instalare Sendmail sau qmail
Instalare software aditional in functie de propriile nevoi
Instalarea sistemului de operare
In acest modul al doilea al cursului de Linux, nu voi mai detaila fiecare aspect legat de partea de instalare ci voi sublinia doar unele aspecte legate de pregatirea serverului pentru aceasta parte a materialului. Si anume dupa ce a fost partitionat hard disk-ul folosind Disk Druid sau fdisk, dupa de a fost ales boot loader-ul si au fost facute configurarile legate de retea (IP, DNS si Gateway) interfata de instalare va trece la configurarea firewall-ului.
Aceasta configurare de firewall poate fi destinata end user-ilor dar in nici un caz unui administrator de sistem care sa se poata baza pe acest firewall. In spatele interfete este de fapt un vechi utilitar folosit de Red Hat in trecut si anume IPCHAINS bazat pe pachetul lokkit. El nu mai este folosit in prezent, fiind inlocuit de IPTABLES, si din aceste motive recomand ca in ecranul de configurare al acestui firewall sa alegeti optiunea "No firewall".
Urmatoarele ecrane sunt destinate configurarii limbi folosite, orei serverului, a parolei de root, precum si a modului de autentificare (se va opta pentru MD5 password si Shadow password), apoi urmeaza partea cea mai importanta si anume selectarea pachetelor care vor fi instalate pe acest server.
Pentru instalarea unui server de Linux, prima conditie pe catre trebuie sa o indeplineasca acesta este sa fie foarte sigur, un sistem cat se poate de securizat. In ecranul in care se cere selectarea pachetelor care se doresc instalate (Selecting Package Groups), in cazul nostru fiind vorba de un server de retea, TREBUIE SA DESELECTAM ABSOLUT TOT din lista disponibila de pachete.
Pasul 1
Inainte de toate, vom verifica pentru a fi siguri ca sunt deselectate toate pachetele din grupurile listate:
Nota Este foarte important se deselectati abolut tot (nu trebuie sa aveti nimic selectat) J si apoi puteti sa dati Next pentru a trece in urmatorul ecran. |
Printer Suport X Windows System GNOME KDE Mail/WWW/News Tools DOS/Windows Connectivity Graphics Manipulation Games Multimedia Support Network Workstation Dialup Workstation Laptop Support News Server NFS Server |
SMB (Samba) Server IPX/Netware Connectivity anonymous FTP Server SQL Server Web Server DNS Name Server Network Management Workstation Authoring/Publising Emacs Development Kernel Development Utilities Everything |
Software recomadat pentru fiecare tip de server
Datorita dorintelor de reducere a costurilor de productie, majoritatea companiilor sunt atrase tot mai mult de folosirea se software Open Source, gratuit care poate fi procurat chiar de pe Internet. Din acest motiv, Linux-ul a devenit o alternativa viabila pentru serverele de institutie. Reducand la 0 costurile de licentiere pentru programele software utilizare, deoarece Linux foloseste programe sub licenta GPL (General Public License), administratorii de retea au posibilitatea de a da mai multa atentie si aspectului hardware.
Cu toate ca sistemul Linux este un sistem multitasking si permite rularea simultana a mai multor servicii, este recomandat din punct de vedere al securitatii ca serverele de institutie sa nu furnizare toate serviciile de care au nevoie folosind o singura platforma ci sa se incerce distribuirea lor pe mai multe masini fizice.
Tabelele de mai jos prezinta structurat componentele software care trebuie instalate pe sistemele folosite in functie de rolul pe care-l vor indeplini in reteaua din care fac parte.
In schemele de mai jos am folosit urmatoarele conventii:
Ø Optional Components: componente care pot fi instalate optional pe serverul administrat, dar care imbunatatesc performantele serverului in acord cu functia sa
Ø Security Software Required: componentele care sunt necesare pentru a oferi un minim de securitate in conformitate cu tipul de server configurat
Ø Security Software Recommended: software optional recomandat pentru imbunatirea securitatii serverului.
Software care trebuie dezinstalat dupa instalarea serverului
Red Hat Linux pe langa multiplele avantaje pe care le prezinta are si un mic dejavantaj J, in sensul ca in urma procesului de instalare pe serverul nostru vor fi instalate o seama de programe, pe care nu le vom folosi in viitor si pentru care nu n-i se ofera nici o posibilitate de dezinstalare in faza de setup a sistemului. Din acest motiv acestea vor trebui dezinstalate manual inainte de a incepe configurarea serverului.
In continuare, am listat pachetele de software care ar trebui sterse din sistem odata ce instalarea s-a incheiat.
anacron apmd at dhcpcd dosfstools eject |
hotplug ipchains ksymoops kudzu lokkit mailcap |
pciutils pump raidtools redhat-logos redhat-release setserial |
Folosind comanda RPM si optiunile acesteia, pachetele de mai sus trebuiesc dezinstalate pentru a putea trece la instalarea propriu-zisa a serverului:
[root@ro-host /]# rpm -e <softwarenames> |
unde <softwarenames> este numele intreg al pachetului pe care dorim sa-l dezinstalam.
Pasul 1
Programe ca apmd, Sendmail, at si anacron sunt daemon-i care ruleaza ca procese. Este indicat sa oprim aceste procese inainte de a incepe efectiv dezinstalarea lor.
[root@ro-host /]# /etc/rc.d/init.d/apmd stop Shutting down APM daemon: [OK] |
[root@ro-host /]# /etc/rc.d/init.d/sendmail stop Shutting down sendmail daemon: [OK] |
[root@ro-host /]# /etc/rc.d/init.d/atd stop Shutting down at daemon: [OK] |
[root@ro-host /]# /etc/rc.d/init.d/anacron stop Shutting down anacron: [OK] |
Pasul 2
Odata ce procesele apmd, Sendmail, at si anacron au fost oprite, putem dezinstala in siguranta, toate pachetele din tabelul de mai sus.
[root@ro-host /]# rpm -e --nodeps anacron apmd at dhcpcd dosfstools eject hotplug ipchains ksymoops kudzu lokkit mailcap pciutils pump raidtools redhat-logos redhat-release setserial [root@ro-host /]# rm -rf /var/spool/anacron/ |
Pasul 3
Pachetul hdparm este folosit de catre serverul dumneavoastra in cazul in care el foloseste disk-uri IDE si nu disk-uri SCSI. Daca aveti un hard IDE acest program va trebui sa ramana, dar daca hard disk-ul este IDE, din motive de securitate acest program va trebui dezinstalat. hdparm este folosit pentru optimizarea hard disk-urilor IDE. Cele SCSI nu au nevoie de optimizare deoarece ele sunt capabile sa ruleze la viteza maxima (80 Mps - 160 Mps) fara modificari.
[root@ro-host /]# rpm -e hdparm |
Pasul 4
Pachetul mkinitrd este folosit de hard disk-urile SCSI sau RAID, dar nu si de cele IDE. Daca serverul care se instaleaza acum are hard disk-uri SCSi sau RAID acest program va ramane, iar daca are disk-uri IDE acesta trebuie dezinstalat.
[root@ro-host /]# rpm -e --nodeps mkinitrd |
Pasul 5
Urmatoarele programe kbdconfig, mouseconfig, timeconfig, authconfig, ntsyssv si setuptool sunt folosite pentru setarea tipului de tastaura, a mouse-ului, a time zone-ului, a tipului de autentificare si pentru creerea link-urilor simbolice in directorul /etc/rc.d. Dupa ce acestea au fost configurate in timpul procesului de instalare, ele nu vor mai fi folosite. Din acest motiv se recomanda ca ele sa fie dezinstalate. Daca in viitor va mai fi nevoie de o noua setare a tastaturii, mouse-ului, etc pachetele RPM se pot reincarca de pe CD-ROM-urile de instalare.
[root@ro-host /]# rpm -e kbdconfig mouseconfig timeconfig authconfig ntsyssv setuptool |
Pasul 6
Pachetul quota este un utilitar al sistemului destinat monitorizarii si limitarii spatiului pe disk (sau pe fisiere) pentru user-i/group-uri. Acest program trebuie sa fie instalat doar pe serverele unde se doreste aceasta facilitate de limitare.
[root@ro-host /]# rpm -e quota |
Pasul 7
Chiar daca nu doriti instalarea unui server de mail pe acest sistem Linux, pachetul sendmail (sau un client echivalent) este necesar in totdeauna pe serverul dumneavoastra pentru potentialele mesaje trimise de catre serviciile instalate catre contul de root. Sendmail este un agent MTA (Mail Transport Agent) si este destinat managementului mesajelor. El poate fi configurat in diverse maniere, dar despre acest server va fi un capitol dedicat. Pentru o configurare exact pentru necesitatile retelei este recomandarea dezinstalarea pachetului care a folosit o instalare implicita si configurarea si instalarea lui ulterioara.
[root@ro-host /]# rpm -e sendmail |
Pasul 8
Pachetul procmail este un program destinat procesarii mail-urilor si care este folosit de sendmail pentru procesarea mail-urilor local, pe server. Acest program este necesar pe serverul dumneavoastra doar in cazul el are rolul de server de mail si utilizeaza sendmail. Recomandarea este sa fie dezinstalat daca serverul care se instaleaza nu are rolul de server de mail pentru reteaua din care face parte.
[root@ro-host /]# rpm -e procmail |
Pasul 9
Pachetul OpenLDAP este destinat configurarii sistemului in asa fel incat sa permita accesarea serviciului de directoare intr-un mod similar unei carti de telefon. Aceasta optiune nu este folosita de toate serverele, iar din acest motiv daca nu este folosit se recomanda dezinstalarea sa.
[root@ro-host /]# rpm -e openldap |
Pasul 10
Aplicatia de Cyrus SASL este o implementare pentru Simple Authentication and Security Layer care se utilizeaza in conjunctie cu Cyrus care nu este altceva decat un program de mesagerie electronica, precum Sendmail. Daca acest agent de mail nu este folosit se recomanda dezinstalarea sa.
[root@ro-host /]# rpm -e cyrus-sasl |
Pasul 11
OpenSSL este un mecanism de criptare SSL care asigura transportul securizat a datelor in interiorul retelei. Acest program este unul dintre cele mai importante utilitare pentru un server Linux si este recomandat ca acest software sa nu lipseasca din serverul dumneavoastra. Partea trista este ca asa cum se instaleaza el implicit in sistem nu este update-atat si customizat pentru serverul nostru. Din aceste motive, il vom dezinstala si il vom instala ulterior. Un capitol ulterior va trata detailat modul de instalare, securizare si configurare.
[root@ro-host /]# rpm -e openssl [root@ro-host /]# rm -rf /usr/share/ssl |
Pasul 12
Pachetul ash este o versiune restransa de shell Bourne (sh). Odata deja folosit acest pachet, el se poate dezinstala din sistem.
[root@ro-host /]# rpm -e ash |
Pasul 13
Pachetul time este un utilitar folosit de catre dezvoltatorii de software cu ajutorul caruia se poate monitoriza gradul de utilizare al resurselor de sistem de catre programele dezvoltate.
[root@ro-host /]# rpm -e time |
Pasul 14
Pachetul krb5-libs contine librariile folosite de catre Kerberos 5. Deoarece nu folosim Kerberos, acest pachet va fi dezinstalat. Kerberos nu este atat de secure pe cat s-ar putea crede si poate fi usor crack-uit cu un volum minim de cunostinte despre acest program. In orice caz este decizia dumneavoastra daca doriti sau nu sa-l pastrati.
[root@ro-host /]# rpm -e krb5-libs [root@ro-host /]# rm -rf /usr/kerberos/ |
Descrierea programelor care vor fi deinstalate dupa instalarea serverului
In continuare aveti o scurta descriere a programelor care vor fi dezinstalate odata ce instalarea serverului a fost finalizata:
Stergerea fisierelor de documentatie
Standard, majoritatea pachetelor RPM instalate in sistemul nostru vin impreuna cu fisierele de documentatie care descriu software-ul respectiv. Aceste fisiere de documentatie contin fisierele originale din arhive, de genul README, FAQ, BUG, INSTALL, NEWS, PROJECTS precum si altele.
Multe dintre aceastea se gasesc mult mai usor direct pe site-ul de unde gasim disponibil spre download si programul la care se refera. Din acest motiv nu vad personal motivul pentru care avem nevoie si de o copie locala a acestor documentatii.
Pentru stergerea fisierelor de documentatie din sistem folosim comanda:
[root@ro-host /]# cd /usr/share/doc/ [root@ro-host doc]# rm -rf * |
Stergerea fisierelor si directoarelor "inutile"
Fisierele si directoarele la care fac referire aici pot fi sterse manual din sistem pentru a avea o instalare cat mai curata. Ele nu sunt folosite, dar exista chiar si dupa instalarea foarte secure. Aceste fisiere si directoare rezida in sistem datorita unor bug-uri sau in cele mai multe cazuri datorita unor scripturi care le creaza automat chiar daca nu vor fi folosite.
Stergerea fisierelor si directoarelor goale/nefolositoare din sistem se face folosind comanda:
[root@ro-host /]# rm -f /etc/exports [root@ro-host /]# rm -f /etc/printcap [root@ro-host /]# rm -f /etc/ldap.conf [root@ro-host /]# rm -f /etc/yp.conf [root@ro-host /]# rm -f /etc/hosts.allow [root@ro-host /]# rm -f /etc/hosts.deny [root@ro-host /]# rm -rf /etc/xinetd.d/ [root@ro-host /]# rm -rf /etc/hotplug/ [root@ro-host /]# rm -rf /etc/ppp/ [root@ro-host /]# rm -rf /etc/opt/ [root@ro-host /]# rm -rf /etc/X11/ [root@ro-host /]# rm -rf /opt/ [root@ro-host /]# rm -rf /var/opt/ [root@ro-host /]# rm -rf /var/nis/ [root@ro-host /]# rm -rf /var/spool/lpd/ [root@ro-host /]# rm -rf /usr/X11R6/ [root@ro-host /]# rm -rf /usr/etc/ [root@ro-host /]# rm -rf /usr/local/ [root@ro-host /]# rm -rf /usr/dict/ [root@ro-host /]# rm -f /usr/bin/X11 [root@ro-host /]# rm -f /usr/bin/kbdrate [root@ro-host /]# rm -f /usr/lib/X11 [root@ro-host /]# rm -f /usr/lib/libcrypto.so.1 [root@ro-host /]# rm -f /usr/lib/libssl.so.1 [root@ro-host /]# rm -rf /usr/lib/games/ [root@ro-host /]# rm -rf /usr/share/empty/ [root@ro-host /]# rm -rf /usr/share/pixmaps/ |
Nota Daca in viitor veti dori sa instalati un program care are nevoie de fisiere/directoare pe care le-ati sters in aceasta etapa, ele vor fi recreate automat. Good! |
Software care trebuie instalat dupa instalarea serverului
Dupa ce am inlaturat toate programele care nu sunt necesare pentru o fuctionare buna si sigura a unui server Linux, acum trebuie sa avem grija sa instalam programele care vor permite compilarea software-ului care va fi instalat pe server. Din acest motiv veti instala urmatoarele pachete RPM. Aceasta parte a instalarii este foarte importanta in care veti instala toate pachetele listate mai jos.
Pe primele doua CD-uri veti gasi in directorul /RedHat/RPMS toate pachetele necesare pentru compilarea si instalarea de programe. In cazul in care doriti ca pe acest server sa nu compilati ulterior software sau daca veti folosi doar pachete RPM pentru update-ul de programe sau veti utiliza un server dedicat pentru dezvoltare (compilare si creere de pachete RPM) atunci nu mai este necesara instalarea acestor pachete.
Pasul 1
Vom monta CD-ROM-ul si ne vom pozitiona in directorul in care gasim pachetele dorite.
Pentru montarea CD-ROM-ului si mutarea in directorul de lucru vom folosi comenzile:
[root@ro-host /]# mount /dev/cdrom /mnt/cdrom had: ATAPI 32X CD-ROM drive, 128kB Cache mount: block device dev/cdrom is write-protected, mounting read-only [root@ro-host /]# cd /mnt/cdrom/RedHat/RPMS/ |
In acest director gasim toate pachetele de care avem nevoie la compilarea si instalarea unui program nou in sistem. Materialul de fata, va prezenta o lista minima de pachete care acopera majoritatea resurselor necesare in cazul tarball-urilor. Pot exista si excepti, de aceea recomand citirea inainte de orice instalare a fisierelor README.
Pachetele de compilatoare
Pachetele cu compilatoare contin programe si limbaje care sunt folosite la construirea software-ului in sistemul nostru. Nu uitati ca dupa instalare sa stergeti aceste pachete.
Pachetele pentru dezoltare
Pachetele destinate dezvoltarii contin header-ele si alte fisiere necesare in timpul procesului de compilare. In general, aceste pachete sunt necesare atunci cand dorim sa adaugam functionalitati suplimentare unui program atunci cand vrem sa-l compilam. Un exempla care imi vine acum in minte, daca dorim sa adaugam suport PAM pentru IMAP, avem nevoie de pachetul pam-devel, care contine fisierele necesare compilarii. Ce trebuie retinut ca aceste pachete nu aduc o imbunatatirea modului de functionare a serverului ci doar sunt necesare la compilarea diverselor programe.
ca si in cazul precedent, dupa ce au fost instalate, se recomanda ca pachetele sa fie sterse din sistem.
Pachetele de dependinte
Pachetele de dependinte sunt tot pachete RPM, pe care alte pachete RPM le cer in procesul de instalare J. Daca mai sunt necesare si alte pachete ele vor fi cerute in clar de sistem la incercarea de instalare a unor programe noi.
Pasul 2
Instalarea pachetelor de mai sus, pentru a nu primi mesaje de eroare legate de dependinte este bine sa se faca impreuna. Pachetele necesare care se gasesc pe cele doua CD-uri vor fi copiate local in directorul /var/tmp de unde se va lansa instalarea lor.
Procedura de instalare va si facuta folosind urmatoarele comenzi:
[root@ro-host /]# cd /var/tmp/ [root@host tmp]# rpm -Uvh *.rpm binutils ################################################## bison ################################################## byacc ################################################## cdecl ################################################## cpp ################################################## cproto ################################################## ctags ################################################## dev86 ################################################## flex ################################################## gcc ################################################## kernel-headers ################################################## gcc-c++ ################################################## m4 ################################################## make ################################################## patch ################################################## perl ################################################## aspell-devel ################################################## db3-devel ################################################## freetype-devel ################################################## gd-devel ################################################## gdbm-devel ################################################## glibc-devel ################################################## libjpeg-devel ################################################## libpng-devel ################################################## libstdc++-devel ################################################## ncurses-devel ################################################## pam-devel ################################################## pspell-devel ################################################## zlib-devel ################################################## gd ################################################## libjpeg ################################################## libpng ################################################## pspell ################################################## freetype ################################################## libtool-libs ################################################## |
Nota Deoarece pachetele din listele de mai sus sunt localizate pe mai multe CD-uri se recomanda copierea lor locala si apoi instalarea lor. |
Verificarea programelor instalate pe server
Daca au fost urmati pasi de instalare descrisi in acest material, lista demai jos va contine programele pe care ar trebui sa le aveti pe serverul dumneavoastra, dupa ce instalarea a fost definitivata.
Pasul 1
Lista cu programele instalate o gasiti in fisierul install.log din directorul /tmp
Nota In tabelul de mai sus, pachetele care apar bold-uit au fost dezinstalate din sistem. Ceea ce trebuie retinut ca unele pachete vor trebui instalate ulterior manual, iar altele nu sunt necesare in munca de zi cu zi. |
Pasul 2
Dupa ce au fost dezinstalate toate pachetele inutile si au fost adaugate pachetele necesare procesului de compilare, administratorul de retea trebuie sa verifice lista tuturor pachetelor RPM instalate.
Pentru a verifica lista tuturor pachetelor din sistem se foloseste comanda:
[root@ro-host /]# rpm -qa > installed_rpm |
Aducerea la zi a pachetelor RPM instalate
Acum ca avem un server Linux Red Hat instalat si securizat este bine sa actualizam toate pachetele RPM din sistem inainte de a incepe configurarea lui propriuzisa.
RedHat pune la dispozitia utilizatorilor de sisteme RedHat Linux un program numit up2date sau apt care aduce in sistemul dumneavoastra ultimele versiuni ale pachetelor RPM de pe site-ul de web RedHat folosind o conexiune securizate HTTPS/SSL care va rula in background. Aceasta modalitate este descrisa in detaliu in primul modul al acestui curs in capitolul 3.6.1 J.
Securizare si optimizare - Kernel Security
Kernelul este inima sistemului de operare, fara kernel nu exista Linux J. Din aceste motive este recomandat sa acordam o atentie deosebita si acestei parti a sistemului de operare. Red Hat nu este Linux, ci o distributie bazata pe un kernel Linux. Kernelul Linux este un program complex care ofera seviciile de baza pentru restul programelor din distributia Linux. Datorita faptului ca, spre deosebire de sistemele de operare comerciale ca Windows sau MacOS, codul sursa al kernelului Linux este disponibil gratuit, rezulta ca este foarte usor de adaugat noi imbunatatiri si facilitati la acesta. Recompilarea kernelului Linux din surse a devenit din acest motiv o operatie destul de des intalnita, si se fac eforturi din ce in ce mai mari pentru ca aceasta operatie sa devina cat mai usoara pentru cei neexperimentati.
Cand va ganditi sa optimizati kernelul sistemului dumneavoastra de operare trebuiesc avute in vedere urmatoarele motive din care o faceti (acestea imi vin in minte acum):
Kernelul va fi mai rapid (cu cat cod cu atat mai bine)
Sistemul va avea memorie mai multa (Kernelul nu va folosi NICIODATA memorie virtuala)
Sistemul va fi mai stabil (nu va mai cauta alte componente neinstalate)
Partile nefolosite ale unui Kernel neadaptat la sistemul dumneavoastra pot fi folosite de un atacator extern
Modulele instalate individual in sistem sunt mai lente decat daca ar avea suport compilat direct in Kernel.
In materialul de fata voi detaila modul de compilare intai pentu un kernel monolithic, care este metoda cea mai recomandata pentru obtinerea celor mai bune performante precum si a unui kernel modularizat, recomandat sistemlor care se doresc portabile pe diverse sisteme Linux. Kernel monolithic inseamna ca administratorul de sistem va trebui sa raspunda doar cu yes sau no la intrebarile sistemului.
Premizele instalarii
Comenzile sunt compatibile pe orice sistem Unix.
Calea catre surse folosita in acest curs este /usr/src (oricare alta cale poate fi folosita, ca o masura de "discretie" pentru distributia utilizata de dumneavoastra).
Instalarea a fost testata pe un sistem Red Hat 9.0.
Toate etapele configurarii au fost facute folosind un cont de super-user "root".
Ultima versiune de Kernel este 2.4.5
Ultimele pach-uri de securitate nu sunt inca disponibile pentru aceasta varianta
Pachete
Cursul de fata, foloseste instructiuni de instalare si informatii legate de Linux Kernel actualizate la data de 20/12/2004. Va rog verificati ultimele modificari, accesand site-ul www.kernel.org .
Codul sursa este disponibil la adresa:
Kernel Homepage: https://www.kernel.org
Kernet FTP Site: 209.10.41.242
Ultima versiune disponibila: linux-2.4.5.tar.gz
Secure Linux Kernel Patches Homepage: https://www.openwall.com/linux
Secure Linux Kernel Patches FTP Site: 195.42.162.180
Ultima versiune disponibila: nu exista
Cerinte
In raport de functiile pe care doriti sa le indeplineasca serverul al carui kernel il compilam, daca trebuie sa aiba firewall si suport quota pentru userii sai, kernelul de Linux cere ca aceste software-uri sa fie deja instalate corespunzator in sistem. In cazul in care aceste pachete nu sunt instalate, ele vor fi adaugate de pe CD-ROM sau de pe orice alt suport inainte de a incepe operatia de compilare.
iptables este un pachet care contine programe noi si foarte puternice folosite de Linux pentru configurarea firewall-ului si masquerading. Acest pachet trebuie instalat daca dorim ca serverul pe care-l instalam sa aiba suport pentru firewall.
quota este un pachet de administrare folosit pentru monitorizarea si limitarea spatiului de pe disk alocat fiecarui user. Acest pachet il vom instala daca dorim sa putem controla marimea directoarelor create de useri pe server.
Ø Pentru a verifica daca pachetul iptables este instalat folosim comanda:
[root@ro-host /]# rpm -q iptables Package iptables is not installed |
Ø Pentru a verifica daca pachetul quota este instalat pe serverul nostru folosim:
[root@ro-host /]# rpm -q quota Package quota is not installed |
Montam CD-ROM-ul pentru a cauta pachetele dorite:
[root@ro-host /]# mount /dev/cdrom /mnt/cdrom/ had: ATAPI 32X CD-ROM drive, 128kB Cache mount: block device dev/cdrom is write-protected, mounting read-only |
Instalam direct de pe CD pachetele dorite folosind comenzile de mai jos
[root@ro-host /]# cd /mnt/cdrom/RedHat/RPMS/ [root@ro-host RPMS]# rpm -Uvh iptables-version.i386.rpm iptables ################################################## [root@ro-host RPMS]# rpm -Uvh quota-version.i386.rpm quota ################################################## |
Tuning Kernel
Primul lucru important pe care un administrator de sistem trebuie sa-l faca este sa copieze arhiva noului kernel in directorul usr/src si sa stergem kernelul nou din sistem inainte de instalrea celui nou. Stergerea kernelului pe care serverul il foloseste nu il va bloca decat doar in cazul in care vom reboot-a sistemul inainte de instalarea celui nou.
Pasul 1
Este necesar aducerea in sistemul nostru (in directorul /usr/src) a unei copii a arhivei ultimei versiuni de kernel.
Pentru a copia arhiva Kernelului Linux in directorul /usr/src folosim comanda:
[root@ro-host /]# cp linux-version.tar.gz /usr/src |
Ne mutam in acest director, folosind comanda:
[root@ro-host /]# cd /usr/src |
Pasul 2
In functie de versiunea de Kernel care a fost anterior instalata avem doua posibilitati de dezinstalare, dupa cum urmeaza.
Daca Kernelul actual a fost instalat folosind o arhiva tar
Aceste etape sunt valabile doar in cazul in care versiunea de kernel folosita in prezent a fost instalata dintr-o arhiva. Daca este o instalare recenta, la care nu au fost aduse schimbari semnificative 1000% s-au folosit pachete RPM si anume kernel-headers-version.i386.rpm, kernel-version.i386.rpm.
Stergem link-ul simbolic din directorul /usr/src:
[root@ro-host src]# rm -f linux |
Stergem directorul in care a fost instalat head-erul kernelului anterior folosind comanda:
[root@ro-host src]# rm -rf linux-2.4.x |
Stergem kernelul folosit anterior folosind comanda:
[root@ro-host src]# rm -f /boot/vmlinuz-2.4.x |
Stergem fisierul System.map folosind urmatoarea comanda:
[root@ro-host src]# rm -f /boot/System.map-2.4.x |
Stergem directoarele cu modulele folosite de kernel (daca este cazul) folosind comanda:
[root@ro-host src]# rm -rf /lib/modules/2.4.x/ |
Nota Stergerea modulelor folosite de vechiul kernel este necesara doar in cazul in care sistemul nostru a folosit un kernel modular. Daca directorul de module este gol, mai exact directorul lib/modules atunci inseamna ca vechiul kernel nu a fost unul de tip modular. |
Daca vechiul Kernel a fost instalat din pachete RPM
Daca tocmai ati terminat de instalat sistemul dumneavoastra atunci in mod sigur kernelul a fost instalat avand la baza pachete RPM. Pentru dezinstalarea lui veti folosi urmatoarele etape.
primul lucru pe care administratorul de sistem trebuie sa-l faca este sa verifice versiunea de kernel instalata. Aceasta se face folosind comanda:
[root@ro-host src]# rpm -qa | grep kernel kernel-2.4.2-2 kernel-headers-2.4.2-2 |
Comanda de mai sus nu a facut decat sa ne arate ca kernel si kernel-header au fost singurele pachete kernel RPM instalate in sistem. Ele vor trebui dezinstalate.
Dezinstalarea lor se va face folosind urmatoarele comenzi:
[root@ro-host src]# rpm -e -- nodeps kernel kernel-headers |
Nota Daca primiti un mesaj de eroare de genul cannot remove /lib/modules/2.4.x dyrectory, directory not empty, atunci stergeti inatai directorul manual folosind comanda: rm -rf /lib/modules/2.4.x/. Acest director este legat de functionarea vechiului kernel si nu este necesar pentru versiunea noua de kernel pe care dorim sa o instalam. |
Pasul 3
Odata ce versiunea veche de Kernel a fost dezinstalata de pe server si dupa ce arhiva noului Kernel se gaseste in directorul /usr/src putem incepe dezarhivarea lui. Nu uitati ca dupa desfasurare sa stergeti arhiva pentru conservarea spatiului de pe server.
Dezarhivarea versiuni noi de Kernel se face folosind comanda:
[root@ro-host src]# tar xzpf linux-version.tar.gz |
Stergerea arhivei folosite se face astfel:
[root@ro-host src]# rm -f linux-version.tar.gz |
Nota Daca operatia de compilare a Kernelului este ceva nou pentru dumneavoastra va recomand sa pastrati aceasta arhiva (linux-version.tar.gz) pana la finalizarea cu succes a instalarii. Daca se intampla ceva in timpul procesului de instalare, avand sursa la dispozitie puteti reincerca. |
Pasul 4
Acum trebuie sa facem unele modificari in fisierele pe care le-am dezarhivat pentru a obtine maximum de capabilitati. Toate optimizarile vor fi descrise in continuare si nu fac decat sa creasca functionalitatea Kernelului fata de versiunea standard.
Editati fisierul sem.h (vi +66 /usr/src/linux/include/linux/sem.h) in care veti schimba urmatoarea linie:
#define SEMMNI 128 /* <= IPCMNI max # of semaphore identifiers */ |
cu
#define SEMMNI 512 /* <= IPCMNI max # of semaphore identifiers */ |
Editati fisierul printk.c (vi +26 /usr/src/linux/kernel/print.c) si modificati urmatorii parametri:
#define LOG_BUF_LEN (16384) |
cu
#define LOG_BUF_LEN (65536) |
Pasul 5
Ultimul pas este de a instrui Kernelul sa foloseasca intr-un mod cat mai optim arhitectura procesorului de pe serverul dumneavoastra.
Editati fisierul Makefile (vi +19 /usr/src/linux/Makefile) si modificati urmatoarea linie:
HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer |
cu
HOSTCFLAGS = -Wall -Wstrict-prototypes -O3 -funroll-loops -fomitframe-pointer |
Tot in acest fisier mai modificati si linia 90 si schimbati astfel:
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer-fno-strict-aliasing |
cu
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -O3 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing |
Aplicarea pach-urilor de securitate
Aplicarea pach-urilor de securitate este o cale foarte sigura de prevenire a atacurilor de genul Buffer Overflow, precum si altor tipuri de atacuri. Aceste pach-uri fac sistemul dumneavoastra mult mai stabil si sigur.
Primul lucru care trebuie facut inainte de a aplica un patch de securitate pentru kernel este sa verificam pe site-ul producatorului ultimul patch disponibil. In continuare voi folosi un exemplu fictiv pentru descrierea etapelor de instalare. Pach-ul disponibil pentru versiunea noastra de kernel va fi denumita in continuare linux-2.4.5-ow1.tar.gz.
Pentru aplicarea unui patch de securitate folosim comenzile urmatoare:
[root@ro-host /]# cp linux-2.4.5-ow1.tar.gz /usr/src/ [root@ro-host /]# cd /usr/src/ [root@ro-host src]# tar xzpf linux-2.4.5-ow1.tar.gz [root@ro-host src]# cd linux-2.4.5-ow1/ [root@ro-host linux-2.4.5-ow1]# mv linux-2.4.5-ow1.diff /usr/src/ [root@ro-host linux-2.4.5-ow1]# cd .. [root@ro-host src]# patch -p0 < linux-2.4.5-ow1.diff [root@ro-host src]# rm -rf linux-2.4.5-ow1 [root@ro-host src]# rm -f linux-2.4.5-ow1.diff [root@ro-hos src]# rm -f linux-2.4.5-ow1.tar.gz |
Acum Kernelul nou instalat este patch-uit si putem continua instalarea si constructia noului Kernel, dupa care sistemul poate fi reboot-at.
Curatarea Kernelului
Este foarte important sa va asigurati ca subdirectoarele /usr/include/asm si usr/include/linux sunt doar link-uri simbolice la sursele noului Kernel care urmeaza sa fie instalat.
Pasul 1
Subdirectoarele asm si linux sunt link-uri simbolice sau link-uri soft la directoarele care contin head-erele kernelului pentru arhitectura sistemului nostru, de exemplu /usr/src/linux/include/asm-i386 pentru subdirectorul asm.
Pentru creerea acestor link-uri simbolice vom folosi comenzile:
[root@ro-host src]# cd /usr/include/ [root@ro-host include]# rm -f asm linux [root@ro-host include]# ln -s /usr/src/linux/include/asm-i386 asm [root@ro-host include]# ln -s /usr/src/linux/include/linux linux |
Este o parte foarte importanta din configurare este ca administratorul sistemului sa stearga directoarele asm si linux din directorul usr/linux dupa care sa recreeze link-uri simbolice noi catre aceleasi directoare, dar diferenta majora este ca acestea sunt catre sursele kernelului nou.
Nota Daca Kernelul precedent a fost instalat folosind pachete RPM, atunci link-urile simbolice asm si linux nu exista. In cadrul etapei de dezinstalare a pachetelor RPM ele se sterg automat. Nu uitati sa le recreati. |
Pasul 2
In aceasta etapa vom curata directorul in care se afla sursele Kernelului de fisierele care nu le vom mai folosi.
Pentru curatare folosim urmatoarea comanda:
[root@ro-host include]# cd /usr/src/linux [root@ro-host linux]# make mrproper |
In acest moment avem sursele pentru compilarea noului Kernel corect instalate. Configurarea Kernelului poate fi facuta in trei moduri distincte:
prima metoda este folosind comanda make conf. Terminalul va afisa mai multe intrebari legate de optiunile de configurare la care administratorul de sistem va trebui sa raspunda.
a doua metoda este legata de folosirea comenzi make menuconfig in care sunt incluse toate optiunile de configurare ale Kernelului
a treia metoda, nu este cazul nostru, este cea in care se foloseste comanda make xconfig care pune la dispozitia administratorului o interfata grafica de configurare.
Pasul 3
Pentru materialul de fata am ales configurarea folosind comanada make config deoarece nu avem instalate pe server utilitare de genul Xfree86 care ar fi necesare in cazul utilizarii configurarii cu make menuconfig.
[root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# make config rm -f include/asm ( cd include ; ln -sf asm-i386 asm) /bin/sh scripts/Configure arch/i386/config.in # # Using defaults found in arch/i386/defconfig # |
Configurarea kernelului
Odata introdusa comanda de mai sus vor fi afisate o lista cu optiunile configurabile ale kernelului. administratorul de sistem va trebui sa indice device-urile serverului si pentru care doreste suport. Pentru fiecare optiune puteti raspunde cu una din varinatele:
[y] va fi compilata in kernel si va fi totdeauna incarcata de sistem
[m] se vor folosi module pentru folosirea acestei caracteristici si va fi incarcata la cerere
[n] nu se va oferi suport in kernel
Nota Este important de subliniat ca n sau y inseamna raspunsuri implicite la intrebari. m este folosit pentru componentele modulare, iar [?] inseamna ca optiunea respectiva poate fi configurata la alegere. |
Asa cum am zis anterior, in continuare vom trata compilarea unui Kernel monolitic. Trebuie stiut ca acesta este specific pentru fiecare sistem. Materialul a fost realizat pe un hardware care avea urmatoarele caracteristici:
1 Pentium-III 667 MHz (i686) processor
1 Motherboard Asus P3V4X Pro 133Mhz EIDE
1 Hard Disk Ultra ATA/66 EIDE
1 Chipset Apollo Pro133A
1 CD-ROM ATAPI IDE
1 Floppy Disk
2 Ethernet Cards 3COM 3c597 PCI 10/100
1 Mouse PS/2
In configuratia urmatoare:
am activat suportul pentru posibilitatea de a incarca ulterior module
am adaptat kernelul la tipul de procesor i686
am adaugat suport full pentru Firewall Netfilter (iptables) cu masquerading si forwarding
suport DMA pentru discuri IDE (daca folositi SCSI veti dezactiva optiunea pentru DMA)
am dezactivat serviciile de NFS, suportul pentru USB si sound
Configuratia este ideala pentru un server Gateway/Proxy/Mail/DNS Server.
rm -f include/asm ( cd include ; ln -sf asm-i386 asm) /bin/sh scripts/Configure arch/i386/config.in Using defaults found in arch/i386/defconfig * Code maturity level options Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] * Loadable module support Enable loadable module support (CONFIG_MODULES) [Y/n/?] Set version information on all module symbols (CONFIG_MODVERSIONS) [Y/n/?] n Kernel module loader (CONFIG_KMOD) [Y/n/?] * Processor type and features Processor family (386, 486, 586/K5/5x86/6x86/6x86MX, Pentium-Classic, Pentium-MMX, Pentium- Pro/Celeron/Pentium-II, Pentium-III, Pentium-4, K6/K6-II/K6-III, Athlon/K7, Crusoe, Winchip-C6, Winchip-2, Winchip-2A/Winchip-3) [Pentium-III] Pentium-Pro/Celeron/Pentium-II defined CONFIG_M686 Toshiba Laptop support (CONFIG_TOSHIBA) [N/y/m/?] /dev/cpu/microcode - Intel IA32 CPU microcode support (CONFIG_MICROCODE) [N/y/m/?] /dev/cpu/*/msr - Model-specific register support (CONFIG_X86_MSR) [N/y/m/?] /dev/cpu/*/cpuid - CPU information support (CONFIG_X86_CPUID) [N/y/m/?] High Memory Support (off, 4GB, 64GB) [off] defined CONFIG_NOHIGHMEM Math emulation (CONFIG_MATH_EMULATION) [N/y/?] (NEW) MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?] Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] n APIC and IO-APIC support on uniprocessors (CONFIG_X86_UP_IOAPIC) [N/y/?] (NEW) y * General setup Networking support (CONFIG_NET) [Y/n/?] SGI Visual Workstation support (CONFIG_VISWS) [N/y/?] PCI support (CONFIG_PCI) [Y/n/?] PCI access mode (BIOS, Direct, Any) [Any] defined CONFIG_PCI_GOANY PCI device name database (CONFIG_PCI_NAMES) [Y/n/?] n EISA support (CONFIG_EISA) [N/y/?] MCA support (CONFIG_MCA) [N/y/?] Support for hot-pluggable devices (CONFIG_HOTPLUG) [Y/n/?] n System V IPC (CONFIG_SYSVIPC) [Y/n/?] BSD Process Accounting (CONFIG_BSD_PROCESS_ACCT) [N/y/?] Sysctl support (CONFIG_SYSCTL) [Y/n/?] Kernel core (/proc/kcore) format (ELF, A.OUT) [ELF] defined CONFIG_KCORE_ELF Kernel support for a.out binaries (CONFIG_BINFMT_AOUT) [Y/m/n/?] Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?] Kernel support for MISC binaries (CONFIG_BINFMT_MISC) [Y/m/n/?] Power Management support (CONFIG_PM) [Y/n/?] n * Memory Technology Devices ( MTD) Memory Technology Device (MTD) support (CONFIG_MTD) [N/y/m/?] * Parallel port support Parallel port support (CONFIG_PARPORT) [N/y/m/?] * Plug and Play configuration Plug and Play support (CONFIG_PNP) [Y/m/n/?] n * Block devices Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] XT hard disk support (CONFIG_BLK_DEV_XD) [N/y/m/?] Compaq SMART2 support (CONFIG_BLK_CPQ_DA) [N/y/m/?] Compaq CISS Array support (CONFIG_BLK_CPQ_CISS_DA) [N/y/m/?] Mylex DAC960/DAC1100 PCI RAID Controller support (CONFIG_BLK_DEV_DAC960) [N/y/m/?] Loopback device support (CONFIG_BLK_DEV_LOOP) [N/y/m/?] Network block device support (CONFIG_BLK_DEV_NBD) [N/y/m/?] RAM disk support (CONFIG_BLK_DEV_RAM) [N/y/m/?] * Multi-device support ( RAID and LVM) Multiple devices driver support (RAID and LVM) (CONFIG_MD) [N/y/?] * Networking options Packet socket (CONFIG_PACKET) [Y/m/n/?] Packet socket: mmapped IO (CONFIG_PACKET_MMAP) [N/y/?] y Kernel/User netlink socket (CONFIG_NETLINK) [N/y/?] y Routing messages (CONFIG_RTNETLINK) [N/y/?] (NEW) y Netlink device emulation (CONFIG_NETLINK_DEV) [N/y/m/?] (NEW) y Network packet filtering (replaces ipchains) (CONFIG_NETFILTER) [N/y/?] y Network packet filtering debugging (CONFIG_NETFILTER_DEBUG) [N/y/?] (NEW) y Socket Filtering (CONFIG_FILTER) [N/y/?] Unix domain sockets (CONFIG_UNIX) [Y/m/n/?] TCP/IP networking (CONFIG_INET) [Y/n/?] IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?] n IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [N/y/?] y IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [N/y/?] (NEW) y IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK) [N/y/?] (NEW) y IP: fast network address translation (CONFIG_IP_ROUTE_NAT) [N/y/?] (NEW) y IP: equal cost multipath (CONFIG_IP_ROUTE_MULTIPATH) [N/y/?] (NEW) y IP: use TOS value as routing key (CONFIG_IP_ROUTE_TOS) [N/y/?] (NEW) y IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE) [N/y/?] (NEW) y IP: large routing tables (CONFIG_IP_ROUTE_LARGE_TABLES) [N/y/?] (NEW) y IP: kernel level autoconfiguration (CONFIG_IP_PNP) [N/y/?] IP: tunneling (CONFIG_NET_IPIP) [N/y/m/?] IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/m/?] IP: TCP Explicit Congestion Notification support (CONFIG_INET_ECN) [N/y/?] IP: TCP syncookie support (disabled per default) (CONFIG_SYN_COOKIES) [N/y/?] y * IP: Netfilter Configuration Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) [N/y/m/?] (NEW) m FTP protocol support (CONFIG_IP_NF_FTP) [N/m/?] (NEW) m IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) [N/y/m/?] (NEW) m limit match support (CONFIG_IP_NF_MATCH_LIMIT) [N/m/?] (NEW) m MAC address match support (CONFIG_IP_NF_MATCH_MAC) [N/m/?] (NEW) m netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [N/m/?] (NEW) m Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT) [N/m/?] (NEW) m TOS match support (CONFIG_IP_NF_MATCH_TOS) [N/m/?] (NEW) m tcpmss match support (CONFIG_IP_NF_MATCH_TCPMSS) [N/m/?] (NEW) m Connection state match support (CONFIG_IP_NF_MATCH_STATE) [N/m/?] (NEW) m Packet filtering (CONFIG_IP_NF_FILTER) [N/m/?] (NEW) m REJECT target support (CONFIG_IP_NF_TARGET_REJECT) [N/m/?] (NEW) m Full NAT (CONFIG_IP_NF_NAT) [N/m/?] (NEW) m MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) [N/m/?] (NEW) m REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) [N/m/?] (NEW) m Packet mangling (CONFIG_IP_NF_MANGLE) [N/m/?] (NEW) m TOS target support (CONFIG_IP_NF_TARGET_TOS) [N/m/?] (NEW) m MARK target support (CONFIG_IP_NF_TARGET_MARK) [N/m/?] (NEW) m LOG target support (CONFIG_IP_NF_TARGET_LOG) [N/m/?] (NEW) m TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) [N/m/?] (NEW) m ipchains (2.2-style) support (CONFIG_IP_NF_COMPAT_IPCHAINS) [N/y/m/?] (NEW) ipfwadm (2.0-style) support (CONFIG_IP_NF_COMPAT_IPFWADM) [N/y/m/?] (NEW) The IPX protocol (CONFIG_IPX) [N/y/m/?] Appletalk protocol support (CONFIG_ATALK) [N/y/m/?] DECnet Support (CONFIG_DECNET) [N/y/m/?] 802.1d Ethernet Bridging (CONFIG_BRIDGE) [N/y/m/?] * QoS and/or fair queuering QoS and/or fair queuring (EXPERIMENTAL) (CONFIG_NET_SCHED) [N/y/?] * Telephony Support Linux telephony support (CONFIG_PHONE) [N/y/m/?] * ATA/IDE/MFM/RLL support ATA/IDE/MFM/RLL support (CONFIG_IDE) [Y/m/n/?] m * IDE, ATA and ATAPI Block devices Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [M/n/?] ** Please see Documentation/ide.txt for help/info on IDE drives Use old disk-only driver on primary interface (CONFIG_BLK_DEV_HD_IDE) [N/y/?] Include IDE/ATA-2 DISK support (CONFIG_BLK_DEV_IDEDISK) [M/n/?] Use multi-mode by default (CONFIG_IDEDISK_MULTI_MODE) [N/y/?] Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [M/n/?] Include IDE/ATAPI TAPE support (CONFIG_BLK_DEV_IDETAPE) [N/y/m/?] Include IDE/ATAPI FLOPPY support (CONFIG_BLK_DEV_IDEFLOPPY) [N/y/m/?] SCSI emulation support (CONFIG_BLK_DEV_IDESCSI) [N/y/m/?] * IDE chipset support/bugfixes CMD640 chipset bugfix/support (CONFIG_BLK_DEV_CMD640) [Y/n/?] n RZ1000 chipset bugfix/support (CONFIG_BLK_DEV_RZ1000) [Y/n/?] n Generic PCI IDE chipset support (CONFIG_BLK_DEV_IDEPCI) [Y/n/?] Sharing PCI IDE interrupts support (CONFIG_IDEPCI_SHARE_IRQ) [Y/n/?] Generic PCI bus-master DMA support (CONFIG_BLK_DEV_IDEDMA_PCI) [N/y/?] y Boot off-board chipsets first support (CONFIG_BLK_DEV_OFFBOARD) [N/y/?] Use PCI DMA by default when available (CONFIG_IDEDMA_PCI_AUTO) [N/y/?] y AEC62XX chipset support (CONFIG_BLK_DEV_AEC62XX) [N/y/?] ALI M15x3 chipset support (CONFIG_BLK_DEV_ALI15X3) [N/y/?] AMD Viper support (CONFIG_BLK_DEV_AMD7409) [N/y/?] CMD64X chipset support (CONFIG_BLK_DEV_CMD64X) [N/y/?] CY82C693 chipset support (CONFIG_BLK_DEV_CY82C693) [N/y/?] Cyrix CS5530 MediaGX chipset support (CONFIG_BLK_DEV_CS5530) [N/y/?] HPT34X chipset support (CONFIG_BLK_DEV_HPT34X) [N/y/?] HPT366 chipset support (CONFIG_BLK_DEV_HPT366) [N/y/?] Intel PIIXn chipsets support (CONFIG_BLK_DEV_PIIX) [N/y/?] NS87415 chipset support (EXPERIMENTAL) (CONFIG_BLK_DEV_NS87415) [N/y/?] PROMISE PDC20246/PDC20262/PDC20267 support (CONFIG_BLK_DEV_PDC202XX) [N/y/?] ServerWorks OSB4 chipset support (CONFIG_BLK_DEV_OSB4) [N/y/?] SiS5513 chipset support (CONFIG_BLK_DEV_SIS5513) [N/y/?] SLC90E66 chipset support (CONFIG_BLK_DEV_SLC90E66) [N/y/?] Tekram TRM290 chipset support (EXPERIMENTAL) (CONFIG_BLK_DEV_TRM290) [N/y/?] VIA82CXXX chipset support (CONFIG_BLK_DEV_VIA82CXXX) [N/y/?] Other IDE chipset support (CONFIG_IDE_CHIPSETS) [N/y/?] IGNORE word93 Validation BITS (CONFIG_IDEDMA_IVB) [N/y/?] (NEW) * SCSI support SCSI support (CONFIG_SCSI) [Y/m/n/?] * SCSI support type ( disk, tape, CD-ROM) SCSI disk support (CONFIG_BLK_DEV_SD) [Y/m/n/?] Maximum number of SCSI disks that can be loaded as modules (CONFIG_SD_EXTRA_DEVS) [40] SCSI tape support (CONFIG_CHR_DEV_ST) [N/y/m/?] SCSI OnStream SC-x0 tape support (CONFIG_CHR_DEV_OSST) [N/y/m/?] SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [N/y/m/?] SCSI generic support (CONFIG_CHR_DEV_SG) [N/y/m/?] ** Some SCSI devices ( e.g. CD jukebox) support multiple LUNs Enable extra checks in new queueing code (CONFIG_SCSI_DEBUG_QUEUES) [Y/n/?] n Probe all LUNs on each SCSI device (CONFIG_SCSI_MULTI_LUN) [Y/n/?] n Verbose SCSI error reporting (kernel size +=12K) (CONFIG_SCSI_CONSTANTS) [Y/n/?] n SCSI logging facility (CONFIG_SCSI_LOGGING) [N/y/?] * SCSI low-level drivers 3ware Hardware ATA-RAID support (CONFIG_BLK_DEV_3W_XXXX_RAID) [N/y/m/?] 7000FASST SCSI support (CONFIG_SCSI_7000FASST) [N/y/m/?] ACARD SCSI support (CONFIG_SCSI_ACARD) [N/y/m/?] Adaptec AHA152X/2825 support (CONFIG_SCSI_AHA152X) [N/y/m/?] Adaptec AHA1542 support (CONFIG_SCSI_AHA1542) [N/y/m/?] Adaptec AHA1740 support (CONFIG_SCSI_AHA1740) [N/y/m/?] Adaptec AIC7xxx support (CONFIG_SCSI_AIC7XXX) [N/y/m/?] y Enable Tagged Command Queueing (TCQ) by default (CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT) [N/y/?] (NEW) y Maximum number of TCQ commands per device (CONFIG_AIC7XXX_CMDS_PER_DEVICE) [8] (NEW) Collect statistics to report in /proc (CONFIG_AIC7XXX_PROC_STATS) [N/y/?] (NEW) Delay in seconds after SCSI bus reset (CONFIG_AIC7XXX_RESET_DELAY) [5] (NEW) AdvanSys SCSI support (CONFIG_SCSI_ADVANSYS) [N/y/m/?] Always IN2000 SCSI support (CONFIG_SCSI_IN2000) [N/y/m/?] AM53/79C974 PCI SCSI support (CONFIG_SCSI_AM53C974) [N/y/m/?] AMI MegaRAID support (CONFIG_SCSI_MEGARAID) [N/y/m/?] BusLogic SCSI support (CONFIG_SCSI_BUSLOGIC) [N/y/m/?] Compaq Fibre Channel 64-bit/66Mhz HBA support (CONFIG_SCSI_CPQFCTS) [N/y/m/?] DMX3191D SCSI support (CONFIG_SCSI_DMX3191D) [N/y/m/?] DTC3180/3280 SCSI support (CONFIG_SCSI_DTC3280) [N/y/m/?] EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support (CONFIG_SCSI_EATA) [N/y/m/?] EATA-DMA [Obsolete] (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) support (CONFIG_SCSI_EATA_DMA) [N/y/m/?] EATA-PIO (old DPT PM2001, PM2012A) support (CONFIG_SCSI_EATA_PIO) [N/y/m/?] Future Domain 16xx SCSI/AHA-2920A support (CONFIG_SCSI_FUTURE_DOMAIN) [N/y/m/?] GDT SCSI Disk Array Controller support (CONFIG_SCSI_GDTH) [N/y/m/?] Generic NCR5380/53c400 SCSI support (CONFIG_SCSI_GENERIC_NCR5380) [N/y/m/?] IBM ServeRAID support (CONFIG_SCSI_IPS) [N/y/m/?] Initio 9100U(W) support (CONFIG_SCSI_INITIO) [N/y/m/?] Initio INI-A100U2W support (CONFIG_SCSI_INIA100) [N/y/m/?] NCR53c406a SCSI support (CONFIG_SCSI_NCR53C406A) [N/y/m/?] NCR53c7,8xx SCSI support (CONFIG_SCSI_NCR53C7xx) [N/y/m/?] NCR53C8XX SCSI support (CONFIG_SCSI_NCR53C8XX) [N/y/m/?] SYM53C8XX SCSI support (CONFIG_SCSI_SYM53C8XX) [Y/m/n/?] n PAS16 SCSI support (CONFIG_SCSI_PAS16) [N/y/m/?] PCI2000 support (CONFIG_SCSI_PCI2000) [N/y/m/?] PCI2220i support (CONFIG_SCSI_PCI2220I) [N/y/m/?] PSI240i support (CONFIG_SCSI_PSI240I) [N/y/m/?] Qlogic FAS SCSI support (CONFIG_SCSI_QLOGIC_FAS) [N/y/m/?] Qlogic ISP SCSI support (CONFIG_SCSI_QLOGIC_ISP) [N/y/m/?] Qlogic ISP FC SCSI support (CONFIG_SCSI_QLOGIC_FC) [N/y/m/?] Qlogic QLA 1280 SCSI support (CONFIG_SCSI_QLOGIC_1280) [N/y/m/?] Seagate ST-02 and Future Domain TMC-8xx SCSI support (CONFIG_SCSI_SEAGATE) [N/y/m/?] Simple 53c710 SCSI support (Compaq, NCR machines) (CONFIG_SCSI_SIM710) [N/y/m/?] Symbios 53c416 SCSI support (CONFIG_SCSI_SYM53C416) [N/y/m/?] Tekram DC390(T) and Am53/79C974 SCSI support (CONFIG_SCSI_DC390T) [N/y/m/?] Trantor T128/T128F/T228 SCSI support (CONFIG_SCSI_T128) [N/y/m/?] UltraStor 14F/34F support (CONFIG_SCSI_U14_34F) [N/y/m/?] UltraStor SCSI support (CONFIG_SCSI_ULTRASTOR) [N/y/m/?] * I2O device support *I 2O support (CONFIG_I2O) [N/y/m/?] * Network device support Network device support (CONFIG_NETDEVICES) [Y/n/?] * ARCnet devices ARCnet support (CONFIG_ARCNET) [N/y/m/?] Dummy net driver support (CONFIG_DUMMY) [M/n/y/?] Bonding driver support (CONFIG_BONDING) [N/y/m/?] EQL (serial line load balancing) support (CONFIG_EQUALIZER) [N/y/m/?] Universal TUN/TAP device driver support (CONFIG_TUN) [N/y/m/?] General Instruments Surfboard 1000 (CONFIG_NET_SB1000) [N/y/m/?] * Ethernet ( 10 or 100Mbit) Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?] 3COM cards (CONFIG_NET_VENDOR_3COM) [N/y/?] AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE) [N/y/m/?] Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [N/y/?] Racal-Interlan (Micom) NI cards (CONFIG_NET_VENDOR_RACAL) [N/y/?] DEPCA, DE10x, DE200, DE201, DE202, DE422 support (CONFIG_DEPCA) [N/y/m/?] HP 10/100VG PCLAN (ISA, EISA, PCI) support (CONFIG_HP100) [N/y/m/?] Other ISA cards (CONFIG_NET_ISA) [N/y/?] EISA, VLB, PCI and on board controllers (CONFIG_NET_PCI) [Y/n/?] AMD PCnet32 PCI support (CONFIG_PCNET32) [N/y/m/?] Apricot Xen-II on board Ethernet (CONFIG_APRICOT) [N/y/m/?] CS89x0 support (CONFIG_CS89x0) [N/y/m/?] DECchip Tulip (dc21x4x) PCI support (CONFIG_TULIP) [N/y/m/?] Generic DECchip & DIGITAL EtherWORKS PCI/EISA (CONFIG_DE4X5) [N/y/m/?] Digi Intl. RightSwitch SE-X support (CONFIG_DGRS) [N/y/m/?] EtherExpressPro/100 support (CONFIG_EEPRO100) [Y/m/n/?] National Semiconductor DP83810 series PCI Ethernet support (CONFIG_NATSEMI) [N/y/m/?] PCI NE2000 and clones support (see help) (CONFIG_NE2K_PCI) [N/y/m/?] RealTek RTL-8139 PCI Fast Ethernet Adapter support (CONFIG_8139TOO) [N/y/m/?] SiS 900/7016 PCI Fast Ethernet Adapter support (CONFIG_SIS900) [N/y/m/?] SMC EtherPower II (CONFIG_EPIC100) [N/y/m/?] Sundance Alta support (CONFIG_SUNDANCE) [N/y/m/?] TI ThunderLAN support (CONFIG_TLAN) [N/y/m/?] VIA
Winbond W89c840 Ethernet support (CONFIG_WINBOND_840) [N/y/m/?] Sun Happy Meal 10/100baseT PCI support (CONFIG_HAPPYMEAL) [N/y/m/?] Pocket and portable adapters (CONFIG_NET_POCKET) [N/y/?] * Ethernet ( 1000 Mbit) Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support (CONFIG_ACENIC) [N/y/m/?] Packet Engines Hamachi GNIC-II support (CONFIG_HAMACHI) [N/y/m/?] SysKonnect SK-98xx support (CONFIG_SK98LIN) [N/y/m/?] FDDI driver support (CONFIG_FDDI) [N/y/?] PPP (point-to-point protocol) support (CONFIG_PPP) [N/y/m/?] SLIP (serial line) support (CONFIG_SLIP) [N/y/m/?] * Wireless LAN ( non-hamradio) Wireless LAN (non-hamradio) (CONFIG_NET_RADIO) [N/y/?] * Token Ring devices Token Ring driver support (CONFIG_TR) [N/y/?] Fibre Channel driver support (CONFIG_NET_FC) [N/y/?] * Wan interfaces Wan interfaces support (CONFIG_WAN) [N/y/?] * Amateur Radio support Amateur Radio support (CONFIG_HAMRADIO) [N/y/?] * IrDA ( infrared) support *I rDA subsystem support (CONFIG_IRDA) [N/y/m/?] * ISDN subsystem *I SDN support (CONFIG_ISDN) [N/y/m/?] * Old CD-ROM drivers ( not SCSI, not IDE) Support non-SCSI/IDE/ATAPI CDROM drives (CONFIG_CD_NO_IDESCSI) [N/y/?] * Input core support *I nput core support (CONFIG_INPUT) [N/y/m/?] * Character devices Virtual terminal (CONFIG_VT) [Y/n/?] Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?] Standard/generic (8250/16550 and compatible UARTs) serial support (CONFIG_SERIAL) [Y/m/n/?] Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?] Extended dumb serial driver options (CONFIG_SERIAL_EXTENDED) [N/y/?] Non-standard serial port support (CONFIG_SERIAL_NONSTANDARD) [N/y/?] Unix98 PTY support (CONFIG_UNIX98_PTYS) [Y/n/?] Maximum number of Unix98 PTYs in use (0-2048) (CONFIG_UNIX98_PTY_COUNT) [256] * I2C support *I 2C support (CONFIG_I2C) [N/y/m/?] * Mice Bus Mouse Support (CONFIG_BUSMOUSE) [N/y/m/?] Mouse Support (not serial and bus mice) (CONFIG_MOUSE) [Y/m/n/?] PS/2 mouse (aka 'auxiliary device') support (CONFIG_PSMOUSE) [Y/n/?] C&T 82C710 mouse port support (as on TI Travelmate) (CONFIG_82C710_MOUSE) [N/y/m/?] PC110 digitizer pad support (CONFIG_PC110_PAD) [N/y/m/?] * Joysticks *** Input core support is needed for joysticks QIC-02 tape support (CONFIG_QIC02_TAPE) [N/y/m/?] * Watchdog Cards Watchdog Timer Support (CONFIG_WATCHDOG) [N/y/?] Intel i8x0 Random Number Generator support (CONFIG_INTEL_RNG) [N/y/m/?] /dev/nvram support (CONFIG_NVRAM) [N/y/m/?] Enhanced Real Time Clock Support (CONFIG_RTC) [N/y/m/?] Double Talk PC internal speech card support (CONFIG_DTLK) [N/y/m/?] Siemens R3964 line discipline (CONFIG_R3964) [N/y/m/?] Applicom intelligent fieldbus card support (CONFIG_APPLICOM) [N/y/m/?] * Ftape, the floppy tape device driver Ftape (QIC-80/Travan) support (CONFIG_FTAPE) [N/y/m/?] /dev/agpgart (AGP Support) (CONFIG_AGP) [Y/m/n/?] n Direct Rendering Manager (XFree86 DRI support) (CONFIG_DRM) [Y/n/?] n * Multimedia devices Video For Linux (CONFIG_VIDEO_DEV) [N/y/m/?] * File systems Quota support (CONFIG_QUOTA) [N/y/?] Kernel automounter support (CONFIG_AUTOFS_FS) [N/y/m/?] Kernel automounter version 4 support (also supports v3) (CONFIG_AUTOFS4_FS) [Y/m/n/?] n DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] Compressed ROM file system support (CONFIG_CRAMFS) [N/y/m/?] Simple RAM-based file system support (CONFIG_RAMFS) [N/y/m/?] ISO 9660 CDROM file system support (CONFIG_ISO9660_FS) [Y/m/n/?] m Microsoft Joliet CDROM extensions (CONFIG_JOLIET) [N/y/?] Minix fs support (CONFIG_MINIX_FS) [N/y/m/?] NTFS file system support (read only) (CONFIG_NTFS_FS) [N/y/m/?] OS/2 HPFS file system support (CONFIG_HPFS_FS) [N/y/m/?] /proc file system support (CONFIG_PROC_FS) [Y/n/?] /dev/pts file system for Unix98 PTYs (CONFIG_DEVPTS_FS) [Y/n/?] ROM file system support (CONFIG_ROMFS_FS) [N/y/m/?] Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] System V and Coherent file system support (read only) (CONFIG_SYSV_FS) [N/y/m/?] UDF file system support (read only) (CONFIG_UDF_FS) [N/y/m/?] UFS file system support (read only) (CONFIG_UFS_FS) [N/y/m/?] * Network File Systems Coda file system support (advanced network fs) (CONFIG_CODA_FS) [N/y/m/?] NFS file system support (CONFIG_NFS_FS) [Y/m/n/?] n NFS server support (CONFIG_NFSD) [Y/m/n/?] n SMB
file system support (to NCP
file system support (to * Partition Types Advanced partition selection (CONFIG_PARTITION_ADVANCED) [N/y/?] * Console drivers VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] Video mode selection support (CONFIG_VIDEO_SELECT) [N/y/?] * Sound Sound card support (CONFIG_SOUND) [Y/m/n/?] n (Security options will appear only if you are patched your kernel with the Openwall Project patch). * Security options Non-executable user stack area (CONFIG_SECURE_STACK) [Y] Autodetect and emulate GCC trampolines (CONFIG_SECURE_STACK_SMART) [Y] Restricted links in /tmp (CONFIG_SECURE_LINK) [Y] n Restricted FIFOs in /tmp (CONFIG_SECURE_FIFO) [Y] Restricted /proc (CONFIG_SECURE_PROC) [N] y Special handling of fd 0, 1, and 2 (CONFIG_SECURE_FD_0_1_2) [Y] Enforce RLIMIT_NPROC on execve(2) (CONFIG_SECURE_RLIMIT_NPROC) [Y] Destroy shared memory segments not in use (CONFIG_SECURE_SHM) [N] ** USB support Support for USB (CONFIG_USB) [Y/m/n/?] n * Kernel hacking Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] *** End of Linux kernel configuration. *** Check the top-level Makefile for additional configuration. *** Next, you must run 'make dep'. |
Nota Incepand de la versiunea de Kernel 2.4.x sectiunea de "IP: Netfilter Configuration" optiunile legate de masquerading si forwarding are suport direct in Kernel. Acum depinde de dumneavoastra daca doriti sa fie configurata ca parte din Kernel sau va fi incarcata ca module ulterior. |
Compilarea Kernelului
Pentru compilarea Kernelului vom folosi urmatoarele comenzi:
[root@ro-host linux]# make dep; make clean; make bzImage |
make dep va incarca configuratia si va construi arborele de interdependenta dintre sursele kernelului, deoarece e posibil ca legaturile dintre acestea sa fi fost afectate de optiunile pe care le-ati facut la pasul anterior.
make clean elimina orice fisier ramas din compilarile anterioare ale kernelului, fisiere care acum sunt inutile
make bzImage incepe compilarea propriu-zisa a kernelului.
Dupa acest proces a fost incheiat cu succes, kernelul gata compresat este gata sa fie instalat in sistemul dumneavoastra. Inainte de aceasta este bine de stiut ca aveti nevoie sa compilati si modulele corespunzatoare, asta DOAR in cazul in care ati raspuns cu yes la "Enable loadable module support (CONFIG_MODULES)". In acest caz trebuiesc executate urmatoarele comenzi:
[root@ro-host linux]# make modules; make modules_install |
Instalarea Kernelului
Odata ce kernelul a fost configurat, compilat acum el este gata de instalare pe serverul dumneavoastra. Mai jos sunt descrisi pasi care trebuiesc urmati pentru aceasta operatie.
Pasul 1
Copiati fisierul /usr/src/linux/arch/i386/boot/bzImage din directorul sursa al kernelului in directorul /boot si ii schimbati denumirea.
[root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# cp /arch/i386/boot/bzImage /boot/vmlinuz-2.4.5 |
Pasul 2
Copiati fisierul /usr/src/linux/System.map din directorul sursa al noului kernel in directorul /boot.
[root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# cp System.map /boot/System.map-2.4.5 |
Pasul 3
In aceasta etapa trebuiesc reconstruite link-urile simbolice catre vmlinuz si System.map
[root@ro-host /]# cd /boot [root@ro-host boot]#ln -fs vmlinuz-2.4.5 vmlinuz [root@ro-host boot]#ln -fs System.map-2.4.5 System.map |
In acest punct administratorul de retea mai trebuie sa reconstruiasca linkurile catre vmlinuz si System.map sa point-eze catre noua versiune de kernel instalata. Fara noile link-uri programul de boot-are LILO va ramane blocat, incercand sa incarce veche versiune de kernel.
Pasul 4
Pentru a pastra o instalare curata vom sterge fisierel inutile din directorul /boot.
[root@ro-host boot]#rm -f module.info [root@ro-host boot]#rm -f initrd-2.4.x.img |
Pasul 5
Ca instalarea sa fie completa si curata in sensul ca pe viitor sa stiiti exact ce versiune de kernel este instalata si unde gasiti toate fisierele utilizate de actualul kernel se recomanda creerea unui nou director in care sa fie mutate toate aceste fisiere si directoare.
[root@ro-host /]# mkdir -p /usr/src/linux-2.4.5/include [root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# cp -r include/asm-generic ../linux-2.4.5/include/ [root@ro-host linux]# cp -r include/asm-i386 ../linux-2.4.5/include/ [root@ro-host linux]# cp -r include/linux ../linux-2.4.5/include/ [root@ro-host linux]# cd ../ [root@ro-host src]# rm -rf /usr/src/linux [root@ro-host src]# cd /usr/src/ [root@ro-host src]# ln -s /usr/src/linux-2.4.5 linux |
Pasul 6
Ultima etapa este modificare fisierului /etc/lilo.conf pentru a configura sistemul sa porneasca la restart cu noua versiune de kernel.
[root@deep /]# vi /etc/lilo.conf boot=/dev/sda map=/boot/map install=/boot/boot.b timeout=00 default=linux restricted password=somepasswd image=/boot/vmlinuz label=linux read-only root=/dev/sda6 |
Domain Name System - ISC BIND/DNS
Doua tehnologii sunt in mare masura responsabile pentru incredibila expansiune a Internetului. Una dintre aceste tehnologii este World Wide Web (www) - aplicatie ucigatoare pentru Internet. Cealalta este sistemul Domain Name System (DNS). Inainte de introducerea pe scara larga a sistemului DNS in 1988, numarul de servere care ofereau navigatorilor pagini publice erau de ordinul miilor. Astazi, ele ating cifre impresionante, zeci de milioane. Acest proces nu reprezinta doar o problema de cerere, el este si un rezultat al disponibilitatii.
Sistemul Domain Name System este instrumentul care face ca milioane de servere din Internet sa fie disponibile. Inainte de aparitia sistemului DNS, toate numele de servere de pe Internet inregistrate erau stocate intr-un fisier plat, care trebuia sa fie reprodus pe fiecare calculator de retea. Limitarile acestui fisier a reprezentat o bariera in calea expansiunii. Sistemul DNS a rupt aceasta bariera prin inlocuirea fisierului plat cu un sistem ierarhic si distribuit de baze de date. Nu mai suntem limitati la un fisier de nume de domenii intretinut central. Acum fiecare organizatie de retea este responsabila de intretinerea propriei parti din baza de date a domeniului.
Sistemul de operare Linux este o platforma excelenta si recomandata pentru construirea unui server DNS. Fiabilitatea acestui sistem de operare este deja legendara. La fel de importanta ca fiabilitatea sistemului este si fiabilitatea programelor serverului de nume care ruleaza pe acest sistem. Din nou, sistemul Linux este un castigator, deoarece el utilizeaza pachetul de programe Berkeley Internet Name Domain (BIND). Pachetul BIND este acel software care, in 1980, a introdus pentru prima data sistemul DNS pentru utilizarea pe sacara larga, fiind si astazi cel mai larg utilizat software pentru sistemul DNS, aproximativ 90% din serverele din Internet folosesc acest program.
In continuare in acest curs voi trata mai multe aspecte legate de instatlarea si configurarea serverului de DNS si anume:
Odata ce serverul dumneavoastra este instalat si au fost adaugate si software-urile de securitate, este momentul ca acesta sa capete si consistenta, adica sa ii fie adaugate si servicii de retea. Domanin Name System (DNS) este unul dintre cele mai IMPORTANTE servicii pentru o retea de comunicatie IP, si din acest motiv, toate masinile CLIENT ar trebui configurate sa aiba minim fucntia de caching. Configurarea pe statiile Linux dintr-o retea a unui server de caching ar reduce semnificativ incarcarea pentru serverul primar de nume al domeniului din care face parte. Actionand ca server de caching, statia respectiva va interoga serverul de nume primar doar in cazul unei cereri noi, raspunsul la cereri care au fost facute anterior se vor rezolva local. Aceasta va duce la o reducere semnificativa a timpului de asteptare.
BIND este un sistem client/server, fiind astfel compus din doua parti fundamentale:
resolver-ul, partea dinspre clientu a sistemului
named, programul daemon al serverului de nume.
Serverul de nume (Name Server - NS) este un program care stocheaza informatiile despre resursele de nume si raspunde la cererile facute de resolver. In ciuda numelui sau, de fapt nu rezolva interogarea ci pur si simmplu expediaza interogarea catre server, pentru a fi rezolvata. Tot ceea ce face este sa construiasca interogarea corect si sa astepte ca named-ul sa raspunda la aceasta.
Pentru separarea serverului de nume intern de DNS-ul extern, este recomandata folosirea unei arhitecturi de gen "Split DNS" cunoscuta in literatura de specialitate si sub numele de "shadow namespaces". Split DNS este un server de nume care raspunde unei interogari venite de la o sursa intr-un fel, iar de la alta sursa in alt mod, cu o alta rezolutie de nume. Aceasta arhitectura de DNS, permite adresele si topologia retelei interne sa nu fie vibile dintr-o retea externa, in afara retelei fiind publicate doar adresele publice ale serverelor institutiei.
In acest curs se va prezenta in continuare modul de instalare si configurare al ISC BIND & DNS folosind un user obisnuit (non root-user) in trei scenarii diferite:
Pachetele RPM recomandate a fi instalate pentru un servere de DNS
Folosind o configuratie minima este un punct de plecare perfect pentru a construi un sistem de operare cat mai securizat. In continuare sunt listate pachetele RPM recomandate pentru a configura serverul de Linux ca Primary/Master sau Secondary/Slave Domain Name Server (DNS).
Am plecat de la premiza ca kernelul este un kernel monolitic, iar serverul de DNS va fi instalat folosind ISC BIND&DNS din pachete RPM.
basesystem diffutils initscripts openssh slang bash e2fsprogs iptables openssh-server slocate bdflush ed kernel openssl sysklogd bind file less pam syslinux bind-utils filesystem libstdc++ passwd SysVinit bzip2 fileutils libtermcap popt tar |
chkconfig findutils lilo procps termcap console-tools gawk logrotate psmisc textutils cpio gdbm losetup pwdb tmpwatch cracklib gettext MAKEDEV qmail utempter cracklib-dicts glib man readline util-linux crontabs glibc mingetty rootfiles vim-common |
db1 glibc-common mktemp rpm vim-minimal db2 grep mount sed vixie-cron db3 groff ncurses setup words dev gzip net-tools sh-utils which devfsd info newt shadow-utils zlib |
Premizele instalarii
Comenzile sunt compatibile pe orice sistem Unix.
Calea catre surse folosita in acest curs este /var/tmp (oricare alta cale poate fi folosita, ca o masura de "discretie" pentru distributia utilizata de dumneavoastra).
Instalarea a fost testata pe un sistem Red Hat 9.0.
Toate etapele configurarii au fost facute folosind un cont de super-user "root".
Nu este necesara recompilarea kernelului.
Ultima versiune ISC BIND & DNS este 9.1.2.
Pachete
Cursul de fata, foloseste instructiuni de instalare si informatii legate de ISC BIND & DNS actualizate la data de 20/12/2004. Va rog verificati ultimele modificari, accesand site-ul www.isc.org .
Codul sursa este disponibil la adresa:
ISC BIND & DNS Homepage: https://www.isc.org
ISC BIND & DNS FTP Site: 204.152.184.27
Ultima versiune disponibila: bind-9.1.2.tar.gz
Cerinte
ISC BIND & DNS necesita ca pachetele mai sus listate sa fie deja instalate in sistem, pentru ca acesta sa fie capabil sa-l compileze cu succes. Daca ele lipsesc, acestea trebuie instalate in prealabil.
|
Pentru imbunatatirea semnificativa a semnarii si vitezei, BIND 9 foloseste librariile de OpenSSL, pachete care trebuie si ele instalate. Kernelul trebuie sa fie minim 2.4 pentru a putea configura BIND 9. |
Pregatirea instalarii
Daca pentru instalarea serverului de DNS se folosesc pachete RPM, va fi dificil pentru administratorul serverului sa gaseasca toate fisierele instalate in eventualitatea unui update in viitor. Pentru rezolvarea acestei probleme, este o buna idee sa facem o lista cu fisierele din sistem inainte de a instala ISC BIND & DNS, si una dupa, iar apoi sa comparam cele doua liste folosind utilitarul diff pentru a afla care fisiere au fost inlocuite prin acest update.
Inainte de instalarea rulati urmatoare comanda:
[root@ro-host /root]# find /* > DNS1 |
si apoi dupa instalare software-ului:
[root@ro-host /root]# find /* > DNS2 |
ulterior pentru alcatui o lista cu schimbarile din sistem trebuie rulata comanda:
[root@ro-host /root]# diff DNS1 DNS2 > ISC-BIND-DNS-Installed |
Cu aceasta procedura, daca este necesar realizarea unui update, tot ce trebuie facut este sa cititi lista fisierelor care au fost adaugate sau schimbate de program si sterse manual din sistem inainte de instalarea unei versiuni noi de software. In exemplul dat mai sus, am folosit directorul /root ca director in care vor fi generate listele de fisiere.
Compilarea - Optimizarea & Instalarea ISC BIND & DNS
Dupa ce specificatiile de mai sus sunt indeplinite, ne putem apuca sa configuram, optimizam si compilam software-ul de ISC BIND & DNS inainte de a incepe instalarea lui. Instalarea se va face de sub contul de root pentru a evita orice probleme legate de drepturi.
Pasul 1
Odata ce programul a fost descarcat in sistem, el trebuie copiat in directorul /var/tmp si apoi dezarhivat (optiunea de /var/tmp este pur personala si este legata de o instalare cat mai curata).
pentru realizarea acestora folosim urmatoarele comenzi:
[root@ro-host /]# cp bind-version.tar.gz /var/tmp [root@ro-host /]# cd /var/tmp [root@ro-host /tmp]# tar xzpf bind-version.tar.gz |
Pasul 2
ISC BIND & DNS nu ruleaza sub contul de super-user, root; si din acest motiv trebuie creat un user special care sa nu aiba drepturi speciale de shel care sa ruleze daemonul de ISC BIND & DNS.
pentru a crea acest user special se foloseste comanda:
[root@ro-host /tmp]#useradd -c "Named" -u 25 -s /bin/false -r -d /var/named named 2> /dev/null || : |
comanda de mai sus nu face altceva decat sa creeze un cont nul, fara parola, fara drept de shell, fara structura de fisiere proprii, nimic altceva decat un UID si GID pentru program.
Pasul 3
Dupa acesti primi doi pasi, ne vom muta in directorul creat pentru ISC BIND & DNS si vom face cateva operatii de optimizare inainte de compilare. Modificarile asupra fiiserelor sursa, la care ma refer, sunt necesare pentru a schimba calea catre cateva fisiere si de a remedia cateva bug-uri de software.
pentru a ne muta in directorul creat pentru ISC BIND & DNS, vom folosi urmatoarea comanda:
[root@ro-host /tmp# cd bind-9.1.2/ |
Pasul 3.1
Primul fisier care trebuie modificat este dighost.c care se gaseste in directorul care contine sursele pentru ISC BIND & DNS. In acest fisier, trebuie adaugata o linie legata de functia de reverse.
Editam fisierul dighost.c folosind editorul vi:
[root@ro-host /tmp#vi +224 bin/dig/dighost.c |
si vom modifica urmatoarele linii:
if (n == 0) for (i = n - 1; i >= 0; i--) r everse[0] = 0; for (i = n - 1; i >= 0; i--) ; allow-query ; allow-recursion ; forwarders ; version 'Go away!'; }; logging ; }; // Root server hints zone '.' ; // Provide a reverse mapping for the loopback address 127.0.0.1 zone '0.0.127.in-addr.arpa' ; |
options ;
Majoritate fisierelor named.conf incep cu o instructiune options. Intr-un fisier named.conf este permisa o singura instructiune options. Aceasta instructiune definesti parametrii globali care afecteaza modul de operare al pachetului ISC BIND & DNS. De asemeni stabileste optiunile implicite folosite de alte instructiuni in fisierul de configurare.
directory "/var/named";
In aceasta instructiune options, cuvantul cheie directory defineste directorul prestabilit pentru programul named. Numele prestabilit al directorului este utilizat si pentru a completa numele oricarui fisier specificatin fisierul de configurare, el defineste calea absoluta.
allow-transfer ;
Aceast atribut specifica care host-uri au permisiunea de a primi zone transferate de servere de nume primare. Configurarea default a ISC BIND & DNS permite transferul de zona pentru orice statie. Din motive de securitate aceasta optiune trebuie inhibata in asa fel incat zona sa poata fi transferata de la serverul primar de nume doar de catre serverul secundar de nume si de catre nici alt server de nume.
allow-queryh ;
Acest atribut specifica in clar care statii au dreptul sa interogheze serverul de caching. In configuratia standard, orice statie are dreptul sa adreseze cereri serverului de caching, dar in exemplul de mai sus, doresc sa las dreptul de interogare doar statiilor din reteaua interna. Aceasta optiune este de asemeni o optiune de securitate.
allow-recursion ;
Optiunea allow-recursion listeaza gazdele carora le este permis sa efectueze interogari recursive prin intermediul acestui server. Optiunea prestabilita este de a efectua interogari recursive pentru toate gazdele. In exemplul de mai sus este permisa interogarea recursiva doar statiilor din LAN-ul local. Daca acest lucru ar fi permis si host-urilor externe retelei aceasta ar fi o bresa de securitate, serverul fiind vulnerabil atacurilor externe.
forwarders ;
In aceasta optiune sunt listate adresele IP ale serverelor carora le sunt reexpediate interogarile. Optiunea prestabilita este de a nu utiliza reexpedierea. Serverele care nu au acces direct la Internet pot folosi aceasta optiune pentru a crea o zona de cache cat mai larga, reducand astfel traficul catre link-urile externe, catre serverel de nume. Aceasta reexpediere a interogarii se intampla doar atunci doar cand serverul nu este autorizat pentru zona respectiva sau nu o are memorata in cache. IP-urile din exemplu reprezinta adresele serverelor primar, respectiv secundar de nume. Ele pot fi deasemeni adresele serverelor de nume ale providerului de servicii Internet sau oricare alte servere de nume din Internet.
version "Go away!";
Acest atribut specifica sirul returnat atunci cand serverul este interogat despre versiunea sa de ISC BIND & DNS. Este folosita in special impotriva celor care scaneaza serverul de nume pentru descoperirea breselor de securitate. Textul de "Go away" poate fi schimba dupa preferinte J. Aceasta optiune este de asemeni o optiune de securitate.
notify no;
DNS Notify este un mecanism care permite serverului primar de nume sa notifice serverele secundare de nume de modificarea zonei. In raspunsul la Notify-ul primit de la Master, secundarul verifica daca versiunea de zona pe care o are el inregistrata este versiunea curenta anuntata de catre serverul primar de nume, iar daca aceasta difera, initiaza transferul zonei modificate. Valoarea prestabilita este "yes", dar in cazul serverul de caching, zona pe care acesta o gestioneaza fiind adresa de loopback 127.0.0.1, administratorul trebuie sa evite transferul configuratiei pentru localhost catre serverele Secondary/Slave de nume.
Nota Este recomandat ca in configurarea indtuctiunii care defineste optiunile de logare sa dezactivati mesajele de alerta privind lame-server si asta pentru reducerea dimensiunilor fisierului creat de syslog. Mesajele de lame server sunt generate de servere care sunt inregistrate ca servere de nume dar care momentan din diverse motive numai indeplinesc aceasta functie. Pentru dezactivare se foloseste succesiunea de instructiuni: logging ; Daca se doreste ca syslog-ul sa nu primeasca mesaje si de genul "points to a CNMAE" se mai adauga in sectiunea de logare si urmatoarea linie: categoty cname ; |
Pasul 2
In aceasta etapa trebuiesc acordate si permisiile corecte pe fisierul de configurare al ISC BIND & DNS pentru user-ul proprietar, named. Din motive de securitate acesta trebuie sa aiba doar el drept de scriere si citire.
Pentru a schimba aceste permisii se va folosi urmatoarea succesiune de instructiuni:
[root@ro-host /]# chmod 600 /etc/named.conf [root@ro-host /tmp]# chown named.named /etc/named.conf |
/var/named/db.127.0.0: Fisierul de reverse pentru ISC BIND & DNS
Acest fisier de configurare este folosit de catre toate serverele de nume care nu actioneaza in retea ca server primar sau secundar de nume. Fisierul "db.127.0.0" converteste adresa de loopback a retelei in adresa de loopback a serverului.
Pasul 1
Trebuie creat urmatorul fisier in directorul /var/named.
Se creeaza fisierul db.127.0.0 (folosind comanda touch /var/named/db.127.0.0) si apoi se adauga urmatoarele linii in fisierul nou creat:
; Revision History: December 10, 2004 - root@ro-host.ro ; Start of Authority (SOA) records. $TTL 86400 @ IN SOA localhost. root.localhost. ( 00 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 86400 ) ; Minimum IN NS localhost. 1 IN PTR localhost. |
Pasul 2
Acum in aceasta etapa, asa cum am procedat si mai sus, trebuie acordate permisiile corecte, din motive de securitate.
Pentru schimbarea permisiilor corecte folosim urmatoarele comenzi:
[root@ro-host /]# chmod 644 /var/named/db.127.0.0 [root@ro-host /tmp]# chown named.named /var/named/db.127.0.0 |
Configurarea serverului de DNS ca server Primary/Master
Acest capitol descrie in amanunt instalarea si configurarea unui server ISC BIND & DNS care actioneaza in cadrul unei retele ca server primar de nume. Serverul master este un server de nume cu autoritae pentru o zona si reprezinta ultima sursa a informatiei legata de zona gestionata. Acesta constituie sursa principala a tuturor informatiilor despre zona. Incarca baza de date a zonei din fisierele locale de pe disc, care sunt create de catre administratorul de domeniu. Pentru o zona trebuie sa existe un singur server primar sau master de nume.
/etc/named.conf : Fisierul de configurare al ISC BIND & DNS
Acest fisier de configuratie este folosit de serverele care indeplinesc in retea rolul de server de DNS primar. In orice retea de intreprindere care se doreste solida este recomandata configurarea cel putin a unui server de nume primar. In continuare vom folosi ca exemplu de domeniu "ro-host.ro", iar clasa de adrese folosita va fi 80.97.20.0.
Pasul 1
In fisierul /etc/named.conf vom adauga cateva linii dupa cum urmeaza.
Vom crea fisierul named.conf (touch /etc/named.conf). In continuare este un exemplu al acestui fisier pe care-l recomand:
options ; allow-query ; allow-recursion ; version 'Go away!'; }; logging ; }; // Root server hints zone '.' ; // Provide a reverse mapping for the loopback address 127.0.0.1 zone '0.0.127.in-addr.arpa' ; // We are the master server for Ro-Host.Ro zone 'ro-host.ro' ; }; zone '20.97.80.in-addr.arpa' ; }; |
options ;
Majoritate fisierelor named.conf incep cu o instructiune options. Intr-un fisier named.conf este permisa o singura instructiune options. Aceasta instructiune definesti parametrii globali care afecteaza modul de operare al pachetului ISC BIND & DNS. De asemeni stabileste optiunile implicite folosite de alte instructiuni in fisierul de configurare.
directory "/var/named";
In aceasta instructiune options, cuvantul cheie directory defineste directorul prestabilit pentru programul named. Numele prestabilit al directorului este utilizat si pentru a completa numele oricarui fisier specificatin fisierul de configurare, el defineste calea absoluta.
allow-transfer ;
Aceast atribut specifica care host-uri au permisiunea de a primi zone transferate de servere de nume primare. Configurarea default a ISC BIND & DNS permite transferul de zona pentru orice statie. Din motive de securitate aceasta optiune trebuie modificata in asa fel incat zona sa poata fi transferata de la serverul primar de nume doar de catre serverul secundar de nume si de catre nici alt server de nume. In cazul nostru este listata adresa serverului de nume secundar, 80.97.20.6. Aceasta configurare va inhiba actiunile celor care doresc sa faca spamm sau IP spoofing, fiind deci o masura de securitate destul de puternica.
allow-queryh ;
Acest atribut specifica in clar care statii au dreptul sa interogheze serverul de caching. In configuratia standard, orice statie are dreptul sa adreseze cereri serverului de nume primar, dar in exemplul de mai sus, doresc sa las dreptul de interogare doar statiilor din reteaua interna 192.168.0.0/24 si 80.97.20.0/24 precum si localhost. Folosind aceasta restrictie oricine din Internet poate intreba despre o zona pe care serverul o administreaza si sa primeasca un raspuns, dar doar statiile din reteaua interna (retelele specificate in clar in allow-query) pot efectua si alte requesturi. Aceasta optiune este de asemeni o optiune de securitate.
allow-recursion ;
Optiunea allow-recursion listeaza gazdele carora le este permis sa efectueze interogari recursive prin intermediul acestui server. Optiunea prestabilita este de a efectua interogari recursive pentru toate gazdele. In exemplul de mai sus este permisa interogarea recursiva doar statiilor din LAN-ul local. Daca acest lucru ar fi permis si host-urilor externe retelei aceasta ar fi o bresa de securitate, serverul fiind deschis atacurilor externe.
version "Go away!";
Acest atribut specifica sirul returnat atunci cand serverul este interogat despre versiunea sa de ISC BIND & DNS. Este folosita in special impotriva celor care scaneaza serverul de nume pentru descoperirea breselor de securitate. Textul de "Go away" poate fi schimba dupa preferinte J. Aceasta optiune este de asemeni o optiune de securitate.
notify no;
DNS Notify este un mecanism care permite serverului primar de nume sa notifice serverele secundare de nume de modificarea zonei. In raspunsul la Notify-ul primit de la Master, secundarul verifica daca versiunea de zona pe care o are el inregistrata este versiunea curenta anuntata de catre serverul primar de nume, iar daca aceasta difera, initiaza transferul zonei modificate. Valoarea prestabilita este "yes", dar in cazul serverul de caching, zona pe care acesta o gestioneaza fiind adresa de loopback 127.0.0.1, administratorul trebuie sa evite transferul configuratiei pentru localhost catre serverele Secondary/Slave de nume.
Nota Este recomandat ca in configurarea indtuctiunii care defineste optiunile de logare sa dezactivati mesajele de alerta privind lame-server si asta pentru reducerea dimensiunilor fisierului creat de syslog. Mesajele de lame server sunt generate de servere care sunt inregistrate ca servere de nume dar care momentan din diverse motive numai indeplinesc aceasta functie. Pentru dezactivare se foloseste succesiunea de instructiuni: logging ; Daca se doreste ca syslog-ul sa nu primeasca mesaje si de genul "points to a CNMAE" se mai adauga in sectiunea de logare si urmatoarea linie: categoty cname ; |
Pasul 2
In aceasta etapa trebuiesc acordate si permisiile corecte pe fisierul de configurare al ISC BIND & DNS pentru user-ul proprietar, named. Din motive de securitate acesta trebuie sa aiba doar el drept de scriere si citire (0600/ -rw - --- ---).
Pentru a schimba aceste permisii se va folosi urmatoarea succesiune de instructiuni:
[root@ro-host /]# chmod 600 /etc/named.conf [root@ro-host /tmp]# chown named.named /etc/named.conf |
/var/named/db.127.0.0: Fisierul de reverse pentru ISC BIND & DNS
Acest fisier de configurare este folosit de catre toate serverele de nume care actioneaza in retea ca server primar sau master. Fisierul "db.127.0.0" converteste adresa de loopback a retelei in adresa de loopback a serverului.
Pasul 1
Trebuie creat urmatorul fisier in directorul /var/named.
Se creeaza fisierul db.127.0.0 (folosind comanda touch /var/named/db.127.0.0) si apoi se adauga urmatoarele linii in fisierul nou creat:
; Revision History: December 10, 2004 - root@ro-host.ro ; Start of Authority (SOA) records. $TTL 172800 @ IN SOA ns1.ro-host.ro. root.ro-host.ro. ( 00 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 172800 ) ; Minimum TTL of 1 day ; Name Server (NS) records. IN NS ns1.ro-host.ro. IN NS ns2.ro-host.ro. ; Addresses Point to Canonical Names (PTR) for Reverse lookups 1 IN PTR router.ro-host.ro. 2 IN PTR portal.ro-host.ro. 3 IN PTR www.ro-host.ro. 4 IN PTR smtp.ro-host.ro. |
Pasul 2
Acum in aceasta etapa, asa cum am procedat si mai sus, trebuie acordate permisiile corecte, din motive de securitate. Aceste permisii vor fi 0644 / -rw-r--r--
Pentru schimbarea permisiilor corecte folosim urmatoarele comenzi:
[root@ro-host /]# chmod 644 /var/named/db.80.97.20 [root@ro-host /tmp]# chown named.named /var/named/db.80.97.20 |
/var/named/db.ro-host: Fisierul de mapare al adreselor IP la numele de host-uri pentru ISC BIND & DNS
Folositi acest fisier de configurare pentru un server care actioneaza ca Master Name Srever pentru domeniul ro-host.ro. Fisierul db.ro-host mapeaza adresele la numele host-urilor.
Pasul 1
In prima faza trebuie sa avem acest fisier in directorul /var/named.
Facem acest fisier, db.ro-host (touch /var/named/db.ro-host) care va contine urmatoarele linii:
; Revision History: December 10, 2004 - root@ro-host.ro ; Start of Authority (SOA) records. $TTL 172800 @ IN SOA ns1.ro-host.ro. root.ro-host.ro. ( 00 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 172800 ) ; Minimum TTL of 1 day ; Name Server (NS) records. IN NS ns1.ro-host.ro. IN NS ns2.ro-host.ro. ; Mail Exchange (MX) records. MX 0 smtp.ro-host.ro. ; Address (A) records. localhost IN A 127.0.0.1 router IN A 80.97.20.1 portal IN A 80.97.20.2 www IN A 80.97.20.3 smtp IN A 80.97.20.4 |
Pasul 2
Acum trebuie acordate permisiile corecte, din motive de securitate. Aceste permisii vor fi 0644 / -rw-r--r-pentru user-ul de sistem named
Pentru schimbarea permisiilor corecte folosim urmatoarele comenzi:
[root@ro-host /]# chmod 644 /var/named/db.ro-host [root@ro-host /tmp]# chown named.named /var/named/db.ro-host |
Configurarea serverului de DNS ca server Secondary/Slave
Acest capitol descrie modul de instalare si configurare corecta a ISC BIND & DNS pentru un server care in reteaua din care face parte va avea rolul de server secundar de nume. Un server slave este un server cu autoritate pentru o zona, deoarece are cunostinte complexe, curente despre zona respectiva. Descarca periodic intreaga baza de date a zonei de pe serverul master sau chiar de pe alte servere secundare de nume si stocheza o copie a zonei pe propriile sale unitati de disc. Un server slave este un server de siguranta pentru o zona. In general, doua sau trei servere de siguranta sunt suficiente pentru majoritatea domeniilor.
/etc/named.conf : Fisierul de configurare al ISC BIND & DNS
Acest fisier de configuratie este folosit de serverele care indeplinesc in retea rolul de server de DNS secundar. Acest fisier trebuie modificat si configurat corespunzator.
Pasul 1
In fisierul /etc/named.conf vom modifica toate inregistrarile folosite in exemplu pentru serverul de nume primar cu exceptia zonei "0.0.127.in-addr.arpa" si vom adauga o linie cu adresa IP a serverului primar.
Vom crea fisierul named.conf (touch /etc/named.conf). In continuare este un exemplu al acestui fisier pe care-l recomand:
options { directory '/var/named'; allow-transfer ; allow-query ; allow-recursion ; version 'Go away!'; }; logging ; }; // Root server hints zone '.' ; // Provide a reverse mapping for the loopback address 127.0.0.1 zone '0.0.127.in-addr.arpa' ; // We are the master server for Ro-Host.Ro zone 'ro-host.ro' ; allow-query ; }; zone '20.97.80.in-addr.arpa' ; allow-query ; }; |
Nota Un server de nume secundar nu are nevoie sa primeasca toate fisierel de baze de date (db) din retea deoarece fisirele db.127.0.0 si db.cache sunt aceleasi ca si cele tinute de Primary Master, asa ca serverul secundar le va folosi pe cele stocate local. Este recomandat ca in configurarea indtuctiunii care defineste optiunile de logare sa dezactivati mesajele de alerta privind lame-server si asta pentru reducerea dimensiunilor fisierului creat de syslog. Mesajele de lame server sunt generate de servere care sunt inregistrate ca servere de nume dar care momentan din diverse motive numai indeplinesc aceasta functie. Pentru dezactivare se foloseste succesiunea de instructiuni: logging ; Daca se doreste ca syslog-ul sa nu primeasca mesaje si de genul "points to a CNMAE" se mai adauga in sectiunea de logare si urmatoarea linie: categoty cname ; |
Pasul 2
In aceasta etapa trebuiesc acordate si permisiile corecte pe fisierul de configurare al ISC BIND & DNS pentru user-ul proprietar, named. Din motive de securitate acesta trebuie sa aiba doar el drept de scriere si citire (0600/ -rw - --- ---).
Pentru a schimba aceste permisii se va folosi urmatoarea succesiune de instructiuni:
[root@ro-host /]# chmod 600 /etc/named.conf [root@ro-host /tmp]# chown named.named /etc/named.conf |
/var/named/db.127.0.0: Fisierul de reverse pentru ISC BIND & DNS
Acest fisier de configurare este folosit de catre toate serverele de nume care actioneaza in retea ca server secundar. Fisierul "db.127.0.0" converteste adresa de loopback a retelei in adresa de loopback a serverului.
Pasul 1
Trebuie creat urmatorul fisier in directorul /var/named.
Se creeaza fisierul db.127.0.0 (folosind comanda touch /var/named/db.127.0.0) si apoi se adauga urmatoarele linii in fisierul nou creat:
; Revision History: December 10, 2004 - root@ro-host.ro ; Start of Authority (SOA) records. $TTL 172800 @ IN SOA ns1.ro-host.ro. root.ro-host.ro. ( 00 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 172800 ) ; Minimum TTL of 1 day ; Name Server (NS) records. IN NS ns1.ro-host.ro. IN NS ns2.ro-host.ro. ; only One Ptr record. 1 IN PTR localhost. |
Pasul 2
Urmatorul pas presupune acordarea permisiilor corecte, din motive de securitate pentru user-ul proprietar pentru aplicatia ISC BIND & DNS. Aceste permisii vor fi 0644 / -rw-r--r--
Pentru schimbarea permisiilor corecte folosim urmatoarele comenzi:
[root@ro-host /]# chmod 644 /var/named/db.127.0.0 [root@ro-host /tmp]# chown named.named /var/named/db.127.0.0 |
/var/named/db.cache: Fisierul cu servere radacina pentru ISC BIND & DNS
Acest fisier este valabil pentru toate tipurile de servere de nume (Caching, Slave sau Master) care vor fi instalate in sistemul dumneavoastra. Fisierul db.cache nu face altceva decat sa specifice serverului dumneavoastra (indiferent de tipul sau) unde sa gaseasca serverele pentru domaniul radacina si din acest motiv o copie a acestui fisier trebuie sa fie stocata si pe serverul vostru. El va fi salvat in directorul /var/named.
Pasul 1
Pentru a obtine o copie actualizata a acestui fisier, este metoda cea mai recomdata, se va face o cere pentru acest fisier de pe o alta statie Unix, alta decat serverul care se instaleaza, sau pur si simplu se poate face o copie de pe unul din CD-urile de instalare a sistemului.
Pentru a obtine o copie a fisierului cu serverele radacina se va folosi urmatoarea comanda:
[root@adritzu]# dig @a.root-servers.net . ns > db.cache |
Sau la fel de bine se poate realiza acest lucru cu o interogare dupa IP
[root@adritzu]# dig @194.41.0.4 . ns > db.cache |
Nota Nu uitati dupa ce ati descarcat acest fisier de pe Internet sa-l copiati si in directorul /var/named pe serverul care-l instalati. Fisierul cu servere radacina nu se schimba foarte des, dar se schimba. Din acest motiv o recomandare ar fi ca fisierul db.cache sa-l update-ati cam o data la doua luni |
Pasul 2
Acum, ce a mai ramas de facut este sa setam corect permisiunile pentru acest fisier, ele trebuie sa fie 0644 / - r w - r - - r - -, iar fisierul sa apartina doar user-ului named:
Pentru schimbarea permisiilor corecte folosim urmatoarele comenzi
[root@ro-host /]# chmod 644 /var/named/db.cache [root@ro-host /tmp]# chown named.named /var/named/db.cache |
/etc/sysconfig/named: Fisierul de configurare al sistemului pentru ISC BIND & DNS
Acest fisier se gaseste in toate serverele care au instalat ISC BIND & DNS indiferent de modul de lucru (Caching, Master sau Slave). Fisierul /etc/sysconfig/named pentru a specifica ISC BIND & DNS configurarile generale ale sistemului precum daca daemon-ul de named trebuie sa fie pornit la start-up, sub ce user trebuie sa ruleze, etc.
Vom crea un fisier named (touch /etc/sysconfig/named) si vom adauga urmatoarele linii:
# Currently, you can use the following options: #ROOTDIR="" #OPTIONS="" |
Optiunea de "ROOTDIR=""" indica ISC BIND & DNS care este directorul standard pentru root. Aceasta optiune se foloseste cand, pentru mai multa securitate se doreste sa se lucreze in modul "chroot jail".
Optiunea de "OPTIONS=""" este destinata pentru a adauga mai multi parametri care vor fi luati in considerare inainte ca daemon-ul named sa fie pornit. De exemplu se poate folosi "-d" pentru a da administratorului la consola mesajele de debug. In cele mai multe cazuri aceste optiuni nu vor fi introduse in acest fisier.
/etc/rc.d/init.d/named: Fisierul de initializare pentru ISC BIND & DNS
Acest fisier este identic pentru toate tipurile de servere de nume, indiferent de rolul pe care acesta il are in reteaua din care face parte. Fisierul /etc/rc.d/init.d/named este responsabil de pornirea si oprirea automata a daemon-ul ISC BIND & DNS din serverul administrat de dumneavoastra. Incarcarea individuala a daemon-ului named, este avantajoasa deoarece reduce timpul de incarcare si reduce swapping-ul.
Pasul 1
Se creaza scriptul named (touch /etc/rc.d/init.d/named) care trebuie sa contina urmatoarele linii:
#!/bin/bash # # named This shell script takes care of starting and stopping # named (BIND DNS server). # # chkconfig: - 55 45 # description: named (BIND) is a Domain Name Server (DNS) # that is used to resolve host names to IP addresses. # probe: true # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ '$' = 'no' ] && exit 0 [ -f /etc/sysconfig/named ] && . /etc/sysconfig/named [ -f /usr/sbin/named ] || exit 0 [ -f '$'/etc/named.conf ] || exit 0 RETVAL=0 start() { # Start daemons. echo -n 'Starting named: ' if [ -n '$' -a 'x$' != 'x/' ]; then OPTIONS='$ -t $' fi daemon named -u named $ RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named echo return $RETVAL } stop() restart() reload() probe() # See how we were called. case '$1' in start) start ;; stop) stop ;; restart) restart ;; condrestart) [ -f /var/lock/subsys/named ] && restart ;; reload) reload ;; probe) probe ;; *) echo 'Usage: named ' exit 1 esac exit $? |
Pasul 2
Odata ce scriptul a fost creat este foarte important sa-l facem si executabil, schimband setarile implicite, sa facem link-urile necesare si apoi sa-l pornim. Facandul executabil vom permite sistemului sa-l ruleze, iar schimband permisiile vom permite doar root-ului sa modifice acest fisier si nu in ultimul rand vom crea un link simbolic pentru a permite sistemului sa-l controleze la initializarea sistemului si sa porneasca automat la fiecare boot-are.
Facem scriptul executabil si schimbam permisiile asupra lui folosind comenzile
[root@ro-host /]# chmod 700 /etc/rc.d/init.d/named [root@ro-host /]# chown 0.0 /etc/rc.d/init.d/named |
Adaugam un link simbolic catre rc.d astfel:
[root@ro-host /]# chkconfig --add named [root@ro-host /]# chkconfig --level 2345 named on |
Pentru a porni ISC BIND & DNS manual folosim:
[root@ro-host /]# /etc/rc.d/init.d/named start Starting named: [OK] |
Securizarea ISC BIND & DNS
Aceasta sectiune trateaza in special actiunile care se pot face pentru securizarea serverului de nume.
Securizarea Bind folosind TSIG
Securizarea folosind TSING se foloseste doar in cazul in care folositi un server de nume Master sau Slave. Noua versiune de BIND 9 a fost rescrisa aproape in totalitate si arhitectura actuala a ISC BIND & DNS permite creerea de key tranzactionale si folosirea tranzactiilor semnate (Transaction SIGnatures - TSIG). TSIG este folosit pentru semnarea cererilor de DNS. Asta inseamna ca daca un server primeste un mesaj semnat cu aceasta cheie, el o va verifica. In cazul in care semnatura este recunoscuta, cel care a adresat interogarea va primi un raspuns semnat cu aceeasi cheie. Cu ajutorul acestui mecanism avem acum posibilitatea sa avem un mai bun control asupra cui poate face transfer de zona, asupra notificarilor de zona, precum si asupra cererilor recursive. Mecanismul este folositor si pentru actualizarile dinamice.
In continuare sunt prezentati pasi care vor fi parcursi pentru generarea acestor chei precum si modul lor de folosire.
Pasul 1
Pentru inceput trebuiesc generate cheile pentru fiecare pereche de servere (Master si Slave). Aceasta cheie criptata va fi share-uita intre serverul primar de nume si cel secundar. Cel mai important aspect este acela ca cheia sa aiba exact acelasi nume pentru cele doua sisteme (in exemplul nostru "ns1 - ns2 ").
Generarea cheilor se face folosind urmatoarele comenzi:
[root@ro-host /]# dnssec-keygen -a hmac-md5 -b 128 -n HOST ns1-ns2 Kns1-ns2.+157+49406 |
Pasul 2
In pasul precedent nu am facut decat sa generam o cheie de 128 de biti (16 byte) HMAC-MD5. Aceasta va fi creata intr-un fisier numit "Kns1-ns2.+157+49406.private" si va fi gasita in continuarea liniei care contine cuvantul "Key:", loc de unde ea va trebui copiata
Se editeaza fisierul Kns1-ns2.+157+49406.private (vi Kns1-ns2.+157+49406.private) pentru a extrage cheia generata de sistem:
Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: ps1jy3f7czVa1VNZkYaLfw= = |
sirul de caractere "ps1jy3f7czVa1VNZkYaLfw= =" (generat in exemplul nostru) este cheia pe care in continuare o vom folosi intre cele doua servere de nume.
Pasul 3
Odata ce aceasta cheie a fost copiata pe cele doua sisteme (folosind ssh) acest fisier se poate sterge.
Pentru a sterge fisierele generate si care contin cheia secreta folosim comenzile:
[root@ro-host /] rm -f Kns1-ns2.+157+49406 .key [root@ro-host /] rm -f Kns1-ns2.+157+49406 .private |
Pasul 4
Este timpul sa configuram cele doua servere (primar si secundar) sa utilizeze aceste chei. Pentru aceasta va trebui sa adaugat cateva linii in fisierele de configurare ale serverelor, in named.conf
Vom edita named.conf (vi /etc/named.conf) pe cele doua servere si vom adauga urmatoarele:
key ns1-ns2 ; |
Pasul 5
Ultima etapa ce configurare stabileste ca cele doua servere sa foloseasca aceste chei in comunicarea dintre ele si acest lucru se realizeaza prin adaugarea in fisierul named.conf de pe serverul primar (ns1) a adresei IP a serverulu secundar ns2 si invers.
Se editeaza named.conf (vi /etc/named.conf) pe ambele servere si se adauga adresele IP corespunzatoare:
server x.x.x.x ; |
Dupa modificarile indicate in ultimii doi pasi, fisierele de configurare pentru ISC BIND & DNS ar trebui sa arate astfel:
Pentru serverul primar - Primary/Master Server
Key ns1-ns2 ; server 80.97.20.6 ; options ; allow-query ; allow-recursion ; version 'Go away!'; }; logging ; }; // Root server hints zone '.' ; // Provide a reverse mapping for the loopback address 127.0.0.1 zone '0.0.127.in-addr.arpa' ; // We are the master server for Ro-Host.Ro zone 'ro-host.ro' { type master; file 'db.ro-host'; allow-query ; }; zone '20.97.80.in-addr.arpa' { type master; file 'db.20.97.80'; allow-query ; }; |
Pentru serverul secundar - Secondary/Slave Server
key ns1-ns2 ; server 80.97.20.5 ; options { directory '/var/named'; allow-transfer ; allow-query ; allow-recursion ; version 'Go away!'; }; logging ; }; // Root server hints zone '.' ; // Provide a reverse mapping for the loopback address 127.0.0.1 zone '0.0.127.in-addr.arpa' ; // We are the master server for Ro-Host.Ro zone 'ro-host.ro' ; allow-query ; }; zone '20.97.80.in-addr.arpa' ; allow-query ; }; |
Pentru o securitate si mai avansata se poate merge si mai departe cu folosirea acestor chei private in sensul ca anumite optiuni define anterior pot si ele intarite de folosirea acelorasi chei. De exemplu optiunea allow-transfer.
Se editeaza fisierul /etc/named.conf astfel:
linia care contine:
allow-transfer ; |
va fi inlocuita cu:
allow-transfer ; |
Tot pentru securizare sistemului ISC BIND & DNS se pot folosi si alte procedee cum ar fi utilizarea unui algoritm de criptare pentru serverul de nume cu ajutorul rndc, sau utilizare unui algoritm de criptare al autentificarii utilizand DNSSEC. Principiul de configurare pentru amandoua esteaproximativ identic cu cel prezentat mai sus.
Unelte de administrare si verificare a ISC BIND & DNS
Comenzile listate in continuare sunt cele pe care eu le folosesc si le recomand. Cu siguranta exista si altele, si de aceea va rog sa consultati paginile de manual ale ISC BIND & DNS pentru mai multe informatii.
dig
Comanda dig este utilitar lookup (domain information groper) iar capacitatea acestui instrument de testare provine din numarul de detalii pe care le ofera despre o interogare DNS si din faptul ca formateaza aceste informatii intr-un mod care poate fi utilizat direct de catre programul named. Aceasta comanda poate fi deasemeni folosita pentru actualizarea fisierului db.cache.
Folositi urmatoarea comanda pentru obtinerea adresei:
[root@ro-host /]# dig @www.ro-host.ro ; <<>> DiG 9.1.0 <<>> @www.ro-host.ro ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 20994 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;. IN NS ;; Query time: 3 msec ;; SERVER: 80.97.20.5.5#53(ns1.ro-host.ro) ;; WHEN: Fri Dec 12 19:16:51 2004 ;; MSG SIZE rcvd: 17 |
Comanda dig are mai multe optiuni care pot fi consultate din pagina de manual.
rndc
Comanda rndc permite administratorului de sistem sa controleze operatiile care se desfasoara in serverul de nume. Acest utilitar este folosit pentru reincarcarea fisierelor de configurare ale zonei, pentru mentinerea integritatii zonei, logarea cererilor, oprirea serverului de DNS precum si la alte functii.
nslookup
Capacitatile comenzi nslookup pot fi evidentiate cel mai bine atunci cand aceasta este utilizata ca un instrument de testare interactiva.
Pentru a folosi aceasta comanda in mod interactiv se tasteaza comanda nslookup la promptul interpretorului de comenzi shell.
[root@ro-host /]# nslookup > www.ro-host.ro Server: 80.97.20.5 Address: 80.97.20.5.5#53 Name: www.openna.com Address: 80.97.20.3 > exit |
host
Comanda host este simpla si directa. Cel mai des, este utilizata pentru a obtine adresa IP a unui server de nume, cu minimum de bataie de cap.
Pentru a obtine adresa serverului care gestioneaza domeniul ro-host.ro se foloseste urmatoarea comanda:
[root@ro-host /]# host ro-host.ro ro-host.ro. has address 80.97.20.3 |
Securizare si optimizare - Kernel Security
Kernelul este inima sistemului de operare, fara kernel nu exista Linux J. Din aceste motive este recomandat sa acordam o atentie deosebita si acestei parti a sistemului de operare. Red Hat nu este Linux, ci o distributie bazata pe un kernel Linux. Kernelul Linux este un program complex care ofera seviciile de baza pentru restul programelor din distributia Linux. Datorita faptului ca, spre deosebire de sistemele de operare comerciale ca Windows sau MacOS, codul sursa al kernelului Linux este disponibil gratuit, rezulta ca este foarte usor de adaugat noi imbunatatiri si facilitati la acesta. Recompilarea kernelului Linux din surse a devenit din acest motiv o operatie destul de des intalnita, si se fac eforturi din ce in ce mai mari pentru ca aceasta operatie sa devina cat mai usoara pentru cei neexperimentati.
Cand va ganditi sa optimizati kernelul sistemului dumneavoastra de operare trebuiesc avute in vedere urmatoarele motive din care o faceti (acestea imi vin in minte acum):
Kernelul va fi mai rapid (cu cat cod cu atat mai bine)
Sistemul va avea memorie mai multa (Kernelul nu va folosi NICIODATA memorie virtuala)
Sistemul va fi mai stabil (nu va mai cauta alte componente neinstalate)
Partile nefolosite ale unui Kernel neadaptat la sistemul dumneavoastra pot fi folosite de un atacator extern
Modulele instalate individual in sistem sunt mai lente decat daca ar avea suport compilat direct in Kernel.
In materialul de fata voi detaila modul de compilare intai pentu un kernel monolithic, care este metoda cea mai recomandata pentru obtinerea celor mai bune performante precum si a unui kernel modularizat, recomandat sistemlor care se doresc portabile pe diverse sisteme Linux. Kernel monolithic inseamna ca administratorul de sistem va trebui sa raspunda doar cu yes sau no la intrebarile sistemului.
Premizele instalarii
Comenzile sunt compatibile pe orice sistem Unix.
Calea catre surse folosita in acest curs este /usr/src (oricare alta cale poate fi folosita, ca o masura de "discretie" pentru distributia utilizata de dumneavoastra).
Instalarea a fost testata pe un sistem Red Hat 9.0.
Toate etapele configurarii au fost facute folosind un cont de super-user "root".
Ultima versiune de Kernel este 2.4.5
Ultimele pach-uri de securitate nu sunt inca disponibile pentru aceasta varianta
Pachete
Cursul de fata, foloseste instructiuni de instalare si informatii legate de Linux Kernel actualizate la data de 20/12/2004. Va rog verificati ultimele modificari, accesand site-ul www.kernel.org .
Codul sursa este disponibil la adresa:
Kernel Homepage: https://www.kernel.org
Kernet FTP Site: 209.10.41.242
Ultima versiune disponibila: linux-2.4.5.tar.gz
Secure Linux Kernel Patches Homepage: https://www.openwall.com/linux
Secure Linux Kernel Patches FTP Site: 195.42.162.180
Ultima versiune disponibila: nu exista
Cerinte
In raport de functiile pe care doriti sa le indeplineasca serverul al carui kernel il compilam, daca trebuie sa aiba firewall si suport quota pentru userii sai, kernelul de Linux cere ca aceste software-uri sa fie deja instalate corespunzator in sistem. In cazul in care aceste pachete nu sunt instalate, ele vor fi adaugate de pe CD-ROM sau de pe orice alt suport inainte de a incepe operatia de compilare.
iptables este un pachet care contine programe noi si foarte puternice folosite de Linux pentru configurarea firewall-ului si masquerading. Acest pachet trebuie instalat daca dorim ca serverul pe care-l instalam sa aiba suport pentru firewall.
quota este un pachet de administrare folosit pentru monitorizarea si limitarea spatiului de pe disk alocat fiecarui user. Acest pachet il vom instala daca dorim sa putem controla marimea directoarelor create de useri pe server.
Ø Pentru a verifica daca pachetul iptables este instalat folosim comanda:
[root@ro-host /]# rpm -q iptables Package iptables is not installed |
Ø Pentru a verifica daca pachetul quota este instalat pe serverul nostru folosim:
[root@ro-host /]# rpm -q quota Package quota is not installed |
Montam CD-ROM-ul pentru a cauta pachetele dorite:
[root@ro-host /]# mount /dev/cdrom /mnt/cdrom/ had: ATAPI 32X CD-ROM drive, 128kB Cache mount: block device dev/cdrom is write-protected, mounting read-only |
Instalam direct de pe CD pachetele dorite folosind comenzile de mai jos
[root@ro-host /]# cd /mnt/cdrom/RedHat/RPMS/ [root@ro-host RPMS]# rpm -Uvh iptables-version.i386.rpm iptables ################################################## [root@ro-host RPMS]# rpm -Uvh quota-version.i386.rpm quota ################################################## |
Tuning Kernel
Primul lucru important pe care un administrator de sistem trebuie sa-l faca este sa copieze arhiva noului kernel in directorul usr/src si sa stergem kernelul nou din sistem inainte de instalrea celui nou. Stergerea kernelului pe care serverul il foloseste nu il va bloca decat doar in cazul in care vom reboot-a sistemul inainte de instalarea celui nou.
Pasul 1
Este necesar aducerea in sistemul nostru (in directorul /usr/src) a unei copii a arhivei ultimei versiuni de kernel.
Pentru a copia arhiva Kernelului Linux in directorul /usr/src folosim comanda:
[root@ro-host /]# cp linux-version.tar.gz /usr/src |
Ne mutam in acest director, folosind comanda:
[root@ro-host /]# cd /usr/src |
Pasul 2
In functie de versiunea de Kernel care a fost anterior instalata avem doua posibilitati de dezinstalare, dupa cum urmeaza.
Daca Kernelul actual a fost instalat folosind o arhiva tar
Aceste etape sunt valabile doar in cazul in care versiunea de kernel folosita in prezent a fost instalata dintr-o arhiva. Daca este o instalare recenta, la care nu au fost aduse schimbari semnificative 1000% s-au folosit pachete RPM si anume kernel-headers-version.i386.rpm, kernel-version.i386.rpm.
Stergem link-ul simbolic din directorul /usr/src:
[root@ro-host src]# rm -f linux |
Stergem directorul in care a fost instalat head-erul kernelului anterior folosind comanda:
[root@ro-host src]# rm -rf linux-2.4.x |
Stergem kernelul folosit anterior folosind comanda:
[root@ro-host src]# rm -f /boot/vmlinuz-2.4.x |
Stergem fisierul System.map folosind urmatoarea comanda:
[root@ro-host src]# rm -f /boot/System.map-2.4.x |
Stergem directoarele cu modulele folosite de kernel (daca este cazul) folosind comanda:
[root@ro-host src]# rm -rf /lib/modules/2.4.x/ |
Nota Stergerea modulelor folosite de vechiul kernel este necesara doar in cazul in care sistemul nostru a folosit un kernel modular. Daca directorul de module este gol, mai exact directorul lib/modules atunci inseamna ca vechiul kernel nu a fost unul de tip modular. |
Daca vechiul Kernel a fost instalat din pachete RPM
Daca tocmai ati terminat de instalat sistemul dumneavoastra atunci in mod sigur kernelul a fost instalat avand la baza pachete RPM. Pentru dezinstalarea lui veti folosi urmatoarele etape.
primul lucru pe care administratorul de sistem trebuie sa-l faca este sa verifice versiunea de kernel instalata. Aceasta se face folosind comanda:
[root@ro-host src]# rpm -qa | grep kernel kernel-2.4.2-2 kernel-headers-2.4.2-2 |
Comanda de mai sus nu a facut decat sa ne arate ca kernel si kernel-header au fost singurele pachete kernel RPM instalate in sistem. Ele vor trebui dezinstalate.
Dezinstalarea lor se va face folosind urmatoarele comenzi:
[root@ro-host src]# rpm -e -- nodeps kernel kernel-headers |
Nota Daca primiti un mesaj de eroare de genul cannot remove /lib/modules/2.4.x dyrectory, directory not empty, atunci stergeti inatai directorul manual folosind comanda: rm -rf /lib/modules/2.4.x/. Acest director este legat de functionarea vechiului kernel si nu este necesar pentru versiunea noua de kernel pe care dorim sa o instalam. |
Pasul 3
Odata ce versiunea veche de Kernel a fost dezinstalata de pe server si dupa ce arhiva noului Kernel se gaseste in directorul /usr/src putem incepe dezarhivarea lui. Nu uitati ca dupa desfasurare sa stergeti arhiva pentru conservarea spatiului de pe server.
Dezarhivarea versiuni noi de Kernel se face folosind comanda:
[root@ro-host src]# tar xzpf linux-version.tar.gz |
Stergerea arhivei folosite se face astfel:
[root@ro-host src]# rm -f linux-version.tar.gz |
Nota Daca operatia de compilare a Kernelului este ceva nou pentru dumneavoastra va recomand sa pastrati aceasta arhiva (linux-version.tar.gz) pana la finalizarea cu succes a instalarii. Daca se intampla ceva in timpul procesului de instalare, avand sursa la dispozitie puteti reincerca. |
Pasul 4
Acum trebuie sa facem unele modificari in fisierele pe care le-am dezarhivat pentru a obtine maximum de capabilitati. Toate optimizarile vor fi descrise in continuare si nu fac decat sa creasca functionalitatea Kernelului fata de versiunea standard.
Editati fisierul sem.h (vi +66 /usr/src/linux/include/linux/sem.h) in care veti schimba urmatoarea linie:
#define SEMMNI 128 /* <= IPCMNI max # of semaphore identifiers */ |
cu
#define SEMMNI 512 /* <= IPCMNI max # of semaphore identifiers */ |
Editati fisierul printk.c (vi +26 /usr/src/linux/kernel/print.c) si modificati urmatorii parametri:
#define LOG_BUF_LEN (16384) |
cu
#define LOG_BUF_LEN (65536) |
Pasul 5
Ultimul pas este de a instrui Kernelul sa foloseasca intr-un mod cat mai optim arhitectura procesorului de pe serverul dumneavoastra.
Editati fisierul Makefile (vi +19 /usr/src/linux/Makefile) si modificati urmatoarea linie:
HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer |
cu
HOSTCFLAGS = -Wall -Wstrict-prototypes -O3 -funroll-loops -fomitframe-pointer |
Tot in acest fisier mai modificati si linia 90 si schimbati astfel:
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer-fno-strict-aliasing |
cu
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -O3 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing |
Aplicarea pach-urilor de securitate
Aplicarea pach-urilor de securitate este o cale foarte sigura de prevenire a atacurilor de genul Buffer Overflow, precum si altor tipuri de atacuri. Aceste pach-uri fac sistemul dumneavoastra mult mai stabil si sigur.
Primul lucru care trebuie facut inainte de a aplica un patch de securitate pentru kernel este sa verificam pe site-ul producatorului ultimul patch disponibil. In continuare voi folosi un exemplu fictiv pentru descrierea etapelor de instalare. Pach-ul disponibil pentru versiunea noastra de kernel va fi denumita in continuare linux-2.4.5-ow1.tar.gz.
Pentru aplicarea unui patch de securitate folosim comenzile urmatoare:
[root@ro-host /]# cp linux-2.4.5-ow1.tar.gz /usr/src/ [root@ro-host /]# cd /usr/src/ [root@ro-host src]# tar xzpf linux-2.4.5-ow1.tar.gz [root@ro-host src]# cd linux-2.4.5-ow1/ [root@ro-host linux-2.4.5-ow1]# mv linux-2.4.5-ow1.diff /usr/src/ [root@ro-host linux-2.4.5-ow1]# cd .. [root@ro-host src]# patch -p0 < linux-2.4.5-ow1.diff [root@ro-host src]# rm -rf linux-2.4.5-ow1 [root@ro-host src]# rm -f linux-2.4.5-ow1.diff [root@ro-hos src]# rm -f linux-2.4.5-ow1.tar.gz |
Acum Kernelul nou instalat este patch-uit si putem continua instalarea si constructia noului Kernel, dupa care sistemul poate fi reboot-at.
Curatarea Kernelului
Este foarte important sa va asigurati ca subdirectoarele /usr/include/asm si usr/include/linux sunt doar link-uri simbolice la sursele noului Kernel care urmeaza sa fie instalat.
Pasul 1
Subdirectoarele asm si linux sunt link-uri simbolice sau link-uri soft la directoarele care contin head-erele kernelului pentru arhitectura sistemului nostru, de exemplu /usr/src/linux/include/asm-i386 pentru subdirectorul asm.
Pentru creerea acestor link-uri simbolice vom folosi comenzile:
[root@ro-host src]# cd /usr/include/ [root@ro-host include]# rm -f asm linux [root@ro-host include]# ln -s /usr/src/linux/include/asm-i386 asm [root@ro-host include]# ln -s /usr/src/linux/include/linux linux |
Este o parte foarte importanta din configurare este ca administratorul sistemului sa stearga directoarele asm si linux din directorul usr/linux dupa care sa recreeze link-uri simbolice noi catre aceleasi directoare, dar diferenta majora este ca acestea sunt catre sursele kernelului nou.
Nota Daca Kernelul precedent a fost instalat folosind pachete RPM, atunci link-urile simbolice asm si linux nu exista. In cadrul etapei de dezinstalare a pachetelor RPM ele se sterg automat. Nu uitati sa le recreati. |
Pasul 2
In aceasta etapa vom curata directorul in care se afla sursele Kernelului de fisierele care nu le vom mai folosi.
Pentru curatare folosim urmatoarea comanda:
[root@ro-host include]# cd /usr/src/linux [root@ro-host linux]# make mrproper |
In acest moment avem sursele pentru compilarea noului Kernel corect instalate. Configurarea Kernelului poate fi facuta in trei moduri distincte:
prima metoda este folosind comanda make conf. Terminalul va afisa mai multe intrebari legate de optiunile de configurare la care administratorul de sistem va trebui sa raspunda.
a doua metoda este legata de folosirea comenzi make menuconfig in care sunt incluse toate optiunile de configurare ale Kernelului
a treia metoda, nu este cazul nostru, este cea in care se foloseste comanda make xconfig care pune la dispozitia administratorului o interfata grafica de configurare.
Pasul 3
Pentru materialul de fata am ales configurarea folosind comanada make config deoarece nu avem instalate pe server utilitare de genul Xfree86 care ar fi necesare in cazul utilizarii configurarii cu make menuconfig.
[root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# make config rm -f include/asm ( cd include ; ln -sf asm-i386 asm) /bin/sh scripts/Configure arch/i386/config.in # # Using defaults found in arch/i386/defconfig # |
Configurarea kernelului
Odata introdusa comanda de mai sus vor fi afisate o lista cu optiunile configurabile ale kernelului. administratorul de sistem va trebui sa indice device-urile serverului si pentru care doreste suport. Pentru fiecare optiune puteti raspunde cu una din varinatele:
[y] va fi compilata in kernel si va fi totdeauna incarcata de sistem
[m] se vor folosi module pentru folosirea acestei caracteristici si va fi incarcata la cerere
[n] nu se va oferi suport in kernel
Nota Este important de subliniat ca n sau y inseamna raspunsuri implicite la intrebari. m este folosit pentru componentele modulare, iar [?] inseamna ca optiunea respectiva poate fi configurata la alegere. |
Asa cum am zis anterior, in continuare vom trata compilarea unui Kernel monolitic. Trebuie stiut ca acesta este specific pentru fiecare sistem. Materialul a fost realizat pe un hardware care avea urmatoarele caracteristici:
1 Pentium-III 667 MHz (i686) processor
1 Motherboard Asus P3V4X Pro 133Mhz EIDE
1 Hard Disk Ultra ATA/66 EIDE
1 Chipset Apollo Pro133A
1 CD-ROM ATAPI IDE
1 Floppy Disk
2 Ethernet Cards 3COM 3c597 PCI 10/100
1 Mouse PS/2
In configuratia urmatoare:
am activat suportul pentru posibilitatea de a incarca ulterior module
am adaptat kernelul la tipul de procesor i686
am adaugat suport full pentru Firewall Netfilter (iptables) cu masquerading si forwarding
suport DMA pentru discuri IDE (daca folositi SCSI veti dezactiva optiunea pentru DMA)
am dezactivat serviciile de NFS, suportul pentru USB si sound
Configuratia este ideala pentru un server Gateway/Proxy/Mail/DNS Server.
rm -f include/asm ( cd include ; ln -sf asm-i386 asm) /bin/sh scripts/Configure arch/i386/config.in Using defaults found in arch/i386/defconfig * Code maturity level options Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] * Loadable module support Enable loadable module support (CONFIG_MODULES) [Y/n/?] Set version information on all module symbols (CONFIG_MODVERSIONS) [Y/n/?] n Kernel module loader (CONFIG_KMOD) [Y/n/?] * Processor type and features Processor family (386, 486, 586/K5/5x86/6x86/6x86MX, Pentium-Classic, Pentium-MMX, Pentium- Pro/Celeron/Pentium-II, Pentium-III, Pentium-4, K6/K6-II/K6-III, Athlon/K7, Crusoe, Winchip-C6, Winchip-2, Winchip-2A/Winchip-3) [Pentium-III] Pentium-Pro/Celeron/Pentium-II defined CONFIG_M686 Toshiba Laptop support (CONFIG_TOSHIBA) [N/y/m/?] /dev/cpu/microcode - Intel IA32 CPU microcode support (CONFIG_MICROCODE) [N/y/m/?] /dev/cpu/*/msr - Model-specific register support (CONFIG_X86_MSR) [N/y/m/?] /dev/cpu/*/cpuid - CPU information support (CONFIG_X86_CPUID) [N/y/m/?] High Memory Support (off, 4GB, 64GB) [off] defined CONFIG_NOHIGHMEM Math emulation (CONFIG_MATH_EMULATION) [N/y/?] (NEW) MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?] Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] n APIC and IO-APIC support on uniprocessors (CONFIG_X86_UP_IOAPIC) [N/y/?] (NEW) y * General setup Networking support (CONFIG_NET) [Y/n/?] SGI Visual Workstation support (CONFIG_VISWS) [N/y/?] PCI support (CONFIG_PCI) [Y/n/?] PCI access mode (BIOS, Direct, Any) [Any] defined CONFIG_PCI_GOANY PCI device name database (CONFIG_PCI_NAMES) [Y/n/?] n EISA support (CONFIG_EISA) [N/y/?] MCA support (CONFIG_MCA) [N/y/?] Support for hot-pluggable devices (CONFIG_HOTPLUG) [Y/n/?] n System V IPC (CONFIG_SYSVIPC) [Y/n/?] BSD Process Accounting (CONFIG_BSD_PROCESS_ACCT) [N/y/?] Sysctl support (CONFIG_SYSCTL) [Y/n/?] Kernel core (/proc/kcore) format (ELF, A.OUT) [ELF] defined CONFIG_KCORE_ELF Kernel support for a.out binaries (CONFIG_BINFMT_AOUT) [Y/m/n/?] Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?] Kernel support for MISC binaries (CONFIG_BINFMT_MISC) [Y/m/n/?] Power Management support (CONFIG_PM) [Y/n/?] n * Memory Technology Devices ( MTD) Memory Technology Device (MTD) support (CONFIG_MTD) [N/y/m/?] * Parallel port support Parallel port support (CONFIG_PARPORT) [N/y/m/?] * Plug and Play configuration Plug and Play support (CONFIG_PNP) [Y/m/n/?] n * Block devices Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] XT hard disk support (CONFIG_BLK_DEV_XD) [N/y/m/?] Compaq SMART2 support (CONFIG_BLK_CPQ_DA) [N/y/m/?] Compaq CISS Array support (CONFIG_BLK_CPQ_CISS_DA) [N/y/m/?] Mylex DAC960/DAC1100 PCI RAID Controller support (CONFIG_BLK_DEV_DAC960) [N/y/m/?] Loopback device support (CONFIG_BLK_DEV_LOOP) [N/y/m/?] Network block device support (CONFIG_BLK_DEV_NBD) [N/y/m/?] RAM disk support (CONFIG_BLK_DEV_RAM) [N/y/m/?] * Multi-device support ( RAID and LVM) Multiple devices driver support (RAID and LVM) (CONFIG_MD) [N/y/?] * Networking options Packet socket (CONFIG_PACKET) [Y/m/n/?] Packet socket: mmapped IO (CONFIG_PACKET_MMAP) [N/y/?] y Kernel/User netlink socket (CONFIG_NETLINK) [N/y/?] y Routing messages (CONFIG_RTNETLINK) [N/y/?] (NEW) y Netlink device emulation (CONFIG_NETLINK_DEV) [N/y/m/?] (NEW) y Network packet filtering (replaces ipchains) (CONFIG_NETFILTER) [N/y/?] y Network packet filtering debugging (CONFIG_NETFILTER_DEBUG) [N/y/?] (NEW) y Socket Filtering (CONFIG_FILTER) [N/y/?] Unix domain sockets (CONFIG_UNIX) [Y/m/n/?] TCP/IP networking (CONFIG_INET) [Y/n/?] IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?] n IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [N/y/?] y IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [N/y/?] (NEW) y IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK) [N/y/?] (NEW) y IP: fast network address translation (CONFIG_IP_ROUTE_NAT) [N/y/?] (NEW) y IP: equal cost multipath (CONFIG_IP_ROUTE_MULTIPATH) [N/y/?] (NEW) y IP: use TOS value as routing key (CONFIG_IP_ROUTE_TOS) [N/y/?] (NEW) y IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE) [N/y/?] (NEW) y IP: large routing tables (CONFIG_IP_ROUTE_LARGE_TABLES) [N/y/?] (NEW) y IP: kernel level autoconfiguration (CONFIG_IP_PNP) [N/y/?] IP: tunneling (CONFIG_NET_IPIP) [N/y/m/?] IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/m/?] IP: TCP Explicit Congestion Notification support (CONFIG_INET_ECN) [N/y/?] IP: TCP syncookie support (disabled per default) (CONFIG_SYN_COOKIES) [N/y/?] y * IP: Netfilter Configuration Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) [N/y/m/?] (NEW) m FTP protocol support (CONFIG_IP_NF_FTP) [N/m/?] (NEW) m IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) [N/y/m/?] (NEW) m limit match support (CONFIG_IP_NF_MATCH_LIMIT) [N/m/?] (NEW) m MAC address match support (CONFIG_IP_NF_MATCH_MAC) [N/m/?] (NEW) m netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [N/m/?] (NEW) m Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT) [N/m/?] (NEW) m TOS match support (CONFIG_IP_NF_MATCH_TOS) [N/m/?] (NEW) m tcpmss match support (CONFIG_IP_NF_MATCH_TCPMSS) [N/m/?] (NEW) m Connection state match support (CONFIG_IP_NF_MATCH_STATE) [N/m/?] (NEW) m Packet filtering (CONFIG_IP_NF_FILTER) [N/m/?] (NEW) m REJECT target support (CONFIG_IP_NF_TARGET_REJECT) [N/m/?] (NEW) m Full NAT (CONFIG_IP_NF_NAT) [N/m/?] (NEW) m MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) [N/m/?] (NEW) m REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) [N/m/?] (NEW) m Packet mangling (CONFIG_IP_NF_MANGLE) [N/m/?] (NEW) m TOS target support (CONFIG_IP_NF_TARGET_TOS) [N/m/?] (NEW) m MARK target support (CONFIG_IP_NF_TARGET_MARK) [N/m/?] (NEW) m LOG target support (CONFIG_IP_NF_TARGET_LOG) [N/m/?] (NEW) m TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) [N/m/?] (NEW) m ipchains (2.2-style) support (CONFIG_IP_NF_COMPAT_IPCHAINS) [N/y/m/?] (NEW) ipfwadm (2.0-style) support (CONFIG_IP_NF_COMPAT_IPFWADM) [N/y/m/?] (NEW) The IPX protocol (CONFIG_IPX) [N/y/m/?] Appletalk protocol support (CONFIG_ATALK) [N/y/m/?] DECnet Support (CONFIG_DECNET) [N/y/m/?] 802.1d Ethernet Bridging (CONFIG_BRIDGE) [N/y/m/?] * QoS and/or fair queuering QoS and/or fair queuring (EXPERIMENTAL) (CONFIG_NET_SCHED) [N/y/?] * Telephony Support Linux telephony support (CONFIG_PHONE) [N/y/m/?] * ATA/IDE/MFM/RLL support ATA/IDE/MFM/RLL support (CONFIG_IDE) [Y/m/n/?] m * IDE, ATA and ATAPI Block devices Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [M/n/?] ** Please see Documentation/ide.txt for help/info on IDE drives Use old disk-only driver on primary interface (CONFIG_BLK_DEV_HD_IDE) [N/y/?] Include IDE/ATA-2 DISK support (CONFIG_BLK_DEV_IDEDISK) [M/n/?] Use multi-mode by default (CONFIG_IDEDISK_MULTI_MODE) [N/y/?] Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [M/n/?] Include IDE/ATAPI TAPE support (CONFIG_BLK_DEV_IDETAPE) [N/y/m/?] Include IDE/ATAPI FLOPPY support (CONFIG_BLK_DEV_IDEFLOPPY) [N/y/m/?] SCSI emulation support (CONFIG_BLK_DEV_IDESCSI) [N/y/m/?] * IDE chipset support/bugfixes CMD640 chipset bugfix/support (CONFIG_BLK_DEV_CMD640) [Y/n/?] n RZ1000 chipset bugfix/support (CONFIG_BLK_DEV_RZ1000) [Y/n/?] n Generic PCI IDE chipset support (CONFIG_BLK_DEV_IDEPCI) [Y/n/?] Sharing PCI IDE interrupts support (CONFIG_IDEPCI_SHARE_IRQ) [Y/n/?] Generic PCI bus-master DMA support (CONFIG_BLK_DEV_IDEDMA_PCI) [N/y/?] y Boot off-board chipsets first support (CONFIG_BLK_DEV_OFFBOARD) [N/y/?] Use PCI DMA by default when available (CONFIG_IDEDMA_PCI_AUTO) [N/y/?] y AEC62XX chipset support (CONFIG_BLK_DEV_AEC62XX) [N/y/?] ALI M15x3 chipset support (CONFIG_BLK_DEV_ALI15X3) [N/y/?] AMD Viper support (CONFIG_BLK_DEV_AMD7409) [N/y/?] CMD64X chipset support (CONFIG_BLK_DEV_CMD64X) [N/y/?] CY82C693 chipset support (CONFIG_BLK_DEV_CY82C693) [N/y/?] Cyrix CS5530 MediaGX chipset support (CONFIG_BLK_DEV_CS5530) [N/y/?] HPT34X chipset support (CONFIG_BLK_DEV_HPT34X) [N/y/?] HPT366 chipset support (CONFIG_BLK_DEV_HPT366) [N/y/?] Intel PIIXn chipsets support (CONFIG_BLK_DEV_PIIX) [N/y/?] NS87415 chipset support (EXPERIMENTAL) (CONFIG_BLK_DEV_NS87415) [N/y/?] PROMISE PDC20246/PDC20262/PDC20267 support (CONFIG_BLK_DEV_PDC202XX) [N/y/?] ServerWorks OSB4 chipset support (CONFIG_BLK_DEV_OSB4) [N/y/?] SiS5513 chipset support (CONFIG_BLK_DEV_SIS5513) [N/y/?] SLC90E66 chipset support (CONFIG_BLK_DEV_SLC90E66) [N/y/?] Tekram TRM290 chipset support (EXPERIMENTAL) (CONFIG_BLK_DEV_TRM290) [N/y/?] VIA82CXXX chipset support (CONFIG_BLK_DEV_VIA82CXXX) [N/y/?] Other IDE chipset support (CONFIG_IDE_CHIPSETS) [N/y/?] IGNORE word93 Validation BITS (CONFIG_IDEDMA_IVB) [N/y/?] (NEW) * SCSI support SCSI support (CONFIG_SCSI) [Y/m/n/?] * SCSI support type ( disk, tape, CD-ROM) SCSI disk support (CONFIG_BLK_DEV_SD) [Y/m/n/?] Maximum number of SCSI disks that can be loaded as modules (CONFIG_SD_EXTRA_DEVS) [40] SCSI tape support (CONFIG_CHR_DEV_ST) [N/y/m/?] SCSI OnStream SC-x0 tape support (CONFIG_CHR_DEV_OSST) [N/y/m/?] SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [N/y/m/?] SCSI generic support (CONFIG_CHR_DEV_SG) [N/y/m/?] ** Some SCSI devices ( e.g. CD jukebox) support multiple LUNs Enable extra checks in new queueing code (CONFIG_SCSI_DEBUG_QUEUES) [Y/n/?] n Probe all LUNs on each SCSI device (CONFIG_SCSI_MULTI_LUN) [Y/n/?] n Verbose SCSI error reporting (kernel size +=12K) (CONFIG_SCSI_CONSTANTS) [Y/n/?] n SCSI logging facility (CONFIG_SCSI_LOGGING) [N/y/?] * SCSI low-level drivers 3ware Hardware ATA-RAID support (CONFIG_BLK_DEV_3W_XXXX_RAID) [N/y/m/?] 7000FASST SCSI support (CONFIG_SCSI_7000FASST) [N/y/m/?] ACARD SCSI support (CONFIG_SCSI_ACARD) [N/y/m/?] Adaptec AHA152X/2825 support (CONFIG_SCSI_AHA152X) [N/y/m/?] Adaptec AHA1542 support (CONFIG_SCSI_AHA1542) [N/y/m/?] Adaptec AHA1740 support (CONFIG_SCSI_AHA1740) [N/y/m/?] Adaptec AIC7xxx support (CONFIG_SCSI_AIC7XXX) [N/y/m/?] y Enable Tagged Command Queueing (TCQ) by default (CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT) [N/y/?] (NEW) y Maximum number of TCQ commands per device (CONFIG_AIC7XXX_CMDS_PER_DEVICE) [8] (NEW) Collect statistics to report in /proc (CONFIG_AIC7XXX_PROC_STATS) [N/y/?] (NEW) Delay in seconds after SCSI bus reset (CONFIG_AIC7XXX_RESET_DELAY) [5] (NEW) AdvanSys SCSI support (CONFIG_SCSI_ADVANSYS) [N/y/m/?] Always IN2000 SCSI support (CONFIG_SCSI_IN2000) [N/y/m/?] AM53/79C974 PCI SCSI support (CONFIG_SCSI_AM53C974) [N/y/m/?] AMI MegaRAID support (CONFIG_SCSI_MEGARAID) [N/y/m/?] BusLogic SCSI support (CONFIG_SCSI_BUSLOGIC) [N/y/m/?] Compaq Fibre Channel 64-bit/66Mhz HBA support (CONFIG_SCSI_CPQFCTS) [N/y/m/?] DMX3191D SCSI support (CONFIG_SCSI_DMX3191D) [N/y/m/?] DTC3180/3280 SCSI support (CONFIG_SCSI_DTC3280) [N/y/m/?] EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support (CONFIG_SCSI_EATA) [N/y/m/?] EATA-DMA [Obsolete] (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) support (CONFIG_SCSI_EATA_DMA) [N/y/m/?] EATA-PIO (old DPT PM2001, PM2012A) support (CONFIG_SCSI_EATA_PIO) [N/y/m/?] Future Domain 16xx SCSI/AHA-2920A support (CONFIG_SCSI_FUTURE_DOMAIN) [N/y/m/?] GDT SCSI Disk Array Controller support (CONFIG_SCSI_GDTH) [N/y/m/?] Generic NCR5380/53c400 SCSI support (CONFIG_SCSI_GENERIC_NCR5380) [N/y/m/?] IBM ServeRAID support (CONFIG_SCSI_IPS) [N/y/m/?] Initio 9100U(W) support (CONFIG_SCSI_INITIO) [N/y/m/?] Initio INI-A100U2W support (CONFIG_SCSI_INIA100) [N/y/m/?] NCR53c406a SCSI support (CONFIG_SCSI_NCR53C406A) [N/y/m/?] NCR53c7,8xx SCSI support (CONFIG_SCSI_NCR53C7xx) [N/y/m/?] NCR53C8XX SCSI support (CONFIG_SCSI_NCR53C8XX) [N/y/m/?] SYM53C8XX SCSI support (CONFIG_SCSI_SYM53C8XX) [Y/m/n/?] n PAS16 SCSI support (CONFIG_SCSI_PAS16) [N/y/m/?] PCI2000 support (CONFIG_SCSI_PCI2000) [N/y/m/?] PCI2220i support (CONFIG_SCSI_PCI2220I) [N/y/m/?] PSI240i support (CONFIG_SCSI_PSI240I) [N/y/m/?] Qlogic FAS SCSI support (CONFIG_SCSI_QLOGIC_FAS) [N/y/m/?] Qlogic ISP SCSI support (CONFIG_SCSI_QLOGIC_ISP) [N/y/m/?] Qlogic ISP FC SCSI support (CONFIG_SCSI_QLOGIC_FC) [N/y/m/?] Qlogic QLA 1280 SCSI support (CONFIG_SCSI_QLOGIC_1280) [N/y/m/?] Seagate ST-02 and Future Domain TMC-8xx SCSI support (CONFIG_SCSI_SEAGATE) [N/y/m/?] Simple 53c710 SCSI support (Compaq, NCR machines) (CONFIG_SCSI_SIM710) [N/y/m/?] Symbios 53c416 SCSI support (CONFIG_SCSI_SYM53C416) [N/y/m/?] Tekram DC390(T) and Am53/79C974 SCSI support (CONFIG_SCSI_DC390T) [N/y/m/?] Trantor T128/T128F/T228 SCSI support (CONFIG_SCSI_T128) [N/y/m/?] UltraStor 14F/34F support (CONFIG_SCSI_U14_34F) [N/y/m/?] UltraStor SCSI support (CONFIG_SCSI_ULTRASTOR) [N/y/m/?] * I2O device support *I 2O support (CONFIG_I2O) [N/y/m/?] * Network device support Network device support (CONFIG_NETDEVICES) [Y/n/?] * ARCnet devices ARCnet support (CONFIG_ARCNET) [N/y/m/?] Dummy net driver support (CONFIG_DUMMY) [M/n/y/?] Bonding driver support (CONFIG_BONDING) [N/y/m/?] EQL (serial line load balancing) support (CONFIG_EQUALIZER) [N/y/m/?] Universal TUN/TAP device driver support (CONFIG_TUN) [N/y/m/?] General Instruments Surfboard 1000 (CONFIG_NET_SB1000) [N/y/m/?] * Ethernet ( 10 or 100Mbit) Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?] 3COM cards (CONFIG_NET_VENDOR_3COM) [N/y/?] AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE) [N/y/m/?] Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [N/y/?] Racal-Interlan (Micom) NI cards (CONFIG_NET_VENDOR_RACAL) [N/y/?] DEPCA, DE10x, DE200, DE201, DE202, DE422 support (CONFIG_DEPCA) [N/y/m/?] HP 10/100VG PCLAN (ISA, EISA, PCI) support (CONFIG_HP100) [N/y/m/?] Other ISA cards (CONFIG_NET_ISA) [N/y/?] EISA, VLB, PCI and on board controllers (CONFIG_NET_PCI) [Y/n/?] AMD PCnet32 PCI support (CONFIG_PCNET32) [N/y/m/?] Apricot Xen-II on board Ethernet (CONFIG_APRICOT) [N/y/m/?] CS89x0 support (CONFIG_CS89x0) [N/y/m/?] DECchip Tulip (dc21x4x) PCI support (CONFIG_TULIP) [N/y/m/?] Generic DECchip & DIGITAL EtherWORKS PCI/EISA (CONFIG_DE4X5) [N/y/m/?] Digi Intl. RightSwitch SE-X support (CONFIG_DGRS) [N/y/m/?] EtherExpressPro/100 support (CONFIG_EEPRO100) [Y/m/n/?] National Semiconductor DP83810 series PCI Ethernet support (CONFIG_NATSEMI) [N/y/m/?] PCI NE2000 and clones support (see help) (CONFIG_NE2K_PCI) [N/y/m/?] RealTek RTL-8139 PCI Fast Ethernet Adapter support (CONFIG_8139TOO) [N/y/m/?] SiS 900/7016 PCI Fast Ethernet Adapter support (CONFIG_SIS900) [N/y/m/?] SMC EtherPower II (CONFIG_EPIC100) [N/y/m/?] Sundance Alta support (CONFIG_SUNDANCE) [N/y/m/?] TI ThunderLAN support (CONFIG_TLAN) [N/y/m/?] VIA
Winbond W89c840 Ethernet support (CONFIG_WINBOND_840) [N/y/m/?] Sun Happy Meal 10/100baseT PCI support (CONFIG_HAPPYMEAL) [N/y/m/?] Pocket and portable adapters (CONFIG_NET_POCKET) [N/y/?] * Ethernet ( 1000 Mbit) Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support (CONFIG_ACENIC) [N/y/m/?] Packet Engines Hamachi GNIC-II support (CONFIG_HAMACHI) [N/y/m/?] SysKonnect SK-98xx support (CONFIG_SK98LIN) [N/y/m/?] FDDI driver support (CONFIG_FDDI) [N/y/?] PPP (point-to-point protocol) support (CONFIG_PPP) [N/y/m/?] SLIP (serial line) support (CONFIG_SLIP) [N/y/m/?] * Wireless LAN ( non-hamradio) Wireless LAN (non-hamradio) (CONFIG_NET_RADIO) [N/y/?] * Token Ring devices Token Ring driver support (CONFIG_TR) [N/y/?] Fibre Channel driver support (CONFIG_NET_FC) [N/y/?] * Wan interfaces Wan interfaces support (CONFIG_WAN) [N/y/?] * Amateur Radio support Amateur Radio support (CONFIG_HAMRADIO) [N/y/?] * IrDA ( infrared) support *I rDA subsystem support (CONFIG_IRDA) [N/y/m/?] * ISDN subsystem *I SDN support (CONFIG_ISDN) [N/y/m/?] * Old CD-ROM drivers ( not SCSI, not IDE) Support non-SCSI/IDE/ATAPI CDROM drives (CONFIG_CD_NO_IDESCSI) [N/y/?] * Input core support *I nput core support (CONFIG_INPUT) [N/y/m/?] * Character devices Virtual terminal (CONFIG_VT) [Y/n/?] Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?] Standard/generic (8250/16550 and compatible UARTs) serial support (CONFIG_SERIAL) [Y/m/n/?] Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?] Extended dumb serial driver options (CONFIG_SERIAL_EXTENDED) [N/y/?] Non-standard serial port support (CONFIG_SERIAL_NONSTANDARD) [N/y/?] Unix98 PTY support (CONFIG_UNIX98_PTYS) [Y/n/?] Maximum number of Unix98 PTYs in use (0-2048) (CONFIG_UNIX98_PTY_COUNT) [256] * I2C support *I 2C support (CONFIG_I2C) [N/y/m/?] * Mice Bus Mouse Support (CONFIG_BUSMOUSE) [N/y/m/?] Mouse Support (not serial and bus mice) (CONFIG_MOUSE) [Y/m/n/?] PS/2 mouse (aka 'auxiliary device') support (CONFIG_PSMOUSE) [Y/n/?] C&T 82C710 mouse port support (as on TI Travelmate) (CONFIG_82C710_MOUSE) [N/y/m/?] PC110 digitizer pad support (CONFIG_PC110_PAD) [N/y/m/?] * Joysticks *** Input core support is needed for joysticks QIC-02 tape support (CONFIG_QIC02_TAPE) [N/y/m/?] * Watchdog Cards Watchdog Timer Support (CONFIG_WATCHDOG) [N/y/?] Intel i8x0 Random Number Generator support (CONFIG_INTEL_RNG) [N/y/m/?] /dev/nvram support (CONFIG_NVRAM) [N/y/m/?] Enhanced Real Time Clock Support (CONFIG_RTC) [N/y/m/?] Double Talk PC internal speech card support (CONFIG_DTLK) [N/y/m/?] Siemens R3964 line discipline (CONFIG_R3964) [N/y/m/?] Applicom intelligent fieldbus card support (CONFIG_APPLICOM) [N/y/m/?] * Ftape, the floppy tape device driver Ftape (QIC-80/Travan) support (CONFIG_FTAPE) [N/y/m/?] /dev/agpgart (AGP Support) (CONFIG_AGP) [Y/m/n/?] n Direct Rendering Manager (XFree86 DRI support) (CONFIG_DRM) [Y/n/?] n * Multimedia devices Video For Linux (CONFIG_VIDEO_DEV) [N/y/m/?] * File systems Quota support (CONFIG_QUOTA) [N/y/?] Kernel automounter support (CONFIG_AUTOFS_FS) [N/y/m/?] Kernel automounter version 4 support (also supports v3) (CONFIG_AUTOFS4_FS) [Y/m/n/?] n DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] Compressed ROM file system support (CONFIG_CRAMFS) [N/y/m/?] Simple RAM-based file system support (CONFIG_RAMFS) [N/y/m/?] ISO 9660 CDROM file system support (CONFIG_ISO9660_FS) [Y/m/n/?] m Microsoft Joliet CDROM extensions (CONFIG_JOLIET) [N/y/?] Minix fs support (CONFIG_MINIX_FS) [N/y/m/?] NTFS file system support (read only) (CONFIG_NTFS_FS) [N/y/m/?] OS/2 HPFS file system support (CONFIG_HPFS_FS) [N/y/m/?] /proc file system support (CONFIG_PROC_FS) [Y/n/?] /dev/pts file system for Unix98 PTYs (CONFIG_DEVPTS_FS) [Y/n/?] ROM file system support (CONFIG_ROMFS_FS) [N/y/m/?] Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] System V and Coherent file system support (read only) (CONFIG_SYSV_FS) [N/y/m/?] UDF file system support (read only) (CONFIG_UDF_FS) [N/y/m/?] UFS file system support (read only) (CONFIG_UFS_FS) [N/y/m/?] * Network File Systems Coda file system support (advanced network fs) (CONFIG_CODA_FS) [N/y/m/?] NFS file system support (CONFIG_NFS_FS) [Y/m/n/?] n NFS server support (CONFIG_NFSD) [Y/m/n/?] n SMB
file system support (to NCP
file system support (to * Partition Types Advanced partition selection (CONFIG_PARTITION_ADVANCED) [N/y/?] * Console drivers VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] Video mode selection support (CONFIG_VIDEO_SELECT) [N/y/?] * Sound Sound card support (CONFIG_SOUND) [Y/m/n/?] n (Security options will appear only if you are patched your kernel with the Openwall Project patch). * Security options Non-executable user stack area (CONFIG_SECURE_STACK) [Y] Autodetect and emulate GCC trampolines (CONFIG_SECURE_STACK_SMART) [Y] Restricted links in /tmp (CONFIG_SECURE_LINK) [Y] n Restricted FIFOs in /tmp (CONFIG_SECURE_FIFO) [Y] Restricted /proc (CONFIG_SECURE_PROC) [N] y Special handling of fd 0, 1, and 2 (CONFIG_SECURE_FD_0_1_2) [Y] Enforce RLIMIT_NPROC on execve(2) (CONFIG_SECURE_RLIMIT_NPROC) [Y] Destroy shared memory segments not in use (CONFIG_SECURE_SHM) [N] ** USB support Support for USB (CONFIG_USB) [Y/m/n/?] n * Kernel hacking Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] *** End of Linux kernel configuration. *** Check the top-level Makefile for additional configuration. *** Next, you must run 'make dep'. |
Nota Incepand de la versiunea de Kernel 2.4.x sectiunea de "IP: Netfilter Configuration" optiunile legate de masquerading si forwarding are suport direct in Kernel. Acum depinde de dumneavoastra daca doriti sa fie configurata ca parte din Kernel sau va fi incarcata ca module ulterior. |
Compilarea Kernelului
Pentru compilarea Kernelului vom folosi urmatoarele comenzi:
[root@ro-host linux]# make dep; make clean; make bzImage |
make dep va incarca configuratia si va construi arborele de interdependenta dintre sursele kernelului, deoarece e posibil ca legaturile dintre acestea sa fi fost afectate de optiunile pe care le-ati facut la pasul anterior.
make clean elimina orice fisier ramas din compilarile anterioare ale kernelului, fisiere care acum sunt inutile
make bzImage incepe compilarea propriu-zisa a kernelului.
Dupa acest proces a fost incheiat cu succes, kernelul gata compresat este gata sa fie instalat in sistemul dumneavoastra. Inainte de aceasta este bine de stiut ca aveti nevoie sa compilati si modulele corespunzatoare, asta DOAR in cazul in care ati raspuns cu yes la "Enable loadable module support (CONFIG_MODULES)". In acest caz trebuiesc executate urmatoarele comenzi:
[root@ro-host linux]# make modules; make modules_install |
Instalarea Kernelului
Odata ce kernelul a fost configurat, compilat acum el este gata de instalare pe serverul dumneavoastra. Mai jos sunt descrisi pasi care trebuiesc urmati pentru aceasta operatie.
Pasul 1
Copiati fisierul /usr/src/linux/arch/i386/boot/bzImage din directorul sursa al kernelului in directorul /boot si ii schimbati denumirea.
[root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# cp /arch/i386/boot/bzImage /boot/vmlinuz-2.4.5 |
Pasul 2
Copiati fisierul /usr/src/linux/System.map din directorul sursa al noului kernel in directorul /boot.
[root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# cp System.map /boot/System.map-2.4.5 |
Pasul 3
In aceasta etapa trebuiesc reconstruite link-urile simbolice catre vmlinuz si System.map
[root@ro-host /]# cd /boot [root@ro-host boot]#ln -fs vmlinuz-2.4.5 vmlinuz [root@ro-host boot]#ln -fs System.map-2.4.5 System.map |
In acest punct administratorul de retea mai trebuie sa reconstruiasca linkurile catre vmlinuz si System.map sa point-eze catre noua versiune de kernel instalata. Fara noile link-uri programul de boot-are LILO va ramane blocat, incercand sa incarce veche versiune de kernel.
Pasul 4
Pentru a pastra o instalare curata vom sterge fisierel inutile din directorul /boot.
[root@ro-host boot]#rm -f module.info [root@ro-host boot]#rm -f initrd-2.4.x.img |
Pasul 5
Ca instalarea sa fie completa si curata in sensul ca pe viitor sa stiiti exact ce versiune de kernel este instalata si unde gasiti toate fisierele utilizate de actualul kernel se recomanda creerea unui nou director in care sa fie mutate toate aceste fisiere si directoare.
[root@ro-host /]# mkdir -p /usr/src/linux-2.4.5/include [root@ro-host /]# cd /usr/src/linux/ [root@ro-host linux]# cp -r include/asm-generic ../linux-2.4.5/include/ [root@ro-host linux]# cp -r include/asm-i386 ../linux-2.4.5/include/ [root@ro-host linux]# cp -r include/linux ../linux-2.4.5/include/ [root@ro-host linux]# cd ../ [root@ro-host src]# rm -rf /usr/src/linux [root@ro-host src]# cd /usr/src/ [root@ro-host src]# ln -s /usr/src/linux-2.4.5 linux |
Pasul 6
Ultima etapa este modificare fisierului /etc/lilo.conf pentru a configura sistemul sa porneasca la restart cu noua versiune de kernel.
[root@deep /]# vi /etc/lilo.conf boot=/dev/sda map=/boot/map install=/boot/boot.b timeout=00 default=linux restricted password=somepasswd image=/boot/vmlinuz label=linux read-only root=/dev/sda6 |
Monitorizarea & Verificarea integritatii sistemului folosind utilitarele
sXid
Logcheck
PortSentry
Tripwire
Xinetd
Acest capitol se va ocupa de a detaila modul de instalare si administrare a diverselor instrumente de securitate pe care un administrator de sistem trebuie sa le foloseasca in mod expres. Ele sunt foarte importante in munca de prevenire si de verificare a posibilelor atacuri, gauri de securitate, etc si in asiguraea retelei. Aceste instrumente sunt destinate automatizarii anumitor task-uri si securizarii serverelor pe care le administram.
Recomand puternic ca aceste instrumente sa nu lipseasca de pe serverele de retea, cu exceptia unuia singur si anume Xinetd, care este optional in functie de serviciile care ruleaza pe serverele pe care le administrati. El nu trebuie sa lipseasca de pe acestea in cazul in care aveti configurat un server de IMAP & POP.
sXid
Este un program de monitorizare automatizat (va rula sub cron) care urmareste orice modificare asupra fisierelor SUID/SGID. Instiintarile se vor primi intr-un format usor de interpretat pe email sau in linie de comanda, dupa cum se prefera. sXid va rula automat, iar odata instalat pe server administratorul va uita de el, iar programul isi va face treaba pentru el.
Premizele instalarii
Comenzile sunt compatibile pe orice sistem Unix.
Calea catre surse folosita in acest curs este /var/tmp (oricare alta cale poate fi folosita, ca o masura de "discretie" pentru distributia utilizata de dumneavoastra).
Instalarea a fost testata pe un sistem Red Hat 9.0.
Toate etapele configurarii au fost facute folosind un cont de super-user "root".
Nu este necesara recompilarea kernelului.
Ultima versiune sXid este 4.0.1
Pachete
Cursul de fata, foloseste instructiuni de instalare si informatii legate de sXid actualizate la data de 20/12/2004. Va rog verificati ultimele modificari, accesand site-ul ftp://marcus.seva.net/pub/sxid .
Codul sursa este disponibil la adresa:
sXid Homepage: ftp://marcus.seva.net/pub/sxid
sXid FTP Site: 137.155.111.51
Ultima versiune disponibila: xsid_4.0.1.tar.gz
Pregatirea instalarii
Daca pentru instalare se vor folosi RPM, va fi dificil pentru administratorul serverului sa gaseasca toate fisierele instalate in eventualitatea unui update in viitor. Pentru rezolvarea acestei probleme, este o buna idee sa facem o lista cu fisierele din sistem inainte de a instala programul, si una dupa, iar apoi sa comparam cele doua liste folosind utilitarul diff pentru a afla care fisiere au fost inlocuite prin acest update.
[root@ro-host /root]# find /* > sXid1 |
[root@ro-host /root]# find /* > sXid2 |
[root@ro-host /root]# diff sXid1 sXid2 > sXid-Installed |
Cu aceasta procedura, daca este necesar realizarea unui update, tot ce trebuie facut este sa cititi lista fisierelor care au fost adaugate sau schimbate de program si sterse manual din sistem inainte de instalarea unei versiuni noi de software. In exemplul dat mai sus, am folosit directorul /root ca director in care vor fi generate listele de fisiere.
Compilarea - Optimizarea & Instalarea sXid
Daca au fost parcurse cu succes toate etapele anterioare putem sa incepem configurarea, compilarea si optimizarea software-ului sXid. Toate acestea se vor face de pe un cont de root pentru a evita orice problema legata de drepturi.
Pasul 1
Odata ce programul a fost descarcat in sistem, el trebuie copiat in directorul /var/tmp si apoi dezarhivat (optiunea de /var/tmp este pur personala si este legata de o instalare cat mai curata).
pentru realizarea acestora folosim urmatoarele comenzi:
[root@ro-host /]# cp sxid_version.tar.gz /var/tmp [root@ro-host /]# cd /var/tmp [root@ro-host /tmp]# tar xzpf sxid-version.tar.gz |
Pasul 2
Dupa aceasta ne mutam in directorul sXid nou creat unde vom face partea de configurare
si de optimizare.
[root@ro-host /tmp]# cd sxid-4.0.1/ |
CFLAGS="-O3 -march=i686 -mcpu=i686 -funroll-loops -fomit-frame-pointer" ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man |
Nota O atentie speciala trebuie acordata optiunilor care se adauga la compilare. Eu am optimizat sXid pentru o arhitectura a procesorului i686 folosind parametri "-march=i686" si "-mcpu=i686". Nu uitati sa modificati aceasta linie care incepe cu CFLAGS in conformitate cu sistemul pe care-l folositi. |
Pasul 3
Acum vom face o lista cu fisiere din sistem inainte de a instala programul si una dupa instalare, apoi vom compara aceste liste folosind utilitarul diff.
[root@ro-host sXid-4.0.1]# cd [root@ro-host /root]# find /* > sXid1 [root@ro-host /root]# cd /var/tmp/sxid-4.0.1/ [root@ro-host sxid-4.0.1]# make install [root@ro-host sxid-4.0.1]# cd [root@ro-host /root]# find /* > sXid2 [root@ro-host /root]# diff sXid1 sXid2 > sXid-Installed |
Aceste etape de configurare sunt necesare pentru a ne asiguara ca sistemul pe care se face instalarea are toate librariile necesare compilarii acestui program.
Pasul 4
Odata compilat, optimizat si instalat acest software este momentul sa staregem din sistem arhivele folosite precum si directoarele sursa pentru mentinerea serverului intr-o stare cat mai "curata".
[root@ro-host /]# cd /var/tmp [root@ro-host /tmp]# rm -rf sxid-version/ [root@ro-host /tmp]# rm -rf sxid_version_tar.gz |
Configurarea programului sXid
Dupa ce instalarea a fost facuta cu succes este momentul sa verificam sau sa modificam, daca este necesar, diverse optiuni in fisierele de configurare ale sXid. Aceste fisiere de configurare sunt:
/etc/sxid.conf (fisierul de configurare pentru sXid)
/etc/cron.daily (fisierul de automatizare din cron pentru sXid)
/etc/sxid.conf: Fisierul de configurare pentru sXid
In acest fisier de configurare, administratorul de sistem poate configura o seama de optiuni legate de acest program. El este foarte bine documentat si foarte intuitiv. In principiu singurele modificare care trebuiesc aduse ar fi cele legate de calea relativa ale utilitarelor din sistemul folosit de dumneavoastra.
Pasul 1
Se editeaza fisierul sxid.conf (vi /etc/sxid.conf) in care se fac modificarile dorite. Liniile bold-uite sunt singurele linii din acets fisier pe care le-am schimbat:
# Configuration file for sXid # Note that all directories must be absolute with no trailing /'s # Where to begin our file search SEARCH = '/' # Which subdirectories to exclude from searching EXCLUDE = '/proc /mnt /cdrom /floppy' # Who to send reports to EMAIL = 'adritzu@ro-host.ro' # Always send reports, even when there are no changes? ALWAYS_NOTIFY = 'no' # Where to keep interim logs. This will rotate 'x' number of # times based on KEEP_LOGS below LOG_FILE = '/var/log/sxid.log' # How many logs to keep KEEP_LOGS = '5' # Rotate the logs even when there are no changes? ALWAYS_ROTATE = 'no' # Directories where +s is forbidden (these are searched # even if not explicitly in SEARCH), EXCLUDE rules apply FORBIDDEN = '/home /tmp' # Remove (-s) files found in forbidden directories? ENFORCE = 'yes' # This implies ALWAYS_NOTIFY. It will send a full list of # entries along with the changes LISTALL = 'no' # Ignore entries for directories in these paths # (this means that only files will be recorded, you # can effectively ignore all directory entries by # setting this to '/'). The default is /home since # some systems have /home g+s. IGNORE_DIRS = '/home' # File that contains a list of (each on it's own line) # of other files that sxid should monitor. This is useful # for files that aren't +s, but relate to system # integrity (tcpd, inetd, apache). # EXTRA_LIST = '/etc/sxid.list' # Mail program. This changes the default compiled in # mailer for reports. You only need this if you have changed # it's location and don't want to recompile sxid. MAIL_PROG = '/bin/mail' |
Pasul 2
Din motive de sercuritate, permisiile asupra acestui fisier vor fi schimbate. Ele vor deveni 0400.
[root@ro-host /]# chmod 400 /etc/sxid.conf |
/etc/cron.daily/sxid: Fisierul Cron pentru utilitarul sXid
Acest mic script va fi executat automat de catre crond pe serverul dumneavoastra, in fiecare zi, si va instiinta administratorul de orice modificare efectuata asupra fisierleor si directoarelor din sistem.
Pasul 1
Se creaza un script sxid (touch /etc/cron.daily/sxid) care sa contina urmatoarele linii:
#!/bin/sh SXID_OPTS= if [ -x /usr/bin/sxid ]; then /usr/bin/sxid $ fi |
Pasul 2
Acum, ca acest script sa poata fi rulat automat el trebuie facut si executabil, prin schimbarea permisiilor in 0700
[root@ro-host /]# chmod 700 /etc/cron.daily/sxid |
Folosirea utilitarului sXid
Dupa ce instalarea si configurarea au fost facute corect este momentul sa vedem cum funtioneaza acest tool. sXid-ul va fi rulat zilnic de catre cron (sau dupa preferinte se poate configura in cron sa se execute de doua ori pe zi) dar el poate fi lansat si manual.
[root@ro-host /]# sxid -k sXid Vers : 4.0.1 Check run : Wed Ian 5 15:42:20 2005 This host : adritzu.ro-host.ro Spotcheck : /root Excluding : /proc /mnt /cdrom /floppy Ignore Dirs: /home Forbidden : /home /tmp (enforcing removal of s[ug]id bits in forbidden paths) No changes found |
Asa cum se observe la aceasta verificare nu au fost facute nici un fel de modificari si nu a fost trimis nici un email de instiintare.
Pentru urmatoarele utilitare nu voi mai detaila asa amanuntit procesul de instalare si configurare pentru ca este absolut asemanator cu cel descris anterior, ci voi adauga doar modificarile individuale care trebuiesc facute.
Logcheck
Utilitarul Logcheck automatizeaza procesul de auditare si de analiza a logurilor din sistem si alerteaza administratorul de sistem in cazul unor brese de securitate sau de activitati nestandard.
PortSentry
Scanarea de porturi este cea mai intalmita si raspindita metoda de a obtine informatiile necesare pentru un atact viitor asupra unui server. PortSentry este un program creat pentru a detecta si a raspunde unor astfel de practici, in timp real, cu o multitudine de optiuni atunci cand serverul administrat de catre dumneavoastra este scanat. El poate reactiuna intr-un din urmatoarele moduri:
sa logheze via syslog acest incident
serverul este astfel automat reconfigurat incat sa dropp-uiasca toate pachetele primite de la sursa scanarii folosind un filtru dinamic
serverul este astfel automat reconfigurat incat tot traficul care ii este destinat de la sursa scanarii sa fie redirectat catre o "gaura neagra"
Tripwire
Tripwire este un utilitar care ajuta administratorul de sistem in urmarirea integritatii sistemului de fisiere si a oricaror modificare care survin asupra lor. Este oarecum asemanator sXid-ului.
Xinetd
Xinetd este unul dintre cele mai puternice tool-uri de securitate, el poate controla si preveni un atac denial-of-access, punand la dispozitia administratorului de sistem un mecanism de control al accesului pentru toate serviciile care necesita o conexiune a unui client distant la serverul dumneavoastra.
In partea practica a acestui curs toate aceste utilitare vor fi instalate si configurate fiecare in parte.
Instalarea si configurarea unui server de mail
Acest capitol va explica in detaliu modul de instalare si configurare a unui server de mail pentru o retea de institutie. Softul folosit va fi Sendmail, la ora actula fiind cel mai raspandit MTA (Mail Transfer Agent) din lume. Rolul unui MTA nu este altul decat de a trimite mailuri de la un computer la altul. Sendmail nu este un client de mail, destinat citiri mesajelor.
Instalare Sendmail
Pentru distributiile de RedHat si Fedora, pachetele necesare rularii in conditii normale a serverului de Sendmail sunt sendmail, sendmail-cf si m4. Cand cautati pachetele, conteaza mai putin numarul versiunii, ci mult mai importanta este denumirea pachetului.
Pornirea serverului de Sendmail
Dupa ce ati instlat pachetele de mai sus si au fost satisfacute toate dependintele, vom avea grija sa configuram serviciul de Sendmail sa porneasca la boot-area sistemului.
[root@ro-host /]# chkconfig sendmail on |
pentru oprirea si pornirea serverului de Sendmail se folosesc comenzile:
[root@ro-host /]# /etc/init.d/sendmail stop [root@ro-host /]# /etc/init.d/sendmail start |
Nu uitati ca dupa orice modificare de configuratie pe care ati facuto asupra serverului serviciul de Sendmail trebuie restartat:
[root@ro-host /]# /etc/init.d/sendmail restart |
Fisierele importante si care trebuie modificate pentru optimizare serverului de Sendmail sunt :
/etc/mail/sendmail.mc
/etc/mail/sendmail.cf
/etc/mail/access
/etc/mail/relay-domains
/etc/mail/aliases
/etc/mail/virtualtable
/etc/mail/domanitable
/etc/mail/mailertable
/etc/mail/local-host-names
/etc/mail/sysconfig/sendmail
/etc/rc.d/init.d/sendmail
Fisierul /etc/mail/sendmail.mc
Majoritatea parametrilor de configurare pentru Sendmail se gasesc in acest fisier, cu exceptia celor care se refera la listele de mail si la optiunile de securitate legate de relay. Acest fisier este constuit pe baza de directive, care daca administratorul de sistem care configureaza serverul de mail considera ca nu sunt necesare, le poate comenta. Trebuie facuta o singura remarca, comentarea unui linii din acest fisier nu se face folosind ca de obicei "#" ci "dnl".
dnl DAEMON_OPTIONS('Port=smtp,Adr=127.0.0.1,Name=MTA') |
Configurarea Clientilor de Sendmail
Toate statiile din retea, clienti de mail, trebuie sa stie care este serverul de mail din domeniul pe care-l gestionati. Acest lucru se poate face foarte simplu si din fisierul de configurare, astfel:
define ('SMART_HOST', 'mail.ro-host.ro') |
Nu trebuie uitat ca dupa generarea fisierul de configurare serverul de mail trebuie restartat.
Un pas foarte important, in configurarea serverului de mail, este modificarea linie care va determina ca serverul de mail sa asculte pe toate interfetele si nu doar pe interfata de loopback (127.0.0.1). Aceasta se face comentat linia corespunzatoare din fisierul de configurare:
dnl This changes sendmail to only listen on the loopback device 127.0.0.1 dnl and not on any other network devices. Comment this out if you want dnl to accept email over the network. dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires dnl a kernel patch dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6') dnl We strongly recommend to comment this one out if you want to protect dnl yourself from spam. However, the laptop and users on computers that do dnl not have 24x7 DNS do need this. dnl FEATURE(`accept_unresolvable_domains')dnl dnl FEATURE(`relay_based_on_MX')dnl |
am comentat si linia care contine accept_unresolvable_name pentru a nu accepta emailuri trimise de hosturi care nu sunt listate inregistrarile serverului de DNS. Deasemeni trebuie comentata si optiunea de SMART_HOST:
dnl define ('SMART_HOST', 'mail.ro-host.ro') |
dupa generarea fisierului de configurare trebuie verificat ca serverul de Sendmail a inceput sa asculte pe toate interfetele serverului:
[root@ro-host /]# netstat -an | grep :25 | grep tcp tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN [root@ro-host /]# |
Fisierul: /etc/mail/access
Acest fisier este foarte important in sensul ca doar hosturile ale caror adrese IP sunt listate in acest fisier pot folosi functia de relay a acestui server. Fisierul are doua coloane, in prima vor fi listate adresele IP si domeniile, iar in cea dea doua decizia pe care o va lua serverul cu referire la cele din prima coloana. Aceasta actiune poate fii una dintre REALY, REJECT, OK sau DISCARD.
localhost.localdomain RELAY localhost RELAY 127.0.0.1 RELAY 192.168.1.16 RELAY 192.168.1.17 RELAY 192.168.2 RELAY ro-host.ro RELAY |
dupa modificare acestui fisier, textul trebuie convertit in baza de date. Aceasta se face folosind comenzile:
[root@ro-host tmp]# cd /etc/mail [root@ro-host mail]# make |
Fisierul /etc/mail/local-host-names
Cand sendmail primeste un mail, acesta trebuie sa stie pentru ce domenii face acest serviciu de receptie a mailurilor. In acest fisier sunt listate domeniile si numele de hosturi pentru care sendmailul instalat pe acest server lucreaza.
Filtrarea de SPAMM
Filtrarea spamm-ului poate fi facuta si folosind directive din fisierul de configurare al serverului de mail:
FEATURE(`dnsbl', `bl.spamcop.net', `'450 Mail from ' $`'& ' refused - see https://spamcop.net/bl.shtml'') |
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1989
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved