72
UNIT 1 Introduction to System Services J. Valenzuela A. Instituto Profesional DUOC UC Semestre 1 - 2014

UNIT 1 Introduction to System Services

  • Upload
    semah

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

UNIT 1 Introduction to System Services. J. Valenzuela A. Instituto Profesional DUOC UC Semestre 1 - 2014. Objetivos. Comprender como son administrados los servicios. Aprender acerca de los rasgos distintivos comunes entre servicios. - PowerPoint PPT Presentation

Citation preview

Page 1: UNIT 1 Introduction to System Services

UNIT 1Introduction to System Services

J. Valenzuela A.Instituto Profesional DUOC UCSemestre 1 - 2014

Page 2: UNIT 1 Introduction to System Services

Objetivos Comprender como son administrados

los servicios. Aprender acerca de los rasgos

distintivos comunes entre servicios. Introducir los métodos de análisis de

fallas de servicios.

Page 3: UNIT 1 Introduction to System Services

Agenda Conceptos de administración de

servicios. Servicios administrados por init. Administración de servicios System V. Servicios administrados por xinetd. Los archivos /etc/sysconfig. Análisis de fallas. Security Enhanced Linux, SELinux

Page 4: UNIT 1 Introduction to System Services

Administración de Servicios Los servicios son administrados de

varias maneras:

por init por scripts System V por comandos directos Por xinetd

Page 5: UNIT 1 Introduction to System Services

Servicios administrados por init Típicamente servicios no-TCP/IP, por

ejemplo, dial-in modems. Servicios que involucran dial-in modems

o puertos seriales (por ejemplo, terminales tontos) están bajo control de init.

Provee capacidades de respawn – init puede automáticamente volver a ejecutar (respawn) un programa que termina.

Page 6: UNIT 1 Introduction to System Services

Servicios administrados por init La administración del sistema X

Window en run level 5 es un ejemplo de este tipo de servicio.

Configurados en /etc/inittab. Archivos de servicios en el directorio

/etc/init.d.

Page 7: UNIT 1 Introduction to System Services
Page 8: UNIT 1 Introduction to System Services

Administración de servicios System V Los procesos son “wrapped” (envueltos) por

los scripts de inicialización System V. Mas que un script, a menudo son usados

varios archivos de configuración, por servicio. Algunos servicios tiene mas de un demonio

(daemon) administrado por el script service.

El nombre del script y el nombre del demonio que lo inicia a menudo son similares, pero no siempre es así.

Page 9: UNIT 1 Introduction to System Services

Administración de servicios System V La invocación del script del servicio

puede ser realizada directamente, o bien a través del uso del comando service, por ejemplo: /etc/init.d/cups start o bien service cups start.

El comando service es un “wrapper of wrappers”.

Page 10: UNIT 1 Introduction to System Services

chkconfig Administra la definición de servicios a

nivel de runlevels. Por ejemplo, para iniciar el servicio cups

en el booteo: chkconfig cups on. chkconfig no modifica el estado de

ejecución actual de los servicios System V.

Se pueden listar las definiciones de los runlevels con: chkconfig --list.

Page 11: UNIT 1 Introduction to System Services

chkconfig[root@localhost~]# chkconfig --list[root@localhost~]# chkconfig xfs --

list[root@localhost~]# chkconfig --list ¦

grep xfs

Page 12: UNIT 1 Introduction to System Services

chkconfig Usando chkconfig una definición de servicio

persiste a través de los reboots. chkconfig también administra servicios

xinetd.[root@localhost~]# chkconfig cups --listcups 0:off 1:off 2:off 3:on 4:off 5:on …

El comando chkconfig <service> on habilita por defecto el servicio en los runlevels 2, 3, 4 y 5.

Page 13: UNIT 1 Introduction to System Services

chkconfig El comando chkconfig <service> off

deshabilita el servicio en los runlevels 2, 3, 4 y 5.

El comando chkconfig <service> --add asegura que un enlace simbólico kill o start es definido para cada runlevel.

