Está en la página 1de 48

ADMINISTRADOR

Enero,2008

INDICE DE CONTENIDO

INTRODUCCIN................................................................................ ...........................4 OBJETIVO GENERAL........................................................................... ..........................5 OBJETIVOS ESPECFICOS......................................................... ...................................5 INSTALACIN SEGURA DE LINUX................................................................... ..............6 Eleccin de los medios de instalacin................................................. ....................6 HERRAMIENTAS GENRICAS DE ADMINISTRACIN.............................................. ........6 EL SISTEMA LINUX COMO ROUTER.................................................................. ............7 CORTAFUEGOS............................................................................................................ .8 Clasificacin de Cortafuegos ......................................................... .........................8 Terminologa de Cortafuegos...................................................................... .............9 FIREWALLS SOBRE LINUX....................................................................... ...................12 Iptables......................................................................................................... .........13 Firewall Personal Firestarter................................................................................. ..15 Configuracin......................................................................... ...............................16 SEGURIDAD................................................................................... ............................18 ARCHIVOS DEL SISTEMA.................................................................................... ........20 /etc/passwd......................................................................... ..................................20 /etc/shadow.................................................................................... .......................20 /etc/groups.......................................................................... ..................................20 /etc/gshadow.................................................................................. .......................20 /etc/login.defs............................................................................................. ...........21 /etc/shells.................................................................................. ............................21 /etc/securetty........................................................................ ................................21 Seguridad de archivos / Sistema de archivos................................................ ........21 PLUGGABLE AUTHENTICATION MODULES (PAM).......................................................22 SEGURIDAD DE CONTRASEAS................................................................... ..............23 Almacenamiento de Contraseas...................................................................... ....24 SEGURIDAD BSICA DE SERVICIOS DE RED......................................... .....................24 2

ps................................................................................................................... ........24 lsof.............................................................................................................. ...........25 ARCHIVOS BSICOS DE CONFIGURACIN DE RED....................................................25 tcp_wrappers....................................................................................... ..................26 TCP/IP Y SEGURIDAD DE REDES................................................... .............................27 Mejorar los aspectos de TCP/IP.................................................................. ............27 Seguridad PPP.................................................................... ...................................28 Seguridad IP (IPSec)................................................................. .............................29 DOMAIN NAME SYSTEM (DNS)........................................................................... ........29 El archivo host.conf....................................................................... ........................30 Variables de entorno............................................................................................. .31 LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL (LDAP)...................................... .......32 OpenLDAP ........................................................................................................ .....32 Configuracin de OpenLDAP ............................................................................. ....32 Servicios de Directorio y LDAP............................................. .................................33 Herramientas Grficas de Administracin.............................................. ...............35 Descripciones .............................................................................. .........................35 SHELLS Y SCRIPTS.................................................................................. ...................36 Shells interactivos.................................................................... .............................37 Shells Disponibles............................................................................................. .....40 Programacin scripts en Bash....................................................... ........................42 Variables en Bash............................................................................ ......................43 Comparaciones.............................................................................................. ........44 OPTIMIZAR EL SISTEMA......................................................................... ....................45 Resolver los problemas de memoria principal..................................................... ..45 Mucha utilizacin de CPU....................................................... ...............................46 Reducir el nmero de llamadas.............................................................. ...............46 Mucha utilizacin de disco................................................................................... ..47 ENLACES DE INTERS........................................................................................... .....48

INTRODUCCIN

Los profundos cambios sociales exigen a los ciudadanos el aprendizaje de toda una serie de herramientas bsicas indispensables para desenvolverse en la nueva sociedad, la Sociedad de la Informacin. El Sistema Operativo GNU/Linux ha tenido un gran auge en los ltimos aos y cada vez son ms las personas que optan por este sistema como herramienta de trabajo para llevar a cabo su labor diaria. El mdulo de Administrador tiene como propsito fundamental preparar a profesionales para administrar adecuadamente servidores bajo Sistema Operativo GNU/Linux, proporcionndoles los conocimientos prcticos para ello y generndoles un sentido de anlisis y creatividad para que puedan actuar adecuadamente ante las diversas situaciones en su trabajo diario. La labor de un Administrador del Sistema Operativo GNU/Linux en el mundo laboral actual, exige un alto nivel de conocimientos tcnicos que deben ser aplicados de forma exitosa para garantizar un alto nivel en la calidad de servicios, sin embargo, es necesario ir ms all para lograr el uso de los recursos tcnicos y humanos de forma eficiente. En este sentido, este mdulo profundiza los conceptos y tcnicas vistas en el mdulo de soporte as como adiciona nuevos conceptos referentes a los distintos servicios que puede proveer un servidor bajo GNU/Linux y cul es la mejor forma de implementarlos.

OBJETIVO GENERAL Capacitar al participante para administrar adecuadamente servidores bajo Sistema Operativo GNU/Linux OBJETIVOS ESPECFICOS Al finalizar el curso el participante estar en la capacidad de:

Instalar el Sistema Operativo GNU/LINUX Debian Etch de manera segura.


Aplicar la automatizacin de tareas mediante la programacin de scripts.

Manejar las herramientas genricas de administracin.


Instalacin y configuracin de cortafuegos Configurar y administrar eficientemente los servicios de autenticacin de usuarios de red.

INSTALACIN SEGURA DE LINUX Una adecuada instalacin de Linux es el primer paso para tener un sistema estable y seguro. Hay varios trucos que hacen ms fcil la instalacin, as como algunos asuntos que es mejor llevarlos a cabo durante la instalacin como la estructura de un disco duro. Eleccin de los medios de instalacin Este es el elemento nmero uno, que afectar a la velocidad de instalacin y en buena medida la seguridad. Uno de los mtodos preferidos por los usuarios es la instalacin va ftp, ya que colocar temporalmente una tarjeta de red en una mquina es algo rpido e indoloro, y alcanzar velocidades superiores a 1 Megabyte/seg acaba siendo una instalacin rpida. La instalacin desde el CD-ROM suele ser la ms fcil, ya que se puede arrancar desde ellos, el Linux encuentra el CD sin tener que apuntar a directorios o tener que preocuparse por los nombres de archivos con maysculas o minsculas (al contrario que ocurre en la instalacin basada en disco duro). Se trata de un medio original de Linux.

FTP rpida, requiere una tarjeta de red, y un servidor de ftp. HTTP tambin rpida, y algo ms segura que hacer una llamada a un FTP pblico Samba.

NFS no tan rpida, pero puesto que el NFS est implementado en la mayora de las redes UNIX existentes.

CDROM si se tiene un lector de CDROM rpido, la mejor apuesta es introducir el CD y arrancar desde l, pulsar ENTER unas cuantas veces y ya est listo. Ahora, se puede arrancar desde la mayora de los CDROM's de Linux.

Disco duro generalmente la ms tediosa, las ventanas confunden los nombres de archivo, la instalacin desde una particin ext2 suele ser algo menos tediosa.

Imgenes ISO en CD.

HERRAMIENTAS GENRICAS DE ADMINISTRACIN En el campo de la administracin, tambin se pueden tomar en cuenta algunas herramientas, como las pensadas de forma genrica para la administracin: 6

Linuxconf: esta es una herramienta genrica de administracin donde se agrupan los diferentes aspectos de administracin en una interfaz de mens textual; sta se puede utilizar en casi cualquier distribucin GNU/Linux, y soporta diversos detalles propios de cada una.

Webmin: esta es otra herramienta de administracin pensada para una interfaz Web; funciona con una serie de plugins que pueden se aadidos para cada servicio que se desea administrar; normalmente cuenta con formularios donde se especifican los parmetros de configuracin de los servicios; adems, ofrece la posibilidad, si se activa, de permitir la administracin remota desde cualquier mquina con navegador.

Los entornos de escritorio de Gnome y KDE se sirven del concepto de Panel de control, el cual permite la gestin, tanto el aspecto visual de las interfaces grficas, como tratar algunos parmetros de los dispositivos del sistema.

EL SISTEMA LINUX COMO ROUTER Un sistema Linux puede funcionar haciendo la funcin de router, simplemente se conecta a dos o ms redes y sabiendo, a partir de su tabla de rutas, por qu interfaz puede alcanzar cada red, dirige los paquetes entre una y otra red. Este ser un funcionamiento como router esttico. Para ello es necesario que la caracterstica IP forwarding (o routing entre interfaces) est activada en el ncleo del sistema. Si no est activada, cuando llegue un paquete por una interfaz, no podr dirigirse hacia otra interfaz, porque no estar permitido el routing entre ellos. Se puede comprobar si est activo el IP forwarding con el comando: [root@linux entrega04-1]# cat /proc/sys/net/ipv4/ip_forward 0 En este caso, la salida 0 indica que no est activado el routing del kernel. Se puede activar mediante el comando: #echo 1 >/proc/sys/net/ipv4/ip_forward Los dos mtodos siguientes, haran el cambio permanente. El primero consiste en cambiar el archivo de configuracin del kernel (/etc/sysctl.conf), colocando el siguiente valor: 7

net.ipv4.ip_forward = 1 Otra opcin para que Linux funcione como router, es la de instalar un servidor especializado de routing en nuestro sistema Linux. La sola capacidad de routing, nos permite conectar varias redes, pero nos surge otro problema mayor: la seguridad. Esto hace que la mayora de sistemas Linux (y no Linux) que interconectan redes, incorporen capacidades de seguridad, como los cortafuegos. CORTAFUEGOS Un cortafuegos (o firewall) es un componente o conjunto de componentes que restringen el acceso entre una red protegida e Internet, o entre varias redes. Incluye tanto componentes hardware como software, configuraciones y definicin de polticas de seguridad.

Esquema de red con cortafuegos

Su propsito es doble, proteger los sistemas y servicios internos de los ataques del exterior, y controlar los accesos hacia Internet de nuestros usuarios. Clasificacin de Cortafuegos Segn el nivel de la pila de protocolos sobre el que trabajan, se pueden clasificar los cortafuegos en:

Cortafuegos de Nivel de red: el control de trfico a nivel de red consiste en analizar todos los paquetes que llegan a una interfaz de red, y decidir si se les deja pasar o no, en base al contenido de los mismos: protocolo, direccin de origen, direccin de destino, puerto origen y puerto destino fundamentalmente. Su operacin se asemeja a la de un guardia de trfico que en un cruce decide qu 8

