Logs del sistema

30 12 2008

Linux usa el demonio syslogd para mostrar y guardar mensajes describiendo eventos del sistema. Controla los mensajes del kernel, los procesos corriendo en el sistema, y en equipos remotos. Los mensajes pueden mostrarse por pantalla, guardarse en logs, etc. Su archivo de configuración es /etc/syslog.conf.

/etc/syslog.conf

Cada línea contiene directivas en la forma: facility.level action

  • Facility: representa el creador del mensaje (el kernel o un proceso). Puede ser auth, authpriv, crcon, daemon, kern, lpr, mail, mark, news, syslog, user, uucp, y local0 a local7 (para uso propio).
  • Level: especifica la severidad y indica la cantidad de detalle que se guardará. Los niveles son de menor a mayor: debug, info, notice, warning, error, crit, alert y emerg. “None” desabilita la facility. El “*” representa todas facilities o levels.
  • Action: representa el destino, que puede ser un archivo, un hostname, o una lista de usuarios logueados.

La mayoría de distribuciones instala una configuración por defecto del syslog, incluyendo mensajes en /var/log/messages y otros archivos en /var/log. Para prevenir que los logs crezcan demasiado, existe una rotación de los logs y un comando privilegiado llamado logrotate. El archivo de configuración por defecto es /etc/logrotate.conf.





    Administrando cuentas de usuario y grupo

    25 12 2008

    /etc/passwd

    Cuando se añade un nuevo usuario en Linux, se añade una nueva entrada en el fichero /etc/passwd. A este archivo tienen acceso de lectura todos los usuarios del sistema. Cada entrada contiene información de un sólo usuario, separada por “:”. Por ejemplo:

    root: x:0:0:root:/root:/bin/bash
    david: x:1000:1000:david,,,:/home/david:/bin/bash

    Los campos son:

    • Username de la persona o servicio que usa esa cuenta.
    • Password hasheado. Si contiene una x indica que se guarda en /etc/shadow.
    • User ID: identificador único de usuario. Es un entero no negativo. 0 es el del root.
    • Group ID: lo mismo para el grupo. Los grupos y sus nombres asociados se especifican en /etc/group. En /etc/passwd se guarda el GID por defecto, ya que un usuario puede pertenecer a varios grupos.
    • Full name: nombre completo o otros comentarios,
    • Home directory: directorio por defecto en el sistema para esa cuenta.
    • Default shell: shell que arrancara por defecto cuando el usuario haga login o abra una shell.

    /etc/group

    Los grupos son similares a los usuarios en su administración y se definen en /etc/group. Las entradas siguen una estructura parecida:

    root: x:0:
    david: x:1000:

    En este caso:

    • Group name o nombre único que lo identifica.
    • Group password: como los usuarios, pueden tener un password o no tenerlo si está vacio.
    • Group ID: identificador único del grupo.
    • Group member list: lista de los miembros por username.

    /etc/shadow

    Para evitar que los passwords encryptados sean accesibles a todo el mundo, se guardan en /etc/shadow de la siguiente manera:

    david:$1$WIc/jeBW$TN5To9LyEDgETSYV.O3VD.:14233:0:99999:7:::

    • Username.
    • Password.
    • Días desde el 1 de enero de 1970 hasta el último cambio de password.
    • Mínimo número de dias que deben pasar para que el usuario pueda cambiar su password.
    • Máximo número de días hasta que se requiera cambiarla.
    • Días antes de que se reciba un warning de que la contraseña caduca.
    • Días con la contraseña caducada antes de que la cuente quede deshabilitada.
    • Días desde el 1 de enero de 1970 en el que la cuenta expira.
    • Reservado.

    En el caso de los grupos el archivo que contiene los passwords es /etc/gshadow.

    Comandos útiles

    useradd: para crear una cuenta de usuario.

    usermod: modifica una cuenta existente.

    userdel: borra una cuenta.

    groupadd: añade un grupo al sistema.

    groupmod: modifica los parámetros de un grupo.

    groupdel: borra un grupo.

    passwd: fija el password para un usuario.

    gpasswd: fija el password para un grupo.

    pwconv: habilita el uso de shadow password en el sistema.

    pwunconv: revierte el uso del archivo shadow al archivo estándar passwd.

    grpconv y :grpunconv: lo mismo para grupo.





    Shell

    24 12 2008

    La shell es el intérprete de comandos entre el usuario y el sistema operativo. Nos aporta lo siguiente:

    • Interfaz de usuario al SO: canal de comunicación al kernel.
    • Entorno para la ejecución de otros programas.
    • Permite lanzar y manejar comandos y programas para un entorno.
    • Un lenguaje de programación.

    Todas las shell comparten algunos conceptos:

    • Corren como programas de usuario.
    • Pueden usarse de forma interactiva por el usuario o de manera no interactiva por el sistema.
    • Puede lanzarse una shell desde otra. La nueva shell tendrá la shell original como proceso padre.
    • Las shell usan archivos de configuración para establecer su entorno.
    • Las shell pasan las variables de entorno a los procesos hijo.

    Bash es una de las shell más populares y es el intérprete predeterminado en muchos sistemas GNU/Linux. El entorno se compone de una serie de variables, cuyos valores son usados por programas y otras shell.

    Existen dos tipos:

    1) Las variables de entorno: se pueden entender como variables globales, pues se pasan a todos los procesos arrancados desde la shell, incluyendo otras shell. Ej: PATH: lista los directorios donde la shell busca los comandos introducidos.

    2) Shell variables: se pueden pensar como locales, porqué son específicas a la shell actual y los procesos hijo no las heredan. Para permitir que una variable local pueda ser usada por procesos hijo, debe exportarse con el comando export.

    Alias

    En bash se pueden fijar alias para comandos habituales o secuencias de comandos. Ex: alias more=’less’

    Functions

    También se pueden declarar funciones para ejecutar varias instrucciones. La sintaxis es: name ( ) { lista_de_comandos; }.

    Archivos de configuración

    Los usuarios pueden definir alias, funciones y variables de entorno, y para evitar introducirlos cada vez, bash usa varios archivos para preparar el entorno:

    Archivo Descripción
    /etc/profile Archivo que contiene la variables de entorno globales a todos los usuarios, incluyendo el PATH, y programas de inicio. Ejecutado cada vez que el usuario entra al sistema.
    ~/.bash_profile SI existe este archivo, se ejecuta automáticamente después de /etc/profile durante el login.
    ~/.bash_login SI .bash_profile no existe, se ejecuta automáticamente durante el login.
    ~/.profile Si no existe .bash_profile, ni .bash_login, este es el archivo que se ejecuta.
    /etc/bashrc Funciones y alias disponibles para todos los usuarios.
    ~/.bashrc Alias y funciones específicas del usuario. Se ejecuta automáticamente cuando arranca bash. Incluyendo el login, y todas las invocaciones interactivas o no interactivas.
    ~/.bash_logout Ejecutado automáticamente en el logout.
    ~/.inputrc Contiene atajos de teclado del usuario. Los valores globales se establecen en /etc/inputrc.

    Nota: /etc/profile se ejecuta cada vez que iniciamos sesión, y .bashrc cada vez que se ejecuta el bash.





    OSPF (Parte II)

    15 11 2008

    Los paquetes OSPF se encapsulan en IP con tipo de protocolo de transporte número 89. En la cabecera OSPF existe un campo que indica el tipo de paquete:

    • Paquetes Hello (type=1): establecen y mantienen relaciones entre vecinos.
    • Database Description (DBD): (type=2) describe el contenido de la DB.
    • Link-State Request (LSR): (type=3) paquetes de petición de porciones de la DB.
    • Link-State Update (LSU): (type=4) paquetes de respuesta con porciones de la DB.
    • Link-State ACK (LSAck): (type=5) paquetes que reconocen LSUs.
    • Link-State Advertisement (LSA): describen el estado local de un router o red. Para un router incluye el estado de las interfaces y sus adyacencias. Van empaquetados en DBD, LSU, LSR o LSAck.

    tramaospf

    Tipos de LSAs en una OSPF multiárea

    • Router LSA: generado por cada router dentro de su área a todos los routers del área.
    • Network LSA: generado por cada DR, describe el conjunto de routers conectados a la red BMA y sólo se envían dentro del área.
    • Summary LSA: generados por ABRs describen rutas externas al área (que le han llegado a través del backbone) pero que pertenecen al AS.
    • ASBR summary LSA: generados por los ABR, describen rutas al ASBR para que todos sepan salir al exterior.
    • AS external LSA: generados por los ASBR describen rutas externas al AS.

    En una red multiárea el routing intra-área es el habitual. Cuando se han sincronizado las DB, los ABR tienen un mapa topológico de cada área y puede generar LSAs a otros ABR.

    El ABR genera un summary LSA para cada red del área (puede usar sumarización para optimizar). Por lo que cada router ABR, tiene la topología completa del área de backbone y una sumarización de cada área.

    OSPF en diferentes topologías

    1) BMA (Broadcast Multi-Access): es el caso estándar (LANs). El protocolo de Hello se usa para:

    • Comprobar que la línea con un vecino está operacional y pueden intercambiar información.
    • Elegir al DR y BDR.

    Los hello se envían periódicamente (cada 10 seg) usando la dirección multicast 224.0.0.5.

    Como se ha comentado anteriormente, cada segmento de la red BMA tendrá un DR y BDR. Un router podrá actuar como DR en un segmento y actuar como router normal en otro, pues en realidad es la interfaz la que actúa como DR o BDR. Hay que tener en cuenta, que no es recomendable que un router sea DR en varías LANs pues el consumo de CPU es elevado.

    Un BDR detectará que un DR falla, pues durante un cierto tiempo no recibirá LSAs.

    Durante el descubrimiento de rutas, se pasa por varias fases:

    • Exstart State: DR y BDR forman una adyacencia con cada uno de los routers (master-slave).
    • Exchange State: intercambio de DB.
    • Loading State: el slave compara información recibida y pide que le envíen entradas que no tiene.
    • Full State: se crea la tabla de encaminamiento.

    Nota: 224.0.0.5 dirección multicast a todos los routers OSPF. 224.0.0.6 multicast a todos los routers DR y BDR.

    2) Punto a punto:

    En esta topología dos routers son adyacences por definición y no hay concepto de DR y BDR.

    3) NBMA (Non-Broadcast Multi-Access): topologías Frame Relay, ATM, etc.

    En estas topologías sin capacidades broadcast existen dificultades para la elección de BR y BDR. Existen dos métodos:

    • NMBA: se emula la operación de OSPF en una red broadcast. Se usa en redes totalmente malladas. Para ello el router crea un paquete que envía por cada enlace virtual listado en la tabla de vecinos. Útil para redes con pocos vecinos.
    • Point-to-Multipoint: cada enlace se trata como si se tratase de un enlace punto a punto (sin DR y BDR). Se usa en mallas parciales.




    Frame Relay

    1 11 2008

    Frame Relay es una tecnología de transmisión de datos y voz a alta velocidad mediante conmutacion de paquetes. Destaca por su bajo coste en comparación a las líneas dedicadas.

    Está clasificada como una non-broadcast multi-access network (NBMA), es decir, no envía paquetes broadcast. Proviene de  X.25 y hereda muchas de sus características.

    Frame Relay proporciona una red conmutada a diferentes clientes al mismo tiempo, pero se basa en que éstos nunca deberán transmitir datos constantemente. FR trabaja proporcionando una porción de ancho de banda a cada usuario, incluso permitiendo exceder su ancho de banda garantizado si hay recursos disponibles.

    Al contratar FR, contratamos un ancho de banda o media des e datos que podremos transmitir. Esto se conoce como Commited Information Rate (CIR). Es posible superar el CIR, pero entonces los datos se envían como “best effort” y se descartaran las tramas en caso de congestión.

    Tipos de encapsulación

    Existen dos tipos: Cisco y IETP (Internet Engineering Task Force). En caso de conectar equipos que no sean Cisco habrá que optar por el segundo.

    Circuitos Virtuales

    Frame Relay opera usando circuitos virtuales que conectan dos dispositivos DTE, haciendo que parezca que están conectados a través de un circuito, cuando en realidad lo hacen mediante una gran infraestructura compartida.

    Existen dos tipos de circuitos virtuales:

    • Permanent Virtual Circuit (PVC): son los más habituales. Son permanentes porque se crean mapeos entre equipos de transmisión para su uso repetido. Eliminan la necesidad de establecimiento y liberación de la conexión.
    • Switched Virtual Circuit (SVC). se generan de forma dinámica para cada conexión, y se eliminan cuando ha terminado.

    Los PVCs se identifican en un DTE por los Data Link Connection Identifiers o DLCIs. Estos se usan en las interfaces para distinguir entre diferentes circuitos virtuales. Inverse ARP nos permite mapear DLCIs a direcciones IP, es decir, traduce direcciones de nivel 2 a nivel 3, a la inversa que ARP.

    Los DLCIs se consideran significativos localmente. Cuando un router1 quiere enviar un frame a un router2, usa IARP o mapeo manual, para traducir el DLCI a una dirección IP. Entonces envía el frame con el DLCI en la cabecera del FR. El FR switch del proveedor lo recibe, y usa el puerto que corresponde a ese DLCI. Es decir es significativo localmente, entre él y el siguiente switch.

    Local Management Interface

    LMI es un estándar usado entre el router y el primer FR switch. Permite transmitir información el estado del circuito virtual. Comunica información sobre:

    • Keepalives: verifica que hay flujo de datos.
    • Multicasting: extensión que permite distribuir información de protocolos de routing y ARP sobre la red Frame Relay (usa DLCI reservados para multicast).
    • Direccionamiento global: proporciona significado global a los DLCIs (dirección única en la WAN). Esto provoca que se comporte como una red LAN.
    • Estado del circuito virtual: permite que se envíen paquetes por un circuito inexistente.

    Hay tres tipos de mensajes LMI: Cisco, Ansi y Q.933A.

    Control de congestión

    El FR switch notifica al DTE los problemas de congestión. Existen tres bits con diferente significado:

    • Discard Eligibility (DE): cuando se transmiten paquetes más allá del CIR de un PVC, cualquier paquete se puede descartar si se produce congestión. Los bits de exceso se marcan con el DE activo en la cabecera, y el FR switch los descartará si la red esta congestionada.
    • Forward Explicit Congestion Notification (FECN): cuando el FR switch detecta congestión en la red, activa el bit FECN en la cabecera de FR y el DTE de destino sabrá que el camino estaba congestionado.
    • Backward Explicit Congestion Notification (BECN): cuando el switch detecta congestion en la red activa el BECN en un frame destinado al router de origen. Así notifica que hay congestión.

    Subinterfaces

    Es posible tener múltiples circuitos virtuales para una única interfaz y tratar cada una como diferentes interfaces, usando el concepto de subinterfaz. Se tratan de interfaces lógicas definidas por el IOS.

    Varias subinterfaces compartirán una interfaz hardware, y a nivel de configuración operarán como si fueran físicamente distintas (multiplexación). Hay dos tipos:

    • Point-to-point: un circuito virtual conecta un router con otro. Cada pareja de routers punto a punto está en su propia subred y cada subinterfaz punto a punto tiene un solo DLCI.
    • Multipoint: se utiliza una sola subinterfaz multipunto para establecer múltiples conexiones PVC a múltiples interfaces físicas o subinterfaces en routers remotos. Todas las interfaces involucradas se encuentran en la misma subred.




    Packet tracer: red OSPF multiárea

    15 10 2008

    En este caso el diagrama corresponde a una red ospf multiárea, con tres áreas conectados al area 0 o de backbone. Podéis descargar la red idéntica y ya configurada para realizar simulaciones en Packet Tracer aquí.

    La configuración es exactamente igual a la realizada en la entrada de ospf simple, con la única diferencia que al advertir las redes se añade a que área corresponde.

    Es decir para el router RA seria:

    RA(config-router)# network 200.0.1.0 0.0.0.255 area 0
    RA(config-router)# network 10.0.1.0 0.0.0.255 area 10

    Veremos las diferencias en la configuración al tener tres áreas distintos, en lugar de uno cómo en el ejemplo anterior.

    Leer el resto de esta entrada »





    Packet Tracer: red OSPF

    13 10 2008

    Packet tracer es el simulador de redes de Cisco. En este ejemplo veremos como montar una red ospf como la del dibujo anterior (a modo de ejemplo). Probaremos primero con una sola área, y luego ospf multiárea (novedad en packet tracer 5.0).

    Una vez configuradas las ips, sólo son necesarios dos comandos para levantar ospf en cada router. Por ejemplo para el R4 del dibujo:

    R4(config)#router ospf 1 -> El 1 indica la ID del proceso ospf, pues se pueden usar varias instancias (yo siempre he usado la 1).

    A continuación anunciar las redes de R4:

    R4(config-router)# network 175.5.5.0 0.0.0.255 area 0

    R4(config-router)# network 10.4.4.0 0.0.0.3 area 0

    Éste es el archivo resultante después de configurar la red, asignando las ip’s y levantando ospf en cada uno de los routers (descargar aquí). Abriendo el archivo con Packet tracer podréis consultar la configuración en cada uno de los routers y realizar todo tipo de pruebas.

    A continuación un pequeño análisis de la configuración y debug de los paquetes de la red.

    Leer el resto de esta entrada »