El comando chkconfig <service> --del remueve un servicio desde la administración de chkconfig.

Page 14: UNIT 1 Introduction to System Services

chkconfig Por ejemplo, para “parar” el servicio

httpd en los runlevels 3, 4 y 5, se utilizaría el siguiente comando:

#chkconfig --levels 345 httpd off

Page 15: UNIT 1 Introduction to System Services

Servicios administrados por xinetd Los servicios son iniciados por xinetd en

respuesta a requerimientos entrantes. xinetd es también administrado por un

script System V. El monitorea los puertos usados por todos los servicios bajo su cuidado, y inicia servicios en respuesta a conexiones entrantes.

chkconfig activa/desactiva servicios xinetd instalados: chkconfig cups-lpd on.

Archivos en el directorio /etc/xinetd.d/.

Page 16: UNIT 1 Introduction to System Services

El demonio xinetd xinetd administra recursos específicos de

red y autenticación: servicios necesitados menos frecuentemente, autenticación basada en hosts, servicios estadísticos y de logging, servicios de redirección de IP.

xinetd reemplaza a inetd. xinetd es linkeado con libwrap.so. Archivos de configuración:

/etc/xinetd.conf, /etc/xinetd.d/service.

Page 17: UNIT 1 Introduction to System Services

El demonio xinetd La configuración por defecto de xinetd

se provee en el archivo de configuración de alto nivel /etc/xinetd.conf y archivos para servicios específicos bajo el árbol de directorio /etc/xinetd.d/.

Los servicios que son necesitados menos frecuentemente, o que requieren administración de recursos adicionales, son típicamente controlados por xinetd.

Page 18: UNIT 1 Introduction to System Services

El demonio xinetd xinetd en RHEL es compilado con

soporte libwrap, esto causa que xinetd chequee por los nombres de todos los servicios soportados en host.allow y host.deny.

Page 19: UNIT 1 Introduction to System Services

xinetd default controls Archivo de configuración de alto

nivel: /etc/xinetd.conf. El archivo de configuración

/etc/xinetd.conf define las opciones de configuración globales compartidas por todos los servicios administrados por xinetd.

También provee el path a configuraciones de servicios específicos.

Page 20: UNIT 1 Introduction to System Services

xinetd default controls Un ejemplo de configuración por defecto de

/etc/xinetd.conf se muestra a continuación:defaults{

instances = 60log_type = SYSLOG authprivlog_on_success = HOST PIDlog_on_failure = HOSTcps = 25 30

}includedir /etc/xinetd.d

Page 21: UNIT 1 Introduction to System Services

xinetd service controls Configuración de servicios

específicos: /etc/xinetd.d/<service>.

Page 22: UNIT 1 Introduction to System Services

Archivos /etc/sysconfig Muchos archivos bajo /etc/sysconfig

describen la configuración del hardware de la máquina; sin embargo, algunos de estos archivos configuran parámetros de servicios run-time.

Algunos servicios son configurados por como ellos corren: named, sendmail, dhcpd, samba, init, syslog.

Page 23: UNIT 1 Introduction to System Services

Fault Analysis Determinar la severidad de la falla:

Cuando se está analizando una falla de servicio (o del sistema), se debe considerar su severidad. Mirar y leer los mensajes de error desplegados cuando se presenten.

Estos mensajes pueden ser incluidos en un archivo de log, y a menudo describen el tipo de falla encontrado.

Page 24: UNIT 1 Introduction to System Services

Fault Analysis Los sistemas operativos pueden fallar, o

el hardware del sistema. También es posible, pero raro, que una combinación de estas causas potenciales pueda ocurrir al mismo tiempo, sin embargo, un sector malo en el disco (hardware) puede resultar en malos datos (alguna parte de un archivo de configuración), que puede resultar en una falla de programa al iniciar.

Page 25: UNIT 1 Introduction to System Services

Fault Analysis Inspeccionar los archivos de logs antes

que los archivos de configuración. Usar opciones de comandos para

