viernes, 12 de octubre de 2018

RedHat - Oracle Linux Fundamentals


Aspectos de instalación/configuración

  • La utilidad de instalación es llamada "Anaconda", mientras que la instalación automatizada se llama "kickstart".
  • A la hora de instalar, si posee algun otro SO, RHEL trata de automaticamente detectarlo y configurar su arranque tambien.
  • Si la computadora/servidor es parte de un dominio, podria verificar que el dominio sea agregado por el DHCP, si no deberá colocarlo manualmente.
  • Es sugerible cambiar los "paths" como por ejemplo el "/dev/sda" con etiquetas de FileSystem o utilizar UUIDs.
  • UEFI secure boot technology requiere que un kernel de SO este firmado con una llave privada reconocida para ser capaz de arrancar el sistema. En cada version Beta de RHEL, el kernel es firmado con un Red Hat Beta-specific private key el cual es diferete a los mas comunes "non-beta" releases.
  • En cuanto a la actualizacion automatica de drivers, cuando comienza la instalacion Anaconda detecta los dispositivos conectados. Si coloca la etiqueta "OEMDRV" en algun dispositivo de almacenamiento entonces tratará de considerarlo como un disco que contiene drivers.
  • Durante la instalacion, RHEL usa "tmux" (terminal multiplexer) para desplegar y controlar las ventanas de instalacion/configuracion, Cada ventana sirve para un proposito. El terminal multiplexer corre sobre la consola virtual 1 para dirigirse a ella seleccione CTRL+ALT+F1. Para cambiar a la consola grafica, utilice CTRL+ALT+F6

La utilidad Tmux, tiene 5 ventanas disponibles;




Cuando se utiliza el modo texto para la instalacion del SO ocurre lo siguiente:

  • Instalador siempre usará el lenguaje ingles y la configuracion del teclado tambien en ingles.
  • No puede utilizar metodos avanzados de storage (LVM, RAID, FCoE, etc)
  • No es posible configurar un particionamiento de discos de forma personalizada
  • No es posible seleccionar ningun paquete "add-ons" para ser instalado.

La tarjeta de red podria ser tambien una configuracion:
  • BOND
  • BRIDGE
  • TEAM
  • VLAN
Todas las instalaciones RHEL incluyen lo siguiente en cuanto a servicios de red:

  1. Ryslog service
  2. Email a traves de SMTP
  3. NFS
  4. SSH
  5. mDNS
  • RHEL utitliza GRUB2 como su "boot loader", el cual es el primer programa que se ejecuta cuando se inicia y el responsable de cargar y transferir el control al sistema operativo.
  • Si posee otro SO instalado, RHEL tratará de automaticamente detectarlo y configurar GRUB2 para que arranque con este.
  • El programa de instalacion coloca a GRUB2 ya sea en MBR o GPT del dispositivo con el filesystem de root.
  • Si "/usr" o "/var" esta particionado de manera separada al volumen de "root", el proceso de arranque podría ser mas complejo porque estos directorios contienen componentes criticos para este proceso. En algunas situaciones, cuando directorios son colocados en un iSCSI o en un FCoE, el sistema no arranca o se ralentiza debido al mensaje "Device is busy".
Sumado a lo anterior, si crea una particion "/var" asegurese que sea mayor a 3GiB; ya que esta mantiene el contenido de varias aplicaciones, ademas de que el software de actualizacion PackageKit actualiza los paquetes en este folder.

Mientras que "/usr" mantiene la mayoria del contenido del software de un RHEL, coloque este espacio en al menos 5GiB.

Logs de instalacion:


BIOS System vrs UEFI systems


Si aun el disco no esta formateado o el usuario borró toda la informacion de los discos, Anaconda usará:

  • MBR si el disco tiene menos que 2^32 sectores o el equivalente a 2TiB
Le permite crear 4 particiones primarias.
Puede particionar 1 particion logica en 11 particiones logicas. La particion primaria que contiene la particion logica es conocida com "particion extendida"

Utilice Fdisk para crear y administrar.

  • GPT si el disco posee 2^32 (2TiB) sectores o mas
Le permite configurar 128 particiones sin el concepto de logica o extendida.

Utilice "parted" en vez de "fdisk".

Deberá crear una particion "biosboot" en un sistema donde el disco contenga al boot loader en GPT.

Solo GPT esta permitido en sistemas UEFI.


La opción LVM Thin provisioning


