Está en la página 1de 17

SELinux: Haciendo Nuestra

Seguridad Impenetrable
F u n d a c i o n C o d i g o L i b r e D o m i n i c a n o
J u n i o 2 0 0 8 . -
Departamento: Investigacion Cientifica
Divisin: Academica
Documentacin realizada por:
Jesus Rafael Sanchez Medrano
Director de Investigacion Cientifica
ndi ce de conteni do
Que es SELinux?..........................................................................................................................1
Entendiendo como funciona SELinux:......................................................................................2
Conceptos basicos de seguridad.................................................................................................4
Atributos de seguridad...........................................................................................................4
Control de escalamiento de priilegios:...............................................................................!
El sistema de arc"ios irtual #selinux#...............................................................................$
El arc"io de configuraci%n #etc#s&sconfig#selinux............................................................'
(tilidades para SELinux.............................................................................................................)
Creando nueas politicas de SELinux* +aso a +aso..............................................................1,
-Como puedo conocer el estado actual de SELinux?......................................................11
-Que aplicaciones estan siendo denegadas por SELinux en mi sistema?.....................11
-Como puedo permitir una aplicacion &a denegada por SELinux en el sistema?........11
-Como permitir el acceso a las aplicaciones .ue "an sido negadas por el sistema?...14
-Como puedo permitir .ue un sericio pueda usar cual.uier puerto?...........................14
-C%mo puedo cambiar la locali/aci%n por defecto de algunos sericios?....................1!
F u n dac i on Codi go L i br e Domi n i c an o
Que es SELi nux?
Securit&0En"anced Linux o SELinux* es una ar.uitectura de seguridad integrada en el 1ernel 2.$.x
usando los m%dulos de seguridad linux 2o linux securit& modules* LS34. Este es un pro&ecto de la
Agencia de Seguridad 5acional 25SA4 de los Estados (nidos & de la comunidad SELinux. La
integraci%n de SELinux en 6ed 7at Enterprise Linux fue un esfuer/o con8unto entre al 5SA & 6ed 7at.
SELinux proporciona un sistema flexible de control de acceso obligatorio 2mandator& access control*
3AC4 incorporado en el 1ernel. 9a8o el Linux est:ndar se utili/a el control de acceso a discreci%n
2discretionar& access control* ;AC4* en el .ue un proceso o aplicaci%n e8ectut:ndose como un usuario
2(<; o S(<;4 tiene los permisos & de ese usuario en los ob8etos* arc"ios* soc1ets & otros procesos. Al
e8ecutar un 1ernel SELinux 3AC se protege al sistema de aplicaciones maliciosas o da=adas .ue pueden
per8udicar o destruir el sistema. SELinux define el acceso & los derec"os de transici%n de cada usuario*
aplicaci%n* proceso & arc"io en el sistema. SELinux gobierna la interacci%n de estos su8etos & ob8ectos
usando una pol>tica de seguridad .ue especifica cu:n estricta o indulgente una instalaci%n de ?5(#Linux
dada deber>a de ser.
En su ma&or parte* SELinux es casi inisible para la ma&or>a de los usuarios. Solamente los
administradores de sistemas se deben de preocupar sobre lo estricto .ue debe ser una pol>tica a
implementar en sus entorno de seridores. La pol>tica puede ser tan estricta o tan indulgente como se
re.uiera* & es bastante detallada. Este detalle le d: al 1ernel SELinux un control total & granular sobre el
sistema completo.
Cuando un su8eto* tal como una aplicaci%n* intenta acceder a un ob8eto tal como a un arc"io* el
seridor de aplicaci%n de pol>ticas erifica un cac"@ de ector de acceso 2AAC4* donde se registran los
permisos de ob8eto & del su8eto. Si no se puede tomar una decisi%n basado en los datos en el AAC* la
petici%n continua al seridor de seguridad* el cual busca el contexto de securidad de la aplicaci%n & del
arc"io en una matri/. Los permisos son entonces otorgados o negados* con un mensa8e de ac: denied
detallado en /var/log/messages. Los su8etos & ob8etos reciben su contexto de seguridad a partir de la
pol>tica instalada* .ue tambi@n proporciona informaci%n para llenar la matri/ de seguridad del seridor.
Adem:s de e8ecutarse en un modo impositio u obligatorio* SELinux puede e8ecutarse en un modo
permisio* donde el AAC es erificado & se registran los rec"a/os* pero SELinux no "ace cumplir esta
pol>tica.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 1
F u n dac i on Codi go L i br e Domi n i c an o
Entendi endo como funci ona SELi nux:
SELinux funciona como un modulo en el 1ernel* logrando un ma&or niel de abstraccion para los
usuarios.
SELinux traba8a con lo .ue son contextos de seguridad* controles de acceso impositios u obligarios &
control de acceso en base a rolesB ofreciendo un control mas granular del acceso a los recursos del
sistema por parte de los ob8etos 2programas & aplicaciones4 & los su8etos 2roles* usuarios & grupos4.
Este no reempla/a el modelo tradicional se seguridad de los sistemas tipo (nix* por el contrario* sire
de complemento de este en los puntos .ue la seguridad tradicional no es suficiente* en el cual la
seguridad esta diidida por nieles de usuarios* grupos* derec"os de accesos* listas de control de acceso &
atributos extendidos de accesoB en donde un usuario puede e8ecutar un con8unto de aplicaciones a las .ue
tiene derec"o & estas son e8ecutadas con los nieles de acceso .ue posee el usuario. Este tipo de
seguridad es llamada ;AC 2;iscretionar& Access Control4* control de acceso discrecional.
La 5SA introdu8o un sistema de control tipo 3AC 23andator& Access Control4* basado en contextos
donde se indica cuando un ob8eto o su8eto puede acceder a otro ob8eto.
En este caso* el administrador debe definir los derec"os de cada usuario .ue acceda a algunas
aplicaciones .ue .ue accedan a cual.uier ob8eto del sistema. +ara eitar .ue esta operacion sea tediosa*
se definen controles de acceso por roles 26ole09ased Access Control* 69AC4.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 2
F u n dac i on Codi go L i br e Domi n i c an o
+or e8emplo* el usuario A le otorgamos acceso de lectura & escritura para escribir en los arc"ios del
programa xx solamente a traes de este* a"ora el usuario B solamente necesita acceso de lectura & nada
mas sobre los mismos arc"ios a traes del mismo programa.
Los metodos de seguridad de SELinux no reempla/an los tradicionales controles de acceso
discrecionales* por el contrario* los complementa para brindar un control completo & granular de la
seguridad. Codo inicialmente es consultado con la capa de control de acceso discrecional 2;AC4* si esta
niega* no "a& necesidad de consultar la capa de control de acceso obligatorio 23AC4B en caso contrario
.ue el ;AC permite el acceso* entonces se "ace la consulta "acia la capa 3AC para terminar de
erificar los controles de acceso.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 3
F u n dac i on Codi go L i br e Domi n i c an o
Conceptos basi cos de seguri dad
Atri butos de seguri dad
SELinux usa una combinacion de un modelo de identidad* control de acceso en base a roles 269AC4*
enfor/amiento de tipos 2CE4 & categorias de acceso a la informacion. SELinux 69AC autori/a a cada
usuario 2de SELinux4 para un con8unto de roles. Cada rol es autori/ado para un con8unto de tipos.
Esto se logra utili/ando cuatro atributos de seguridad:
1. <dent i dad de usuario: SELinux tiene su propia base de datos de usuarios .ue esta
asociada a la base de datos normal de usuarios de Linux. Las identidades son usadas en ambos*
su8etos & ob8etos. Solamente unos cuantos usuarios de SELinux son definidos: 2pueden ser
listados por el comando Dsemanage user -l4:
userEu F (suarios normales.
s&st emEu F +rocesos iniciados 2al arran.ue4.
root 0 administrador.
2. 6ol e: Los usuarios pueden entrar en diferentes roles. ;iferentes roles pueden entrar en
diferentes dominios. +ara ob8etos 2arc"ios4* esto es siempre ob8 ectEr.
G. Cipo # dominio: Es el atributo HprincipalI en SELinux. Cambien llamado el Hatributo
primarioI. Es* por lo general* solo unos pocos usuarios # roles* pero centenares de tipos. 5o existe
diferencia entre HtiposI & HdominiosI* pero los JdominiosJ son usados para cuando "ablamos de
procesos & los HtiposI para cuando "ablamos de arc"ios. Cada proceso esta confinado en su
propia ca8a de arena* con acceso restringido* tambien llamado HEnfor/amiento de CiposI.
4. Cat egori a # 5i el : +odra establecer la categoria # niel. <ntroducido en 67EL !* 7abilita
los controles de seguri dad 3ul t i 0ni el 23LS4 o seguri dad 3ul t i0cat egori a 23CS4.
Estos cuatro atributos de seguridad* constru&en lo .ue se denomina un Hcont exto de seguri dadI:
!usuario"# !rol"# !ti$o"# !categoria/nivel"
Atri buto de seguri dad Conencion de nombre E8 emplo
usuario %u user%u
rol %r o&'ect%r
ti$o %t unconfined%t
categoria/nivel (ninguna) s*#c*
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 4
F u n dac i on Codi go L i br e Domi n i c an o
Cuando tenemos todos los sericios de red & sistema confinados* tenemos un ma&or control de
seguridad* por.ue no comprometemos al sistema* aislando cada sericio como una entidad independiente.
Control de escal ami ento de pri vi l egi os:
La seguridad esta segmentada en roles principales
userEr: El mas minimo priilegio* asignado simplemente a los usuarosB alguien con este rol*
no puede "acer escalamiento de priilegios ni alternar de rol.
st affEr: Similar al rol userEr* con la diferencia .ue con este rol se puede alternar a los
diferentes roles asignados con el perfil del usuario.
audi t admEr: 6ol encargado de las "erramientas de auditoria de manera unica & exclusia*
los usuarios de este rol solamente desempe=an esta funcion.
secadmEr: 6ol encargado de mane8ar las "erramientas de seguridad* declarar nueos roles*
crear nueas politicas & de er los log de auditoria* mas no puede modificarlos.
s&sadmEr: 6ol maximo en el sistema* pero no puede usar las "erramientas de auditoria ni
modificar estos reportes.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 5
F u n dac i on Codi go L i br e Domi n i c an o
El si stema de archi vos vi rtual /selinux/
El pseudo0sistema de arc"ios /selinux/ contiene los comandos .ue son utili/ados m:s a menudo
por el subsistema del 1ernel. Este tipo de sistema de arc"ios es similar al pseudo sistema /$roc/.
En la ma&or>a de los casos* los administradores & usuarios no necesitan manipular este componente*
en comparaci%n con otros arc"ios & directorios SELinux.
El e8emplo siguiente presenta contenidos de muestra del directorio /selinux/:
-r+-r+-r+- , root root * Se$ -- ,.#,/ access
dr-xr-xr-x , root root * Se$ -- ,.#,/ &ooleans
--+------- , root root * Se$ -- ,.#,/ commit%$ending%&ools
-r+-r+-r+- , root root * Se$ -- ,.#,/ context
-r+-r+-r+- , root root * Se$ -- ,.#,/ create
--+------- , root root * Se$ -- ,.#,/ disa&le
-r+-r--r-- , root root * Se$ -- ,.#,/ enforce
-r+------- , root root * Se$ -- ,.#,/ load
-r--r--r-- , root root * Se$ -- ,.#,/ mls
-r--r--r-- , root root * Se$ -- ,.#,/ $olic0vers
-r+-r+-r+- , root root * Se$ -- ,.#,/ rela&el
-r+-r+-r+- , root root * Se$ -- ,.#,/ user
+or e8emplo* al e8ecutar el comando cat en el arc"io /selinux/enforce reela un 1* para el modo
impositio u obligatorio* o un ,* para el modo permisio.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 6
F u n dac i on Codi go L i br e Domi n i c an o
El archi vo de confi guraci n /etc/s0sconfig/selinux
7a& dos formas de configurar SELinux ba8o 6ed 7at Enterprise Linux & CentKS: usando el
7errami ent a de confi guraci%n de ni el de seguri dad 2s0stem-config-securit0level4* o
manualmente editando el arc"io de configuraci%n 2/etc/s0sconfig/selinux4.
El arc"io /etc/s0sconfig/selinux es el arc"io de configuraci%n principal para "abilitar o
in"abilitar SELinux* as> como tambi@n para configurar cu:l pol>tica de debe imponer en el sistema &
c%mo "acerlo.
LL5KCA: El arc"io /etc/s0sconfig/selinux contiene un enlace simb%lico al arc"io de
configuraci%n real* /etc/selinux/config.
A continuaci%n se explica el subcon8unto completo de opciones disponibles para la configuraci%n:
S12I3456!enforcing7$ermissive7disa&led" M ;efine el estado superior para SELinux en
un sistema.
enforcing o DimpositioD M Se impone la pol>tica de seguridad SELinux.
$ermissive o DpermisioD M El sistema SELinux adierte pero no impone la pol>tica.
Esto es Ntil para prop%sitos de depuraci%n o de resoluci%n de problemas. En modo
permisio* se registrar:n m:s rec"a/os* pues los su8etos podr:n continuar con acciones
.ue de lo contrario ser>an rec"a/adas en el modo impositio. +or e8emplo* naegar en un
:rbol de directorios producir: arios mensa8es de avc# denied para cada niel de
directorio le>do* pero un 1ernel en modo impositio "abr>a detenido la primera acci%n de
este tipo* preiniendo .ue se produ8eran m:s mensa8es de rec"a/o.
disa&led o Din"abilitadoD M SELinux est: completamente desactiado. Los ganc"os
de SELinux no est:n conectados al 1ernel & el pseudo sistema de arc"ios no est:
registrado.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 7
F u n dac i on Codi go L i br e Domi n i c an o
S12I34589:16!targeted7strict": Especifica cu:l pol>tica est: siendo implantada
actualmente por SELinux.
targeted 2ob8etio* dirigido4: Solamente se protegen ciertos demonios particulares.
La imposici%n de pol>ticas para estos demonios se puede actiar & desactiar* utili/ando
alores boleanos controlados por 7errami ent a de confi guraci%n de niel de
seguri dad 2s0stem-config-securit0level4. Al actiar un alor boleano para un
demonio ob8etio se desactia la transici%n de pol>ticas para ese demonio* lo .ue
preiene* por e8emplo* .ue init pase a dhc$d desde el dominio unconfined%t
2ilimitado4 al dominio especificado en dhc$d;te. El dominio unconfined%t permite a
los su8etos & ob8etos con ese contexto de seguridad a e8ecutarse ba8o la seguridad
est:ndar de Linux.
M2S 2Seguridad 3ulti0niel4: Se definen capas de seguridad para cada ob8eto* en
donde solo los usuarios .ue posean los nieles correspondientes o superiores pueden
acceder a las secciones correspondientesB nunca en sentido inerso.
MCS 2Seguridad 3ulti0categoria4: 3u& similar a la seguridad 3ulti0niel* pero con
patrones mas flexibles & faciles de aplicarB debido a .ue uno segmenta la informacion
como si fuese para ser mane8ada por departamentos.
strict 2estricta4: +rotecci%n SELinux completa* para todos los demonios. Se definen
los contextos de seguridad para todos los su8etos & ob8etos & cada simple acci%n es
procesada por el seridor de aplicaci%n de pol>ticas.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 8
F u n dac i on Codi go L i br e Domi n i c an o
Uti l i dades para SELi nux
Los siguientes son algunos de los programas de utilidades usados m:s a menudo por SELinux
/usr/&in/setenforce: 3odifica en tiempo real el modo en .ue se e8ecuta SELinux. Al
e8ecutar setenforce ,* se coloca SELinux en modo impositio. Al e8ecutar setenforce **
SELinux se coloca en modo permisio. +ara desactiar SELinux* se necesita .ue configure el
par:metro en /etc/s0sconfig/selinux o .ue pase el par:metro selinux6* al 1ernel* bien sea en
/etc/gru&;conf o al momento del arran.ue.
/usr/&in/sestatus -v: obtiene el estado detallado de un sistema e8ecutando SELinux. El
e8emplo siguiente muestra un extracto de la salida sestatus:
S12inux status# ena&led
S12inuxfs mount# /selinux
Current mode# enforcing
:olic0 version# ,<
/usr/&in/ne+role: E8ecuta un nueo s"ell en un nueo contexto o papel. La pol>tica debe
permitir la transici%n al nueo papel.
/s&in/restorecon: Configura el contexto de seguridad de uno o m:s arc"ios* marcando los
atributos extendidos con el arc"io apropiado o contexto de seguridad.
/s&in/fixfiles: Aerifica o corrige la base de datos del contexto de seguridad en el sistema
de arc"ios.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 9
F u n dac i on Codi go L i br e Domi n i c an o
Creando nuevas pol i ti cas de SELi nux, Paso a Paso
+ara crear un modulo de politicas de SELinux* se deben tomar en cuenta los siguientes puntos:
+ara saber si las politicas de seguridad de selinux estan enfor/adas se e8ecuta el comando
getenforce;
para obtener las metricas de efectiidad de las politicas de seguridad implementadas se
e8ecuta seinfo;
+ara desactiar el enfor/amiento de SELinux en el momento se e8ecuta setenforce * & para
reactiarlo de nueo se e8ecuta la sentencia setenforce ,;
Si se desea desactiar selinux de manera definitia* se modifica el arc"io
/etc/s0sconfig/selinux & se cambia la directia S12I3456enforcing por S12I3456disa&led;
+ara saber .ue aplicaciones se estan denegando por selinux en el sistema* se utili/a la
"erramienta grafica incluida llamada setrou&leshoot* en caso de no tener soporte de
OPindoP se puede e8ecutar en modo consola:
= sealert -a /var/log/audit/audit;log
para permitir una aplicacion .ue "abia sido denegada por selinux* se genera un modulo de
politicas de seguridad con el siguiente e8emplo:
= ausearch -c >telnetd> -m avc 7 audit-allo+ -M telnetd
Esto generara G arc"ios:
telnet.te : .ue es el con8unto de reglas de seguridad .ue permiten o denegan permisos a
tipos* roles* atributos & dominios de seguridad. Sobre los arc"ios de esta clase es .ue
traba8aremos la ma&oria del tiempo.
telnet.pp : .ue es el pa.uete binario .ue contiene el modulo 2o los modulos4 a cargar
"acia SELinux* para la e8ecucion de las nueas politicas.
telnet.mod : .ue es el modulo de politicas compiladas* no empa.uetadas aun.
;espues de generados todos los arc"ios* si no "a& .ue "acer ninguna modificacion en las
reglas* se procede a la instalacion con semodule -i telnetd;$$B &a esto nos permitira acceso a
los recursos .ue nos fueron negados.
El tipo de politicas de enfor/amiento .ue usaremos sera el modo strict 2estricto4* el cual nos proee
un con8unto de politicas de protecci%n para todos los daemons 2sericios4 del sistema.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 1 0
F u n dac i on Codi go L i br e Domi n i c an o
Como puedo conocer el estado actual de SELi nux?
+ara conocer el estado actual de SELinux* debe e8ecutar el siguiente comando:
= getenforce
(n alor ;isable le indica .ue SELinux esta desactiado* +ermissie le indica .ue SELinux esta
desactiado pero registrando cual.uier eento .ue infringe sus pol>ticas sin tomar ninguna acci%n a
cambio & finalmente un alor de Enforcing le indica .ue SELinux esta actualmente actio & listo para
actuar ante cual.uier eento .ue infrin8a cual.uiera de sus pol>ticas.
<ncidentalmente tambi@n puede usar el comando seinfo para ampliar la informaci%n de estado
mostrada por getenforce* para conocer por e8emplo* cantidad de reglas* atributos* roles* cadenas
booleanas* tipo de pol>tica* ersi%n* etc. Cambien podria ser util listar algunas sentencias booleanas con
seinfo -&;
Que apl i caci ones estan si endo denegadas por SELi nux en mi si stema?
Qedora inclu&e potentes "erramientas para auditar SELinux & con ello una completa descripci%n .ue
nos a&udar:n a solucionar cual.uier problema relacionado a a.uellos eentos .ue infringen las polit>cas
de SELinux* puede utili/ar la "erramienta gr:fica incluida llamada setrou&leshoot* en caso de no
disponer de soporte ORindoP puede tambi@n e8ecutar en modo consola:
= sealert -a /var/log/audit/audit;log
Como puedo permi ti r una apl i caci on a denegada por SELi nux en el si stema?
Es necesario crear pol>ticas de acceso detalladas para cada aplicaci%n .ue se desea tenga acceso a
determinado ob8eto#dominio en su sistema* esta tarea puede ser terriblemente comple8a* es por esto .ue
resulta importante auditar las pol>ticas mediante sealert o setrou&leshoot* all> se dar: cuenta .ue tipo
de acceso fue denegado con mensa8es del tipo: avc# denied ? read@ +rite@ unlinA@ etc; B* basado
en esto podemos crear & cargar pol>ticas en tiempo de e8ecuci%n .ue permitan exactamente los tipos de
acceso .ue SELinux esta pro"ibiendo & registrando.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 11
F u n dac i on Codi go L i br e Domi n i c an o
Aamos a tomar como e8emplo el comando su & supongamos .ue SELinux esta denegando su
e8ecuci%n con mensa8es del siguiente tipo:
avc# denied ? getattr B for $id6./,/ comm6>su> name6>shado+> dev6dm-.
A.u> SELinux nos dice .ue denego el acceso al comando su cuando @ste intent% leer los atributos del
el arc"io #etc#s"adoP sobre la partici%n dm0G* basado en esto crearemos una pol>tica .ue permita
8ustamente el acceso al progrmana su para .ue pueda leer los atributos del arc"io #etc#s"adoP
Nnicamente sobre la partici%n dm0G de la siguiente manera:
= ausearch -c >su> -m avc 7 audit-allo+ -M su C semodule -i su;$$
Anali/ando la linea anterior podemos er .ue inicialmente el comando ausearc" busca eentos .ue
corresponden al comando su* luego en base a esto audit2alloP genera un m%dulo de pol>ticas en binario
llamado su.pp & finalmente semodule carga est@ arc"io de pol>ticas en SELinux.
El e8emplo siguiente nos muestra cual es el codigo de politicas generado* del cual explicaremos como
funciona & como deben reali/arse las politicas para un programa determinado.
module su ,;*C
reDuire ?
class dir searchC
class file ? execute getattr BC
t0$e &in%tC
t0$e default%tC
t0$e selinux%config%tC
t0$e staff%su%tC
role staff%rC
BC
allo+ staff%su%t &in%t#file executeC
allo+ staff%su%t default%t#dir searchC
allo+ staff%su%t selinux%config%t#file getattrC
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 12
F u n dac i on Codi go L i br e Domi n i c an o
En un analisis rapido de este codigo* podemos apreciar lo siguiente:
Se debe declarar el nombre del modulo en la primera linea* & con esta se debe declarar cual
es el numero de ersion de la politica: module su ,;*C
Se define cuales son las clases* macros* tipos* atributos* con8unto de subclases* & roles a
permitir en la politica
+ara definir los re.uerimientos es usa reDuire ? ;;; BC
;entro de reDuire:
se definen las clases de acceso de seguridad a usar con class & son:
dir: para acceso de los directorios
file: para acceso de los arc"ios
process: para acceso de los procesos
se definen los tipos a usar con t0$e
se definen los roles a usar con role
se definen los atributos de tipos a usar con attri&ute
Luego se comien/a a permitir la transici%n de tipos & dominios con allo+
Se debe tomar en cuenta .ue todo lo .ue no "a sido declarado como admitido* esta
denegado por defectoB &a .ue* por su estructura de dise=o* SELinux iene cerrado &
enfor/ado por defectoB & es nuestro deber moldear las politicas .ue me8or a8usten con nuestro
entorno operacional.
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 13
F u n dac i on Codi go L i br e Domi n i c an o
Como permi ti r el acceso a l as apl i caci ones !ue han si do negadas por el
si stema?
Es una buena practica conocer .ue acceso amos a otorgar* ealuando & auditando los registros avc#
denied del arc"io de registro de SELinux* para .ue finalmente crear las reglas en 2 simples pasos &
terminar generando el nueo modulo binario de politicas a aplicar:
= audit-allo+ -M reglaslocales -l -i /var/log/audit/audit;log
Luego se carga la informaci%n de las nueas politicas en SELinux:
= semodule -i reglaslocales;$$
Alternatiamente* si desea conocer las reglas .ue exactamente fueron creadas* puede crear el arc"io
;te* el cual contiene las reglas de e8ecucion de cada tipo de dominio en SELinux basados en audit;log :
= checAmodule -M -m -o reglaslocales reglaslocales;te
Como puedo permi ti r !ue un servi ci o pueda usar cual !ui er puerto?
6egularmente SELinux solo permite .ue determinadas aplicaciones utilicen solo a.uellos puertos
para los cu:les "an sido configurados por defecto* por e8emplo* SS7 regularmente escuc"a por el puerto
22 & de estar SELinux con la pol>tica de referencia strict resultar>a casi imposible intentar cambiarlo a
otro puerto* como por e8emplo al puerto 1,,22* para lograrlo necesitamos desplegar un con8unto de reglas
confinadas en el dominio de SELinux llamado Jsshd%$ortJ para ss" de la siguiente manera:
= semanage $ort -a -t sshd%$ort%t -$ tc$ ,**--
Ktro e8emplo util es cambiar el puerto S, por defecto por donde escuc"a el seridor Peb Apac"e:
= semanage $ort -a -t htt$%$ort%t -$ tc$ <,
Sin embargo* en algunas aplicaciones es comNn el cambio del puerto de sericio* tal es el caso de
SDuid* regularmente s.uid escuc"a por el puerto G12S pero algunos administradores prefieren usar el
S,S, e incluso el S,* SELinux tiene una cadena booleana espec>fica para s.uid llamada
sDuid%connect%an0 la cu:l permite cambiar el puerto de sericio con bastante flexibilidad:
= setse&ool -: sDuid%connect%an0 ,
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 14
F u n dac i on Codi go L i br e Domi n i c an o
Cmo puedo cambi ar l a l ocal i "aci n por defecto de al gunos servi ci os?
Casos comunes* supongamos .ue .ueremos cambiar la locali/aci%n de nuestro seridor Peb* muc"os
administradores o Pebmasters cambian premeditadamente la ruta .ue trae Apac"e por defecto* por
e8emplo un proeedor de "osting acostumbra a utili/ar el directorio /home/+e&/ para alo8ar las p:ginas
Pebs de todo un unierso de dominios* as> pues el creera oportuno aplicar las pol>ticas predefinidas para
el sericio Apac"e* esto lo podemos lograr agregando el tipo de contexto a los arc"ios & directorios de
la siguiente forma:
E semanage fcontext -a -t htt$d%s0s%content%t >/home/+e&(/;F)G>
Ktro sericio es la base de datos 3&SQL* al cambiar la locali/aci%n de los arc"ios de bases de datos
.ue comNnmente se encuentran en /var/li&/m0sDl/ a por e8emplo /d&/m0sDl/ debemos eti.uetar sus
arc"ios con:
= semanage fcontext -a -t m0sDld%d&%t >/d&/m0sDl(/;F)G>
T as> con todos los dem:s sericios de la misma forma* si no sabes cu:l es el contexto de los arc"ios
en SELinux para tu sericio* puedes simplemente buscarlo:
= semanage fcontext -l 7 gre$ dhc$d
/var/li&/dhc$(.)G/dhc$dH;leases;F regular file s0stem%u#o&'ect%r#dhc$d%state%t#s*
/var/li&/dhc$d(/;F)G all files s0stem%u#o&'ect%r#dhc$d%state%t#s*
/usr/s&in/dhc$d;F regular file s0stem%u#o&'ect%r#dhc$d%exec%t#s*
/etc/dhc$dH;conf regular file s0stem%u#o&'ect%r#dhc$%etc%t#s*
/var/run/dhc$dH;$id regular file s0stem%u#o&'ect%r#dhc$d%var%run%t#s*

Entonces podemos deducir .ue* si deseo cambiar los datos almacenados en /var/li&/dhc$d para otro
directorio llamado /data/dhc$d debo aplicarles el contexto de arc"ios dhc$d%state%t;
= semanage fcontext -a -t dhc$d%state%t >/data/dhc$d(/;F)G>
S E L i n u x : Hac i e n do Nu es t r a S e g u r i dad I mpe n et r abl e 15

También podría gustarte