ALTE DOCUMENTE
|
||||||
Securizarea sistemului
Orice masina conectata în permanenta la Internet este vizibila atât utilizatorilor care pot accesa resursele publice ale sistemului, cât si persoanelor rau-voitoare care pot încerca sa întreprinda actiuni nedorite, asa-numitii crackeri. Acest capitol prezinta atât tipurile de atacuri care pot fi îndreptate împotriva masinilor Linux, precum si metodele de prevenire a acestora. Subiectul fiind extrem de vast, acest capitol trebuie considerat ca un îndrumar continând idei generale, urmând a fi dezvoltat într-o lucrare viitoare.
1.1. Atacuri
Exista numeroase tipuri de atacuri care pot fi efectuate asupra sistemului. Acestea pot proveni de la distanta sau chiar de pe propria masina. Atacurile pot fi:
atacuri de tip DOS (Denial Of Service), care
degradeaza sau dezafecteaza
anumite servicii ale sistemului;
atacuri în vederea obtinerii de privilegii asupra sistemului;
atacuri în vederea copierii sau distrugerii de informatii.
în cele ce urmeaza vom prezenta modalitatile principale de atac si solutii de prevenire si stopare a acestora.
Bomba e-mail
Un asemenea atac consta în trimiterea repetata a unui mesaj, eventual de dimensiune mare. Aceasta duce la enervarea destinatarului si la umplerea spatiului disponibil pe disc, precum si la încetinirea traficului prin retea.
Poate fi stopat prin introducerea în fisierul /etc/mail/access din cadrul sendmail a unei directive de refuzare a mesajelor provenite de pe masina respectiva. Aceasta solutie nu rezolva însa problema traficului prin retea.
Spam
Acesta nu este propriu-zis un atac, ci o modalitate de a trimite mesaje nesolicitate, în general continând reclame, foarte raspândita în ultima vreme, în general, adresa expeditorului este falsa (pentru a nu fi descoperit), astfel ca acest tip de atac poate fi prevenit dezactivând optiunea accept_unresolvable_domains în fisierul
/etc/mail/sendmail.mc.
Administrarea si configurarea sistemelor Linux
Daca adresa expeditorului este corecta, se poate încerca contactarea administratorului masinii de pe care a fost trimis mesajul sau introducerea unei directive de refuzare a mesajelor provenite de pe respectiva masina (în
/etc/mail/access).
înscrierea pe liste de discutii
Reprezinta înscrierea unei adrese e-mail pe una sau mai multe liste de discutii fara ca persoana careia îi apartine adresa sa fi cerut explicit acest lucru. Nu exista solutii rapide pentru stoparea acestor atacuri, ci doar trimiterea de cereri de dezabonare.
Programe de tip "cal troian"
Acestea sunt programe rau intentionate, care se "deghizeaza" sub forma unor executabile obisnuite, în prezent, cea mai cunoscuta forma a acestui gen de programe o constituie aplicatiile denumite black \vido\v ("vaduva neagra"), care sunt folosite pe WWW si care pot bloca sau deteriora browserele Web. De asemenea, profitând de bug-urile prezente în aceste browsere, aceste programe pot eventual sa copieze sau sa deterioreze informatii de pe calculatorul-client.
De asemenea, un alt tip de "cal troian" "la moda" este scriptul CGI prost proiectat, de multe ori intentionat. Astfel, scripturile CGI nu trebuie sa poata accesa informatii confidentiale de pe masina pe care ruleaza, administratorul trebuind sa verifice aceste scripturi.
Atacuri SYN flood
Reprezinta trimiterea unui volum foarte mare de cereri de conexiune catre o masina, ducând la supraîncarcarea traficului si imposibilitatea de a raspunde la alte cereri. Este cauzat de crearea unui numar mare de conexiuni deschise doar pe jumatate. Deoarece fiecare conexiune deschisa trebuie prelucrata pâna în starea sa finala (în acest caz, depasirea timpului maxim admis, timeout), sistemul va fi temporar blocat.
Poate fi prevenit compilând nucleul cu urmatoarea optiune activata:
| IP: TCP syncookie support (disabled per default)
Buffer overflow
Datorita unor erori de programare, se poate ca anumite programe sa aloce un spatiu predefinit de memorie pentru stocarea unor informatii. Atunci când apare o depasire a acestui spatiu de memorie, informatiile ce depasesc zona sunt stocate la o alta adresa. Prin manevrarea adreselor la care ajung, aceste date suplimentare pot produce executarea unor comenzi sub utilizatorul root.
Securizarea sistemului Linux
Acest tip de atac nu poate veni însa din afara masinii, ci din interiorul ei. Nu poate fi prevenit. Pe masura ce asemenea erori sunt descoperite, sunt generate actualizari ale programelor.
Scanarea retelei
Atacul consta în monitorizarea informatiilor care circula printr-o interfata de retea (e.g. cu tcpdump), pentru a detecta eventualele parole transmise necriptat prin retea. Conectarea prin serviciul telnet, spre exemplu, este nesigura, deoarece parolele nu sunt criptate, putând fi determinate cu usurinta chiar si de pe alta masina, legata în aceeasi retea.
1.2. Sfaturi privind securizarea sistemului
Idei generale
Siguranta fizica a sistemului
Prima regula pentru asigurarea securitatii sistemului o constituie instalarea masinii într-un loc sigur, unde sa nu fie expusa contactului cu persoane neautorizate. Acestea nu trebuie sa aiba posibilitatea sau timpul necesar pentru a înlatura carcasa, a modifica configuratia hardware, a opri si apoi reporni masina (eventual în mod single), a înlocui sau copia informatiile de pe discuri sau inocula programe rauvoitoare ("cai troieni"), în orice caz, administratorul nu trebuie sa uite sesiuni (terminale) deschise.
De asemenea, mediile de stocare a salvarilor de siguranta trebuie sa fie si ele stocate într-un loc închis, fara posibilitate de acces (e.g. un seif).
Sistemul poate fi protejat împotriva atacurilor de la consola (cum ar fi repornirea sistemului în mod single) prin stabilirea unei parole de pornire în cadrul încarcatorului de boot.
Salvarile de siguranta
Dupa cum mentionam si în partea II, cap. 11, se recomanda salvarea periodica cel putin a fisierelor importante si, daca este posibil, a întregului continut al sistemelor de fisiere:
fisierele de configurare ale sistemului;
imaginea nucleului Linux, precum si fisierul de configurare a acestuia
(.config);
fisierele-jurnal ale sistemului (directorul /var/iog, precum si
altele, daca
este cazul);
mesajele utilizatorilor (/var/spool/maii);
Administrarea si configurarea sistemelor Linux
bazele de date (/var/lib/pgsql, /var/lib/mysql CtC.);
directoarele home ale utilizatorilor.
Drepturile de acces ale fisierelor importante
Trebuie acordata o atentie sporita drepturilor de acces la fisierele importante:
fisiere de
configurare ale diverselor servicii instalate în sistem. Astfel,
eventualele persoane rauvoitoare nu vor putea
vizualiza sau modifica
configuratia acestor servicii (cum ar fi, de
exemplu, configurarile fire-
wo//-ului). A se consulta Anexa 2 pentru drepturile de acces sigure ale
acestor fisiere;
fisiere-jurnal (/og-uri). Utilizatorii
cu gânduri "necurate" nu trebuie sa poata
consulta ftsierele-jurnal ale
sistemului, cu atât mai mult a le modifica. Din
aceste fisiere pot fi
determinate partile slabe ale unor servicii, putându-se
apoi profita de acestea;
executabile care nu
trebuie sa poata fi apelate de catre utilizatorii
obisnuiti,
precum si alte fisiere importante (spre
exemplu, baze de date PostgreSQL,
MySQL etc.).
O atentie deosebita trebuie acordata executabilelor cu atributul SUID (care au alt proprietar/grup decât cele ale utilizatorului care le apeleaza).
Executia daemonilor
Se recomanda ca numai daemonii utilizati curent sa ruleze pe sistem. Mai multi daemoni înseamna o încarcare mai mare a sistemului, precum si un nivel de vulnerabilitate mai mare.
De asemenea, mare parte a daemonilor (care ofera diverse servicii) nu trebuie executati sub root, ci sub utilizatori speciali (de exemplu, daemonul HTTP ruleaza sub utilizatorul apache).
Scripturile CGI
Scripturile CGI nu trebuie executate ca root. Acestea trebuie plasate într-un singur director, în care nu se va permite accesul utilizatorilor, iar modificarile asupra scripturilor trebuie monitorizate.
Porturile
Anumite servicii pot fi accesate prin retea, de pe alte masini. Pentru aceasta, ele asteapta conexiuni pe anumite porturi (e.g. serverul HTTP pe portul 80). De asemenea, exista intefete grafice pentru configurare care primesc cereri pe un anumit port (e.g. samba-swat pe portul 901). Aceste porturi pot constitui puncte vulnerabile ale sistemului (datorita bug-urilor care pot exista în aceste programe), putând fi detectate de la distanta cu ajutorul scanerelor.
Securizarea sistemului Linux
Aceste porturi trebuie protejate fie prin configurarea respectivelor servicii sa accepte conexiuni doar de pe o anumita interfata de retea, considerata sigura (e.g. reteaua locala), fie prin configurarea unuifirewall care sa nu permita accesarea din exterior a porturilor în cauza.
Accesul utilizatorului root în sistem
Accesul utilizatorului root în sistem este permis numai de pe consolele specificate în fisierul /etc/securetty. Nu se recomanda permiterea accesului cu root decât de pe consolele sistemului (tty*). Accesul de la distanta (cu telnet sau ssh) poate fi facut cu un utilizator obisnuit, iar apoi folosita comanda su.
Siguranta parolelor
în primul rând, este recomandata utilizarea sistemului shadow si criptarea parolelor prin MD5. De asemenea, fisierele /etc/shadow si /etc/gshadow nu trebuie sa poata fi accesate de catre utilizatori, trebuind sa aiba urmatoarele drepturi de acces:
/etc/passwd | |
/etc/group |
|
/etc/shadow . | |
/etc/gshadow |
în al doilea rând, o cerinta importanta pentru pastrarea securitatii sistemului este ca toti utilizatorii sa aiba parola. Este obligatorie, de asemenea, stabilirea unei parole initiale pentru utilizator, care de preferinta va trebui sa fie schimbata de catre acesta la prima intrare în sistem.
în al treilea rând, pot fi modificate regulile pentru stabilirea parolelor (lungimea, complexitatea minima, timpul de expirare) prin intermediul PAM. Acestea trebuie sa fie cât mai stricte, iar utilizatorii trebuie obligati sa si le schimbe periodic. Verificarea dupa dictionar (/usr/share/dict) a parolelor este de asemenea importanta, pentru ca probabilitatea de a fi determinate cu un spargator de parole sa fie cât mai mica. Se recomanda folosirea periodica a unui spargator de parole pentru a verifica siguranta acestora. A se consulta si lista de reguli de stabilire a parolelor din partea II, cap. 6, care trebuie comunicate utilizatorilor de catre administratorul sistemului.
Utilizatorii
Lista utilizatorilor din sistem (/etc/passwd) trebuie verificata periodic, iar conturile neutilizate sterse. De asemenea, trebuie gestionati cu atentie utilizatorii speciali, cum ar fi cei pentru acces PPP. si parolele acestora trebuie sa urmeze regulile enumerate mai sus si nu trebuie sa aiba interpretor de comenzi.
Administrarea si configurarea sistemelor Linux
Accesul de la distanta
Chiar daca telnet se dovedeste a fi o metoda relativ sigura de accesare de la distanta a masinii, se recomanda utilizarea serviciului SSH, care foloseste un sistem sigur, bazat pe chei de criptare. Aceasta previne scanarea retelei (telnet trimite informatiile în clar prin retea, inclusiv parola utilizatorului) si interceptarea sesiunii telnet.
De asemenea, pentru transferul de fisiere între masini este bine sa se utilizeze tot SSH, în speta programul sftp, în loc de FTP, din aceleasi motive enumerate mai sus.
Trebuie evitata utilizarea sistemelor de acces privilegiate, daca aceasta este posibil:
acces privilegiat la
nivel de masina - permite acordarea de încredere
anumitor masini, de pe care utilizatorii se pot
conecta fara ca parola sa fie
solicitata, si se realizeaza prin
intermediul fisierului /etc/hosts.equiv. Nu
este indicata folosirea acestui mod de acces
datorita riscurilor la care masina
este expusa. De asemenea, acest fisier nu
trebuie sa contina în nici un caz o
linie continând doar caracterul "+", acesta acordând accesul privilegiat
oricarui calculator;
acces privilegiat la
nivel de utilizator - permite acordarea de încredere
anumitor utilizatori, conectati de pe anumite
masini, si se realizeaza prin
intermediul fisierului .rhosts, plasat în directorul home a
utilizatorului.
Accesul privilegiat nu trebuie utilizat niciodata
pentru root, pentru care
trebuie întotdeauna solicitata o parola, în
directorul utilizatorului root nu
trebuie sa existe fisierul .rhosts! Nu este
indicata nici utilizarea acestui
mod de acces privilegiat, fiindca expune sistemul la
riscuri suplimentare.
Administratorul va trebui sa monitorizeze periodic existenta
acestui fisier în
directoarele utilizatorilor.
Firewall-uri
\Jnfire\vall este un sistem de filtrare a pachetelor de date care intra în / ies din calculator.
Masinile legate direct la Internet trebuie sa aiba configurat un firewall pentru a bloca accesul din exterior la serviciile care se doresc a fi protejate, acolo unde se poate. Trebuie avut în vedere însa faptul ca nu exista firewall perfect, precum si faptul ca un firewall nu previne atacurile din interiorul retelei sau de pe sistemul local. Modul de configurare a unui firewall este prezentat în capitolul urmator.
Scanerele
Recomandam folosirea periodica a unui program de scanare, pentru a depista eventualele puncte slabe ale securitatii sistemului. Un scaner este un program care "ataca" porturile si serviciile TCP/IP si înregistreaza raspunsul venit de la tinta.
Securizarea sistemului Linux
Daca s-a configurat unfîrewall, scanarea trebuie, evident, efectuata de pe o masina din afara retelei locale.
Scanerele care pot fi folosite sunt nmap (existent în distributia Red Hat), NSS (Network Security Scanner) sau SATAN. Vezi Anexa 4 pentru a afla locatiile de unde pot fi obtinute aceste programe.
Bug-uri în programe
Programele pot contine bug-uri (adica erori de proiectare, de programare etc.). Pot contine bug-uri atât nucleul, cât si daemonii, precum si toate celelalte programe de pe calculator. Bug-urile pot fi puncte slabe care pot constitui tinte pentru atacurile cracker-ilor.
Recomandam administratorului de sistem abonarea la liste de discutii privind securitatea (e.g. bugtraq) si urmarirea aparitiei de actualizari ale pachetelor de programe.
Serviciile oferite de catre sistem
Aceasta sectiune analizeaza modul de protectie a fiecarui serviciu de retea oferit de sistem.
SSH
SSH poate fi configurat sa primeasca conexiuni doar de pe o
anumita
interfata de retea, prin intermediul parametrului ListenAddress;
daca nu se doreste posibilitatea de
conectare din exterior la masina, portul
SSH (de obicei 22) trebuie protejat în cadrul firewall-u\u\;
utilizatorii care se pot
conecta prin SSH pot fi stabiliti utilizând directiva
AllowUsers;
trebuie evitata utilizarea autentificarea prin .rhosts;
parametrii RSAAuthentication si PasswordAuthentication trebuie
sa aiba
valoarea Yes;
parametrul PermitRootLogin trebuie setat pe No.
telnet Este bine ca serviciul telnet sa fie dezactivat sau, daca se doreste totusi utilizarea acestuia în cadrul retelei locale, sa fie protejat în cadrul firewall-u\u\.
FTP
nici folosirea
serviciului FTP nu este indicata, decât daca trebuie oferit
serviciul de FTP anonim;
poate fi limitat sa primeasca cereri doar de pe o anumita
interfata de
retea, prin intermediul optiunii daemonaddress;
trebuie acordata atentie
sporita definirii de clase de utilizatori.
NFS Trebuie stabilita cu
atentie lista de masini care pot monta sisteme de
fisiere, în /etc/exports.
Administrarea si configurarea sistemelor Linux
HTTP
porturile si
interfetele de retea pe care serverul HTTP accepta conexiuni
pot fi configurate utilizând optiunile BindAddress, Port si Listen;
trebuie acordata o
atentie sporita fisierelor sau directoarelor care nu
trebuie sa poata fi accesate de catre
toti utilizatorii.
sendmail
optiunile accept_unqualified_senders
si accept_unresolvable_domains nu
trebuie sa fie setate, pentru a oferi protectie
împotriva atacurilor de tip
spam;
portul, respectiv
interfata de retea de pe care sendmail va primi cereri pot
fi configurate cu ajutorul directivei DAEMON_OPTIONS.
Samba
masinile care pot
accesa resursele SMB pot fi stabilite prin intermediul
directivei hosts allow;
interfetele de
retea pe care sunt acceptate cereri SMB pot fi stabilite cu
ajutorul directivelor bind interfaces only si
interfaces;
nu trebuie activat
sistemul de autentificare tip .rhosts (optiunea use
rhosts trebuie sa
fie No);
trebuie
acordata atentia cuvenita configurarii utilizatorilor.
PostgreSQL, MySQL
daca nu sunt
utilizate decât local, trebuie dezactivate conexiunile din
exterior;
daca sunt permise
conexiuni din exterior, lista de masini de pe care
acestea sunt acceptate trebuie configurata cu
atentie;
trebuie
acordata o atentie sporita configurarii utilizatorilor.
xfs
daca serverul de fonturi
xfs este utilizat doar local, directiva no-listen
trebuie sa aiba valoarea tcp;
portul pe care xfs accepta
conexiuni (de regula 7100) trebuie protejat în
cadrul firewall-u\u\.
syslog
daca syslog nu trebuie sa
jurnalizeze mesaje primite de la alte masini,
trebuie eliminat parametrul -r;
în cazul în care se
doreste jurnalizarea mesajelor de pe alte masini,
trebuie configurat fîrewall-u\ pentru a limita ce
masini au acces la
serviciile syslog (portul 514, utilizând
protocolul UDP).
cron Continutul scripturilor, precum si utilizatorii sub care ruleaza acestea trebuie verificate cu atentie.
|