Permite expandirse dinamicamente cuando se necesite debido al costo y efectos de allocacion de espacio en el storage. 

El instalador automaticamente reserva 20% de cualquier solicitud de espacio para un LVM thin pool en el VG que lo contiene.

Cuando configura LVM, la configuracion gráfica no le permite especificar el tamaño de los "extents" del Volume Group, el tamaño por defecto es de 4 MiB. Si desea cambiar esto deberá realizarlo manualmente.

Particiones


RHEL recomienda que cree filesystem separados para los siguientes puntos de montaje:

  • /boot
  • / (root)
  • /home
  • swap

/boot:

Contiene el kernel del SO, el cual le permite arrancar el sistema

Espacio recomendado: 1GiB.

En algunos ambientes se configuran 2 particiones para /boot.

En sistemas x86_x64, el sistema del BIOS puede acceder a solo los primeros 1024 "cylinders" del disco en el arranque.

/ (root)


Es donde se ubica el directorio raiz, el cual es el directorio principal del sistema operativo y de la estructura de carpetas. Por defecto todos los archivos son escritos en este FileSystem

Espacio minimo recomendado: 10GiB.

/home


Ayuda para almacenar la informacion de los usuarios de manera separada a la informacion del sistema.

Le permitira actualizar o reinstalar RHEL sin borrar informacion de los usuarios.

Espacio minimo recomendado: Si selecciona la opcion de particion automatica, es recomendado tener minimo 55 GiB disponible.

swap:


Afianza y soporta la memoria virtual, la informacion es escrita a swap si no hay suficiente memoria RAM para almacenar la informacion que el sistema esté procesando.

Cuando el sistema no tiene espacio en swap, el kernel termina los procesos. Configurar mucho swap podria generar que se asignen dispositivos de almacenamiento pero inactivos y es un mal uso de los recursos. A su vez, mucho espacio en swap puede "esconder" perdidas de memoria (memory leaks).

El particinamiento automatico asume que la hibernacion no esta en uso. El maximo tamaño de swap esta limitado al 10% del tamaño del disco.



En algunos ambientes, se configuran 2 particiones para swap.

KDUMP


Es un mecanismo que en caso de un "crash" del sistema, este captura informacion para determinar la causa de la caida.

Usuarios


Al proceso de instalacion, se requiere crear usuarios, ya sea el root o uno normal, uno de ellos debe ser creado al menos, si no elige el root, es recomendado que al crear el usuario normal le brinde los privilegios administrativos (que sea parte del wheel group)

Si selecciona la configuracion avanzada de usuarios, el rango de ID's para los usuarios normales comienza con el numero 1000. Sin embargo considere comenzar con el numero 5000, ya que el rango del 0 al 999 es para usuarios del sistema y grupos, ese rango podría incrementarse en un futuro y esto sobrescribira los ID's en caso de un upgrade.



SELINUX


  • Provee una capa adicional al sistema de seguridad.

  • Responde a la pregunta: 


¿Podria el <sujeto> hacer <acccion> al <objeto>?, Por ejemplo: Podria el web server acceder a los archivos en el home del usuario xz?


  • La politica de estandard de acceso basada en usuario, grupo y otros permisos (DAC-Discretionary Access Control) no permite a los administradores del sistema crear politicas de seguridad "fine-grained" o de grano fino. Por ejemplo, restringir a aplicaciones solamente trabajar con ciertos logs mientras otra aplicación más bien agrega información a los log files.

  • SELINUX implementa MAC =  Mandatory Access Control.

  • Cada proceso y recurso de sistema tiene una etiqueta especial de seguridad llamada SELINUX context.
  • SELinux y sus reglas son verificadas posterior a las reglas DAC. Por lo tanto SELinux no es utilizado si las reglas DAC ya fueron aplicadas anteriormente.


SELinux Context:

  • Un SELinux context es un identificador el cual abstrae detalles a nivel de sistema y se enfoca en las propiedades de seguridad de la entidad.
  • SELinux usa estos contextos en una serie de reglas las cuales definen como procesos pueden interactuar con otros procesos y recursos del sistema. Por defecto la politica no permite ninguna interacción si una regla no le permite el acceso.

Los contextos de SELinux, tienen diferentes campos:

  • user
  • role
  • type (normalmente terminan en "_t")
  • security level


Por ejemplo:

 El type para el proceso web server es" httpd_t"

El type de contexto para archivos y directorios normalmente encontrados en "/var/www/html" es "httpd_sys_content_t"

El type de contexto para el puerto del web server es "http_port_t".

Entonces, debido a lo anterior normalmente hay una politica que permite al Apache (web server que corre con el proceso "httpd_t") acceder a los archivos y directorios a un folder llamado "/var/www/html" (el cual posee el contexto "httpd_sys_content_t") pero no hay una politica que permita el acceso al folder "/var/tmp" (el cual posee un contexto "tmp_t") por lo tanto el acceso no es permitido a ese folder y sus archivos.

Beneficios:

Procesos y archivos estan etiquetados. Las politicas definen como los procesos interactuan con archivos, a su vez, como los procesos interactuan con otros procesos.

Mejora o mitiga de mejor manera el riesgo de ataques maliciosos.

Puede ser utilizado para mejorar la confidencialidad e integridad de los archivos y procesos.

Cabe destacar que no es un antivirus, no es un firewall ni mucho menos una solucion "todo en uno".

Arquitectura:

SELinux es un Modulo de Seguridad de Linux (LSM) el cual fue construído en el kernel. Así que todas las operaciones a nivel de Kernel en el sistema son interceptadas por SELinux y examinadas tambien en el contexto de la politica de seguridad.

Las decisiones del SELinux son almacenadas en un "caché" llamado Access Vector Cache (AVC).

SELinux puede encontrarse o configurarse de 3 maneras:


  • Deshabilitado
  • Permisivo (Es como forzado, incluso registra las cosas en el log pero no deniega operaciones)
  • Forzado

Es posible ajustar dominios individuales al modo permisivo mientras se ejecuta en el sistema el modo forzado, por ejemplo para que el web server (httpd_t) sea permisivo utilice el comando:

semanage permissive -a httpd_t

Más sobre Contextos de SELinux:


En RHEL, SELinux provee una combinacion de Role Bases Access Control (RBAC) este es usado para procesos no para archivos, Type Enforcement (TE), Multi-Level Security (MLS)

Los contextos son usados en procesos, usuarios y archivos.Utilizan la siguiente sintaxis:

user:role:type:level

Ejemplo de un "ls" a un archivo:

unconfined_u:object_r:user_home_t:s0

Los usuarios en SELinux:

Son una entidad conocida dentro de la politica que a la vez está autorizada para usar un grupo especifico de roles y rangos especificos (MLS/MCS). Entonces cada usuario es "mapeado" a un usuario SELinux usando una politica.

Debido a esto ultimo, el mapeo de usuarios SELinux es usado tambien en el contexto para los procesos de esa sesion, basicamente, el SELinux user limita cuales roles y niveles de los procesos son accedibles.

Por defecto todos los usuarios "corren" o son mapeados al contexto "unconfined".

Transiciones de dominios:


Se observa cuando un proceso requiere de un archivo u otro proceso para ejecutar su tarea. Por ejemplo cambiar la password del usuario:

El ejecutable "passwd" requiere tambien hacer uso del archivo "/etc/shadow" el cual posee otro contexto.

Para realizar una transición de dominio, la politica SELinux, debe tener una entrada llamada "Entrypoint" en su configuración.

By default, both users and groups use shadow passwords, which are cryptographically hashed and stored in /etc/shadow and /etc/gshadow respectively. These shadow password files are readable only by the root user 

Politica por Defecto de SELinux


La politica dirigida (Targeted policy) es la politica por defecto en RHEL. Cuando se usa esta politica los procesos corren en un "confined domain" y los procesos que no estan en esta politica corren en "unconfined domain".

Procesos confinados (Confined processes)


La mayoria de servicios que escuchan en una red, como "sshd" o "httpd" estan confinados en RHEL.

Tambien la mayoria de procesos que corren como root y aplican tareas a usuarios como el "passwd".

Cuando un proceso es confinado, corre en un dominio propio, como el "httpd" que corre en el dominio "httpd_t". Si un proceso confinado es comprometido el daño que puede sufrir es limitado

Procesos no confinados


Se ejecutan en dominios no confinados, los que son no confinados ejecutados por el kernel terminan siendo del dominio "kernel_t", y los servicios ejecutados por usuarios Linux no confinados terminan siendo del dominio "unconfined_t".

Para procesos no confinados, las politicas de SELinux son aplicadas, pero existen reglas que permiten casi todos los accesos a los procesos que corren en dominios no confinados. Los procesos corriendo en dominios no confinados vuelven a usar las reglas DAC exclusivamente.


Oracle UEK

En setiembre del 2010, Oracle anuncia Unbreakable Enterprise Kernel para Oracle Linux como el kernel recomendado para Oracle Linux 5. Era y es posible elegir entre RHEL compatible Kernel o el UEK.

La motivacion para crear el UEK era proveer un kernel mas moderno y con mejor rendimiento para los equipos Exadata y Exalogic. El kernel necesario para escalar a medida que aumentaba el número de CPU, memoria y conexiones InfiniBand.

A su vez, el ASMLib Kernel Module esta incluido en el UEK, sin embargo el OracleASMSupport debe ser instalado de manera manual.

The Unbreakable Enterprise Kernel (UEK), included as part of Oracle Linux, provides the latest open source innovations, key optimizations and security for enterprise cloud workloads. 
Tomado de: https://www.oracle.com/technetwork/server-storage/linux/technologies/uek-overview-2043074.html

Con UEK puede descargar paquetes que no están incluídos en la distribucion original. Si desea utilizar ULN para administrar el sistema ebe registrarse a los canales ULN.

Canales ULN


Patches y erradata, estan disponibles para revisiones especificas de Oracle Linux, los ULN canales existen tambien para MySQL, Oracle VM, OCFS2, RDS y aplicaciones productivas.

latest
Provee todos los paquetes de una distribucion, incluyendo cualquier erradata que brinde el canal "patch".

Si no especifica la version del paquete este será el mas reciente y disponible.

Si hay vulnerabilidades, el paquete será el mismo de la distribucion original.
base
Proporciona los paquetes para cada versión principal y la menor actualizaciónde Oracle Linux

Este canal corresponde a la version ISO lanzada.

No se publican erradata ni bugfixes en este canal
patch
Provee solo los paquetes que han cambiado desde la ultima version brindada.
addons
Provee paquetes que no están incluidos en la distribución base
Oracle
Provee RPM’s descargables como el ASMLIb y el Oracle Instant Client
optional
Provee paquetes adicionales, incluyendo los paquetes de desarrollo (-devel)

Software Erradata

Oracle publica cambios importantes como actualizaciones en paquetes individuales conocidos como "erradata", estos estan disponibles para descarga en ULN antes de que sean recolectados en un release o distribuidos por el canal "patch".

Pueden contener:

Security Advisors
ELSA-* y OVMSA-*
Bug Fix Advisors
ELBA-* y OVMBA-*
Feature enhancement advisor
ELEA-* Y OVMEA-*

CRON vrs ANACRON


Cron permite ejecutar una tarea de manera programada, es recomendado utililzarlo en servidores donde las maquinas estan 24/7. El cron puede ejecutar una tarea programada cada minuto, pero no menos que eso.

Anacron, a diferencia de CRON, asume que la maquina no estará encendida todo el tiempo, como laptops o desktops. Por ejemplo una tarea de backup a la 1:00pm cuando el equipo esta apagado. Anacron realizara el respaldo apenas el usuario encienda el computador.




YUM


Utilidad que permite instalar o actualizar paquetes RPM. La ventaja de este que tambien actualiza e instala las dependencias de un paquete.

Descarga los paquetes que estan disponibles en el repositorio de Oracle Linux YUM Server, pero el administrador puede configurar sus propios repositorios.

Si se ha registrado al ULN puede usar YUM con los canales ULN para mantener el software del sistema.


KSPLICE

Ksplice uptrack, puede actualizar un Linux Kernel sin requerir un reinicio inmediato del sistema.

Puede aplicar Ksplice ya sea al UEK o al RHEL compatible kernel. Oracle crea cada Ksplice patch a partir de una actualizacion de kernel que se origina desde Oracle o la comunidad de Linux Kernel.

Le permite aplicar las ultimas actualizaciones "security erradata" para "Common Vulnerabilities and Exposures (CVEs)" sin detener o reiniciar las aplicaciones. Lo hace haciendo una pausa de unos milisegundos en background.

Para habilitar la instalacion automatica de actualizaciones cambie el parametro de configuracion "/etc/upgrack/uptrack.conf" en autoinstall=yes.

To make Ksplice Uptrack install all updates automatically as they become available, set the following entry:
autoinstall = yes
Para instalar actualizaciones automaticamente a la hora del arranque:

install_on_reboot = yes

Parches KSPlice son almacenados en "/var/cache/uptrack". Lo siguiente a un "reboot" es re-aplicar automaticamente los parches antes de que la red sea configurada, así el sistema es asegurado antes de que las conecciones remotas se establezcan.


GRUB BOOTLOADER

GRUB permite cargar varios sistemas operativos ya que entiende los formatos de los FileSystems, y los Kernel ejecutables. GRUB requiere solo el nombre y las particiones donde cargar el kernel.

Una porcion del GRUB es escrita en el MBR, y la otra en la particion "/boot".

El GRUB Bootloader es modular:


STAGE 1
Codigo es almacenado en MBR.

Codigo contiene punteros a la proxima etapa de GRUB.

La etapa siguiente puede ser “STAGE1_5” o “STAGE2” dependiendo del tipo de File System

STAGE 1_5
Permite a GRUB interpretar diferentes tipos de file system.

Algunos GRUB no requieren cargar esta etapa.

STAGE 2
Lee el codigo “/boot/grub/grub.conf’ para determinar cual kernel cargar

Los parametros de arranque (boot parameters) que fueron usados en el ultimo reinicio son "grabados" en el archivo "/proc/cmdline".


Entendiendo opciones de configuración del sistema


"/etc/sysconfig":


Contiene los directorios que controlan la configuracion del sistema. El contenido de este directorio depende a su vez, de los paquetes que ha instalado.


"/proc - Virtual File System":

Contiene informacion sobre su hardware y los procesos que corren en el sistema. Con el tiempo este directorio se volvio muy desordenado por eso se ha creado el directorio filesystem "sysfs".

Los archivos sobre este directorio, soon archivos virtuales, que el Kernel crea en demanda de la estructura y la informacion del sistema. Debido a que son archivos virtuales su tamaño se muestra en 0 bytes pero contienen mucha cantidad de informacion.

Archivos virtuales como "/proc/meminfo", "/proc/partititions" brindan una vista del hardware del sistema.

Los archivos bajo "/proc/sys/" proveen información de la configuración del sistema y 
esta configuración puede ser modificada. Utilice "SYSCTL" para ver o modificar valores bajo el directorio "/proc/sys"

"/sys - Virtual File System":


El kernel exporta informacion a "/sys" o "sysfs". Programas como el "Dynamic device manager (udev)" usan /sys para acceder a dispositivos o drivers.

La mayoria de la informacion del hardware se encuentra en este virtual filesystem.


Modulos de Kernel


El bootloader (GRUB2, en el caso de OEL) carga el Kernel en memoria,, es posible agregar nuevo codigo al kernel incluyendo los archivos de raiz, en el arbol raiz del kernel y recompilandolo.

Para evitar el desperdicio de memoria en drivers de dispositivos que no se utilizan, Oracle Linux soporta loadable kernel modules (LKM), los cuales permiten al sistema ejecutar el driver del dispositivo y el codigo kernel que se requiera cargar en memoria.

El comando "modprobe" carga modules de kernel y permite visualizar si el paquete primero requiere de alguna dependencia.

Cambiar parámetros de Kernel


Cambios configuraciones del kernel hasta que exista un reinicio:

  • sysctl -w

Para realizar cambios de configuracion persistentes posterior a un reinicio, debe agregarlos al archivo:

  • /etc/sysctl.conf

Cualquier cambio realizado en este archivo permanecerá despues de reiniciar o ejecutar: sysctl -p

Administración de dispositivos


El directorio "/dev" contiene los archivos que contienen los dispositivos del sistema.

Estos archivos poseen el numero "major" y "minor" asociados, los cuales permiten identificar un dispositivo en el sistema.

Tipos:


  • b=bloque o "type"
Ej: Discos duros, CD-ROM drives, memoria flash u otros dispositivos

El kernel escribe y/o lee informacion desde los dispositivos de tipo bloque con una cantidad de bytes.
  • c=character
Ej: Teclados, dispositivos de cinta, conexiones a terminal.

Soportan la transmision de datos desde o hacia un dispositivo, los datos generalmente no se almacenan en búfer ni se permite el acceso aleatorio en un dispositivo.

El kernel escribe y/o lee informacion un byte a la vez.


Udev device manager


Dinamicamente crea o remueve dispositivos en el arranque. O si agrega/remueve un dispositivo a partir de la version de Kernel 2.6

Cuando crea un "nodo" dispositivo, UDEV lee el directorio "/sys" por atributos como:

label (etiqueta)
serial number (numero de serie)
bus device number (numero de bus)

UDEV puede utilizar nombres persistentes para garantizar la consistencia de nombres de los dispositivos.

UDEV usa reglas y determina como identificar dispositivos y crear los nombres de los dispositivos. El demonio (udevd) lee las reglas al arranque y almacena las reglas en memoria.


Consultando UDEV y SYSFS:

Utilice el comando "udevadm" para consultar la base de datos UDEV y sysfs.


Apache Virtual Host


El Apache HTTP server, soporta host virtuales, este puede responder a solicitudes que son direccionadas al multiples direcciones IP o nombres de hosts que correspondan a la misma maquina.

Es posible configurarlo de 2 maneras:


  • Basado en IP:


Cada host virtual posee su propia combinacion de IP y puerto. El servidor responde a la IP en la cual el nombre de host resuelve. Host por IP, es requerido cuando se realizan solicitudes a HTTPS por las restricciones SSL.

  • Basado en nombre

Los host virtuales comparte una IP. Apache responde a la solicitud solicitando un mapeo entre el nombre del host y lo verificado en "servername" y "serveralias", las cuales son directivas en la configuracion del host virtual.


EMAIL


Oracle Linux, ofrece 2 "MTA's" (Mail Transfer Agents) usando SMTP, llamados PostFix y SendMail, tambien incluye 1 de proposito especial llamado Fetchmail para uso con SLIP y PPP.

PostFix es configurado por defecto como el MTA de Oracle Linux. Si desea usar reglas o filtrar utilice SendMail, sin embargo si usa SendMail deshabilite PostFix para evitar problemas con el puerto y uso de la red.

Configuracion de PostFix:


Access
Especifica cuales host son permitidos conectarse a Postfix
Main.cf
Contiene la configuracion global
Master.cf
Especifica como el demonio master y otros procesos interactuan
Transport
Mapeo entre direcciones destino y “relay hosts:

Configuracion de SendMail:

Access
Configura un host relay que procesa mail de salida hacia otros sistemas
Mailertable
Reenvio de email de un dominio a otro
VirtuUserTable
Configura el envio de mail a diferentes dominios.


Filtro de paquetes - IPTABLES


Para la version Oracle Linux 6 el Kernel usa la caracteristica "NetFilter" que provee la funcionalidad de filtrar paquetes para IPv4 ademas de IPv6.

Consta de dos componentes:


  • Un componente de kernel para netfilter, que consiste en un grupo de tablas en memoria para las reglas que se usan para el filtrado mismo.
  • La utilidad IPTables, para crear, mantener, y desplegar las reglas que netfilter almacena.

Las tablas de NetFilter incluyen:

  • Filtros = La tabla por defecto, aceptar o rechazar paquetes segun su contenido
  • Mangle = Altera ciertos campos en el paquete
  • NAT = "Network Address Translation" para encaminar paquetes a nuevas/diferentes conexiones.
Por tanto tenemos tres tipos de reglas en iptables:
− MANGLE
− NAT: reglas PREROUTING, POSTROUTING
− FILTER: reglas INPUT, OUTPUT, FORWARD

Las reglas son almacenadas en cadenas. El kernel aplica cada regla al paquete hasta que un "match" sea encontrado. Cada tabla del netfilter posee las siguientes cadenas:

  • Forward = Paquetes que no son direccionados al sistema local pasan por esta cadena
  • Input = Paquetes entrantes al sistema local pasan por esta cadena
  • Output = Paquetes locales pasan sobre esta cadena
En resumen:

Para los paquetes (o datagramas, según el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT. 
Para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARD.

Insertar una regla en la cadena "Input" para permitir acceso por TCP en el puerto 80:

iptables -I INPUT 4 -p tcp -m tcp --dport 80 -j Accept

  • -I = Inserte nueva regla
  • -4 = Entrada de IPtables fue insertada como la regla #4 (las anteriores a esta del 4 al 5 se acomodan de 5 a 10)
  • -p = protocolo
  • -m = match
  • -dport = dynamic port
  • -j = target (que hacer si el paquete hace "match")

Cabe destacar lo siguiente:





NAT - Cambio de Origen ejemplo:

Cambiar la dirección de origen por 1.2.3.4
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
Cambiar la dirección de origen a 1.2.3.4, 1.2.3.5 o 1.2.3.6
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
Cambiar la dirección de origen por 1.2.3.4, puertos 1-1023
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023


NAT - Cambio destino ejemplo

Cambia la dirección de destino por 5.6.7.8
# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to 5.6.7.8

Cambia la dirección de destino por 5.6.7.8, 5.6.7.9 o 5.6.7.10.
# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to 5.6.7.8-5.6.7.10

Cambia la dirección de destino del tráfico web por 5.6.7.8, puerto 8080.
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 5.6.7.8:8080



Verificar: http://ipset.netfilter.org/iptables.man.html


OPENSSH


OpenSSH es una suite de herramientas de network, entre ellas:


  • SCP = Copia segura de archivos
  • SFTP = FTP seguro
  • SSH = Shell seguro para loguearse y correr un comando en un sistema remoto
  • SSH-Keygen = Crea llaves de autenticacion DSA o RSA


Archivos de configuracion mas importantes:

Moduli
Contiene la informacion del intercambio de llaves
Ssh_config
Contiene la configuracion del cliente.

Su informacion puede ser sobrescrita por la configuracion de un usuario en ~/.ssh/config.file

Sshd_config
Contiene la configuracion para el demonio sshd

OpenSSH crea el archivo "known_hosts" cuando por primera vez utiliza la utilidad OpenSSH para conectarse a un host remoto.

Al intentar conectarse por ssh la primera vez, el server solicita ingresar la contraseña con que se intenta acceder. Al brindar la contraseña y aceptar la conexion al servidor ocurre lo siguiente:

El servidor brinda al cliente la llave publica
El cliente agrega la llave publica al archivo ~/.ssh/known_hosts

Si intenta nuevamente acceder via ssh al servidor:

El cliente compara la llave publica del archivo ~/.ssh/known_hosts con la que nuevamente esta brindando el servidor.

En resumen:

Del lado del cliente:

El archivo ~/.ssh/known_hosts contiene las llaves publicas que OpenSSH ha obtenido de los servidores SSH. OpenSSH agrega una nueva entrada para cada equipo al que el usuario se conecta.

A su vez, configura otros archivos no menos importantes.

Del lado del server:

El directorio ~/.ssh contiene el archivo:

authorized_keys:

Contiene las llaves publicas autorizadas. El servidor usa la llave publica firmada para autenticarse con un cliente.


KeyGen:


  • Genera una llave publica y una privada.
  • Este sistema le permite conectarse de un equipo a otro sin tener que brindar el password cada vez que se conecta
  • Cada usuario debe generar su propio par de llaves
  • Utilice el script: ssh-copy-id para adjuntar la llave publica del archivo local=~/.ssh/id_rsa.pub al archivo del cliente ~/.ssh/authorized_keys




Sobre Software RAID


Oracle Linux usa el Multdisk Driver (MD) para soportar RAID creando dispositivos virtuales a partir de 2 o mas dispositivos fisicos.

Preset SHELL Variables


Variables para inicio de sesion:

$USER, $LOGNAME
Usuario actualmente conectado
$PATH
Lista de directorios que seran buscados para comandos externos
$TERM
Tipo de terminal en la cual se esta ejecutando actualmente

Usualmente “xterm” o “vt100”
$PAGER
Nombre del programa el cual prefiere utilizara para la visualizacion de archivos.

Usualmente “more”.

Actualmente esto ya no es usado
$EDITOR
Contiene el nombre del programa el cual el usuario prefiere la edicion de archivos de texto


Variables de configuracion interna:

$PWD
Directorio de trabajo actual
$OLDPWD
Directorio previo
$?
"Set to the exit status of the last command run, so you can test success or failure"
$-
"Set to the currently set options flags."
$!
Coloca el ID del ultimo comando iniciado en background
"Set to the process ID of the last command started in "background
$*
"contains all of the arguments in a single string, with one space separating them:
$$
Coloca el proceso ID actual
Set to the process ID of the current shell
$IFS
Internal Field Separators, grupo de caracters que normalmente se utilizan para analizar una línea de comandos en argumentos separados

SAN vrs NAS



  • NAS


Opera como una extesion del file system del servidor, utilizado para archivos locales.
Lee y escribe como si el disco presentado fuera del servidor mismo.


  • SAN


El almacenamiento es presentado de manera remota, separado del servidor local. El servidor debe operar con un protocolo para comunicarse con la SAN.