Difference between revisions of "Securitatea sistemului de operare (Slackware)"
From linux360
Line 23: | Line 23: | ||
Contul root trebuie folosit numai pentru operaţii de administrare a sistemului. Dacă doriţi să rulaţi temporar o aplicaţie cu drepturi de root, există 2 variante pentru a evita logarea directă ca root: | Contul root trebuie folosit numai pentru operaţii de administrare a sistemului. Dacă doriţi să rulaţi temporar o aplicaţie cu drepturi de root, există 2 variante pentru a evita logarea directă ca root: | ||
*logarea temporară cu drepturi de root, prin comanda <tt>su</tt>, urmată de introducerea parolei de root, apoi de comanda <tt>exit</tt>; | *logarea temporară cu drepturi de root, prin comanda <tt>su</tt>, urmată de introducerea parolei de root, apoi de comanda <tt>exit</tt>; | ||
− | *rularea unei aplicaţii cu drepturi de root, cu ajutorul < | + | *rularea unei aplicaţii cu drepturi de root, cu ajutorul <tt>sudo</tt>. Configurarea acestuia este destul de complicată şi există tendinţa de a permite tuturor aplicaţiilor să ruleze cu drepturi de root, ceea ce nu este indicat. Pentru configurarea sudo, editaţi fişierul /etc/sudoers. |
Exemplu bun: | Exemplu bun: |
Revision as of 00:37, 2 December 2006
Acest articol tratează aspectele elementare legate de securitatea unei staţii de lucru, pe care a fost instalată distribuţia Slackwarwe Linux 11.0. Regulile de bază explicate aici pot fi aplicabile şi în cazul altor distribuţii Linux, cu specificarea că s-ar putea să existe diferenţe în denumirea sau calea către unele fişiere de configurare menţionate în articol.
Atenţionare!
Acest articol conţine referiri la aplicaţii care, rulate "împotriva" unui alt calculator, sunt sau pot fi interpretate ca fiind:
- scanare a unei reţele de calculatoare, în vederea descoperirii structurii şi serviciilor oferite de serverele acesteia;
- scanare de porturi, în vederea descoperirii de porturi deschise sau filtrate de un firewall, a serviciilor rulate şi a eventualelor breşe de securitate / vulnerabilităţi;
- încercare de obţinere ilegală de drepturi de acces, prin compromiterea conturilor.
Nimic din acest articol nu poate şi nu trebuie interpretat ca o încurajare pentru astfel de acţiuni.
Contents
Stabilirea parolelor conturilor
Pentru stabilirea corectă a parolelor conturilor (root sau utilizator) trebuie să aveţi în vedere următoarele:
- Parola trebuie să aibă o lungime de cel puţin 6 caractere şi trebuie să conţină litere mari şi mici, combinate cu caractere alfa-numerice;
- Parola nu trebuie să conţină numele proprii, date calendaristice sau expresii "din dicţionar", de genul: "user", "mylove", "badboy", etc.;
- Parola trebuie schimbată periodic:
- prin stabilirea unei "Expiry date" în momentul creării contului prin comanda adduser
- prin comanda passwd sau passwd <nume_utilizator>
- Parola trebuie memorată, nu scrisă pe birou, pe tastatură, pe suportul de cafea, pe o bucăţică de hârtie lipită de monitor, etc.;
- Parola nu trebuie comunicată nimănui, mai ales prin telefon, e-mail sau alte mijloace de comunicaţii, indiferent dacă sunt sau nu securizate.
Parolele sunt memorate în fişierele /etc/passwd şi /etc/shadow. Există multe mituri legate de aceste fişiere şi parola de root. Adevărul este că, în marea majoritate a cazurilor, conturile au fost compromise datorită nerespectării regulilor elementare enumerate mai sus.
Folosirea contului root
Contul root trebuie folosit numai pentru operaţii de administrare a sistemului. Dacă doriţi să rulaţi temporar o aplicaţie cu drepturi de root, există 2 variante pentru a evita logarea directă ca root:
- logarea temporară cu drepturi de root, prin comanda su, urmată de introducerea parolei de root, apoi de comanda exit;
- rularea unei aplicaţii cu drepturi de root, cu ajutorul sudo. Configurarea acestuia este destul de complicată şi există tendinţa de a permite tuturor aplicaţiilor să ruleze cu drepturi de root, ceea ce nu este indicat. Pentru configurarea sudo, editaţi fişierul /etc/sudoers.
Exemplu bun:
%users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom %users ALL=/opt/kde/bin/konqueror,/opt/kde/bin/k3b
Exemplu rău:
root ALL=(ALL) ALL gabriel ALL=(ALL) ALL
Actualizarea pachetelor
Menţinerea "up to date" a unui sistem Slackware este una dintre cele mai dificile sarcini. Nu mă refer la upgrade-urile obişnuite de pachete din versiunea curentă (care sunt opţionale), ci la cele cu menţiunea * security fix * din versiunea stabilă.
Închiderea serviciilor
Având în vedere că orice serviciu (server, daemon) deschide un port (filtrat sau nu de un firewall), serviciile care nu sunt necesare trebuie închise.
Pentru a vedea ce servicii rulează pe calculatorul dumneavoastră rulaţi comanda:
nmap localhost
Iată un exemplu, pe o staţie de lucru virtuală:
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-01 20:41 EET Interesting ports on localhost (127.0.0.1): Not shown: 1668 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 37/tcp open time 53/tcp open domain 80/tcp open http 111/tcp open rpcbind 113/tcp open auth 587/tcp open submission 631/tcp open ipp 854/tcp open unknown 953/tcp open rndc 6000/tcp open X11 Nmap finished: 1 IP address (1 host up) scanned in 1.196 seconds
Scopul nostru este:
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-01 22:58 EET All 1680 scanned ports on localhost (127.0.0.1) are closed Nmap finished: 1 IP address (1 host up) scanned in 0.187 seconds
Acesta este calculatorul meu personal şi are: conexiune la Internet, intefaţă grafică, reţea virtuală în care sunt 3 calculatoare virtuale şi oricare dintre acestea pot accesa Internetul, cu toate că nu am nici un port deschis.
Pentru a închide toate porturile din exemplul de mai sus, urmaţi următorii paşi:
- Pentru a vedea ce serviciu a deschis portul 854, rulaţi comanda:
netstat -teanlp
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 0.0.0.0:37 0.0.0.0:* LISTEN 0 1556 1526/inetd tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 0 1996 1588/sendmail: acce tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 0 1358 1510/rpc.portmap tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 0 3796 1949/X tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 2035 1627/httpd tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN 0 1559 1526/inetd tcp 0 0 192.168.102.131:53 0.0.0.0:* LISTEN 0 1587 1534/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 0 1585 1534/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 1570 1530/sshd tcp 0 0 0.0.0.0:854 0.0.0.0:* LISTEN 0 1552 1520/rpc.statd tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 0 1959 1560/cupsd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 1995 1588/sendmail: acce tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 0 1589 1534/named
Deci, 854 este folosit de rpc.statd, o implementare NSM (Network Status Monitor) pentru protocolul rpc.
- Închideţi toate porturile deschise prin fişierul de configurare a serverului inetd, /etc/inetd.conf (comentaţi liniile);
- Închideţi serverele (daemon-ii): sshd, bind, cups, dnsmasq, nfsd, rpc, sendmail prin comanda (exemplu pentru sendmail):
/etc/rc.d/rc.sendmail stop
chmod 0644 /etc/rc.d/rc.sendmail
- Restartaţi serverul inetd:
/etc/rc.d/rc.inetd stop
/etc/rc.d/rc.inetd start
- Pentru închiderea portului 6000/tcp (port pe care ascultă serverul X) editaţi linia 27 din fişierul /usr/X11R6/bin/startx şi restartaţi serverul X:
Original:
serverargs=""
Modificat:
serverargs="-nolisten tcp"
În acest moment toate porturile sunt închise. Dacă doriţi rularea unui anumit server, acesta trebuie actualizat cu ultimul update, configurat corect, securizat (prin editarea unui fişier de configurare - de exemplu: /etc/ftpusers pentru serverul ftp, /etc/ssh/sshd_config pentru serverul sshd) şi filtrat prin firewall.
Implementarea unui firewall
Limitarea accesului
- Configurarea fişierului /etc/hosts.allow
- Configurarea fişierului /etc/hosts.deny
- Cine este logat pe calculator