6. Servidors.
● CentOS p.e. és “gairebé” especialitzada.
● Manteniment llarg.
● Poques (cap) eines ofimàtiques, etc.
● Molt suport a eines serveis web, etc.
11. Particionament
● Recomanacions de particions
● /tmp : Fitxers temporals. Mida suficient (depen de
les aplicacions).
S'ha de crear partició perquè és un directori on
tothom pot escriure, i, omplir així altres particions.
● /var: Emprat per serveis de sistema (daemon) per
guardar-hi fitxers que canvien sovint (dades).
Crear partició per evitar que un servei de sistema
pugui esgotar espai de disc d'altres particions.
12. Particionament
● /var/log : Fitxers de registre del sistema. 10Gbytes
normalment és suficient, però dependrà de la
durada que vulguem de registre.
S'ha de crear partició per evitar que un problema en
un servei ompli una partició principal.
● /var/log/audit : Registre del servei d'auditoria del
sistema. Si l'emprem, crear partició.
13. Particionament
● /home : Si tenim directoris d'usuari, crear partició.
Evita que usuaris puguin omplir particions.
Facilita migració de sistema operatiu: Atenció!!!
● /boot : Fitxers del gestor d'arranc.
Només cal si gestor d'arranc no suporta FS principal.
Convenient per actualitzacions.
Si preupgrade -> mida gran (suficient 250 Mbytes).
14. Particionament
● Particions xifrades:
● Ideals per portàtils: en cas de pèrdua de l'equip les
dades no son llegibles.
● No tant ideals per servidors:
– Menor velocitat d'accés a disc
– Major dificultat de reparació
– (més difícil “perdre” un servidor)
15. Gestor d'arranc
● Posar-hi paraula d'accés
● Evita modificacions a la configuració del gestor
d'arranc.
● SINGLE BOOT!!!
16. Dispositius de xarxa
● En servidors:
● Si no cal, no posar DHCP.
● Si cal, tampoc posar-lo.
● Mai.
– Seqüència d'arranc de servidors no definida.
– Massa fàcil atacar i liar-la.
17. Dispositius de xarxa
● Eliminar allò que no faci falta:
● IPv4: Generalment necessàri.
● IPv6: Generalment no fa falta.
● Posar 2 DNS (millor 3)
19. Selecció de paquets
● TOTS FORA.
● Anar a selecció detallada i
● TOT FORA:
● Especialment X.org
● Eines de desenvolupament
● Millor seleccionar paquets individuals que
“meta-paquets” o grups (menys paquets).
20. Arrancada inicial
● Firewall:
● Activat (en servidors difícilment justificable altra
cosa).
● SELinux:
● Enforcing (si ens ho podem permetre)
21. Actualitzacions
● Un cop instal·lat:
yum check-update
yum update
● Important, especialment en màquines de
producció:
● Comprovar abans d'aplicar els updates
● Mantenir actualitzada la màquina (si empreu
distribucions orientades a servidor/establilitat)
22. Actualitzacions
● yum-updatesd
● Alguns consideren poc “madur”
●Desactivar:
chkconfig yum-updatesd off
● Actualització manual:
yum -R 60 -y update yum
yum -R 15 -y update
● Posar a cron.daily (recomanat) o weekly (fent un
script)
23. Actualitzacions
● Vigilar molt al posar repositoris addicionals:
● Seguretat
● Conflictes de paquets ≥ Actualitzacions
automàtiques fallides
● Aprendre com funciona bé el sistema de gestió
de paquets:
● Protecció de paquets/versions
● Múltiples nuclis
● Downgrading
● Signatura paquets
24. Modificacions a fitxers
● Instal·larem AIDE (Advanced Intrusion Detection
Environment)
● Això guarda una Base de Dades de checksums
dels binaris, per comprovar que no hagi passat
res extrany.
25. Modificacions a fitxers
● Instal·lació:
yum install aide
● Configuració a /etc/aide.conf
(nosaltres deixarem valors per defecte).
● Creem base de dades inicials:
/usr/sbin/aide --init
26. Modificacions a fitxers
● Copiem base de dades creada:
cp /var/lib/aide/aide.db.new.gz
/var/lib/aide/aide.db.gz
● Fem un check:
/usr/sbin/aide --check
● Podem automatitzar el check (crontab):
0 3 * * * /usr/sbin/aide --check
27. Modificacions a fitxers
● Copiem base de dades, /usr/sbin/aide i
/etc/aide.conf a mitjà de només lectura (per si
de cas).
I ens apuntem sha512sum del binari, la conf i la
BBDD:
sha512sum /usr/sbin/aide
● Verifiquem RPMs:
rpm -qVa
rpm -qVa | awk '$2 != “c” {print $0}'
28. Sistema de fitxers
● Evitar dispositius a particions no root:
Afegir nodev a aquelles particions ext2/ext3 que no
siguin /
(posar ,nodev a la columna 4 d'aquella partició)
● Afegir nodev,nosuid,noexec a mitjans
removibles.
29. Sistema de fitxers
● Permisos de fitxer:
1 2 3 4 5 6 7 8 9 10
- r w [xs] r w s r w t Fitxer
1. Tipus: - fitxer, d directori, l link, c disp. caràcter, b disp. bloc, s
socket, p pipe
2. Lectura propietàri
3. Escriptura propietàri
4. Execució propietàri (x) + SetUID (s)
5. Lectura grup
6. Escriptura grup
7. Execució grup (x) + SetGID (s)
8. Lectura altres
9. Escriptura altres
10. Execució altres (x) + sticky (t)
Molts cops es passa en OCTAL: [0-7][0-7][0-7][0-7]
30. Sistema de fitxers
● Restringir accés a dispositius des de consola.
/etc/security/console.perms.d/50-
default.perms
● Eliminar (comentar) línies a partir de permission
definitions, de tipus:
<console> 0600 <floppy> 0600 root.floppy
<xconsole> 0600 /dev/console 0600 root.root
● Reduïr consola:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0.[0-9] :0
<xconsole>=:0.[0-9] :0
31. Sistema de fitxers - USB
● Eliminar suport automontatge USB.
A /etc/modprobe.conf
afegir
install usb-storage:
Això evita autocàrrega de driver USB-storage
(càrrega manual possible).
● Eliminació suport USB storage
(permanentment):
find / -name “usb-storage.ko” --exec rm {} ;
● Eliminació via bootloader:
● Afegir nousb a la línia kernel a /etc/grub.conf
32. Sistema de fitxers
● Eliminar automontatge:
chkconfig autofs off
● Si per alguna cosa s'ha de tenir
GNOME/KDE/etc. Assegurar-nos de que no es
faci automontage des de l'entorn gràfic.
● Eliminar suport de FS no requerits (hfs, hfsplus,
udf, etc.). A modprobe.conf:
install hfs /bin/true
33. Sistema de fitxers
● Permisos de passwd, etc. :
A /etc:
chown root:root passwd shadow group gshadow
chmod 644 passwd group
chmod 400 shadow gshadow
● Sticky bits:
find <part> -xdev -type d ( -perm -0002 -a !
-perm -1000 ) -print
chmod +t <directori>
34. Sistema de fitxers
● Fitxers escribibles per tothom:
find <part> -xdev -type f -perm -0002 -print
chmod o-w <fitxer>
● Executables SUID/SGID:
find <part> -xdev -type f ( -perm -4002 -o
-perm -2000) -print
chmod -s <fitxer>
35. Sistema de fitxers
● Directoris escribibles per tothom amb
propietari:
find <part> -xdev -type d -perm -0002 -uid +500
-print
● Orfes:
find <part> -xdev ( -nouser -o -nogroup)
-print
36. Sistema de fitxers - Executables
● Serveis de sistema: umask. A /etc/sysconfig/init
umask 027
● Core dumps. A /etc/security/limits.conf
* hard core 0
● Core dumps de suid. A /etc/sysctl.conf
fs.suid_dumpable = 0
(comprovar-la després d'arrancar)
sysctl fs.suid_dumpable
37. Sistema de fitxers - Executables
● Comprovar l'activació d'ExecShield, a
/etc/sysctl.conf:
kernel.exec-shield = 1
kernel.randomize_va_space = 1
(comprovar-la després d'arrancar)
sysctl kernel.exec-shield
sysctl kernel.randomize_va_space
38. Sistema de fitxers - Executables
● Si disposem a BIOS de NX (No Execute, AMD) o
XD (Execute Disable, Intel), assegurar-nos de
tenir-ho activat.
● Comprovar-ne soport:
/proc/cpuinfo -> pae,nx
● Si 32bits i suport de PAE/NX assegurar-nos de
tenir kernel PAE:
yum install kernel-PAE
39. Control d'accés
● Restringir l'accés a root a només:
●
console, tty[1-9] (i si requerit ttyS[0-9])
(a /etc/securetty)
● Limitar capacitat de su:
● Comprovar existència de grup wheel
● Només grup wheel pot fer su. A /etc/pam.d/su:
auth required pam_wheel.so use_uid
40. Control d'accés
● Emprar sudo per comandes de root
%wheel ALL=(ALL) ALL
(a /etc/sudoers)
● Editar amb visudo!
41. Control d'accés
● Restringir login a comptes de sistema (no root):
● Buscar comptes de sistema:
awk -F: '{print $1 ”:” $3 ”:” $7}' /etc/passwd
● Identificar-ne els de sistema
● Per cada compte de sistema (no root)
● Bloquejar: usermod -L <compte>
● Eliminar shell: usermod -s /sbin/nologin <compte>
42. Control d'accés
● Revisar la política d'expiració de passwords.
● A /etc/login.defs
● PASS_MAX_DAYS 60
● PASS_MIN_DAYS 7
● PASS_MIN_LEN 8
● PASS_WARN_AGE 7
● Aplicar a usuaris individuals:
chage -M 60 -m 7 -W 7 <usuari>
43. Control d'accés
● Crear un grup únic per cada usuari
(automàtic si no emprem -g al crear usuaris).
● Crear un grup que tingui tots els usuaris
humans del sistema
groupadd <grup>
usermod -G <grup> <usuari>
● Permet restringir algunes comandes a usuaris
humans (p.e. eines de l'entorn gràfic):
chgrp <grup> <fitxer>
chmod 750 <fitxer>
44. Control d'accés
● Demanar autenticació en single boot
Es trivial arrancar en single (si podem modificar
el bootloader) i trencar la seguretat del sistema.
Afegir a /etc/inittab:
~:S:wait:/sbin/sulogin
● Eliminar arrancada interactiva. A
/etc/sysconfig/init:
PROMPT=no
45. PAM
● Implementa autenticació modular
● Objectes que podem carregar/descarregar cada
cop que s'ha d'autenticar un usuari
● Permet configurar combinacions múltiples de
seguretat de forma fàcil.
● Permet afegir nous sistemes d'autenticació
(smartcard, biométrics, etc.) sense dificultat
● Configuració a /etc/pam.d/<servei>
Servei system-auth configuració base d'altres
serveis.
46. PAM
● Tenim 2 móduls per qualitat de passwords:
pam_cracklib i pam_passwdqc(*)
● pam_cracklib (a /etc/pam.d/system-auth):
● Buscar:
password requisite pam_cracklib.so try_first_pass
retry=3
● Canviar per
password required pam_cracklib.so try_first_pass
retry=3 minlen=12 dcredit=-1 ucredit=-1 ocredit=-1
lcredit=0
47. PAM
● Instal·lar pam_passwdqc
yum install pam_passwdqc
● Més potent que pam_cracklib
● Buscar (a /etc/pam.d/system-auth):
password requisite pam_cracklib.so try_first_pass
retry=3
● Canviar per
password requisite pam_cracklib.so try_first_pass
retry=3 minlen=12 dcredit=-1 ucredit=-1 ocredit=-1
lcredit=0
48. PAM
● Móduls (inclosos):
● pam_unix : Autenticació, gestió passwords,
etc. tradicionals.
● pam_deny: Denegació permanent.
● pam_warn: logging a syslog
● pam_nologin: si ∃/etc/nologin, només root
entra, altres veuen contingut de nologin
● pam_tally2: Bloqueig usuaris si fallen login.
49. PAM
● Móduls (addicionals):
● pam_ldap: usa LDAP per gestionar usuaris.
● pam_smb: usa servidor SMB.
● pam_krb5: usa Kerberos 5.
● pam_ccreds: caché autenticació
● pam_pkcs11: autenticació PKCS #11/NSS
50. SELINUX
● SELinux és un mecanisme de seguretat de
guarda que controla:
● Males configuracions de serveis/daemons
● Control d'accés a fitxers per part de
programes
51. SELINUX
● Model tradicional UNIX: DAC (Discretrionary
Access Control).
● Processos pertanyen a un usuari/grup
● Fitxers pertanyen a usuari/grup
● Permisos per propietàri/grup/altres
● Permís final: en funció del
usuari/grup+permisos de fitxer
52. SELINUX
● SELinux proporciona control MAC (Mandatory
Access Control):
● Cada procés i cada objecte del sistema té un
security context
● Això és un label que conté informació
detallada de l'objecte.
● Per que un procés accedeixi a un objecte si
està permés per unes regles (relatives al
contexte)
53. SELINUX
● SELinux també defineix transicions de contextes
(canvis en funció de regles)
● Un usuari pot executar un procés, però
aquest pot estar corrent amb un context
diferent (més restrictiu, p.e.).
● No substitueix DAC, sinó que s'ha de complir
DAC+MAC.
● SELinux només pot augmentar la seguretat,
no afeblir-la.
54. SELINUX
● Definir la política és complexe. 2(3,4,..)
disponibles ja definides:
● targeted: Regles de tipus TE (Type
Enforcement) i algunes RBAC (Role Based
Access Control). Restringeix molts serveis,
deixa llibertat als usuaris “humans”
● strict: Regles de tipus TE (Type Enforcement) i
moltes RBAC (Role Based Access Control).
Afecta a molts programes del sistema.
55. SELINUX
● Activació de SELinux a /etc/selinux/config:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Revisar a /etc/grub.conf:
● selinux=0
● enforcing=0
56. SELINUX
● Accés:
[root@udlnet-08-096 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
57. SELINUX
● Informació de problemes:
● SETroubleshoot: dona informació (visual) dels
problemes. En servidors -> innecessària
chkconfig setroubleshoot off
yum erase setroubleshoot
58. SELINUX
● Buscar problemes de mala configuració (o no
configuració):
ps -eZ | egrep “initrc” | egrep -vw “tr|ps|
egrep|bash|awk” | tr ':' ' ' | awk '{print
$NF}'
Busca daemons que hagin rebut els labels de
initrc_t (per no estar configurats).
59. SELINUX
● Buscar dispositius no configurats:
ls -Z /dev | grep unlabeled_t
No n'hi hauria d'haver cap
60. SELINUX
● Les polítiques ja existents són, generalment,
suficients.
● yum search selinux-policy-*
● Definir polítiques (selinux-polgengui del
paquet): policycoreutils-gui
(yum install policycoreutils-gui)
● No a la màquina segura!
61. SELINUX
● SELinux targeted són regles que permeten a un
subjecte de fer algunes operacions en alguns
objectes.
● La informació d'aquestes decisions de seguretat
es guarda al AVC (Access Vector Cache).
● Les denegacions les registra el daemon audit
(/var/log/audit/audit.log o
/var/log/messages) i setroubleshoot
62. SELINUX
● En cas d'errors d'execució (si se sospita de
SELinux).
ausearch -m AVC, USER_AVC -sv no
● Llistarà tots els missatges d'events de tipus AVC i
USER_AVC (Access Vector Cache) que hagin estat
negatius.
ps -p <PID> -Z
● Mirar en quin contexte està un procés (PID)
ls -Z <fitxer>
● Mirar en quin contexte està un fitxer
63. SELINUX
● En quins casos hi ha un AVC denial:
● El programa està amb el contexte incorrecte.
– Contexte incorrecte a l'executable
● L'objecte usat no té el contexte correcte:
– Reconfiguracions o canvis
restorecon -v FITXER
● Mala configuració de la política
system-config-selinux
semanage
64. SELINUX
● En quins casos hi ha un AVC denial:
● Procés i objecte estan correctes, però no hi ha cap
política que lligui procés i objecte.
Si ja hi ha policy, per arreglar-ho:
system-config-selinux
getsebool/setsebool
Per crear-ne un:
ausearch -m AVC -sv no -ts recent | audit2allow
65. SELINUX
● Endurir SELinux
● Revisar els booleans (controls/configuracions).
● Un boolean és una variable que indica si una cosa
es permesa (a nivell de sistema global o d'objecte).
getsebool -a
● A /usr/share/doc/selinux-policy-*/html/ hi ha la
descripció de tots els paràmetres possibles.
66. SELINUX
● Editar la política (selinux-polgengui)
67. SELINUX
● Editar la política (selinux-polgengui)
68. SELINUX
● Editar la política (selinux-polgengui)
69. SELINUX
● Editar la política (selinux-polgengui)
70. SELINUX
● Editar la política (selinux-polgengui)
71. SELINUX
● Editar la política (selinux-polgengui)
72. SELINUX
● Editar la política (selinux-polgengui)
73. SELINUX
● Editar la política (selinux-polgengui)
74. SELINUX
● Editar la política (selinux-polgengui)
75. SELINUX
● Editar la política (selinux-polgengui)
76. SELINUX
● Canviar la política:
● minimum
● targeted
● strict
● MLS
(Per ordre creixent de seguretat). targeted és la
recomanada, strict si ens ho podem permetre.
Si ho canviem, cal re-etiquetar el disc:
touch /.autorelabel
autorelabel (al grub)
78. Logging
● Revisar els permisos dels fitxers log (han
d'existir, i tenir (root:root, 0600).
● Assegurar-nos de que hi ha rotació correcta de
logs:
● /etc/logrotate.conf i /etc/logrotate.d/*
● Tenir espai per guardar-los
79. Logging
● En instal·lacions grans o crítiques: enviar logs a
servidor de logs.
● A /etc/syslog.conf
*.* @serverlog.udl.cat
● Al receptor, a /etc/sysconfig/syslog:
SYSLOGD_OPTIONS=”-m 0 -r -s udl.cat”
● Al receptor tenir espai de disc i logrotate
correctament, encara és més crític.
80. Logging
● Al servidor emprar monitorització de logs (o a
tots els hosts si no tenim centralitzat).
● Eina disponible Logwatch
● Assegurar-nos que està a /etc/cron.daily
● Configuració mínima
(/etc/logwatch/logwatch.conf):
HostLimit = no
SplitHosts = yes
MultiEmail = no
Service = -zz-disk_space
81. Auditing
● Disposem d'eines d'auditing als sistemes,
emprarem auditd
● auditd està capacitat fins i tot per complir
requeriments de Defensa USA.
● Activació:
chkconfig auditd on
● Les dades es guarden a /var/log/audit/audit.log
82. Auditing
● Configuració a /etc/audit/audit.conf
● Assegurar-nos de que tenim espai.
● En instal·lacions crítiques, es recomana que en
cas de no poder fer audit, s'aturi la màquina.
max_log_file = MIDA
● Audit guarda 4 fitxers de MIDA per defecte.
83. Auditing
● Recomanat: partició per audit.
● Si hem d'aturar en cas de no poder auditar:
space_left_action = mail
action_mail_acct = root
admin_space_left_action = halt
● Audit rota logs si va curt d'espai, si cal retenir-
los:
max_log_file_action = keep_logs
84. Auditing
● Assegurar-nos que els processos arrancats a init
també fan audit:
audit=1 (a grub.conf)
● Tenim jocs de regles ja preparats
(/usr/share/doc/audit*/*rules)
capp.rules lspp.rules nispom.rules stig.rules
● Corresponen a recomanacions de NSA.
● STIG la més interessant (i suficient).
cp /usr/share/doc/audit*/stig.rules /etc/audit/audit.rules
85. Auditing
● aureport ens llista el que passa.
● Per veure els intents de login d'avui i ahir:
aureport -l -i -ts yesterday -te today
● Per veure anomalies (dispositius a mode promisc,
processos morint extranyament, etc.).
aureport --anomaly
86. Auditing
Summary Report
======================
Range of time in logs: 18/03/10 20:54:29.316 - 15/04/10 17:01:01.503
Selected time for report: 18/03/10 20:54:29 - 15/04/10 17:01:01.503
Number of changes in configuration: 9
Number of changes to accounts, groups, or roles: 0
Number of logins: 6
Number of failed logins: 4
Number of authentications: 6
Number of failed authentications: 3
Number of users: 1
Number of terminals: 7
Number of host names: 4
Number of executables: 5
Number of files: 0
Number of AVC's: 1
Number of MAC events: 22
Number of failed syscalls: 0
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 0
Number of keys: 0
Number of process IDs: 24
Number of events: 138