carros pueden pasar y cules no, dependiendo de su origen y su destino. Puesto que analizar esta informacin es muy sencillo, este tipo de cortafuegos suelen ser muy rpidos y transparentes al usuario. Se suelen denominar de filtrado de paquetes (packet a filter). Una mejora sobre este tipo de cortafuegos, seran los de Inspeccin de Estado (Stateful Inspection) que adems, inspeccionan en el interior de los paquetes para comprobar si cumplen las polticas de seguridad.

Cortafuegos de Nivel de Aplicacin: se basan en la instalacin de intermediarios (proxies), tambin conocidos como pasarelas (application gateways). El cliente, situado en un lado del cortafuegos, habla con un intermediario situado en el propio cortafuegos. Este intermediario lo identifica, registra sus peticiones y, si est permitido, las encamina hacia el verdadero servidor situado al otro lado del cortafuegos. La contestacin regresa por el mismo camino, quedando igualmente registrada. El control se hace interceptando las comunicaciones a nivel de aplicacin, modificando el protocolo para incluir medidas adicionales de seguridad. El cortafuegos debe conocer los detalles del protocolo de cada servicio que intercepta, analizar su correcto funcionamiento y aadir los pasos de control precisos a los mismos. Por ejemplo, squid es un proxy que debe conocer el protocolo HTTP para recoger las peticiones de los navegadores cliente y redirigirlas al servidor destino. El cortafuegos es, por tanto, mucho ms inteligente y posee a un control ms fino de todo el proceso de comunicacin, aunque esto supone una mayor carga de trabajo y penalizacin en eficiencia. Adems, normalmente exigen realizar modificaciones en la aplicacin del usuario, como por ejemplo, decirle al navegador que utilice el proxy.

Terminologa de Cortafuegos En una arquitectura de sistema cortafuegos, encontramos una serie de trminos o componentes como son:

host bastin: (tambin se denomina gates) es un sistema especialmente asegurado, pero que puede recibir ataques por estar accesible desde Internet. Tiene como funcin ser el punto de contacto de los usuarios de la red interna de una organizacin con otro tipo de redes. El host bastin filtra trfico de entrada y salida, y tambin oculta la configuracin de la red hacia fuera. 9

filtrado: tambin se conoce como screening, y a los dispositivos que lo implementan se les denomina chokes.

De la combinacin de estos elementos, filtrado y host bastin, surgen las siguientes arquitecturas de cortafuegos:

Cortafuegos de filtrado de paquetes (Screening Router ): un firewall sencillo puede consistir en un dispositivo capaz de filtrar paquetes, un choke. Basado en aprovechar la capacidad de algunos routers denominados screening routers para hacer un enrutado selectivo, es decir, para bloquear o permitir el trnsito de paquetes mediante listas de control de acceso en funcin de ciertas caractersticas de las tramas, de forma que el router acte como pasarela de toda la red.

Dual-Homed Host (Host en dos zonas): este modelo de cortafuegos est formado por mquinas equipadas con dos tarjetas de red y denominadas dual-homed hosts, en las que una de las tarjetas se conecta a la red interna para proteger y la otra a la red externa. En esta configuracin el choke y el bastin coinciden en el mismo equipo.

10

Screened Host: un paso ms en trminos de seguridad de los cortafuegos es la arquitectura screened host o choke-gate, que combina un router con un host bastin, y donde el principal nivel de seguridad proviene del filtrado de paquetes (es decir, el router es la primera y ms importante lnea de defensa). En la mquina bastin, nico sistema accesible desde el exterior, se ejecutan los proxies de las aplicaciones, mientras que el choke se encarga de filtrar los paquetes que se puedan considerar peligrosos para la seguridad de la red interna, permitiendo nicamente la comunicacin con un reducido nmero de servicios.

Screened Subnet (DMZ): la arquitectura Screened Subnet, tambin conocida como red perimetral o Zona Desmilitarizada (De-Militarized Zone o DMZ) aade un nivel ms de seguridad en las arquitecturas de cortafuegos, situando una subred (la DMZ) entre las redes externa e interna, de forma que se consiguen reducir los efectos de un ataque con xito al host bastin. del se host En los modelos se ve anteriores, si la seguridad bastin comprometida, la amenaza extiende automticamente al resto de la red. Como la mquina bastin es un para objetivo muchos interesante

piratas, la arquitectura DMZ intenta aislarla en una red perimetral de forma que un intruso que accede a esta mquina, no consiga un acceso total a la subred protegida. Screened subnet es la arquitectura ms segura, pero tambin la ms compleja; se utilizan dos routers, denominados exterior e interior, conectados ambos a la red

11

perimetrala. En esta red DMZ, que constituye el sistema cortafuegos, se incluye el host bastin y tambin se podrn incluir sistemas que requieran un acceso controlado, como batera de modems, el servidor web o el servidor de correo, que sern los nicos elementos visibles desde fuera de nuestra red. FIREWALLS SOBRE LINUX Los cortafuegos pueden estar basados en la combinacin de un hardware y un software especializado, constituyendo cajas preparadas para realizar esa funcin, como por ejemplo los Nokia o IP, los Cisco PIX o las cajas de StoneSoft. Otros, sin embargo, estn construidos sobre un sistema operativo de propsito general, que se blinda y prepara para funcionar como cortafuegos. En este caso, podemos tener un sistema operativo Solaris, Windows o Linux sobre los que se ejecuta un software como el Firewall-1 de Check Point. Linux se puede encontrar en las dos opciones. Hay empresas que utilizan linux sobre un hardware especfico, dando una caja lista para ser utilizada como cortafuegos, como el iForce de Sun Microsystems. Tambin podemos coger un sistema Linux sobre un PC e instalar un cortafuegos. Lo ms normal, en ambos casos, es utilizar las caractersticas de cortafuegos que incorpora el propio kernel de Linux: iptables. Un sistema cortafuegos puede ofrecer sus servicios a una red que se sita detrs de l, denominndose cortafuegos de la red, o el cortafuegos protege a la propia mquina en la que se ejecuta, denominndose cortafuegos personal. Para un cortafuegos de red, se puede utilizar distribuciones especializadas, que incorporan facilidades de administracin por medio de navegador, integran proxys y utilidades adicionales. Se puede encontrar en este segmento a SmoothWall (www.smoothwall.org) o IPCop (www.ipcop. org). El proceso a seguir consiste en descargarse la imagen ISO de la distribucin, grabar el CD e iniciar la instalacin. El proceso es muy guiado y va haciendo las preguntas correspondientes para configurar el cortafuegos a gusto del usuario. Para un cortafuegos personal, trabajamos con nuestra distribucin favorita y se configura iptables para aadir seguridad. Sin embargo, el trabajar directamente con iptables puede ser muy engorroso y existen interfaces grficas que nos permiten la configuracin y el trabajo de forma ms fcil.

12

Iptables La principal herramienta de cortafuegos para Linux a partir de los kernels 2.4 es iptables, estos reemplazan al anterior ipchains de los kernels de la versin 2.2 y a ipfwadm de los kernels 2.0. La funcin de iptables es la de establecer, mantener e inspeccionar las reglas de filtrado de paquetes IP en el ncleo de Linux. Iptables decide qu paquete de informacin puede pasar, segn unos criterios que se almacenan en unas listas. Las listas se componen de reglas con un orden determinado, donde la ltima regla introducida ser la ltima regla en aplicarse. Cuando un paquete llega, se mira en qu lista debe aplicarse. En esa lista (iptables las llama tablas) se empieza por la primera regla. Si la regla no es aplicable al paquete, se pasa a la siguiente regla. Cuando una regla es aplicable (match) al paquete, se ejecuta la accin que haya sido definida en la regla (descartar el paquete, aceptarlo, enrutarlo, etc).

Recorrido de un paquete utilizando iptables

Cuando iptables recibe el paquete (1), se comprueba si el destino final es nuestra propia mquina o es otra, porque estemos funcionando como router/gateway o cortafuegos. Para los paquetes que van a la propia mquina se aplican las reglas INPUT (2) y para paquetes que van a otras redes o mquinas se aplican las reglas FORWARD (4). Las reglas de OUTPUT (3) se aplican cuando un paquete es enviado desde nuestra mquina al exterior. INPUT,OUTPUT y FORWARD son los tres tipos de reglas de filtrado (FILTER). Antes de aplicar esas reglas es posible aplicar reglas de NAT y de MANGLE. 13

La estructura de un comando iptables es la siguiente : iptables -t [tabla] -[opciones] [regla] [criterio] -j [accin] donde cada elemento significa lo siguiente:

-t [tabla] --> esta parte del comando especifica cul es la tabla en la que aplicamos la regla. Existen 3 tipos de tablas: FILTER, NAT y MANGLE, siendo filter la tabla por defecto si se omite esta parte del comando. Filter, es la tabla donde se aaden las reglas relacionadas con el filtrado de paquetes. Nat, se refiere a las conexiones que sern modificadas por el firewall, como por ejemplo, a enmascarar conexiones, realizar redirecciones de puertos, etc. y Mangle es parecido a Nat, pero tiene la posibilidad de modificar ms valores del paquete.

-[opciones] --> las opciones bsicas del comando son las siguientes : A, para aadir (Append ) una regla. L, es para listar (List) las reglas. F, es para borrar (Flush) todas las reglas o en el caso de que INPUT, FORWARD o OUTPUT sean dados como argumento, se borrarn las reglas asociadas slo a esa clase. P, establece la poltica (Policy) por defecto del firewall. Por defecto es aceptar todas las conexiones.

[regla] --> reglas vlidas son INPUT, FORWARD y OUTPUT. [criterio] --> aqu es donde se especificarn las caractersticas del paquete que casar con esta regla. Algunos ejemplos son: -s : direccin de origen (source). Puede ser una direccin IP o una red. -s 192.168.1.0/24 -d : direccin de destino. -d 84.56.73.3 -p : tipo de protocolo (TCP,UDP,ICMP). -p TCP -sport : puerto de origen 14

-dport: puerto de destino --dport 23 -i = in-interface : el interfaz por el que se entra -i eth0 -o = -out-interface: el interfaz por el que se sale -o ppp0