depurar (debugging). Documentar la investigación.

Page 26: UNIT 1 Introduction to System Services

Security-Enhanced LINUX Security-Enhanced Linux (SELinux), es una

característica de seguridad de LINUX que provee una variedad de políticas de seguridad, a través del uso de los módulos de seguridad LINUX (LSM) incluidos en el kernel LINUX.

SELinux fue desarrollado por NSA (National Security Agency), como un proyecto de investigación. LINUX fue elegido debido a que es open source, y por lo tanto es más fácil probar la tecnología.

Page 27: UNIT 1 Introduction to System Services

Security-Enhanced LINUX El LINUX tradicional deja el control de

acceso al usuario. El usuario decide quien puede accesar sus archivos, basados en membrecía de grupos.

Con la opción ACL activada en el filesystem, los usuarios pueden afinar de gran manera este control. Sin embargo, si un atacante toma el control de la cuenta, puede cambiar estas opciones.

Page 28: UNIT 1 Introduction to System Services

Security-Enhanced LINUX SELinux proporciona un sistema flexible

de Control de Acceso Obligatorio (Mandatory Access Control, MAC) incorporado en el kernel.

Al ejecutar un kernel SELinux MAC se protege al sistema de aplicaciones maliciosas o dañinas que pueden perjudicar o destruir el sistema.

Page 29: UNIT 1 Introduction to System Services

Security-Enhanced LINUX SELinux permite definir el acceso y los

derechos de transición de cada usuario, aplicación, proceso y archivos en el sistema por medio de MAC.

Con MAC, dejamos que el administrador de seguridad decida “quién puede hacer qué sobre cuáles archivos”.

Page 30: UNIT 1 Introduction to System Services

Security-Enhanced LINUX El Control de Acceso Obligatorio de

SELinux se encuentra bajo el control del Administrador de Seguridad.

El control de acceso tradicional está bajo el control del usuario.

Cada proceso u objeto (tal como un archivo, directorio o socket de red) en el sistema tiene un contexto de seguridad SELinux.

Page 31: UNIT 1 Introduction to System Services

Security-Enhanced LINUX Este contexto consiste de un identificador de

usuario SELinux, un rol, y un dominio (para procesos) o un tipo (para objetos archivos):

Identity:role:domain/type La política SELinux controla que identidad

SELinux es asignada a un proceso cuando se inicia. La identidad determina que roles son accesibles para el proceso, y los roles son usados para determinar a que dominios el proceso puede conmutar.

Page 32: UNIT 1 Introduction to System Services

Security-Enhanced LINUX Una vez se está ejecutando en un

dominio particular, la política también determina que acceso un proceso tendrá a los objetos de tipos particulares de SELinux.

La política también determina el tipo por defecto para un objeto nuevo cuando es creado.

Page 33: UNIT 1 Introduction to System Services

El Proceso de Toma de Decisión de SELinux Cuando un sujeto (por ejemplo, una

aplicación), intenta acceder a un objeto (por ejemplo, un archivo), el servidor de la aplicación de políticas en el kernel chequea un vector de acceso en caché (AVC). Si una decisión no se puede hacer basada en los datos en el AVC, la petición continúa hacia el servidor de seguridad, el cual mira el contexto de seguridad de la aplicación y el archivo en una matriz.

Page 34: UNIT 1 Introduction to System Services

El Proceso de Toma de Decisión de SELinux El permiso es entonces concedido o

denegado a continuación, con un avc: denied message detallado en /var/log/messages si el permiso es denegado. El contexto de seguridad de sujetos y objetos es aplicado desde la política instalada, que también proporciona la información para poblar la matriz del servidor de seguridad.

Page 35: UNIT 1 Introduction to System Services

El Proceso de Toma de Decisión de SELinux

Page 36: UNIT 1 Introduction to System Services

Terminología usada en SELinux Los siguientes términos aparecen

frecuentemente nombrados, y constituyen los términos fundamentales de SELinux: Identidad, dominio, tipo, rol, contexto de seguridad, transición y política.

