Sursa: fedoraproject.ro

Urmatorarele sfaturi pornesc de la premiza ca avem instalat, cu optiunile default un sistem de operare Centos 5 sau Fedora 8. Acest ghid se poate aplica intr-un mod foarte rapid, cu mentiunea ca nu acopera toate problemele de securitate ale unui sistem de operare.

1. Principii generale

* De obicei toate datele trimise prin retea trebuiesc sa fie pe cat posibil criptate, in special parolele folosite pentru autentificari;
* Este recomandata micsorarea numarului de soft-uri instalate pe un sistem pentru a scadea sansa de-a avea vulnerabilitati multiple;
* Sa vor folosi pe cat posibil software care sa sporeasca securitatea (Iptables, SELinux, tcp wrappers);
* Este de dorit ca fiecare serviciu de retea sa fie instalat pe servere separate. Acest lucru micsorand riscul ca un serviciu compromis sa duca la compromiterea altora;
* Crearea unei politici pentru parole complexe si fortarea utilizari sale este iarasi un lucru bun.Pe un system important vor fi sterse conturile de utilizatori nefolosite;
* In mod regulat se vor citi logurile, si se va folosi un server de loguri dedicat. Acest lucru va prevenii modificarea in mod facil a lor de catre un intrus. De obicei logurile importante sunt tinute in /var/log;
* Nu este recomandat sa va logati direct cu root, acest lucru fiind permis numai daca este absolut necesar. Administratorul sistemului ar trebui sa foloseasca sudo pentru a executa comenzi ce necesita root. Conturile care vor avea capabilitatea sa foloseasca sudo sunt specificate in /etc/sudoers, acest fisier putand fi edita cu utilitarul visudo.

2. Partiti si mounting

In timpul instalarii trebuiesc create paritii diferite pentu directoarele unde utilizatori vor avea acces de scriere : /home, /tmp, /var/tmp. In momentul configurari sistemului se va modifica optiunea de mount a acestora din fisierul /etc/fstab pentru a limita accesul utilizatorilor pe sistemele de fisiere respective.Astfel optiunea defaults este egala cu rw,suid,dev,exec,auto,nouser,async. Folosirea optiunii noexec previne executarea de binare pe un sistem de fisiere desi nu va preveni executarea de scripturi. De exemplu la web-servere ce folosesc php unde te poti astepta la diverse exploit-uri prin care sa fie incarcate binare in /tmp noexec va preveni executarea lor. Optiunea nodev va preveni folosirea fisierelor device pe acel sistem de fisiere.

3. Update-uri regulate ale software-ului

Exista posibilitatea de descarcare manula a pachetele din repository-urile oficiale ori de-a folosi yum.cron sau mai precis yum nigthly update. Serviciul default yum-updatesd nu functioneaza in mod stabil astfel utilizarea sa va fi oprita cu ajutorul comenzii /sbin/chkconfig yum-updatesd off . Iata cum functioneaza yum.cron :

* se creeaza fisierul de mai sus , daca nu exista deja se va face executabil chmod a+x yum.cron
* continutul sau va fi :

#!/bin/sh
/usr/bin/yum -R 120 -e 0 -d 0 -y update yum
/usr/bin/yum -R 10 -e 0 -d 0 -y update

* el va fi plasat fie in directorul /etc/cron.daily ori in /etc/cron.weekly depinzand cand doriti sa fie rulat odata pe saptamana sau odata pe luna;

4. Deactivarea serviciilor nefolositoare

Pentru a lista toate serviciile configurate sa porneasca la boot rulati comanda :
/sbin/chkconfig –list

Cautati in coloana ce corespunde run level-ului actual pentru a vedea ce servicii sunt active. Daca s-a ales instalarea default cu Gnome atunci run level-ul este 5 daca s-a mers pe varianta server run level-ul va fi 3.
Pentru a dezactiva un serviciu rulati comanda :
/sbin/chkconfig numle_serviciului off

Se pot dezactiva fara probleme urmatoarele servicii in caz ca nu sunt folosite:

anacron
haldaemon
messagebus
apmd
hidd
microcode_ctl
autofs`
hplip*
pcscd
avahi-daemon*
isdn
readahead_early
bluetooth
kdump
readahead_later
cups*
kudzu
firstboot
mcstrans
gpm
mdmonitor
xfs

Serviciile marcate cu steluta sunt servicii de retea, este foarte important ca ele sa fie dezactivate daca nu sunt folosite. La aceasta lista se pot adauga netfs, nfslock, portmap, rpcgssd si rpcidmapd daca nu se va folosi NFS. Anumite servici depind de haldaemon si messagebus astfel trebuie un pic de atentie la dezactivarea sau nu a lor, schimbarile se vor reflecta dupa reboot sau oprirea manuala a fiecaruia in parte cu service numele_serviciului stop .

5. Dezactivarea binarelor cu SUID sau SGID

Pentru a gasi fisierele cu SUID si SGID pe un sistem puteti folosi urmatoarea comanda:

find / ( -perm -4000 -o -perm -2000 ) -print

Urmatoarea lista de fisiere poate avea biti de SUID si SGID dezactivati fara probleme cu ajutorul comenzii chmod -s nume_fisier asta daca stim in mod explicit ca fisierele respective nu sunt folosite pentru serviciile din a 2-a coloana:

/bin/ping6 IPv6
/sbin/mount.nfs NFS
/sbin/mount.nfs4 NFS
/sbin/netreport network control
/sbin/umount.nfs NFS
/sbin/umount.nfs4 NFS
/usr/bin/chage passwd
/usr/bin/chfn account info
/usr/bin/chsh account info
/usr/bin/crontab cron
/usr/bin/lockfile Procmail
/usr/bin/rcp rsh
/usr/bin/rlogin rsh
/usr/bin/rsh rsh
/usr/bin/wall console messaging
/usr/bin/write console messaging
/usr/bin/Xorg Xorg
/usr/kerberos/bin/ksu Kerberos
/usr/libexec/openssh/ssh-keysign SSH host-based authentication
/usr/lib/vte/gnome-pty-helper Gnome, Xorg
/usr/sbin/ccreds_validate Pam auth caching
/usr/sbin/suexec Apache, CGI
/usr/sbin/userisdnctl ISDN
/usr/sbin/usernetctl network control

6. Dezinstalarea interfetei grafice

Un server in general poate fi foarte bine administrat si fara interfata grafica astfel o puteti dezinstala prin comanda:
yum groupremove “X Window System”

Daca totusi server-ul X va fi necesar in viitor acesta se poate dezactiva fara a il sterge :

Editati fisierul /etc/inittab, si modificati id:5:initdefault: in
id:3:initdefault:

7. Firewall si tcp wrappers

Firewall-ul ar trebui sa fie configurat astfel incat sa permita numai comunicatiile necesare pentru retea, astfel pentru un workstation toate conexiunile spre acesta trebuiesc blocate cu exceptia celor legate de conexiuni deja stabilite de acel workstation. Pentru a vizualiza regulile default folositi comanda :
iptables -nvL

Acestea ar trebui sa corespunda celor aflate in fisierul /etc/sysconfig/iptables, orice update facut in acest fisier se va reflecta abia dupa repornirea serviciului iptables.

In primul rand politicile default pentru Chain-urile de Input si Forward trebuiesc schimbate astfel noile valori trebuie sa arate astfel:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]

Schimbarea in acest fel a politici de firewall ar insemna ca orice pachet care nu este explicit permis va fi blocat.

De asemenea se pot proteja serviciile de retea care suporta folosirea librarie TCP Wrapper (de exemplu: sshd, vsftpd, portmap ) prin editarea celor doua fisiere /etc/hosts.allow si /etc/hosts.deny.

In cel mai simplu caz orice regula din /etc/hosts.allow si /etc/hosts.deny arata asa :
daemon : client

In general o configuratie mai apropiata de realitate ar avea cel putin urmatoarele lini in fisierele de configuratie :

/etc/hosts.allow
ALL: localhost

/etc/hosts.deny
ALL: ALL

8. Configurare SELinux

Politica standard SELinux numita si targeted ofera protectie impotriva serviciilor de sistem prost configurate sau compromise. Aceasta politica implicita nu ar trebui sa intre in conflict cu operatiunile normale ale sistemului. Pentru a va asigura de aceasta verificati fisierul /etc/selinux/config sa contina urmatoarele linii :

SELINUX=enforcing
SELINUXTYPE=targeted

9. Setarea parametrilor de Kernel

La pornirea sistemului sunt aplicati o serie de parametri pentru kernel, acestia gasindu-se in fisierul /etc/sysctl.conf

Urmatoarele linii pot fi adaugate in acest fisier pentru a preveni anumite tipuri de atacuri gen SYN Flood sau DoS:

net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.accept_source_route=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1
kernel.exec-shield=1
kernel.randomize_va_space=1

10. Configurati sau dezactivati serviciul SSHD

In majoritatea cazurilor aces serviciu este foarte des utilizat astfel trebuie sa va asigurati de o minima parametrizare a acestuia. Fisierul principal este /etc/ssh/sshd_config si ar trebui sa contina urmatoarele linii :

PermitRootLogin no
Protocol 2

Pe cat posibil limitati accesul la SSH fie prin TCP Wrappers fie prin crearea unui subset de utilizatori numit de exemplu sshusers si adaugati doar utilizatori care chiar au nevoie de acest serviciu. Apoi in fisierul de configuratie se va adauga linia:
AllowGroups sshusers
si acesta va fi repornit.
11. Dezactivati IPV6

Daca structura retelei cere folosirea protocolului IPV6 acesta are sens sa fie activ. In majoritatea cazurilor nu aveti nevoie de el. Pentru a preveni modulul de kernel sa fie incarcat adaugati urmatoarea linie in /etc/modprobe.conf:
install ipv6 /bin/true

Apoi adaugati sau modificati urmatoarele linii in /etc/sysconfig/network:
NETWORKING_IPV6=no
IPV6INIT=no

Acest articol este bazat pe cele 2 documente NSA oficial publicate sub numele :
rhel5-guide-i731.pdf si rhel5-pamphlet-i731.pdf

sau http://www.nsa.gov/snac/os/redhat/rhel5-guide-i731.pdf & http://www.nsa.gov/snac/downloads_redhat.cfm?MenuID=scg10.3.1.1