-j [accion] --> aqu establecemos qu es lo que hay que hacer con el paquete. Las posibles acciones son : ACCEPT: aceptar el paquete. REJECT o DROP: desechar el paquete. La diferencia entre ellos reside en que DROP descartar el paquete silenciosamente y REJECT emitir un paquete ICMP Port Unreachable, indicando que est cerrado el puerto. REDIRECT redirigir el paquete a donde se indique en el criterio del comando. LOG archiva el paquete para su posterior anlisis.

Hay dos maneras de implementar un firewall, segn la poltica por defecto que especifiquemos:

Poltica por defecto ACEPTAR: se aceptan por defecto todos los paquetes. Slo se denegar lo que se diga explcitamente. El equivalente ser la poltica de acceso a un bingo: pueden entrar todas las personas, excepto aquellas cuyo DNI aparezca en la lista de acceso prohibido.

Poltica por defecto DENEGAR: Todo est denegado, y slo se permitir pasar por el firewall aquello que se permita explcitamente. El equivalente sera el acceso a la cmara de cajas de seguridad de un banco. El acceso est prohibido a todo el mundo y se habilita una lista de personas autorizadas a entrar. Para un cortafuegos, se recomienda aplicar esta poltica por defecto.

Firewall Personal Firestarter En realidad es un interface grfico para iptables, muy til para configurar nuestro cortafuegos, ya sea como cortafuegos personal o como cortafuegos para proteger una red. Lo primero que haremos es instalarlo. Para ello utilizamos el siguiente comando: 15

#apt-get install firestarter Podemos lanzar el cortafuegos ejecutando desde la lnea de comandos #firestarter. Esta opcin mostrar las conexiones activas en nuestra mquina en tiempo real. Configuracin La forma ms fcil es con el asistente, que podemos llamar desde la entrada Cortafuegos y Ejecutar asistente, desde el men principal.

Si pulsamos Adelante, pasamos a una ventana en la que se puede seleccionar el interfaz de nuestro sistema que se conecta a Internet. En esta opcin estamos seleccionando el firewall personal que protege nuestra mquina del mundo exterior. Adems, seleccionamos que el cortafuegos se active al conectarnos a Internet.

16

La siguiente pantalla nos permite decidir si el firewall de nuestro sistema adems funcionar como pasarela para otros sistemas, convirtindose en el guardin de nuestra red. Para ello, debemos contar con otra interfaz de red distinta de la anterior, que se conectar a la red protegida. En este caso, como solamente queremos un firewall personal, no activamos la opcin Activar la comparticin de la conexin a Internet. Si quisiramos que ste sea el cortafuegos de nuestra red, debemos especificar la interfaz conectada a la red de rea local interna y si queremos activar el servidor de DHCP para dar direcciones automticamente.

17

Ya se ha terminado una configuracin bsica del cortafuegos para uso personal. Podemos guardar las reglas e iniciar el cortafuegos.

SEGURIDAD Hoy en da existen muchos elementos que afectan la seguridad de un computador. Por ejemplo:

Est en red la mquina? Hay cuentas interactivas de usuarios (telnet/ssh)? Se utilizan las mquinas como estaciones de trabajo o se trata de un servidor?

Esta ltima es de gran relevancia, pues las Estaciones de Trabajo y los Servidores tradicionalmente son muy diferentes, aunque la lnea se difumina con la introduccin de potentes y baratos PCs, a medida que los sistemas operativos se aprovechan de ello. Sin embargo, la principal diferencia entre los computadores no suele estar en el hardware, ni siquiera en el Sistema Operativo, sino en los paquetes de software que traen instalados y en el modo en que los usuarios acceden a la mquina (interactivamente, en la consola, etc.). En este sentido, se mencionan algunas reglas de carcter general que permitirn ahorrar bastantes penurias:

Mantener a los usuarios alejados de los servidores. Es decir, no proporcionarles shells de login interactivos, a menos que sea un requerimiento absoluto. 18

Bloquear las estaciones de trabajo. Utilizar la criptografa all donde sea posible para almacenar claves en texto simple, nmeros de tarjetas de crdito y otro tipo de informacin delicada.

Escanear regularmente la red en busca de puertos abiertos, software instalado que no debera estar ah, compararlo con resultados anteriores.

Es importante resaltar que la seguridad no es una solucin, es un modo de vida. Hablando en trminos generales, las estaciones de trabajo/servidores son utilizados por gente que no se suele preocupar en absoluto por la tecnologa que llevan por debajo, lo nico que quieren es tener listo su trabajo y recoger su correo de forma peridica. Sin embargo, hay muchos usuarios que tendrn la habilidad suficiente como para modificar sus estaciones de trabajo, para bien o para mal. A esto hay que aadirle que la mayora de los usuarios tienen acceso fsico a sus estaciones de trabajo, lo cual quiere decir que hay que bloquearles el acceso si se quiere hacer las cosas bien.

Utilizar las claves de las BIOS para mantener a los usuarios alejados de la BIOS. Configurar la mquina para que arranque nicamente del disco duro adecuado. No dar acceso de root a los usuarios, utilizar sudo para proporcionar acceso a comandos privilegiados cuando sea necesario.

Utilizar cortafuegos para que incluso si se instalan servicios estos no sean accesibles al resto del mundo.

Observar regularmente la tabla de procesos, puertos abiertos, software instalado, entre otros en busca de cambios.

Establecer polticas de seguridad escrita que los usuarios puedan entender, y fortalecerla.

Borrar todo tipo de objetos peligrosos (ejemplo, compiladores), a menos que sean necesarios en un sistema.

Con la configuracin adecuada, una estacin Linux es casi a prueba de usuarios (nada es 100% seguro), y generalmente mucho ms estable.

19

ARCHIVOS DEL SISTEMA /etc/passwd El archivo de contraseas es sin discusin el archivo ms crtico en Linux (y en la mayora de otros Unix). Contiene el mapa de nombres de usuarios, identificaciones de usuarios y la ID del grupo primario al que pertenece esa persona. Tambin puede contener el archivo real, aunque es ms probable (y mucho ms seguro) que utilice contraseas con shadow para mantener las contraseas en /etc/shadow. Las contraseas se guardan utilizando un hash de un slo sentido (el hash utilizado por defecto es crypt, las distribuciones ms nuevas soportan MD5, que es significativamente ms robusto). Las contraseas no pueden obtenerse a partir de la forma cifrada, sin embargo, se puede tratar de encontrar una contrasea utilizando fuerza bruta para pasar por el hash cadenas de texto y compararlas, una vez que encuentres una que coincide, sabes que has conseguido la contrasea. Esto no suele ser un problema por s mismo, el problema surge cuando los usuarios escogen claves que son fcilmente adivinables.

/etc/shadow El archivo de shadow alberga pares de nombres de usuario y contraseas, as como informacin contable, como la fecha de expiracin, y otros campos especiales. Este archivo debera protegerse a toda costa, y slo el root debera tener acceso de lectura a l. /etc/groups El archivo de grupos contiene toda la informacin de pertenencia a grupos, y opcionalmente elementos como la contrasea del grupo (generalmente almacenado en gshadow en los sistemas actuales). Un grupo puede no contener miembros (por ejemplo, no est usado), slo un miembro o mltiples miembros, y la contrasea es opcional (y no se suele usar). /etc/gshadow Similar al archivo shadow de contraseas, este archivo contiene los grupos, contraseas y miembros. De nuevo, este archivo debera ser protegido a toda costa, y slo el usuario root debera tener permiso de lectura al mismo. 20

/etc/login.defs Este archivo permite definir algunos valores por defecto para diferentes programas como useradd y expiracin de contraseas. Tiende a variar ligeramente entre distribuciones e incluso entre versiones, pero suele estar bien comentado y tiende a contener los valores por defecto. /etc/shells El archivo de shells contiene una lista de shells vlidos, si el shell por defecto de un usuario no aparece listado aqu, quizs no pueda hacer login interactivamente. /etc/securetty Este archivo contiene una lista de tty's desde los que el root puede hacer un login. Los tty's de la consola suelen ir de /dev/tty1 a /dev/tty6. Los puertos serie son /dev/ttyS0 y superiores por lo general. Si se quiere permitir al root hacer login va red, entonces se debe aadir /dev/ttyp1 y superiores (si hay 30 usuarios conectados y el root intenta conectar, el root aparecer como procedente de /dev/ttyp31). Generalmente, slo se debera permitir conectar al root desde /dev/tty1, y es aconsejable deshabilitar la cuenta de root, sin embargo antes de hacer esto, se debe instalar sudo o un programa que permita al root acceder a comandos. Seguridad de archivos / Sistema de archivos En Linux, el sistema de archivos ext3 (EXTendido, versin 3). Algo as como el standard UNIX de toda la vida soporta permisos de archivos (lectura, escritura, ejecucin, sticky bit, suid, guid, etc.), propiedad de archivos (usuario, grupo, otros), y otro tipo de estndares. Una de sus desventajas es que no se puede hacer journaling. Sin embargo, Linux tiene excelente software RAID, soportando bastante bien los Niveles 0, 1 y 5 (RAID no tiene que ver con la seguridad, pero por supuesto tiene que ver con la estabilidad). Las utilidades bsicas para interactuar con archivos son: "ls", "chown", "chmod" y "find". Otras incluyen ln (para creacin de enlaces), stat (muestra informacin de un archivo) y muchas ms. En cuanto a la creacin y mantenimiento de sistemas de archivos por s mismos, se tienen "fdisk" (el viejo fdisk), "mkfs" (MaKe FileSystem, que formatea 21

particiones), y "fsck" (FileSystem ChecK, que suele arreglar problemas). Un sistema Linux se puede comprometer con facilidad si se consigue acceso a ciertos archivos, por ejemplo la capacidad para leer un archivo de claves sin shadow da como resultado la posibilidad de ejecutar contraseas cifradas contra crack, encontrando con facilidad las contraseas dbiles. La mayor parte de la seguridad son los permisos de usuarios. En Linux, un archivo es 'propiedad' de 3 entidades separadas, un Usuario, un Grupo y Otros (que es el resto). El usuario root es el que puede asignar a qu usuario pertenece un archivo y a qu grupo, puede tambin cambiar los permisos de un archivo y ver/editar el mismo. Linux no aporta todava proteccin a los usuarios sobre el root (lo cual muchos lo consideran algo bueno). Igualmente, cualquiera que sea dueo del directorio en que est el objeto (sea un usuario/grupo/otros con los permisos adecuados sobre el directorio padre) puede, potencialmente, editar los permisos (y puesto que el root es dueo de / puede hacer cambios que involucren cualquier lugar del sistema de archivos). PLUGGABLE AUTHENTICATION MODULES (PAM) PAM para Linux, es una suite de libreras compartidas que permiten al administrador local del sistema escoger cmo autentifican a los usuarios las aplicaciones. PAM introduce una capa de middleware entre la aplicacin y el mecanismo real de autentificacin. Una vez que el programa est PAMificado, podr ser utilizado por el programa cualquier mtodo de autentificacin que soporte PAM. Adems de esto, PAM puede manejar cuentas y datos de sesiones, lo cual no suelen hacer bien los mecanismos habituales de autentificacin. Por ejemplo, usando PAM se puede deshabilitar con facilidad el acceso de login a los usuarios normales entre las 6pm y las 6am, y cuando hagan login, se les puede autentificar va escner retinal. Por defecto, los sistemas las versiones ms recientes de Debian son conscientes de PAM. De esta forma, en un sistema con soporte PAM, todo lo que se debe hacer para implementar el shadow en contraseas es convertir los archivos de contraseas y de grupos, y posiblemente aadir una o dos lneas a algunos archivos de configuracin de PAM (si no las tienen ya aadidas). 22

En resumen, PAM proporciona una gran cantidad de flexibilidad al manejar la autentificacin de usuarios con el nico requerimiento de uno o dos mdulos PAM para manejarlo. Es necesario este tipo de flexibilidad si se pretende que Linux sea un sistema operativo de tipo empresarial. Las distribuciones que no vengan como "PAMificadas" se pueden convertir, pero requiere mucho esfuerzo ya que se tiene que recompilar todos los programas con soporte PAM, instalar PAM, entre otras. En este sentido, probablemente sea ms fcil cambiarse a una distribucin PAMificada si va a suponer un requisito. Otros beneficios de un sistema orientado a PAM es que ahora se puede hacer uso de un dominio NT para autentificar usuarios, lo cual quiere decir que se pueden plantar estaciones Linux en una red Microsoft ya existente sin tener que comprar NIS / NIS+ para NT y pasar por todo el proceso de instalarlo. SEGURIDAD DE CONTRASEAS En todo sistema operativo tipo UNIX se dan varias constantes, y una de ellas es el archivo /etc/passwd y la forma en que funciona. Para que la autentificacin de usuario funcione correctamente se necesitan (como mnimo) algn tipo de archivo(s) con UID a mapas de nombres de usuarios, GID a mapas de nombres de grupos, contraseas para todos los usuarios y dems informacin variada. El problema es que todo el mundo necesita acceso al archivo de contraseas y durante muchos aos, la solucin ha sido bastante simple y efectiva, simplemente, se hace un hash de las contraseas y se guarda el hash, cuando un usuario necesite autentificar, toma la contrasea que introduce, la pasa por el hash y si coincide, evidentemente se trataba de la misma contrasea. El problema que tiene esto es que la potencia computacional ha crecido enormemente, y ahora se puede tomar una copia del archivo de contraseas e intentar abrirlo mediante fuerza bruta en una cantidad de tiempo razonable. Para resolver esto hay varias soluciones:

Utilizar un algoritmo de hashing "mejor", como MD5. Almacenar las contraseas en alguna otra parte. Linux ha implementado la segunda desde hace tiempo, se llama contraseas con shadow. En el archivo de contraseas, se reemplaza la contrasea por una 'x', lo cual le indica al sistema que verifique tu contrasea contra el archivo shadow (se hace lo mismo con el archivo de grupos y sus contraseas). 23

Almacenamiento de Contraseas Esto es algo que la mayora de los usuarios no suelen tener en cuenta. Cmo se pueden almacenar las contraseas de forma segura? El mtodo ms obvio es memorizarlas, pero suele tener sus inconvenientes, si se administran 30 sitios diferentes, por lo general se tendrn 30 contraseas diferentes, y una buena contrasea tiene ms de 8 caracteres de longitud, y por lo general no es la cosa ms fcil de recordar. Esto conduce a que mucha gente utilice la misma contrasea en diferentes sistemas. Una mejor opcin es almacenar las contraseas en un formato cifrado, generalmente de forma electrnica en el computador o en el palm pilot, de forma que slo hay que recordar una contrasea para desbloquear el resto. Para esto se puede utilizar algo tan simple como PGP o GnuPG. SEGURIDAD BSICA DE SERVICIOS DE RED ps El programa ps muestra el estado de procesos (informacin disponible en el sistema de archivos virtual /proc). La opcin ms comnmente utilizada es "ps -xau", que muestra algo as como toda la informacin que siempre se quiere saber. La forma ms fcil de aprender a leer la salida de ps es irse a la pgina del manual de ps y aprender a qu se refiere cada campo (la mayora se explican por s mismos, tales como el % CPU, mientras que algunos como SIZE son un poco ms oscuros: SIZE es el nmero de pginas de memoria de 4k que est utilizando un programa). Para averiguar qu programas se estn ejecutando, una apuesta segura es hacer 'man <nombre_de_comando>'; lo cual casi siempre suele sacar la pgina del manual que pertenece a ese servicio (como httpd). Te dars cuenta de que servicios como telnet, ftpd, identd y otros no aparecen aunque estn ah. Esto es debido a que se ejecutan desde inetd, el "superservidor". Para encontrar estos servicios, se debe mirar en /etc/inetd.conf o en la salida de "netstat -vat" la cual informa acerca de casi cualquier cosa relacionada con la red. Es especialmente buena para sacar listados de conexiones y sockets activos. Al usar netstat se puede encontrar qu interfaces estn activas y en qu puertos.

24

lsof lsof es un prctico programa cuya idea es similar a la de ps, excepto en que muestra qu archivos/etc estn abiertos, lo cual puede incluir sockets de red. Desafortunadamente, el lsof mucha informacin, de modo que ser necesario utilizar grep o redireccionarlo mediante less ("lsof | less") para hacerlo ms cmodo de leer. ARCHIVOS BSICOS DE CONFIGURACIN DE RED Hay varios archivos de configuracin importantes, que controlan qu servicios ejecuta Linux y cmo lo hacen. Muchos de ellos se encuentran en diferentes localizaciones dependiendo de cmo se instalar Linux y los servicios. Los lugares habituales son:

archivo de configuracin del servidor Inetd: /etc/inetd.conf archivos de inicio de varios tipos: /etc/rc.d/* /etc/*

Lo mejor que se puede hacer es imaginarse qu servicios se quieren ejecutar, y deshabilitar/borrar el resto. inetd.conf es el responsable de iniciar los servicios, generalmente aquellos que no necesitan ejecutarse de continuo, o que estn basados en sesiones (como telnet o ftpd). Ello es debido a que la sobrecarga que supondra ejecutar un servicio constantemente (como telnet) sera mayor que el costo de inicio ocasional cuando el usuario quisiera utilizarlo. Para algunos servicios (como DNS) que sirven a muchas conexiones rpidas, la sobrecarga de arrancar servicios cada pocos segundos sera mayor que tenerlo constantemente ejecutndose. De igual forma ocurre con servicios como DNS y el correo, donde el tiempo es crtico, sin embargo unos pocos segundos de retraso en empezar una sesin de ftp no le hacen dao a nadie. El servicio en s se llama inetd y se ejecuta al arrancar, de modo que se le puede parar/arrancar/recargar manipulando el proceso inetd. Cada vez que se hagan cambios a inetd.con, hay que reiniciar inetd para hacer efectivos los cambios, killall 1 inetd lo reiniciar correctamente. Como de costumbre, las lineas del inetd.conf se pueden comentar con un # (lo cual es una forma muy simple y efectiva de deshabilitar servicios como rexec). Se aconseja desabilitar tantos servicios de inetd.conf como sea posible, por lo

25

general los que se suelen usar son ftp, pop e imap. Se debera reemplazar telnet y los servicios por el SSH y servicios como systat/netstat y finger proporcionan demasiada informacin. El acceso a programas arrancados por inetd se puede controlar con facilidad mediante el uso de TCP_WRAPPERS. tcp_wrappers Usar tcp_wrappers hace que el asegurar servidores contra intrusos externos sea bastante simple. tcp_wrappers se controla desde dos archivos: /etc/hosts.allow /etc/hosts.deny

Primero se comprueba hosts.allow, y las reglas se comprueban desde la primera a la ltima. Si encuentra una regla que permita especficamente entrar (por ejemplo, una regla que permita entrar al host, dominio, mscara de subred, etc.) y deja conectarse al servicio. Si no se puede encontrar ninguna regla que corresponda en hosts.allow, entonces va a comprobar hosts.deny en busca de una regla que deniegue la entrada. De nuevo se comprueban las reglas de hosts.deny desde la primera a la ltima, y la primera regla que encuentre que deniega acceso (por ejemplo, una regla que deshabilite el host, dominio, mscara de subred, etc.) significa que no deja entrar. Si tampoco se puede encontrar una regla que deniegue la entrada, entonces por defecto deja entrar. Si se deja activado un servicio que no debera figurar en inetd.conf y no se tiene una poltica de denegacin por defecto, se pueden tener problemas. Es ms seguro (y lleva un poco ms de trabajo, pero a la larga es menor que tener que reinstalar el servidor) tener reglas de denegacin por defecto para el cortafuegos y tcp_wrappers, de modo que si se olvida algo por accidente, por defecto no tendr acceso. Si se instala algo para lo cual necesitan tener acceso los usuarios y se olvida poner reglas, enseguida se quejarn y se podr rectificar el problema rpidamente. Fallar por precaucin y denegar accidentalmente algo es ms seguro que dejarlo abierto. /etc/services El archivo de servicios es una lista de nmeros de puertos, el protocolo y el nombre correspondiente. El formato es: nombre-de-servicio puerto/protocolo alias # comentario (opcional). Por ejemplo: time 37/udp timserver 26

rlp 39/udp resource # localizacin de recursos name 42/udp nameserver whois 43/tcp nicname # generalmente al sri-nic domain 53/tcp domain 53/udp Por ejemplo, este archivo se utiliza cuando se ejecuta 'netstat -a', y por supuesto no se utiliza cuando se ejecuta 'netstat -an'. TCP/IP Y SEGURIDAD DE REDES El TPC/IP se cre en una poca y en una situacin donde la seguridad no era algo que concerniera demasiado. Inicialmente, 'Internet' (entonces llamada Arpanet), consista en unos pocos hosts, todo eran sitios acadmicos, grandes empresas o gobiernos. Todo el mundo se conoca, y acceder a Internet era un asunto serio. La suite de protocolos TCP/IP es bastante robusta, pero no est prevista para la seguridad (por ejemplo, autentificacin, verificacin, cifrado, etc.). Interceptar paquetes, leer la carga de los datos, y dems, es algo bastante fcil en el Internet de hoy en da. Los ataques ms comunes son los ataques de negacin de servicio, ya que son los ms fciles de ejecutar y los ms difciles de impedir, seguidos del sniffing de paquetes, escaneo de puertos y otras actividades relacionadas. Los nombres de hosts no apuntan siempre a la direccin IP correcta, y las direcciones IP's no siempre se pueden resolver al nombre de host adecuado. Si es posible, no se debe utilizar autentificacin basada en nombres de hosts. Puesto que el envenenamiento de cachs DNS es algo relativamente sencillo, confiar la autentificacin en una direccin IP reduce el problema al spoofing, lo cual es algo ms seguro, pero de ningn modo completamente seguro. No existen mecanismos extendidos para verificar quin envi los datos y quin los est recibiendo, excepto mediante el uso de sesiones o cifrado a nivel IP. Mejorar los aspectos de TCP/IP Se examina la red con el comando atsar, o tambin con netstat -i o con netstat -s | more, para analizar si existen paquetes fragmentados, errores, drops, overflows, entre otros, que 27

puedan estar afectando a las comunicaciones y con esto al sistema; por ejemplo, en un servidor de NFS, NIS, Ftp o Web. Si se detectan problemas, se debe analizar la red para considerar las siguientes actuaciones:

Fragmentar la red a travs de elementos activos que descarten paquetes con problemas, o que no son para mquinas del segmento.

Planificar dnde estarn los servidores para reducir el trfico hacia stos, as como tambin los tiempos de acceso.

Ajustar los parmetros del kernel (/proc/sys/net/), por ejemplo, para obtener mejoras en el throughput hacer: echo 600 > /proc/sys/net/core/netdev max backlog (por defecto 300).

Seguridad PPP PPP permite conexiones TCP/IP, IPX/SPX y NetBEUI sobre lneas serie, la esencia de una conexin PPP consiste en dos dispositivos informticos (un computador, un Palm Pilot, un servidor de terminales, entre otros, conectados sobre enlaces de serie. Ambos extremos llaman al PPP, se negocia la autentificacin y se establece el enlace. PPP no tiene soporte real para cifrado, de modo que si se necesita un enlace seguro hay que invertir en algn tipo de software VPN. La mayora de los sistemas llaman a PPP de la siguiente manera: se hace un login al equipo y luego se invoca al login shell del PPP; por supuesto que esto significa que el nombre de usuario y contrasea se envan en texto claro sobre la lnea, y que hay que tener una cuenta en ese tipo de equipo. En este caso el PPP no negocia la autentificacin en absoluto. Un mtodo algo ms seguro de gestionarlo es utilizar PAP (Password Authentification Protocol - Protocolo de Autentificacin de Contraseas). Mediante PAP, la autentificacin se hace internamente mediante PPP, de modo que no se requiere una cuenta real en el servidor. Sin embargo el nombre de usuario y la contrasea se siguen enviando en texto claro, pero al menos el sistema es algo ms seguro dada la inexistencia de cuentas de usuario reales. El tercer (y mejor) mtodo para la autentificacin es utilizar CHAP (Challenge Handshake

28

Authentication Protocol, Protocolo de Autentificacin Desafo-Respuesta). Ambas partes se intercambian llaves pblicas y las utilizan para cifrar los datos que se envan durante la secuencia de autentificacin, de modo que el nombre de usuario y la contrasea estn relativamente a salvo de intrusos, y sin embargo las transmisiones de datos se hacen con normalidad. Seguridad IP (IPSec) Seguridad IP (IPSec) es el cifrado del trfico de red. No se puede cifrar la informacin de la cabecera ni el trailer, pero se puede cifrar la carga til. Esto permite asegurar protocolos como POP/WWW sin tener que cambiarlos de ninguna forma, puesto que el cifrado se hace en el nivel IP. Tambin permite conectar de forma segura LANs y clientes entre s, sobre redes inseguras (como Internet). DOMAIN NAME SYSTEM (DNS) El direccionamiento en TCP/IP se basa en nmeros de 32 bits. Evidentemente, esos nmeros no son fciles de recordar, mientras que si lo es el nombre que se le asigna a cada mquina. Existe una aplicacin que es capaz de traducir nombres a direcciones IP, y es conocida como sistema de resolucin de nombres (DNS), la cual es una aplicacin que encuentra la direccin IP correspondiente a una mquina de la que se conoce su nombre, no se tienen que incluir rutinas para ello, ya que en las libreras estndares (libc) existen ya rutinas preparadas, como gethostbyname(3) o gethostbyaddr(3). En otros sistemas las rutinas se encuentran en otras libreras distintas de la libc pero esto no sucede en Linux. Al conjunto de rutinas que hacen estas tareas se les conoce como sistema de resolucin. En una red pequea no es difcil mantener una tabla /etc/hosts en cada mquina, y modicarla. Pero resulta complicado cuando hay muchas mquinas ya que, en principio, cada una necesita una copia de /etc/hosts. Una solucin a esto es compartir esta y otras bases de datos con el NIS, o sistema desarrollado por Sun Microsystems y conocido tambin como de informacin de red pginas amarillas. En este caso, las bases de datos como la de /etc/hosts se mantienen en un servidor NIS central y los clientes accedern a ellas de forma transparente al usuario. En todo caso, esta solucin solo es aconsejable para redes pequeas o medianas, ya que implican mantener un archivo central /etc/hosts que puede crecer mucho, y luego distribuirlo 29

entre los servidores NIS. En Linux, como en muchos otros sistemas Unix, el servicio de nombres se realiza mediante un programa llamado named. Al iniciarse, carga un conjunto de archivos maestros en su cache y espera peticiones de procesos locales o remotos. Cuando hablamos del sistema de resolucin, no nos referiremos a una aplicacin en particular, sino a la biblioteca de resolucin es decir, un conjunto de funciones que pueden encontrarse en las bibliotecas estndar del lenguaje C. Las rutinas principales son gethostbyname(2) y gethostbyaddr(2), que buscan la direccin IP de una mquina a partir del nombre y viceversa. Es posible congurarlas para que simplemente miren en el archivo hosts local (o remoto, si se usa NIS). Otras aplicaciones, como smail, pueden incluir diferentes rutinas para esto y necesitan cierto cuidado. El archivo host.conf El archivo host.conf es fundamental para controlar la conguracin del sistema de resolucin de nombres. Se encuentra en el directorio /etc e indica al sistema de resolucin que servicios debe usar y en que orden. Las opciones del archivo host.conf deben estar en lineas distintas. Los campos deben separarse por blancos (espacios o tabuladores). Las opciones disponibles son las siguientes:

order: determina el orden en el que los servicios de resolucin se usan. Opciones vlidas son bind para usar el servidor de nombres, hosts para buscar en /etc/hosts y nis para buscar con NIS. Puede especicarse cualquiera de las anteriores, y el orden de aparicin determina qu servicio se prueba en primer lugar para intentar resolver el nombre.

multi: va con las opciones on u o y determina si una mquina del archivo /etc/hosts puede tener distintas direcciones IP o no. Esta opcin no tiene efecto en peticiones va NIS o DNS.

nospoof:

DNS le permite encontrar un nombre de mquina perteneciente a una

direccin IP dada utilizando el dominio in-addr.arpa. Los intentos de los servidores de nombres de proporcionar un nombre falso se conocen en Ingls como spoong. Para evitar esto, el sistema puede configurarse para comprobar si las direcciones IP 30

originales estn de hecho asociadas con el nombre obtenido. Si no, el nombre ser rechazado y se retornar un error. Esta opcin se activa poniendo nospoof on.

alert: esta opcin puede ir con las palabras on u o, si se activa, cualquier intento de dar nombre falso sera anotado con un mensaje enviado al sistema de registros syslog.

trim: lleva un nombre de dominio como argumento que se quitar a los nombres antes de buscar su direccin. Es til para las entradas del archivo hosts, que podrn as ir solos los nombres de mquinas, sin el dominio. Cuando se busque una mquina con el nombre de dominio local este ser eliminado, haciendo que la bsqueda en el archivo /etc/hosts tenga xito. Esta opcin puede ir repetida con varios dominios, de modo que su mquina podra ser local a diversos dominios.

Variables de entorno Existen algunas variables de entorno que establecen opciones que tienen mas prioridad sobre las puestas en el archivo host.conf. Estas son:

resolv host conf: especfica un archivo alternativo a /etc/host.conf. resolv serv order: establece la opcin equivalente a la orden order del archivo anterior. los servicios pueden ser hosts, bind y/o nis, separados por comas, espacios, puntos o puntos y coma.

resolv spoof check: determina la poltica seguida frente a los nombres falsos. Estar completamente desactivada con la opcin o. con las opciones warn y warn o se realizaran comprobaciones contra los nombres falsos, pero en el primer caso se mandaran los avisos al registro. un valor * activa las comprobaciones contra nombres falsos, pero las anotaciones en el registro se dejan como diga el archivo host.conf.

resolv multi: el valor on activa la opcin multi, y el valor o la desactiva resolv override trim domains: esta variable lleva una lista de dominios por defecto, similar a la puesta en el archivo host.conf con la opcin trim.

resolv add trim domains: esta variable lleva una lista de dominios por defecto que se aade a las que se dan en el archivo host.conf.

31

LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL (LDAP) LDAP es un protocolo a nivel de aplicacin que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa informacin en un entorno de red. LDAP tambin es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) al que pueden realizarse consultas. Habitualmente, almacena la informacin de login (usuario y contrasea) y es utilizado para autenticarse aunque es posible almacenar otra informacin (datos de contacto del usuario, ubicacin de diversos recursos de la red, permisos, certificados, etc). En conclusin, LDAP es un protocolo de acceso unificado a un conjunto de informacin sobre una red. OpenLDAP Se trata de una implementacin libre del protocolo que soporta mltiples esquemas por lo que puede utilizarse para conectarse a cualquier otro LDAP. Tiene su propia licencia, la OpenLDAP PUBLIC LICENSE, al ser un protocolo independiente de la plataforma, varias distribuciones LINUX OpenLDAP tiene cuatro componentes principales:

slapd - demonio LDAP autnomo. slurpd - demonio de replicacin de actualizaciones LDAP autnomo. Rutinas de biblioteca de soporte del protocolo LDAP. Utilidades, herramientas y clientes.

Configuracin de OpenLDAP

Archivos de Configuracin: /etc/openldap/* Informacin sobre la configuracin: configurar los servidores slapd y slurpd puede ser complejo. Asegurar el directorio LDAP, especialmente si se estn almacenando datos no pblicos como bases de datos de contraseas, puede ser tambin una tarea desafiante. Se necesita modificar los archivos /etc/openldap/slapd.conf y /etc/openldap/ldap.conf para ajustar OpenLDAP a las necesidades particulares. 32

Los recursos que pueden ayudar con tpicos tales como, elegir un directorio de configuracin, controladores y definiciones de bases de datos, ajustes del control de acceso, lanzarlos como un usuario diferente a root y establecer el entorno chroot, incluyen:

La pgina de manual de slapd La pgina de manual de slapd.conf La Gua del Administrador de OpenLDAP 2.2 Los documentos que se encuentran en http://www.openldap.org/pub/

Servicios de Directorio y LDAP En el contexto de las redes de computadores, se denomina directorio a una base de datos especializada que almacena informacin sobre los recursos, u "objetos", presentes en la red (tales como usuarios, computadores, impresoras, etc.) y que pone dicha informacin a disposicin de los usuarios de la red. Por este motivo, esta base de datos suele estar optimizada para operaciones de bsqueda, filtrado y lectura ms que para operaciones de insercin o transacciones complejas. Existen diferentes estndares que especifican servicios de directorio, siendo el denominado X.500 tal vez el ms conocido. El estndar X.500 define de forma nativa un protocolo de acceso denominado DAP (Directory Access Protocol) que resulta muy complejo (y computacionalmente pesado) porque est definido sobre la pila completa de niveles OSI. Como alternativa a DAP para acceder a directorios de tipo X.500, LDAP (Lightweight Directory Access Protocol) ofrece un protocolo ligero casi equivalente, pero mucho ms sencillo y eficiente, diseado para operar directamente sobre TCP/IP. Actualmente, la mayora de servidores de directorio X.500 incorporan LDAP como uno de sus protocolo de acceso. LDAP permite el acceso a la informacin del directorio mediante un esquema cliente-servidor, donde uno o varios servidores mantienen la misma informacin de directorio (actualizada mediante rplicas) y los clientes realizan consultas a cualquiera de ellos. Ante una consulta concreta de un cliente, el servidor contesta con la informacin solicitada y/o con un puntero donde conseguir dicha informacin o datos adicionales (normalmente, el "puntero" es otro servidor de directorio). 33

Internamente, el modelo de datos de LDAP (derivado de X.500, pero algo restringido) define una estructura jerrquica de objetos o entradas en forma de rbol, donde cada objeto o entrada posee un conjunto de atributos. Cada atributo viene identificado mediante un nombre o acrnimo significativo, pertenece a un cierto tipo y puede tener uno o varios valores asociados. Toda entrada viene identificada unvocamente en la base de datos del directorio mediante un atributo especial denominado nombre distinguido o dn (distinguished name). El resto de atributos de la entrada depende de qu objeto est describiendo dicha entrada. Por ejemplo, las entradas que describen personas suelen tener, entre otros, atributos como cn (common name) para describir su nombre comn, sn (surname) para su apellido, mail para su direccin de correo electrnico, etc. La definicin de los posibles tipos de objetos, as como de sus atributos (incluyendo su nombre, tipo, valor(es) admitido(s) y restricciones), que pueden ser utilizados por el directorio de un servidor de LDAP la realiza el propio servidor mediante el denominado esquema del directorio. Es decir, el esquema contiene las definiciones de los objetos que pueden darse de alta en el directorio. El nombre distinguido de cada entrada del directorio es una cadena de caracteres formada por pares <tipo_atributo>=<valor> separados por comas, que representa la ruta invertida que lleva desde la posicin lgica de la entrada en el rbol hasta la raz del mismo. Puesto que se supone que un directorio almacena informacin sobre los objetos que existen en una cierta organizacin, cada directorio posee como raz (o base, en terminologa LDAP) la ubicacin de dicha organizacin, de forma que la base se convierte de forma natural en el sufijo de los nombres distinguidos de todas las entradas que mantiene el directorio. Existen dos formas de nombrar, o estructurar, la raz de un directorio LDAP:

Nombrado "tradicional": formado por el pas y estado donde se ubica la organizacin, seguida por el nombre de dicha organizacin. Por ejemplo, la raz o base de la Universidad Politcnica de Valencia podra ser algo as: "o=UPV, st=Valencia, c=ES".

Nombrado basado en nombres de dominio de Internet (es decir, en DNS): este nombrado utiliza los dominios DNS para nombrar la raz de la organizacin. En este caso, la base de la UPV sera: "dc=upv, dc=es". Este es el nombrado que vamos a utilizar puesto que permite localizar a los servidores de LDAP utilizando bsquedas DNS.

A partir de esa base, el rbol se subdivide en los nodos y subnodos que se estime oportuno 34

para estructurar de forma adecuada los objetos de la organizacin, objetos que se ubican finalmente como las hojas del rbol. De esta forma, el nombre distinguido de cada entrada describe su posicin en el rbol de la organizacin (y vice-versa), de forma anloga a un sistema de archivos tpico, en el que el nombre absoluto (unvoco) de cada archivo equivale a su posicin en la jerarqua de directorios del sistema, y vice-versa. Herramientas Grficas de Administracin Entre las diferentes herramientas grficas con las que se puede manipular un directorio de tipo LDAP en Linux, existe una denominada Directory Administrator, sencilla y cmoda para su instalacin. Para instalarlo se debe descargar el paquete directory-administrator y ejecutar el comando: # apt-get install directory-administrator Una vez instalado, se invoca su ejecutable (directory-adminstrator). La primera vez que se ejecuta, lanza un asistente que pide la informacin sobre el servidor de LDAP, la base del directorio, una credencial para la conexin ("dn" y contrasea), etc. Una vez terminado el asistente, debera aparecer la ventana principal, donde se visualizar un objeto por cada usuario y grupo dado de alta en el directorio. Antes de seguir, se tiene que ir a las opciones de configuracin para activar la codificacin de contraseas "md5" y para desactivar el uso del atributo "authPassword" para almacenar la contrasea. A partir de ese momento, ya se est en condiciones de aadir, modificar y borrar usuarios y grupos del directorio, mediante una simple interaccin con la herramienta. Si esta herramienta se convierte en la herramienta fundamental de gestin de usuarios y grupos en el dominio Linux, se necesita tener en mente un par de precauciones: en primer lugar, si se desea mantener la filosofa de grupos privados, se debe crear el grupo privado de un usuario antes que el propio usuario, ya que en este ltimo paso slo se puede seleccionar su grupo primario. Y en segundo lugar, se tiene que gestionar manualmente los directorios de conexin de los usuarios que se crean. Descripciones

ldapadd --> abre una conexin a un servidor LDAP, enlaza y aade entradas. 35

ldapcompare --> abre una conexin a un servidor LDAP, enlaza y hace una comparacin usando los parmetros especificados.

ldapdelete --> abre una conexin a un servidor LDAP, enlaza y borra una o ms entradas.

ldapmodify --> abre una conexin a un servidor LDAP, enlaza y modifica entradas. ldapmodrdn --> abre una conexin a un servidor LDAP, enlaza y modifica el RDN de las entradas.

ldappasswd --> es una herramienta para establecer la contrasea de un usuario LDAP.

ldapsearch --> abre una conexin a un servidor LDAP, enlaza y hace una bsqueda usando los parmetros especificados.

ldapwhoami --> abre una conexin a un servidor LDAP, enlaza y realiza una operacin whoami.

slapadd --> se usa para aadir entradas especificadas en el formato Intercambio de Directorio de LDAP (LDIF) en una base de datos slapd.

slapcat --> se usa para generar una salida LDAP LDIF basada en el contenido de una base de datos slapd.

slapd --> es el servidor LDAP independiente. slapindex --> se usa para regenerar ndices slapd basados en el contenido actual de una base de datos.

slappasswd --> es una utilidad de contraseas OpenLDAP. slurpd --> es el servidor rplica LDAP independiente. liblber y libldap --> estas libreras dan soporte a los programas LDAP y suministran funcionalidad a otros programas que interactuan con LDAP.

SHELLS Y SCRIPTS Shell, es un trmino genrico que se utiliza para nombrar a un programa que sirve de 36

interfaz entre el usuario y el ncleo (kernel) del sistema GNU/Linux. Es una utilidad que le permite a los usuarios interactuar con el kernel por medio de la interpretacin de comandos que stos mismos introducen en la lnea de comandos o en los archivos de tipo shell script. Estos shell son los que los usuarios ven del sistema, ya que el resto del sistema operativo permanece esencialmente oculto a sus ojos. El shell se encuentra escrito de la misma forma que un proceso (programa) de usuario; no se encuentra integrado en el kernel, sino que se ejecuta de la misma forma que un programa ms del usuario. Al arrancar el sistema GNU/Linux, ste suele presentarle a los usuarios una interfaz de cara determinada; esta interfaz puede ser tanto de texto, como grfica. Dependiendo de los modos, o niveles, de arranque del sistema, ya sea con los diferentes modos de consola de texto o con modos donde directamente se cuente con un arranque grfico en X Window. Para el caso de los modos de arranque grfico, la interfaz se compone de algn administrador de acceso por medio del cual se gestiona el proceso de login del usuario desde una interfaz grfica, en la que se le pide la informacin de entrada correspondiente, como su identificador de usuario y su clave de acceso, o passsword. En GNU/Linux son muy comunes los gestores o administradores de acceso: xdm que es propio de X Window, gdm (Gnome), y kdm (KDE), as como tambin algn otro asociado a diferentes administradores de ventanas (window managers). Al validar el acceso, el usuario se encuentra dentro de la interfaz grfica de X Window con algn administrador de ventanas, como Gnome o KDE. Si se desea interactuar desde un shell interactivo, slo se debe abrir alguno de los programas de emulacin de terminal disponibles. Si se accesa por modo consola, en texto, una vez validados se obtendr el acceso directo al shell interactivo. Otro ejemplo de la obtencin de un shell interactivo es el acceso remoto a la mquina, ya sea por medio de cualquiera de las posibilidades de texto como telnet, rlogin, ssh, o las grficas como los emuladores X Window. Shells interactivos Al iniciar un shell interactivo, se muestra un prompt de cara al usuario, el cual le indica que puede introducir una lnea de comando. Despus de introducirla, el shell asume la responsabilidad de validarla y poner los procesos necesarios en ejecucin, mediante una 37

serie de fases:

Leer e interpretar la lnea de comandos. Evaluar los caracteres comodn como $ * ? u otros. Gestionar las redirecciones de E/S necesarias, los pipes y los procesos en segundo plano (background) necesarios (&).

Manejar seales. Preparar la ejecucin de los programas.

En general, las lneas de comandos pueden ser ejecuciones de comandos del sistema, comandos propios del shell interactivo, puestas en marcha de aplicaciones o shell scripts. Estos shell scripts son archivos de texto que contienen secuencias de comandos de sistema, sumado a una serie de comandos propios del shell interactivo, ms las estructuras de control necesarias para procesar el flujo del programa (tipo while, for, entre otros). Los archivos script se ejecutan de forma directa por el sistema bajo el nombre que se le haya dado a dicho archivo. Para ejecutarlos, se invoca el shell junto con el nombre del archivo, o bien se le conceden permisos de ejecucin al shell script. De cierta forma, se puede ver el shell script como cdigo de un lenguaje interpretado que se ejecuta sobre el shell interactivo correspondiente. Para el administrador, los shell scripts son muy importantes bsicamente por dos razones: 1. La configuracin del sistema y de la mayora de los servicios proporcionados se llevan a cabo por medio de herramientas proporcionadas en forma de shell scripts. 2. La forma principal para automatizar los procesos de administracin es por medio de la creacin de shell scripts por parte del administrador. Todos los programas que se invocan por medio de un shell poseen tres archivos predefinidos, especificados por los correspondientes descriptores de archivos (file handles). Estos archivos son por defecto: 1. standard input (entrada estndar): es la que en general se le asigna al teclado del terminal o consola; utiliza el descriptor nmero 0, tambin, en UNIX los archivos 38

utilizan descriptores enteros. 2. standard output (salida estndar): en general, se le asigna a la pantalla del terminal, utiliza el descriptor 1. 3. standard error (salida estndar de errores): ste en general se le asigna a la pantalla del terminal; utiliza el descriptor 2. Esto destaca el hecho de que cualquier programa ejecutado desde el shell tendr por defecto la entrada asociada al teclado del terminal, su salida hacia la pantalla y, en el caso de producirse errores, tambin los enva a la pantalla. Por otro lado, los shells normalmente ofrecen los tres mecanismos presentados a continuacin: 1. Redireccin: ya que los dispositivos de E/S y los archivos se tratan de la misma forma en UNIX, el shell los trata a todos slo como archivos. Desde el punto de vista del usuario, se pueden redefinir los descriptores de los archivos para que los flujos de datos de un descriptor vayan a cualquier otro descriptor; a esto se le conoce como redireccin. 2. Tuberas (pipes): la salida estndar de un programa puede ser utilizada como entrada estndar de otro por medio de estas tuberas o pipes. Varios programas pueden ser conectados entre s mediante stas para formar lo que se denomina un pipeline. 3. Concurrencia de programas de usuario: los usuarios pueden ejecutar varios programas al mismo tiempo, indicando que su ejecucin se va a producir en segundo plano (background), en trminos opuestos a primer plano (o foreground), donde se tiene un control exclusivo de pantalla. Otro uso consiste en permitir trabajos largos en segundo plano al usuario, interactuar con el shell con otros programas en primer plano. En el caso de los shells UNIX/Linux estos tres aspectos suponen en la prctica: 1. Redireccin: un comando va a poder recibir su entrada o salida desde otros archivos o dispositivos. 2. Pipes: encadenamiento de varios comandos, con transmisin de sus datos: comando1 | comando2 | comando3.

39

Esta instruccin indica que comando1 recibir una posible entrada de teclado, enviar su salida a comando2, que la recibir como entrada, y ste producir salida hacia comando3, que la recibe y produce su salida hacia salida estndar, la pantalla, por defecto. 3. Concurrencia en segundo plano: cualquier comando ejecutado con el & al final de la lnea se ejecuta en segundo plano y el prompt del shell se devuelve de forma inmediata al mismo tiempo que contina su ejecucin. Se le puede dar seguimiento a la ejecucin de los comandos con el comando ps y sus opciones, el cual permite ver el estado de los procesos en el sistema. Tambin se cuenta con la orden kill, la cual permite eliminar los procesos que todava se encuentren en ejecucin, o que hayan incurrido en alguna condicin de error: kill pid permite matar el proceso nmero pid, donde pid que es el identificador asociado al proceso, que es un nmero entero que el sistema le asigna y que puede obtenerse por medio del comando ps. Shells Disponibles La independencia del shell con respecto al kernel del sistema operativo, sabiendo que el shell es slo una capa de interfaz, permite disponer de varios de stos en el sistema. Algunos de los ms comunes son:

El shell Bash (bash): el shell Linux por defecto. El shell Bourne (sh): ste ha sido desde siempre el shell estndar UNIX, y el que todos los UNIX poseen en alguna versin. En general, es el shell por defecto del administrador (root). El Bash en GNU/Linux es a menudo una versin mejorada del Bourne. El indicador, o prompt, por defecto es a menudo un $ (en root un #).

El shell Korn (ksh): este es un superconjunto del Bourne, ya que se mantiene cierta compatibilidad, escrito en AT&T por David Korn a mediados de los ochenta, donde se hizo cierta mezcla de funcionalidades del Bourne y del C, ms algn agregado. El prompt por defecto es el $.

El shell C (csh): tiene unos cuantos agregados interesantes al Bourne, como un histrico de comandos, alias, aritmtica desde la lnea de comandos, completa los nombres de los archivos y control de trabajos en segundo plano. El prompt por defecto 40

para los usuarios es %, una ventaja de los scripts en C shell es que, como su nombre indica, su sintaxis se basa en el lenguaje C. Aspectos que son comunes a todos los shells

Todos permiten la escritura de shell scripts que son luego interpretados al ser ejecutados ya sea por el nombre, si el archivo cuenta con permiso de ejecucin, o ya sea pasndolo como parmetro al comando del shell.

Los usuarios del sistema cuentan con un shell por defecto asociado a ellos. Esta informacin se proporciona al crear las cuentas de los usuarios. El administrador asigna un shell a cada usuario, o bien si no se asigna el shell por defecto, bash en GNU/Linux. Esta informacin se guarda en el archivo de passwords en /etc/passwd.

Cada shell es realmente un comando ejecutable, que se encuentra presente en los directorios /bin en GNU/Linux (o /usr/bin).

Se pueden escribir shell scripts en cualquiera de stos, pero se debe ajustar a la sintaxis de cada uno, que es normalmente diferente, ya que a veces existen slo pequeas diferencias. La sintaxis de las construcciones, as como los comandos internos, se encuentran bien documentados en la pgina man de cada shell.

Cada shell cuenta con algunos archivos de arranque asociados, llamados archivos de inicializacin, donde cada usuario puede adaptarlos a sus necesidades, incluyendo cdigo, variables, caminos (path).

La potencia en la programacin radica en la combinacin de la sintaxis de cada shell (de sus construcciones), con los comandos internos de cada shell, y una serie de comandos UNIX muy utilizados en los scripts, como por ejemplo los grep, sed, awk.

Si como usuarios se utiliza un shell determinado, nada impide arrancar una copia nueva de shell, llamada subshell, ya sea el mismo u otro diferente. Slo se invoca por el nombre del ejecutable, ya sea el sh, bash, csh o ksh. Tambin, al ejecutar un shell script se lanza un subshell con el shell que corresponda para ejecutar el script solicitado.

41

Diferencias bsicas entre los shells

Bash es el shell por defecto en GNU/Linux, si no se especifica lo contrario al momento de crear la cuenta del usuario. En otros sistemas UNIX suele ser el shell Bourne (sh). Bash es compatible con sh, adems incorpora algunas caractersticas de los otros shells, csh y ksh.

Archivos de arranque: sh, ksh cuentan con .profile, en la cuenta del usuario, y se ejecuta en el login del usuario, adems el ksh suele poseer un .kshrc el cual se ejecuta a continuacin; el csh utiliza .Login, que se ejecuta al iniciarse el login del usuario una sola vez, .logout, antes de la salida de la sesin del usuario, y .cshrc, que es parecido al .profile, en cada subshell C que se inicia. Bash utiliza el .bashrc y el .bash_profile. Adems, el administrador puede colocar variables y caminos comunes en el archivo /etc/profile que se ejecutar antes que los archivos con los que cuente cada usuario. Los archivos de inicializacin de los shell se colocan en la cuenta del usuario al ser creada, en general, se copian del directorio /etc/skel, donde el administrador puede dejar unos esqueletos de los archivos preparados.

Los scripts de configuracin del sistema o de servicios suelen escribirse en shell Bourne (sh), ya que la mayora de los UNIX as los tenan. En GNU/Linux tambin se pueden encontrar algunos en Bash.

Se puede identificar en qu shell se ejecuta el script por medio del comando file, por ejemplo file <nombrescript>. O tambin al examinar la primera lnea del script, que suele ser: #!/bin/nombre, donde nombre es bash, sh, csh, ksh ... Esta lnea le dice, en el momento de ejecutar el script, qu shell se debe utilizar a la hora de interpretarlo, o sea, qu subshell hay que lanzar para su ejecucin. Es muy importante que todos los scripts la contengan, ya que si no, se intentarn ejecutar en el shell por defecto, que en este caso es Bash, y la sintaxis puede no corresponder, lo que genera muchos errores sintcticos durante la ejecucin.

Programacin scripts en Bash Todos los scripts Bash deben comenzar con la lnea: #!/bin/bash. Esta lnea le indica al shell utilizado por el usuario, el que se tenga activo en ese momento, con qu shell se debe ejecutar el script que aparezca a continuacin. 42

El script puede ser ejecutado de dos formas diferentes:

Por ejecucin directa desde la lnea de comandos, siempre que se cuente con permiso de ejecucin. En caso contrario, se coloca el permiso con: chmod +x script.

Por ejecucin mediante el shell, se hace un llamado al shell explcitamente: bash script.

Se debe tener en cuenta que sea cul sea el mtodo de ejecucin, siempre se est creando un subshell donde se va a ejecutar el nuevo script. Variables en Bash La asignacin de variables se realiza por: variable = valor , el valor de la variable puede ser visualizado con: echo $variable, donde $ hace referencia al valor de la variable. La variable por defecto slo puede ser visualizada en el script, o en el shell. Si sta debe ser visible fuera del script, a nivel de shell o de cualquier shell hijo, o subshell, que se genere despus, ser necesario exportarla adems de asignarla. En este caso, se pueden hacer dos cosas: 1. Asignar y exportar despus: var = valor export var 2. Exportar en la asignacin: export var = valor

En los scripts Bash se tienen algunas variables predeterminadas accesibles:

$1-$N: con esta variable se guardan los argumentos pasados como parmetros al script desde la lnea de comandos.

$0 : con esta variable se guarda el nombre del script, que sera el parmetro 0 de la lnea de comandos.

$* : con esta variable se guardan todos los parmetros del 1 al N. $ : con esta variable se guardan todos los parmetros, pero con comillas dobles ( ) en cada uno de ellos.

$? ,Status: con esta variable se guarda el valor devuelto por el ltimo comando 43

ejecutado. sta es til para verificar las condiciones de error, ya que UNIX suele devolver 0 si la ejecucin ha sido correcta, y un valor diferente como cdigo de error. Otro elemento importante en las asignaciones es el uso de las comillas:

Las dobles permiten que sea considerado todo como una unidad. Las simples son parecidas, pero se ignoran los caracteres especiales que se encuentren dentro.

Las inclinadas hacia la izquierda `comando`, son utilizadas para evaluar el interior, si existe alguna ejecucin o sustitucin que hacer. En primer lugar, se ejecuta el contenido y se sustituye lo que haba por el resultado de la ejecucin. Por ejemplo: var = `ls` guarda el listado del directorio en $var.

Comparaciones Para el caso de las condiciones a menudo se utiliza la orden test expresin o directamente [expresin]. Las condiciones disponibles pueden ser agrupadas por:

Comparacin numrica: -eq, -ge, -gt, -le, -lt, -ne, correspondiendo a: igual que, ms grande o igual que (ge), ms grande que, menor o igual que (le), menor que, distinto que.

Comparacin de cadenas: = , ! = , -n, -z, correspondiendo a cadenas de caracteres: iguales, diferentes, con longitud mayor que 0, longitud igual a cero o vaco.

Comparacin de archivos: -d, -f -r, -s, -w, -x. El archivo es: un directorio, un archivo ordinario, es legible, es no vaco, es escribible, es ejecutable.

Booleanos entre expresiones: !, -a, -o, condiciones de not, and y or.

44

OPTIMIZAR EL SISTEMA A continuacin se presentan algunas recomendaciones para optimizar el sistema en funcin de los datos obtenidos: Resolver los problemas de memoria principal Se debe procurar que la memoria principal pueda recibir un porcentaje elevado de procesos en ejecucin, ya que si no es as, el sistema operativo podr paginar e ir al swap; esto significa que la ejecucin de ese proceso se degradar de forma. Si se agrega memoria, el tiempo de respuesta mejorar bastante. Para esto, se debe tener en cuenta el tamao de los procesos (SIZE) en estado R y agregarle la que utiliza el kernel, que se puede obtener con el comando dmesg. Luego se deber comparar con la memoria fsica y analizar si el sistema se encuentra limitado por la memoria; se podr ver mucha actividad de paginacin con atsar -r y -p. Las soluciones para la memoria son obvias, o se incrementa la capacidad o se reducen las necesidades. Por el coste actual de la memoria se recomienda ms incrementar su tamao, que emplear muchas horas para ganar un centenar de bytes por quitar, ordenar o reducir requerimientos de los procesos en su ejecucin. Reducir los requerimientos puede llevarse a cabo reduciendo las tablas del kernel, quitando mdulos, limitando el nmero mximo de usuarios, reduciendo los buffers, etc.; todo lo cual degradar el sistema, el llamado efecto burbuja, y las prestaciones sern peores, en algunos casos, el sistema puede quedar totalmente no operativo. Otro aspecto que se puede reducir es la cantidad de memoria de los usuarios eliminando procesos redundantes y cambiando la carga de trabajo. Para esto, se deber darle seguimiento a los procesos que estn durmiendo (zombies) y eliminarlos, o aquellos que no progresan en su entrada/salida, se debe saber si son procesos activos, cunto de CPU llevan gastado y si los usuarios estn por ellos. Si se cambia la carga de trabajo se utiliza la planificacin de colas para que los procesos que necesitan una gran cantidad de memoria se puedan ejecutar en horas de poca actividad, por ejemplo, por la noche lanzndolos con el comando at.

45

Mucha utilizacin de CPU En general, ofrece el tiempo idle, los valores bajos. Con ps o top se deben analizar los procesos que devoran CPU y tomar ciertas decisiones como, posponer su ejecucin; pararlos temporalmente; cambiar la prioridad, que es el menos conflictivo de todos, y se puede utilizar el comando renice prioridad PID; optimizar el programa, para la prxima vez; o cambiar la CPU, o agregar otra. Como ya se mencion, GNU/Linux utiliza el directorio /proc para mantener todas las variables de configuracin del kernel que pueden ser analizadas y, en cierto caso, ajustadas, para lograr prestaciones diferentes o mejores. Para lograrlo, se debe utilizar el comando systune dump > /tmp/sysfile para obtener todas las variables y sus valores en el archivo /tmp/sysfile. Este archivo se puede editar, cambiar la variable correspondiente y luego utilizar el comando systune -c /tmp/sysfile para cargarlas una vez ms en el /proc. El comando systune tambin lee por defecto si no tiene la opcin -c de /etc/systune.conf. En el caso de GNU/Linux, a diferencia de otros sistemas operativos, es un valor fijo dentro del cdigo, ya que se encuentra optimizado para las diferentes funcionalidades, sin embargo, es posible tocarlo. Se puede jugar, a riesgo del que lo hace, con las variables TICK_SCALE (o NICE_TO_TICKS) en (Debian) kernel-source-2.4.18/kernel/sched.c, que por defecto, se ajusta para que el timeslice sea aproximadamente de 50 milisegundos. Reducir el nmero de llamadas Otra prctica comn y recomendada para mejorar las prestaciones es reducir el nmero de llamadas al sistema de mayor coste en tiempo de CPU. Estas llamadas son las invocadas, en general, por el shell fork() y exec(). Una configuracin inadecuada de la variable PATH puede tener una relacin desfavorable de ejecucin, ya que la llamada exec() no guarda nada en cach, el directorio actual (indicado por ./). Para esto, siempre se deber configurar la variable PATH con el directorio actual como ltima ruta. Por ejemplo, en bash (o en .bashrc) se hace: export PATH = $PATH. Si no es as, no se encuentra el directorio actual, o si se encuentra, se rehace la variable PATH para ponerlo como ltima ruta. Se debe tener en cuenta que una alta actividad de interrupciones puede afectar a las prestaciones de la CPU con relacin a los procesos que ejecuta.

46

Por medio del monitoreo (atsar -I) se puede mirar cual es la relacin de interrupciones por segundo y tomar las decisiones con respecto a los dispositivos que las causan. Mucha utilizacin de disco Despus de la memoria, un tiempo de respuesta bajo puede ser debido al sistema de discos. En primer lugar, se debe verificar que se disponga de tiempo de CPU, por ejemplo, idle > 20%, y que el nmero de entrada/salida sea elevado, por ejemplo, > 30 entrada/salida/s, utilizando atsar -u y atsar -d. Las soluciones pasan por:

En un sistema multidisco: planificar dnde se encontrarn los archivos ms utilizados para equilibrar el trfico hacia stos. En situaciones crticas, se puede considerar la compra de un sistema de discos RAID que realizan este ajuste de forma automtica.

Se debe tener en cuenta que se obtienen mejores prestaciones sobre dos discos pequeos que sobre uno grande del tamao de los dos anteriores.

En el caso de los sistemas con un nico disco, en general se realizan, desde el punto de vista del espacio, cuatro particiones de la siguiente forma, desde fuera hacia dentro: /, swap, /usr, /home; este genera psimas respuestas de entrada/salida porque si, por ejemplo, un usuario compila desde su directorio /home/user y el compilador se encuentra en /usr/bin, la cabeza del disco se mover por toda su longitud. En este caso es mejor unir las particiones /usr y /home en una sola, que es ms grande, aunque puede representar algunos inconvenientes con respecto al mantenimiento.

Incrementar los buffers de la cach de entrada/salida.

47

ENLACES DE INTERS www.ldap-es.org http://www.bdat.net/documentos/ldap/ http://platea.pntic.mec.es/~jmartine/router/router.html http://www.iec.csic.es/CRIPTONOMICON/consejos/cortafuegoslinux.html http://roble.pntic.mec.es/~sgonzale/linux/cortafuegos.html http://www.masadelante.com/faq-cortafuegos.htm http://www.wikilearning.com/tutorial/manual_practico_de_iptables/9755 http://club.telepolis.com/jagar1/Unix/Scripts.htm

48

También podría gustarte