Identidad – Una identidad bajo SELinux NO es lo mismo que el tradicional UID. Las Identidades bajo SELinux forman parte de un contexto de seguridad que afectará los dominios que pueden ser accesados, es decir, afectará lo que se puede realizar.

Page 37: UNIT 1 Introduction to System Services

Terminología usada en SELinux Dominio – Cada proceso se ejecuta en

un dominio. Un dominio directamente determina el acceso que un proceso tiene. Un dominio es básicamente una lista de lo que pueden hacer los procesos, o que acciones un proceso puede realizar sobre tipos diferentes.

Page 38: UNIT 1 Introduction to System Services

Terminología usada en SELinux Tipo - Un tipo se asigna a un objeto y

determina quién puede acceder a ese objeto. La definición de dominio es prácticamente la misma, excepto que un dominio se aplica a los procesos y un tipo se aplica a objetos tales como directorios, archivos, sockets, etc.

Page 39: UNIT 1 Introduction to System Services

Terminología usada en SELinux Rol - Un rol determina qué dominios

se pueden utilizar. Los dominios que un rol de usuario puede tener acceso están predefinidos en los archivos de configuración de la política. Si un rol no está autorizado a entrar en un dominio (en la base de datos de políticas), entonces se puede denegar.

Page 40: UNIT 1 Introduction to System Services

Terminología usada en SELinux Example: In order to allow a user from the user_t

domain (the unprivileged user domain) to execute the passwd command, the following is specified in the relevant config file:

role user_r types user_passwd_t It shows that a user in the user role (user_r) is allowed to enter the user_passwd_t domain i.e. they can run the passwd command.

Page 41: UNIT 1 Introduction to System Services

Terminología usada en SELinux Contexto de seguridad – Un contexto

de seguridad tiene todos los atributos que se asocian con cosas como archivos, directorios, sockets TCP, etc. Un contexto de seguridad está formado por la identidad, el rol y el dominio o el tipo. Es posible revisar su propio contexto de seguridad actual mediante la ejecución del comando id bajo SELinux.

Page 42: UNIT 1 Introduction to System Services

Terminología usada en SELinux Transición – Una decisión de transición,

también conocida como una decisión de etiquetado, determina qué contexto de seguridad será asignado a una operación solicitada. Hay dos tipos principales de transiciones: En primer lugar, hay una transición de dominios de proceso utilizado cuando se ejecuta un proceso de un tipo especificado. En segundo lugar, hay una transición de tipo de archivo utilizada cuando se crea un archivo bajo un directorio en particular.

Page 43: UNIT 1 Introduction to System Services

Terminología usada en SELinux Políticas – Las políticas son un

conjunto de normas que regulan aspectos como los roles que un usuario tiene acceso a, qué roles pueden entrar en que dominios y qué dominios pueden acceder a que tipos.

Page 44: UNIT 1 Introduction to System Services
Page 45: UNIT 1 Introduction to System Services

Opciones de instalación de SELinux Durante la instalación, SELinux es

activado automáticamente. Existen tres opciones que se pueden elegir:

Disabled Warn (permisivo) Active (enforcing) - es la opción por

defecto.

Page 46: UNIT 1 Introduction to System Services

Opciones de instalación de SELinux Cuando la opción –Active es elegida,

solo algunos demonios estarán bajo el control de SELinux, la opción “strict” afectará a todos los demonios.

Cambiar entre los modos enforcing y pasivo, se puede realizar en tiempo de booteo, en tiempo de ejecución o bien hacerlo permanente.

Page 47: UNIT 1 Introduction to System Services

Opciones de instalación de SELinux Para hacerlo permanente editar el

archivo /boot/grub/grub.conf. Se edita dicho archivo y agregar

“enforcing=1” a la línea del kernel para activarlo, “enforcing=0” para desactivarlo.

También se puede utilizar la documentación asociada al archivo /etc/sysconfig/selinux para elegir la opción adecuada.

Page 48: UNIT 1 Introduction to System Services

Opciones de instalación de SELinux Por último, para fijar las opciones de

seguridad podemos utilizar también system-config-securitylevel.

Page 49: UNIT 1 Introduction to System Services

Control de SELinux Las políticas SELinux pueden ser

ajustadas o deshabilitadas a través de algunas utilidades:

system-config-securitylevel setenforce y setsebool /etc/sysconfig/selinux enforcing=0 /selinux virtual filesystem

Page 50: UNIT 1 Introduction to System Services

Control de SELinux

Page 51: UNIT 1 Introduction to System Services

Archivos relacionados con SELinux El pseudo-sistema de archivos /selinux/

contiene los comandos que son más comúnmente utilizados por el subsistema del kernel.

/selinux/ es similar a los también pseudo-sistemas de archivos /proc/ y /sys/.

Los administradores y usuarios normalmente NO necesitan manipular estos componentes.

Page 52: UNIT 1 Introduction to System Services

Archivos relacionados con SELinux /selinux/ presenta información acerca

del estado de SELinux en el kernel a los programas o utilidades antes mencionadas.

Page 53: UNIT 1 Introduction to System Services

Archivos relacionados con SELinux El siguiente ejemplo muestra el

contenido del directorio /selinux/:

Page 54: UNIT 1 Introduction to System Services

Archivos relacionados con SELinux Existen dos maneras de configurar

SELinux bajo RHEL: usando la Security Level Configuration Tool (system-config-selinux), o manualmente, editando el archivo de configuración /etc/sysconfig/selinux.

El archivo /etc/sysconfig/selinux es el archivo de configuración primaria para habilitar o deshabilitar SELinux.

Page 55: UNIT 1 Introduction to System Services

Archivos relacionados con SELinux Debemos notar que el archivo

/etc/sysconfig/selinux contiene un enlace simbólico al actual archivo de configuración /etc/selinux/config.

Las siguientes son las opciones disponibles para configuración:

SELINUX=enforcing | permissive | disabled

SELINUXTYPE=targeted | strict

Page 56: UNIT 1 Introduction to System Services

Archivos relacionados con SELinux

SETLOCALDEFS=0 | 1 El directorio /etc/selinux es la

localización primaria para todos los archivos de políticas así como el archivo de configuración principal.

El siguiente ejemplo muestra el contenido del directorio /etc/selinux/:

Page 57: UNIT 1 Introduction to System Services

Archivos relacionados con SELinux Los dos subdirectorios , strict/ y

targeted/, son los directorios específicos donde los archivos de políticas del mismo nombre (esto es, strict y targeted) están contenidas.

Page 58: UNIT 1 Introduction to System Services

Administración de SELinux Además de las tareas a menudo

realizadas por usuarios, los administradores SELinux deberían ser capaces de realizar una cierta cantidad de tareas adicionales.

Estas tareas típicamente requieren acceso como root al sistema.

El comando sestatus provee una vista configurable acerca del estado de SELinux.

Page 59: UNIT 1 Introduction to System Services

Administración de SELinux

[root@localhost~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted

Page 60: UNIT 1 Introduction to System Services

Administración de SELinux La opción –v incluye información acerca

de los contextos de seguridad de una serie de archivos que son especificados en /etc/sestatus.conf.[root@localhost~]# sestatus -v

La opción –b despliega el estado actual de algunas variables booleanas. [root@localhost~]# sestatus -b ¦ grep httpd ¦ grep on$

Page 61: UNIT 1 Introduction to System Services

Administración de SELinux Podemos habilitar/deshabilitar SELinux

enforcement en tiempo de ejecución o configurarlo para que inicie en el modo correcto en tiempo de booteo, usando el comando setenforce.

SELinux puede operar en uno de tres modos posibles: disabled, permissive o enforcing.

Disabled indica que no está habilitado en el kernel. En esta caso SELinux está completamente desactivado.

Page 62: UNIT 1 Introduction to System Services

Administración de SELinux Permissive indica que SELinux está corriendo y

logeando pero no está controlando los permisos. En este caso SELinux advierte pero NO impone la política.

Este modo es útil para propósitos de depuración o de resolución de problemas.

Enforcing indica que SELinux está corriendo y haciendo cumplir las políticas.

El comando setenforce permite cambiar entre los modos permissive y enforcing en tiempo de ejecución.

Page 63: UNIT 1 Introduction to System Services

Administración de SELinux Se usa setenforce 0 para entrar a modo

permissive y setenforce 1 para entrar a modo enforcing.

El comando setstatus despliega el modo actual y el modo referenciado desde el archivo de configuración durante el booteo:[root@localhost~]# setstatus ¦ grep –i modeCurrent mode: permissiveMode from config file: permissive

Page 64: UNIT 1 Introduction to System Services

Administración de SELinux Notar que cambiando el enforcement en

tiempo de ejecución no afecta la configuración en tiempo de booteo:[root@localhost~]# setenforce 1[root@localhost~]# setstatus ¦ grep –i modeCurrent mode: enforcingMode from config file: permissive

Page 65: UNIT 1 Introduction to System Services

Administración de SELinux Es posible deshabilitar el modo enforcing

para un demonio en particular, por ejemplo, si intentamos hacer troubleshoot al demonio named y SELinux, podemos deshabilitar el enforcing solo para ese demonio.

El comando getsebool obtiene el estado actual del booleano:

[root@localhost~]# getsebool named_disable_transnamed_disable_trans --> off

Page 66: UNIT 1 Introduction to System Services

Administración de SELinux Se usa el siguiente comando para

deshabilitar el modo enforcing para este demonio:

[root@localhost~]# setsebool named_disable_trans 1

[root@localhost~]# getsebool named_disable_trans

named_disable_trans --> on

Page 67: UNIT 1 Introduction to System Services

SELinux para scripts La siguiente es una lista de comandos

introducidos con SELinux, y que pueden ser utilizados cuando se escriben scripts para ayudar a administrar el sistema:

getenforce setenforce [Enforcing ¦ Permissive ¦ 1 ¦

0] selinuxenabled – este comando devuelve

estado 0 si SELinux está habilitado, y 1 si SELinux está deshabilitado.

Page 68: UNIT 1 Introduction to System Services

SELinux para scriptsselinuxenabled echo $? 0

getsebool [-a] [boolean_name] – este comando muestra el estado de todas las variables booleanas (-a) o un booleano especifico (<boolean_name>).

setsebool [-P] <boolean_name> value – Este comando fija uno o más valores booleanos. La opción -P hace los cambios persistentes a través de reboots.

Page 69: UNIT 1 Introduction to System Services

Contextos para SELinux Los contextos de procesos pueden ser

listados agregando la opción –Z al comando ps:[root@localhost~]# ps -Z

Muchos procesos corren en el dominio unconfined_t (no confinado) que indica que ellos no están restringidos por la política por defecto de SELinux.

Page 70: UNIT 1 Introduction to System Services

Contextos para SELinux Los procesos corriendo en otros dominios son

más comúnmente restringidos por la política por defecto de SELinux.

Servicios afectados incluyen dhcpd, hhtpd, mysqld, named, ncsd, ntpd, portmap, postgres, snmpd, squid, syslogd, y winbindd.

Los contextos de seguridad de archivos pueden ser desplegados a través del comando:[root@localhost~]# ls -Z

Page 71: UNIT 1 Introduction to System Services

Contextos para SELinux Un archivo creado es asignado al

contexto de su directorio padre a no ser que la política especifique otra cosa.

El comando chcon (change context) permite cambiar el contexto de un archivo, y trabaja tal cual como lo hacen chown y chmod.

Page 72: UNIT 1 Introduction to System Services

Troubleshooting en SELinux Las violaciones a las políticas SELinux

son registradas en /var/log/messages. Un mensaje de error podría tener el

siguiente aspecto: