lunes, 30 de noviembre de 2009

Estandares y regulaciones de seguridad de informacion wiki

Fuente Wikipedia

ISO/IEC 27001

El estándar para la seguridad de la información ISO/IEC 27001 (Information technology - Security techniques - Information security management systems - Requirements) fue aprobado y publicado como estándar internacional en Octubre de 2005 por International Organization for Standardization y por la comisión International Electrotechnical Commission.
Especifica los requisitos necesarios para establecer, implantar, mantener y mejorar un Sistema de Gestión de la Seguridad de la Información (SGSI) según el conocido “Ciclo de Deming”: PDCA - acrónimo de Plan, Do, Check, Act (Planificar, Hacer, Verificar, Actuar). Es consistente con las mejores prácticas descritas en ISO/IEC 17799 (actual ISO/IEC 27002) y tiene su origen en la norma BS 7799-2:2002, desarrollada por la entidad de normalización británica, la [British Standards Institution] (BSI).

ITIL

Information Technology Infrastructure Library
La Biblioteca de Infraestructura de Tecnologías de Información, frecuentemente abreviada ITIL (del inglés Information Technology Infrastructure Library), es un marco de trabajo de las buenas prácticas destinadas a facilitar la entrega de servicios de tecnologías de la información (TI). ITIL resume un extenso conjunto de procedimientos de gestión ideados para ayudar a las organizaciones a lograr calidad y eficiencia en las operaciones de TI. Estos procedimientos son independientes del proveedor y han sido desarrollados para servir como guía que abarque toda infraestructura, desarrollo y operaciones de TI.


Cobit

Objetivos de control para la información y tecnologías relacionadas
(Redirigido desde COBIT)
Objetivos de Control para la información y Tecnologías relacionadas (COBIT, en inglés: Control Objectives for Information and related Technology) es un conjunto de mejores prácticas para el manejo de información creado por la Asociación para la Auditoría y Control de Sistemas de Información,(ISACA, en inglés: Information Systems Audit and Control Association), y el Instituto de Administración de las Tecnologías de la Información (ITGI, en inglés: IT Governance Institute) en 1992.


Agrego algunos marcos legales que actualmente dirigen al sector publico y privado


HIPPA

La Ley de responsabilidad y transferibilidad de los seguros médicos (Health Insurance Portability & Accountability Act) de 1996 (21 de agosto 21), ley pública 104-191, que modifica el código del Internal Revenue Service de 1986. También conocida como la Ley de Kennedy-Kassebaum.

El Título II incluye una sección, Simplificación administrativa, que exige:

1. Mayor eficiencia en la asistencia médica por medio de la estandarización del intercambio electrónico de datos, y
2. La protección de la confidencialidad y seguridad de los datos médicos, a través del establecimiento y cumplimiento de estándares.

Más específicamente, la HIPAA pide:

1. La estandarización de los datos electrónicos administrativos, financieros y de salud de los pacientes
2. Identificadores médicos únicos para personas, empleados, planes de salud y proveedores de cuidados médicos
3. Normas de seguridad que protejan la confidencialidad y la integridad de la "información médica identificable a nivel personal" pasada, presente o futura.

En resumen: cambios radicales en la mayoría de los sistemas de información administrativos y de transacciones médicas.


CIPA

La Ley de Protección de Niños en Internet (CIPA, por sus siglas en inglés), es una ley federal promulgada por el Congreso para manejar asuntos relacionados con el acceso a contenido ofensivo en Internet, en las computadoras de las escuelas y bibliotecas. La CIPA establece ciertos tipos de requisitos para cualquier escuela o biblioteca que reciba apoyo financiero destinado a cubrir su acceso a Internet o a conexiones internas del programa “E-rate,” un programa que da acceso a ciertas tecnologías de comunicaciones a precios moderados, para las escuelas y bibliotecas elegibles. A principios de 2001, la Comisión Federal de Comunicaciones (FCC, por sus siglas en inglés) emitió normas de implementación de la CIPA.

Sarbanes Oxley

La Ley Sarbanes Oxley, cuyo título oficial en inglés es Sarbanes-Oxley Act of 2002, Pub. L. No. 107-204, 116 Stat. 745 (30 de julio de 2002), es una ley de Estados Unidos también conocida como el Acta de Reforma de la Contabilidad Pública de Empresas y de Protección al Inversionista. También es llamada SOx, SarbOx o SOA.
La Ley Sarbanes Oxley nace en Estados Unidos con el fin de monitorear a las empresas que cotizan en bolsa, evitando que las acciones de las mismas sean alteradas de manera dudosa, mientras que su valor es menor. Su finalidad es evitar fraudes y riesgo de bancarrota, protegiendo al inversor.
Esta ley, más allá del ámbito nacional, afecta a todas las empresas que cotizan en NYSE (Bolsa de Valores de Nueva York), así como a sus filiales.


Gramm-Leach-Bliley Act (GLBA) Servicios Financieros
Las instituciones gobernadas por la GLBA deberán garantizar la seguridad y confidencialidad de los registros e información de clientes
Deberán estar protegidas contra amenazas anticipadas o riesgos de seguridad o integridad de registros
Deberán estar protegidos en contra de accesos no autorizados hacia o el uso de registros o información que pudiera resultar en el daño sustancial o inconvenciencia hacia cualquier cliente.

The Prioritizing Resources & Organization for Intellectual Property Act A todas las compañías de los Estados Unidos de America
En general, le da más latitud al cumplimiento de la ley para poner en ejecución las leyes de propiedad intelectual PI
Protege la PI incluyendo los bienes farmacéuticos, manufacturas y trabajos artísticos tal como el MP3 y archivos de video y otro tipo de contenido transmitido electrónicamente así como en medios de hardware
Las organizaciones que descuiden el aseguramiento de sus redes de descargas ilegales se enfrentarán con multas que incluyen cargos por delincuencia y la confiscación de sus equipos de computo

Instalando ntop en centos 5

Ntop es un analizador de tráfico de red que muestra el uso de la red, similar a lo que el popular comando TOP lo hace. Ntop se basa en libpcap y ha sido escrito en una forma portátil con el fin de ejecutar en prácticamente todas las plataformas Unix y en Win32.

Instalacion :

descargamos la aplicacion via yum

# yum -y install ntop

editamos el archivo de configuracion de ntop

# vi /etc/ntop.conf

=====================================================

### Sets program to run as a daemon
### NOTE: For more than casual use, you probably want this.
#--daemon

### Interface(s) that ntop will capture on (default: eth0)
--interface eth0

### Sets the port that the optional HTTPS webserver listens on
--https-server 3001


===================================================


agregamos la siguiente regla al shorewall

vi /etc/shorewall/rules

====================================================

Ntop/ACCEPT loc $FW

o

ACCEPT loc $FW tcp 3001

====================================================

# shorewall restart
# service iptables save

despues ingresamos el pasword para ntop

#/usr/bin/ntop @/etc/ntop.conf -A

de nuevo editamos el archivo de ntop.conf par habilitarmo como demonio

#vi /etc/ntop.conf

=====================================================

### Sets program to run as a daemon
### NOTE: For more than casual use, you probably want this.
--daemon

=====================================================

# chkconfig ntop on
# service ntop start

checamos en nuestro navegador la información

https://mi_ip:3001

DISFRUTENLO

Snort, Apache, SSL, PHP, MySQL, Barnyard y BASE Instalado en RHEL 5

antes de comenzar hay que hacer una breve lectura al funcionamiento de snort, para comprender que es lo que podemos lograr con el y que no .

Manual de usuario http://www.Snort.org/docs/writing_rules/
Snort FAQ http://www.snort.org/snort/faq/

snort tiene 3 funcinamientos principales : puede ser utilizado como analizador de paquetes como tcpdump, como un colector de paquetes, o como un fuerte detector de intrusos. que a mi gusto no tiene nada que pedirle a los de firmas reconocidas .


Pre requisitos:

debemos tener instalado PHP,MySql,Apache y ntop

# yum –y install mysql mysql-bench mysql-server mysql-devel mysqlclient10 php-mysql httpd gcc pcre-devel php-gd gd mod_ssl glib2-devel gcc-c++ libpcap-devel php php-pear yum-utils
# chkconfig mysqld on
# chkconfig httpd on
# service httpd start
# service mysqld start


bajamos las aplicaciones necesarias

# mkdir ~/snort
# cd ~/snort
# wget http://dl.snort.org/snort-current/snort-2.8.5.1-1.RH5.i386.rpm
# wget http://dl.snort.org/snort-current/snort-2.8.5.1-1.RH5.i386.rpm.md5
# md5sum -c snort-2.8.5.1-1.RH5.i386.rpm.md5
# rpm -ivh snort-2.8.5.1-1.RH5.i386.rpm

para bajar las reglas debemos estar debidamente registrados, existen 2 modalidades, las reglas de suscripción y reglas de usuario registrado, para el ejemplo debemos bajar las de usuario registrado del sitio web https://www.snort.org/snort-rules/ para esto podemos usar links

ya que hemos bajado las reglas las copiamos a el directorio /etc/snort/rules

# tar –xvzf snortrules-snapshot-CURRENT.tar.gz
# cd ~/snort/snortrules-snapshot-CURRENT/rules/
# cp * /etc/snort/rules

editamos el archivo de configuración de snort

# vi /etc/snort/snort.conf

================================================================
var HOME_NET 10.0.0.0/24 # descomentamos y configuramos nuestro segmento de red
var EXTERNAL_NET !$HOME_NET # esto significa todo lo que no sea de tu red
var RULE_PATH /etc/snort/rules #verificamos que sea correcta la dirección
output alert_unified: filename snort.alert, limit 128 # descomentar
output log_unified: filename snort.log, limit 128 # descomentar

===============================================================

agregamos snort al chkconfig

# chkconfig snortd on


configuramos mysql

# mysql -u root

mysql mysql> SET PASSWORD FOR root@localhost=PASSWORD('root_password');
>Query OK, 0 rows affected (0.25 sec)
mysql> create database snort;
>Query OK, 1 row affected (0.01 sec)
mysql> grant INSERT,SELECT on root.* to snort@localhost;
>Query OK, 0 rows affected (0.02 sec)
mysql> SET PASSWORD FOR snort@localhost=PASSWORD('tu_pass_snort');
>Query OK, 0 rows affected (0.25 sec)
mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
>Query OK, 0 rows affected (0.02 sec)
mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort;
>Query OK, 0 rows affected (0.02 sec)
mysql> exit
>Bye

buscamos el archivo de tablas de snort para mysql

# rpm -ql snort | grep schemas
# mysql -u root -p < /usr/share/snort-2.8.5.1/schemas/create_mysql snort

descargamos barnyard que es un interprete de información de logs de snort a mysql

# wget http://dl.snort.org/barnyard/barnyard-0.2.0.tar.gz
# tar –xvzf barnyard-0.2.0.tar.gz
# cd barnyard-0.2.0
# ./configure --enable-mysql
# make
# make install
# cd etc/
# cp barnyard.conf /etc/snort

editamos el archivo /etc/snort/barnyard.conf y hacemos los siguientes cambios

# vi /etc/snort/barnyard.conf

descomentamos las siguientes lineas
============================================================

enable daemon mode
#estas lineas son informativas para el acid puedes poner lo que gustes
config hostname: snorthost
config interface: fxp0
#configuras con los datos dados en mysql las siguientes lineas
ooutput alert_acid_db: mysql, sensor_id 1, database snort, server localhost, user snort, password snort
output log_acid_db: mysql, database snort, server localhost, user snort, password snort, detail full

===========================================================

Tienes que crear un archivo de Waldo de barnyard . Haga lo siguiente

# snort -c /etc/snort/snort.conf

y dejar que llegue a la parte que dice: No utilizar PCAP_FRAMES, déjelo funcionar durante unos segundos y pulsa Ctrl + C para detenerlo. Buscar en /var/log/snort y podrás ver los archivos como este:

-rw------- 1 root root 16 Jun 21 07:06 snort.alert.1182427612
-rw------- 1 root root 24 Jun 21 07:06 snort.log.1182427612

generamos un archivo llamado /var/log/snort/barnyard.waldo

# vi touch /var/log/snort/barnyard.waldo

y agregamos el nombre del archivo snort.log.1182427612 de la siguiente manera:

=========================================
/var/log/snort snort.log 1182427612 0

========================================

bajamos el script de control de demonio de la siguiente direccion

# wget http://www.internetsecurityguru.com/barnyard
# cp barnyard /etc/init.d/
# chkconfig barnyard on
# service barnyard start

descargamos el paquere base y ADODB

# cd ~/snort
# wget http://easynews.dl.sourceforge.net/sourceforge/adodb/adodb480.tgz
# wget http://easynews.dl.sourceforge.net/sourceforge/secureideas/base-1.3.5.tar.gz
# cd /var/www/
# tar -xvzf ~/snort/adodb480.tgz
# cd /var/www/html
# tar –xvzf ~/snort/base-1.3.5.tar.gz
# mv base-1.3.5.tar.gz base

ajo con esta operación ya que permisos inadecuados puede ocasionar que el no se visualice correctamente.

copiamos el archivo de configuración base

# cp base_conf.php.dist conf.php

editamos el archivo

vi /var/www/html/base/config.php

===========================================
$BASE_urlpath = "/base";
$DBlib_path = "/var/www/adodb/ ";
$DBtype = "mysql";
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "snort";
$alert_password = "password_from_snort_conf";

==============================================

ahora en un navegador de internet accesamos al sistema base

https://tu_ip_servidor/base


presionamos donde dice setup page .. y seguimos la intrucciones .

aseguramos la ruta con htpasswd

# mkdir /var/www/passwords
# /usr/bin/htpasswd -c /var/www/passwords/passwords base

agregamos las configuraciones en el servidor apache


y queda felizmente instalado nuestro detector de intrusos IDS/IPS

domingo, 29 de noviembre de 2009

Linux cluster con Heartbeat para servidores http

Este pequeno manual indica como configurar un Linux cluster con Heartbeat , ambos servidores deben tener configurado Apache como servidor web


Primer paso, configurar correctamente las interfaces de red de los sistemas de la siguiente manera.

# system-config-network

mostrara un menu que nos preguntara que tipo de interfaz requerimos configurar y seleccionamos ethernet, configuramos apropiadamente las configuraciones de red. para nuestro ejemplo asignaremos las ips a nuestros hosts 192.168.1.2 y 192.168.1.3

verificamos que el fully qualified domain name para verificar que este correctamente configurado.

Nota: podemos hacer uso de clusterssh para configurar múltiples servidores

# cssh nodo01 nodo02

# uname -n

descargamos los paquetes necesarios via yum

# yum -y install heartbeat

ahora tenemos que configurar los archivos authkeys, ha.cf y haresources si no los encuentra en el archivo /etc/ha.d hacemos lo siguiente

# rpm -ql heartbeat | grep doc

copiamos los archivos si no los genero

# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

ahora editamos el archivo de autentificacion authkeys

# vi /etc/ha.d/authkeys

como lo recomienda el archivo de configuración seleccionamos la mejor opción

==================================
auth 2
#1 crc
2 sha1 una_clave
#3 md5 Hello!
==================================
cambiamos los permisos para mayor seguridad

# chmod 600 /etc/ha.d/authkeys

editamos el archivo ha.cf el cual es el mas importante

==================================
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node node01
node node02
==================================

editamos el archivo /etc/ha.d/haresources

# vi vi /etc/ha.d/haresources

agregamos la siguiente linea

==================================
node01 192.168.1.4 httpd

==================================

Nota: si no utilizamos cssh debemos copiar los archivos a los servidores si no omitir el sig paso

# scp -r /etc/ha.d/ root@node02:/etc/


editamos el archivo de configuración de http

# vi vi /etc/httpd/conf/httpd.conf

cambiamos la configuracion de Listen en ambos nodos

================================

Listen 192.168.1.4:80

================================


agregamos el servio a chkconfig

# chkconfig heartbeat on

arrancamos el servcio

# service heartbeat start


podemos hacer pruebas editando el archivo index por default y bajamos los servicios de los servidores para verificar cuando entra cada uno

Nmap Parte 1

Nmap es un mapeador de red de codigo abierto, que permite hacer evaluaciones de seguridad y adutoria de redes su estructura de comando es la siguiente nmap [ ...] [ ] { }, nmap puede ser utilizado con proxychains para encubrir nuestra ubicacion original para comenzar nuestra explicacion incluire las opcines disponibles en nmap

# nmap --help

==============================================================================
ESPECIFICACIÓN DE OBJETIVO:
Se pueden indicar nombres de sistema, direcciones IP, redes, etc.
Ej: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL : Lee una lista de sistemas/redes del archivo.
-iR : Selecciona objetivos al azar
--exclude : Excluye ciertos sistemas o redes
--excludefile : Excluye los sistemas indicados en el fichero
DESCUBRIMIENTO DE HOSTS:
-sL: Sondeo de lista - Simplemente lista los objetivos a analizar
-sP: Sondeo Ping - Sólo determina si el objetivo está vivo
-P0: Asume que todos los objetivos están vivos
-PN: Asume que todos los objetivos están vivos -- skip host discovery
-PS/PA/PU [listadepuertos]: Análisis TCP SYN, ACK o UDP de los puertos indicados
-PE/PP/PM: Solicita un análisis ICMP del tipo echo, marca de fecha y máscara de red
-n/-R: No hacer resolución DNS / Siempre resolver [por omisión: a veces]
--dns-servers : Especificar servidores DNS específicos
--system-dns: Utilizar la resolución del sistema operativo
TÉCNICAS DE ANÁLISIS:
-sS/sT/sA/sW/sM: Análisis TCP SYN/Connect()/ACK/Window/Maimon
-sN/sF/sX: Análisis TCP Null, FIN, y Xmas
--scanflags : Personalizar los indicadores TCP a utilizar
-sI : Análisis pasivo («Idle», N. del T.)
-sO: Análisis de protocolo IP
-b : Análisis por rebote FTP
ESPECIFICACIÓN DE PUERTOS Y ORDEN DE ANÁLISIS:
-p : Sólo sondear los puertos indicados
Ej: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-F: Rápido - Analizar sólo los puertos listados en el archivo nmap-services
-r: Analizar los puertos secuencialmente, no al azar.
DETECCIÓN DE SERVICIO/VERSIÓN:
-sV: Sondear puertos abiertos, para obtener información de servicio/versión
--version-intensity : Fijar de 0 (ligero) a 9 (probar todas las sondas)
--version-light: Limitar a las sondas más probables (intensidad 2)
--version-all: Utilizar todas las sondas (intensidad 9)
--version-trace: Presentar actividad detallada del análisis (para depurar)
DETECCIÓN DE SISTEMA OPERATIVO
-O: Activar la detección de sistema operativo (SO)
--osscan-limit: Limitar la detección de SO a objetivos prometedores
--osscan-guess: Adivinar el SO de la forma más agresiva
TEMPORIZADO Y RENDIMIENTO:
-T[0-5]: Seleccionar plantilla de temporizado (los números altos son más rápidos)
--min-hostgroup/max-hostgroup : Paralelizar los sondeos
--min-parallelism/max-parallelism : Paralelización de sondeos
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : Indica
el tiempo de ida y vuelta de la sonda
--max-retries : Limita el número máximo de retransmisiones de las
sondas de análisis de puertos
--host-timeout : Abandonar un objetivo pasado este tiempo
--scan-delay/--max-scan-delay : Ajusta el retraso entre sondas
EVASIÓN Y FALSIFICACIÓN PARA CORTAFUEGOS/IDS:
-f; --mtu : fragmentar paquetes (opc. con el MTU indicado)
-D : Disimular el análisis con señuelos
N. del T.: «ME» es «YO» mismo.
-S : Falsificar la dirección IP origen
-e : Utilizar la interfaz indicada
-g/--source-port : Utilizar el número de puerto dado
--data-length : Agregar datos al azar a los paquetes enviados
--ttl : Fijar el valor del campo time-to-live (TTL) de IP
--spoof-mac : Falsificar la dirección MAC
--badsum: Enviar paquetes con una suma de comprobación TCP/UDP falsa
SALIDA:
-oN/-oX/-oS/-oG : Guardar el sondeo en formato normal, XML,
s|< rIpt kIddi3 (n3n3b4n4n4), y Grepeable (para usar con grep(1), N. del T.), respectivamente, al archivo indicado. -oA : Guardar en los tres formatos principales al mismo tiempo
-v: Aumentar el nivel de mensajes detallados (-vv para aumentar el efecto)
-d[nivel]: Fijar o incrementar el nivel de depuración (Tiene sentido hasta 9)
--packet-trace: Mostrar todos los paquetes enviados y recibidos
--iflist: Mostrar interfaces y rutas (para depurar)
--append-output: Agregar, en vez de sobreescribir, a los archivos indicados con -o.
--resume : Retomar un análisis abortado/detenido
--stylesheet : Convertir la salida XML a HTML según la hoja de estilo
XSL indicada
--webxml: Referenciar a la hoja de estilo de Insecure.Org para tener un XML más portable
--no_stylesheet: No asociar la salida XML con ninguna hoja de estilos XSL
MISCELÁNEO:
-6: Habilitar análisis IPv6
-A: Habilita la detección de SO y de versión
--datadir : Indicar la ubicación de los archivos de datos Nmap
personalizados.
--send-eth/--send-ip: Enviar paquetes utilizando tramas Ethernet o paquetes IP
"crudos"
--privileged: Asumir que el usuario tiene todos los privilegios
-V: Muestra el número de versión
-h: Muestra esta página resumen de la ayuda.

EJEMPLOS:
nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -P0 -p 80

==============================================================================

si requerimos saber mas acerca de nmpa podemos solicitar el man que nos explicara a fondo el funcionamiento

#man nmap

Entradas de objetivos

nmap puede aceptar objetivos individuales por segmento o segmentos de red por ejemplo

# proxychains nmap 192.168.1.2 192.168.0.0/24 192.168.3-6,10.0/24 ejmplo.com

nmap permite la entrada de archivos como objetivos y excluir objetivos por ejemplo

# proxychains nmap -iL objetivos.txt --excludefile excluir.txt -iR 100

Descubrimiento de objetivos .

Para un administrador de sistemas, el asegurar sus activos principales puede ser un objetivo basico, para un auditor de seguridad cualquier objetivo es una oportunidad de amenaza. Nmap puede generar sondas desde el exterior que permitan descubrir cualquier activo en el interior de una red. para lo cual podemos utilizar todas las capacidades que nos brinda nmap como son sondas, ACK,SYN,FIN,ICMP,UDP,TCP,ETC.

Nmap muestra 7 respuestas posibles a un reconocimiento.

Abieto : Una aplicación acepta conexiones TCP o paquetes UDP en este puerto
Cerrado : Un puerto cerrado es accesible: recibe y responde a las sondas de Nmap, pero no tiene una aplicación escuchando en él
filtrado: Nmap no puede determinar si el puerto se encuentra abierto porque un filtrado de paquetes previene que sus sondas alcancen el puerto.
No filtrado: Este estado indica que el puerto es accesible, pero que Nmap no puede determinar si se encuentra abierto o cerrado.
Abierto|Filtrado :Nmap marca a los puertos en este estado cuando no puede determinar si el puerto se encuentra abierto o filtrado.
Cerrado|Filtrado : Este estado se utiliza cuando Nmap no puede determinar si un puerto se encuentra cerrado o filtrado, y puede aparecer aparecer sólo durante un sondeo IPID pasivo.

Aunque Nmap intenta generar resultados precisos, hay que tener en cuenta que estos resultados se basan en los paquetes que devuelve el sistema objetivo (o los cortafuegos que están delante de éstos). Estos sistemas pueden no ser fiables y envíar respuestas cuyo objetivo sea confundir a Nmap.


hacemos un ejemplo de como determinar si un sistema esta vivo.

# proxychains nmap -v -sP 192.168.0/24

muestra informacion sobre los puertos abiertos

# proxychains nmap -v -PS 80 192.168.0.0/24

muestra informacion del sistema operativo y puertos abiertos

# proxychains nmap -v -sV -O 192.168.0.0/24

realizar un analisis solo puertos contenidos en el service

#proxychains nmap -v -F -PN -O 192.168.0.0/24

realizar un analisis de enumeracion con una ip falsa

# proxychains -nmap -v -F -O 192.168.0.0/24 -S 192.168.1.1

realizar un analisis de enumeraion con una interfaz falsa y direccion mac falsa

# proxychains -nmap -v -F -O 192.168.0.0/24 -e eth0 --spoof-mac 00:00:00:00:00

lanzamos un analisis de enumeracion tipo tcp, sin resolver DNS, en los puertos asignados

# proxychains nmap -sT -PN -n -sV -O -p 21,22,53,80,110,139,143,443


contramedida para este tipo de analisis es configurar un equipo detector de intrusos, desgraciadamente poca gente sabemos con funciona corectamente, pero en sesiones posteriores mostraremos como configurarlo .

sábado, 28 de noviembre de 2009

Como configurar proxychains para pruebas de seguridad

es una herramiente que forza las conexiones tcp a salir por un servidor proxy como TOR o cualquier otro como SOCKS4 SOCKS5 o HTTP proxy para instalarlo bajamos la aplicacion

configuramos los depositos yum de dag wieers y fedora


instalamos la aplicacion con yum

# yum -y install proxychains

respaldamos nuestra configuracion original

# cp /etc/proxychains.conf /etc/proxychains.conf.old

limpiamos el archivo de comentarios y espacios en blanco

# sed -e '/^#/d' /etc/proxychains.conf.old | sed -e '/^$/d' > /etc/proxychains.conf

hacemos una busqueda en internet por proxys que esten disponibles pongo un ejemplo de mi archivo

random_chain
chain_len = 2
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
http 127.0.0.1 8118 # utiliza privoxy local
socks4 127.0.0.1 9050 # utiliza privoxy local
http 59.39.145.178 3128
http 174.142.24.201 3128
http 190.14.246.42 3128
http 200.41.230.102 3128
http 121.14.157.36 80
http 200.174.85.195 3128
http 65.23.153.95 3128
http 200.107.15.58 80
http 201.161.46.38 8080
http 141.85.118.1 80
http 63.97.171.151 80

y podemos ejecutar aplicaciones via proxychains sin ser descubiertos facilmente

# proxychains nmap -sT -PN -n -sV -p sitio.com

# proxychains telnet sitio.com:25

este es excelente para realizar pruebas de penetracion en tus equipos . mas adelante les informare acerca de uso de nmap como herramienta de de evaluacion de seguridad

Como configurar TOR para navegar anonimo

Tor es un proyecto software que le ayuda a defenderse contra el análisis de tráfico, una forma de vigilancia de la red que amenaza la libertad personal y la privacidad, la confidencialidad en los negocios y relaciones, y la seguridad del estado. Tor le protege transmitiendo sus comunicaciones a través de una red distribuída de repetidores llevados por voluntarios de todo el mundo: evita que alguien que observa su conexión a Internet aprenda qué sitios visita, y evita que los sitios que visita aprendan su posición física. Tor funciona con muchas de sus aplicaciones existentes, incluyendo navegadores web, clientes de mensajería instantánea, acceso remoto, y otras aplicaciones basadas en el protocolo TCP.

primer paso :

descargar el aplicartivo del sitio .

# wget http://www.torproject.org/dist/rpm/tor-0.2.1.20-tor.0.rh5_3.i386.rpm
# wget http://www.torproject.org/dist/rpm/tor-0.2.1.20-tor.0.rh5_3.i386.rpm.asc
# md5sum -c tor-0.2.1.20-tor.0.rh5_3.i386.rpm.asc
# rpm -ivh tor-0.2.1.20-tor.0.rh5_3.i386.rpm

descargamos la aplicacion de privoxy

#wget http://sourceforge.net/projects/ijbswa/files/Sources/3.0.12%20%28stable%29/privoxy-3.0.12-stable-src.tar.gz
#wget http://sourceforge.net/projects/ijbswa/files/Sources/3.0.12%20%28stable%29/privoxy-3.0.12-stable-src.tar.gz.asc
#md5sum -c privoxy-3.0.12-stable-src.tar.gz.asc

descomprimimos el paquete y comlilamos .

# tar -xvzf privoxy-3.0.12-stable-src.tar.gz
# cd privoxy-3.0.12-stable
# ./configure
# make
# make install

editamos el archivo /etc/privoxy/config

# vi /etc/privoxy/config

añada la línea

forward-socks4a / 127.0.0.1:9050 .


al principio del fichero de configuración. No se olvide de añadir el punto al final.

Privoxy mantiene un fichero de log de todo lo que pasa a su través. Para evitar esto tendrá que comentar tres líneas insertando un # antes de la línea. Las tres líneas son:


logfile logfile
jarfile jarfile

y (en algunos sistemas) la línea


debug 1 # show each GET/POST/CONNECT request

Dependiendo de qué fichero de configuración por defecto tenga para Privoxy, puede que también tenga que desactivar enable-remote-toggle, enable-remote-http-toggle, y enable-edit-actions.

el archivo queda mas o menos de esta forma

=============================================


forward-socks4a / 127.0.0.1:9050 .
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile standard.action # Internal purpose, recommended
actionsfile global.action # Global default setting for all sites
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
filterfile default.filter
listen-address 127.0.0.1:8118
toggle 1
enforce-blocks 0
buffer-limit 4096
forwarded-connect-retries 0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0


=============================================

arrancamos el servicio de privoxy

# service privoxy restart


siguiente paso es configurar el firefox con el plug-in de TOR desgargandolo del siguiente
sitio .

finalmente reiniciamos nuestro navegador de internet, presionamos el boton que parace en la parte inferior derecha, ingresamos a google y nos mostrara que nos encontramos en otro pais distinto al nuestro

Configurar Open Vpn para generar redes con Prodigy - DynDns

#OpenVpn es una aplicación poderosa para generar redes privadas virtuales de bajo costo y alto rendimiento, es utilizado comúnmente para conectar múltiples  puntos distantes en nuestra organización, dar acceso a usuarios móviles. OpenVpn operan en capa 2 y 3 del modelo osi, en la parte de seguridad ofrece 2 métodos de encripatacion de los enlaces , uno es por llaves simétricas y otra por llaves asimétricas, la diferencia entre ellas es que las simetricas, se utiliza la misma llave para encriptar y decriptar, y en asimétricas se utiliza la llave privada para encriptar y la publica para desencriptar . lo cual proporciona autenticidad e integridad.

Ventajas :


Conexiones OpenVPN pueden ser realizadas a través de casi cualquier firewall
Solo un puerto en el firewall debe ser abierto para permitir conexiones, dado que desde OpenVPN 2.0 se permiten múltiples conexiones en el mismo puerto TCP o UDP
Las interfaces virtuales (tun0, tun1, etc.) permiten la implementación de reglas de firewall muy específicas
Soporte transparente para IPs dinámicas. Se elimina la necesidad de usar direcciones IP estáticas en ambos lados del túnel
Desventaja:
No tiene compatibilidad con IPsec que justamente es el estándar actual para soluciones VPN
Todavía existe poca gente que conoce como usar OpenVPN
configuramos los depósitos yum

#rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

Instalamos las paqueterias necesaria

# yum -y install openvpn openssl

ubicamos donde se guardan los archivos de easy-rsa

# rpm -ql openvpn | grep easy-rsa


copiamos dentro del directorio /etc/openvpn/ los archivos openssl.cnf, whichopensslcnf, pkitool y vars, que se localizan en /usr/share/openvpn/easy-rsa/2.0/ (esta ruta puede cambiar y es obtenida con el comando anterior )

# cp /usr/share/openvpn/easy-rsa/2.0/openssl.cnf /etc/openvpn
# cp /usr/share/openvpn/easy-rsa/2.0/whichopensslcnf /etc/openvpn
# cp /usr/share/openvpn/easy-rsa/2.0/pkitool /etc/openvpn
# cp /usr/share/openvpn/easy-rsa/2.0/vars /etc/openvpn

editamos el archivo /etc/openvpn/vars las variables " KEY_COUNTRY,KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL "

# vi /etc/openvpn/vars

export KEY_COUNTRY="MI_PAIS"
export KEY_PROVINCE="MI_ESTADO"
export KEY_CITY="MI_CIUDAD"
export KEY_ORG="MI_ORGANIZACION"
export KEY_EMAIL="MICUENT@_DE_CORREO"

cargamos los cambios en las variables de la siguiente manera

# source ./vars

ejecutamos el script de limpia para prevenir que cualquier otra llave este en el folder

# sh /usr/share/openvpn/easy-rsa/2.0/clean-all

ejecutamos el escrip de generación del certificado, si no existe el folder keys lo generara .

# sh /usr/share/openvpn/easy-rsa/2.0/build-ca

generamos las firmas digitales para el servidor

# sh /usr/share/openvpn/easy-rsa/2.0/build-dh
# sh /usr/share/openvpn/easy-rsa/2.0/build-key-server matriz

generamos las llaves asimétricas para los clientes que se conectaran

# sh /usr/share/openvpn/easy-rsa/2.0/build-key sucursal1
# sh /usr/share/openvpn/easy-rsa/2.0/build-key sucursal2
# sh /usr/share/openvpn/easy-rsa/2.0/build-key sucursalN

copiamos el archivo de configuración de ejemplo que se encuentra en /usr/share/doc/openvpn-2.1/sample-config-file/

# cp /usr/share/doc/openvpn-2.1/sample-config-file/server.conf ./

editamos el archivo con nuestras configuraciones

# vi /etc/openvpn/server.conf
========================================
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/matriz.crt
key keys/matriz.key
dh keys/dh1024.pem
server 10.0.0.2 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status server.log
verb 3
========================================
en caso de tener activado se linux debemos otorgarle permiso

# restorecon -R /etc/openvpn/

creamos los archivos de con server.log y ipp.txt

# cd /etc/openvpn/
# touch /etc/openvpn/ipp.txt
# touch /etc/openvpn/server.log


asignamos propiedades de lectura/escritura a los archivos

# chcon -u system_u -r object_r -t openvpn_etc_rw_t /etc/openvpn/ipp.txt
# chcon -u system_u -r object_r -t openvpn_etc_rw_t /etc/openvpn/server.log

agregamos el servicio al chkconf

# chkconf openvpn on

generamos el archivo remoto para indicar que esas rutas seran utilizadas para la salida de paquetes

Iniciamos el servicio  de openvpn

# service openvpn start

para el cliente en linux , seguimos los mismos pasos de instalacion .
copiamos el archivo cliente.conf

# cp /usr/share/doc/openvpn-2.1/sample-config-file/cliente.conf ./

editamos el archivo de configuración de cliente

# vi /etc/openvpn/cliente.conf

========================================
client
dev tun
proto udp
remote IP_SERVIDOR_O_NOMBRE_DOMININIO
float
resolv-retry infinite
nobind
persist-key
persist-tun

ca key/ca.crt
cert key/sucursal1.crt
key key/sucursal1.key
ns-cert-type matriz

comp-lzo
verb 3
 ========================================

 copiamos los archivos sucursal1.crt y sucursal1.key  al cliente .

# scp -P 22 sucursal.* usuario@ip_cliente:/etc/openvpn/

creamos el archivo matriz.up  que nos dara la ruta de salida a nuestra red coporativa

Iniciamos el servicio de openvpn

# service openvpn restart

adecuamos nuestros firewalls para permitir conecciones

editamos el archivo de zonas en el shorewall

# vi /etc/shorewall/zones

agregamos la siguiente linea

===================================
vpn ipv4
===================================

editamos el archivo de interfaces

#vi /etc/shorewall/interfaces

agregamos la siguiente linea

===================================
vpn  tun+    detect
===================================

editamos el archivo de politicas del shorewall


#vi /etc/shorewall/policy

agregamos los permisas para compartir las redes .


===================================

vpn $FW ACCEPT
vpn loc ACCEPT
loc vpn ACCEPT
$FW vpn ACCEPT

===================================


editamos el archivo de reglas

# vi /etc/shorewall/rules

agregamos la siguiente linea ( tambien podemos hacer un macro.OPENVPN )


===================================
ACCEPT net $FW udp 1194

===================================

finalmente agregamos la ruta al archivo de tunnels para que permita hacer conexiones a la vpn de cualquier ubicacion .

# vi /etc/shorewall/tunnles

agregamos la siguiente linea

===================================
openvpnserver:1194 vpn 0.0.0.0/0
===================================


configuramos una cuenta y descargamos de DynDns.org el archivo ddclient

# wget http://cdn.dyndns.com/ddclient.tar.gz

descomprimimos el archivo

# tar -xvzf ddclient.tar.gz

copiamos el script ddcliente al /usr/sbin/

# cp ddclient /usr/sbin/

creamos un folder en /etc/ddclient para guardas las configuracions y copiamos el ejemplo

# mkdir /etc/ddclient
# cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf

editamos el achivo de configuraciones

# vi /etc/ddclient/ddclient.conf

congiramos hostnames, logins y passwords, descomentamos las lineas de nuestro routey las lineas del servicio de dyndns

copiamos el archivo sample-etc_rc.d_init.d_ddclien a /etc/rc.d/init.d/ddclient

# cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient

abilitamos el para que arranque al inicio de nuestro sistema como servicio

# chkconfig --add ddclient
# chkconfig ddclient on

corremos el servicio

# service ddclient start


tenemos nuestra vpn montada

jueves, 26 de noviembre de 2009

Como configurar shorewall basico

"Shorewall", es herramienta de alto nivel para la configuración de Netfilter. Shorewal permite la configuración de un firewall de host, de un servidor bastian, un firewall enrutador, y manejar complejas configuraciones. Shorewall cuenta con soporte para IPV4 e IPV6, actualmente IPV6 brinda una amplia gama de opciones de seguridad pero ha sido poco adoptada hasta el momento , en sig manual explicara la forma de configurar un firewall con IPV4.

Para comenzar indicaremos algunos conceptos basico :

Firewall : un software utilizado en redes de computadoras para controlar las comunicaciones, permitiéndolas o prohibiéndolas. existen múltiples generaciones de firewalls, pero al implementar uno de ellos debemos evaluar nuestras necesidades

Bastión host: Es una computadora en una red que ofrece un único punto de entrada y salida a Internet desde la red interna y viceversa. Un servidor bastión se usan para mitigar los riesgos de seguridad de una red, ofreciendo una barrera entre el área pública y privada.

DMZ: Es una zona desmilitarizada (DMZ, demilitarized zone) o red perimetral es una red local que se ubica entre la red interna de una organización y una red externa.

RED PRIVADA: una red privada es una red que usa el espacio de direcciones IP especificadas en el documento RFC 1918. A los terminales puede asignársele direcciones de este espacio de direcciones cuando se requiera que ellas deban comunicarse con otras terminales dentro de la red interna (una que no sea parte de Internet) pero no con Internet directamente.

NAT: (Network Address Translation - Traducción de Dirección de Red) es un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que se asignan mutuamente direcciones incompatibles. Consiste en convertir en tiempo real las direcciones utilizadas en los paquetes transportados.

En ambientes complejos podemos utilizar multiples firewalls o routers para segregar las redes, o incrementar los niveles de seguridad en las dmz. en este manual explicaremos como hacer un firewall con filtro para la red privada, una dmz y salida a internet .

Instalamos los repositorios de Dag

### deposito yum para DAG WIERS

#rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm


Instalamos la paqueteria necesaria

# yum -y install shorewall

si requiere una explicación detallada de como configurar shorewall para 2 redes o standalone puede revisar la documentación de la siguiente forma.

# rpm -ql shorewall-common | fgrep three-interfaces
o
# rpm -ql shorewall-common | fgrep two-interfaces
o
# rpm -ql shorewall-common | fgrep one-interface


hacemos un respaldo de todos los archivos

# cd /etc/shorewall
# for i in 'ls' ; do cp $i $i.OLD

Editamos el archivo /etc/shorewall/shorewall.conf

# vi /etc/shorewall/shorewall.conf

modificamos los parámetros STARTUP_ENABLED=Yes y CLAMPMSS=Yes

editamos el archivo de zonas /etc/shorewall/zones

# vi /etc/shorewall/zones

==============================================

#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall # firewall del host
net ipv4 # firewall de Internet
loc ipv4 # firewall de la red local
dmz ipv4 # firewall de la dmz
vpn ipv4 # firewall zona de vpn
==============================================

podemos agregar zonas como interfaz de red tengamos de red tengamos . en algunas versiones la zona de fw esta definida en el archivo shorewall.conf
Editamos el archivo de interfaces

#vi /etc/shorewall/interfaces

==============================================


#ZONE INTERFACE BROADCAST OPTIONS
#net ppp0 detect dhcp,tcpflags,norfc1918,routefilter,nosm
urfs,logmartians
net eth0 detect
loc eth1 detect
dmz eth2 detect
vpn tun+ detect


#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

==============================================

como pueden notar en la primera linea tengo comentada la interfaz "net ppp0 " , que anteriormente se utilizaba en conexiones directas a internet , actualmente ya no se usan.

Editamos el archivo /etc/shorewall/policy este archivo determinara desde que zona se puede conectar hacia otra , es importante solo habilitar las necesarias .

# vi /etc/shorewall/policy

==============================================
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
loc net ACCEPT # da aceeso de la red internet
$FW net ACCEPT # da acceso al host al intert
loc $FW ACCEPT # permite a la red comunicase con el host
$FW loc ACCEPT # permite al host comunicase con la red
loc vpn ACCEPT # permite a la red hacia la vpn
vpn loc ACCEPT # permite a la vpn hacia la red
$FW vpn ACCEPT # permite el host hacia la vpn
vpn $FW ACCEPT # permite a la vpn al host
vpn net DROP info # niega el acceso de la vpn a internet
net vpn DROP info # niega el acceso de internet a la vpn
net all DROP info # niega los acceso de internet a todo
dmz net ACCEPT # acepta de la dmz a internet
dmz loc DROP # niega de la dmz a la red local
loc dmz ACCEPT # permite el acceso de la red a la dmz


# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info #niega todas las reglas no establecias

==============================================

Editamos el archivo de /etc/shorewall/masq el cual permite hacer un mascarad entre las tarjetas de red

# vi /etc/shorewall/masq

==============================================

#INTERFACE              SUBNET          ADDRESS         PROTO   PORT(S) IPSEC
eth1                    eth0


#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE


==============================================
este ejemplo lo podemos hacer con solo un segmento de red  ..


==============================================

#INTERFACE              SUBNET          ADDRESS         PROTO   PORT(S) IPSEC
eth1                    192.168.0.1/36


#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE


==============================================



editamos el archivo de reglas /etc/shorewall/rules , el cual define cuales puertos pueden ser accesados ya sea por ip, zonas, subredes, protocolos, servicios etc. shorewall contiene archivos llamados macros con los servicios mas comunes los cuales se encuentran en /usr/share/shorewall/macro.Nombr_servicio


# vi /etc/shorewall/rules


==============================================

SSH/ACCEPT all $FW # habilita el ssh desde todas las interfaces
Ping/DROP all all # Niega el request del ping
Web/ACCEPT all all # acepta el trafico hacia el servido web
REJECT loc net udp 1863 # niega la salida por el puerto 1863
ACCEPT net $FW tcp 22,25,465,143,110 - - 10/sec:4 #
REDIRECT loc 3128 tcp 80 # redirecciona del 80 al 3128
DNAT all loc:192.158.1.2 udp 8080 # hace un DNAT de todas las interfaz al
REJECT net:201.238.235.131 all tcp # evitar conexiones de la net a cualquier


==============================================

estructura de un macro.Servicio

==============================================


#ACTION SOURCE  DEST    PROTO   DEST    SOURCE  ORIGINAL        RATE    USER/
#                               PORT    PORT(S) DEST            LIMIT   GROUP
PARAM   -       -       udp     
PARAM   -       -       tcp     
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE


==============================================

Podemos hacer un filtrado de paquetes por la mac adress  editamos en el /etc/shorewall/shorewall.conf  los parametros  "MACLIST_DISPOSITION=REJECT MACLIST_LOG_LEVEL=info "

# vi /etc/shorewall/shorewall.conf

editamos el archivo de interfaces


#vi /etc/shorewall/interfaces

y agregamos la siguiente linea .

==============================================


Wifi $WIFI_IF - maclist,dhcp

==============================================

editamos el archivo /etc/shorewall/maclist

# vi /etc/shorewall/maclist

==============================================

#DISPOSITION INTERFACE MAC IP ADDRESSES (Optional)
ACCEPT $WIFI_IF 00:04:5e:3f:85:b9 #WAP11
ACCEPT $WIFI_IF 00:06:25:95:33:3c #WET11
ACCEPT $WIFI_IF 00:0b:4d:53:cc:97 192.168.3.8 #TIPPER
ACCEPT $WIFI_IF 00:1f:79:cd:fe:2e 192.168.3.6 #Work Laptop

==============================================



Configurar Fail2ban contra ataques de fuerza bruta

Fail2ban es una aplicación utilizada para combatir ataques de fuerza bruta en diversos servicios ,  esto lo hace analizando los logs por específicos intentos de ingreso al sistema en un determinado intervalo de tiempo,  hoy veremos como configurarlo para una aplicación muy esencial como SSH.

para comenzar instalamos las aplicaciones necesarias por medio de yum.

#yum -y install fail2ban

editamos el archivo /etc/fail2ban/jail.conf

#vi  /etc/fail2ban/jail.conf

configuramos los ips o segmentos de red que seran excluidos de la restriccion de fail2ban "ignoreip", tambien encontraremos la regla de cuanto tiempo estaran restringidos los host "bantime" , cuanto tienpo buscara los intentos "findtime" (los tiempos son dados en segundos ) y cuantos intentos son los maximos permitidos "maxretry" , cabe mencionar que en las reglas especificas del servicio se sobre ponen a las reglas generales .

==========================================================

ignoreip = 127.0.0.1 192.168.0.0/24


bantime  = 600

findtime  = 600

maxretry = 3



==========================================================


ahora habilitamos el servicio que requerimos , en las jaulas correspondientes  . pondremos como ejemplo la de SSH, cambiamos los parámetros resaltados en rojo

==========================================================

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=you@mail.com, sender=fail2ban@mail.com]
logpath  = /var/log/sshd.log
maxretry = 5
==========================================================


grabamos los cambios en el archivo reiniciamos  el servicio

# service fail2ban restart

si requerimos  borrar una regla  agregada al iptables  listamos las reglas de iptables

# iptables -L

y borramos la regla  deceada

# iptables -D regla_fail2ban
#service iptables save

si no deseamos utilizar iptables , cambiamos la configuración a tcpwrappers

==========================================================

[ssh-tcpwrapper]

enabled = true
filter = sshd
action = hostsdeny
mail-whois[name=SSH, dest=root@localhost]
logpath = /var/log/auth.log

==========================================================

reiniciamos el servicio de fail2ban

# service failt2ban restar

Configurar Fail2ban squirrelmail contra ataques de fuerza bruta

Este manual muestra como prevenir ataques de fuerza bruta contra Squirrelmail con Fail2ban.
Fail2ban funciona con reglas de Iptables por lo cual deberá estar activado , o TCPWrappers

Instalamos la paquetera necesaria ( previamente configurado sendmail )

# yum install fail2ban squirrelmail


SquirrelMail (imapd) CentOS v5.X por defecto registra los losg en /var/log/maillog pero sólo como la dirección IP 127.0.0.1 (localhost). Dado que estamos tratando de prohibir una dirección de origen específicas, fail2ban no puede utilizar este archivo. Por lo tanto, vamos a instalar y utilizar Squirrel Logger para capturar la verdadera fuente de la dirección del intento de acceso.

Descargamos el Plug-in para log de direcciones externas

# cd /usr/share/squirrelmail/plugins
# wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fsquirrel_logger-2.3-1.2.7.tar.gz
# tar zxvf squirrel_logger-2.3-1.2.7.tar.gz
# cd squirrel_logger-2.3-1.2.7
# cp config_example.php config.php

Para checar si existen nuevas versiones entre al sitio oficial de squirrelmail en la categoría de " Administrator's Relief ".

Si sus equipos usan la hora local que no es la hora de GTM, debera modificar el parametro "$sl_use_GMT = 0 "

#vi /usr/share/squirrelmail/plugins/squirrel_logger-2.3-1.2.7/config.php

Continuamos configurando el plugin para que sea utilizado por squirrelmail con el script de configuración

# /usr/share/squirrelmail/config/conf.pl


============================================================
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >>

============================================================

selecciona la opcion #8 de plug-ins


============================================================
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Plugins
Installed Plugins
1. delete_move_next
2. squirrelspell
3. newmail

Available Plugins:
4. listcommands
5. fortune
6. filters
7. translate
8. abook_take
9. spamcop
10. squirrel_logger
11. mail_fetch
12. calendar
13. sent_subfolders
14. message_details
15. administrator
16. info
17. bug_report
18. filters
19. administrator
20. templates
21. translate
22. autocomplete
23. mail_fetch
24. msg_flags




R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >>

============================================================

Selecciona la opcion de ssquirrel_logger ( la cantidad de plug-ins pueden variar dependiendo el administrador)


============================================================

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Plugins
Installed Plugins
1. delete_move_next
2. squirrelspell
3. newmail
4. squirrel_logger


============================================================

presionamos la "S" de salvar datos y la "Q" de quit, y quedara activado el plug-in


agregamos la siguientes lineas al archivo jail.conf

# vi /etc/fail2ban/jail.conf

=============================EJEMPLO IPTABLES===============================

[squirrelmail-iptables]
enabled = true
filter = squirrelmail
action = iptables[name=SquirrelMail, port=http, protocol=tcp]
sendmail-whois[name=SquirrelMail, dest=you@your_domain.com, sender=fail2ban@your_domain.com]
logpath = /var/lib/squirrelmail/prefs/squirrelmail_access_log
maxretry = 4

=============================EJEMPLO TCPWRAPPERS===============================

[squirrelmail-tcpwrapper]
enabled = true
filter = squirrelmail
action = hostsdeny mail-whois[name=squirrelmail, dest=root@localhost]
logpath = /var/lib/squirrelmail/prefs/squirrelmail_access_log
maxretry = 4

============================================================

el parametro "maxrety=4" indica los intentos permitidos

Ahora debera entrar al folde filter.d

# cd /etc/fail2ban/filtel.d
# touch squirrelmail.conf
# vi squirrelmail.conf

y agregamos las siguientes lineas

============================================================

# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from : Unknown user or password incorrect

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT

ignoreregex =

============================================================

fail2ban necesita reconocer el formato de fecha que emite el squirrelmail_access_log asi que tendremos que editar el archivo datedetector.py entre los tags de "Apache format " and " Exim format "

# vi /usr/share/fail2ban/server/datedetector.py

============================================================


# SquirrelMail 09/13/2007 06:43:20
template = DateStrptime()
template.setName("Month/Day/Year Hour:Minute:Second")
template.setRegex("\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}")
template.setPattern("%m/%d/%Y %H:%M:%S")
self.__templates.append(template)

============================================================


agregamos al fail2ban a chkconf y arrancamos el servicio

# chkconfig fail2ban on
# service fail2ban start

Verificar funcionamiento de la raid 0

Ahora vamos a simular un fallo en el disco duro. No importa si usted selecciona /dev/sda o /dev/sdb . En este ejemplo suponemos que /dev /sdb ha fallado.

Para simular el fallo del disco duro, usted puede apagar el sistema y borrar /dev /sdb del sistema, o eliminar de esta manera:
// solo en caso de simulacro
# mdadm --manage /dev/md0 --fail /dev/sdb1
# mdadm --manage /dev/md1 --fail /dev/sdb2

# mdadm --manage /dev/md0 --remove /dev/sdb1
# mdadm --manage /dev/md1 --remove /dev/sdb2

//solo en caso de simulacro

# poweroff

ahora Instalamos el nuevo disco duro, y encendemos el sistema .

vemos la situacion del la RAID

# cat /proc/mdstat

verificamos la lista de particiones

# fdisk -l

Disk /dev/sda: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 fd Linux raid autodetect
/dev/sda2 14 1305 10377990 fd Linux raid autodetect

Disk /dev/sdb: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/md1: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/md0: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Disk /dev/md0 doesn't contain a valid partition table

Ahora copiamos las particiones del /dev/sda al /dev/sdb

# sfdisk -d /dev/sda | sfdisk /dev/sdb

si marca algun error podemos usar el --force

#sfdisk -d /dev/sda | sfdisk --force /dev/sdb


Removemos los restos de la Raid Anterior /dev/sdb

# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdb2

Agregamos el nuevo disco duro al arreglo

# mdadm -a /dev/md0 /dev/sdb1
# mdadm -a /dev/md1 /dev/sdb2

verificamos el proceso de sincronizacion de la RAID

# watch cat /proc/mdstat

regeneramos el grub

# grub
grub> root (hd0,0)
grub> (hd0,0)

grub> root (hd1,0)
grub> (hd1,0)
grub> quit

# reboot

martes, 24 de noviembre de 2009

Software para crear routers

Untangle . una opción sencilla para instalar servidores perimetrales con servicios como vpn, firewall, ids, antivirus, proxy, filtro de protocolos etc . Lo grandioso de este aplicativo es que esta montado en una distribucion de linux con kernel monlotico altamente estable, con requerimientos minimos de instalacion ( depende la cantidad de clientes ). el sitio es www.untangle.com

Tambien he tenido la oportunidad de utilizar Vyatta , pero a diferencia de untangle requiere mas recursos y definitivamente es mas amigable ..pero les pongo la referencia www.vyatta.com/


Como configurar raid 1 con Lvm en ambientes productivos 2

remplazamos  en el archivo /etc/mtab  la siguiente linea  /dev/sda1 con  /dev/md0

# vi /etc/mtab

   /dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
   none /proc proc rw 0 0
   none /sys sysfs rw 0 0
   none /dev/pts devpts rw,gid=5,mode=620 0 0
   usbfs /proc/bus/usb usbfs rw 0 0
   /dev/md0 /boot ext3 rw 0 0
   none /dev/shm tmpfs rw 0 0
   none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
   sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

editamos el archivo de bootloader   /boot/grub/menu.lst debajo de la linea default=0 agregamos fallback=1 
esto hará que cuando el sistema arranque y tenga un fallo en el default , tome el siguiente kernel para arrancar correctamente .


# vi /boot/grub/menu.lst


    default=0
    fallback=1
    timeout=5

el archivo debe parecerse a lo siguiente


default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title CentOS (2.6.9-89.0.15.ELsmp)
        root (hd1,0)
        kernel /vmlinuz-2.6.9-89.0.15.ELsmp ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.9-89.0.15.ELsmp.img
title CentOS (2.6.9-89.0.15.ELsmp)
        root (hd0,0)
        kernel /vmlinuz-2.6.9-89.0.15.ELsmp ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.9-89.0.15.ELsmp.img
title CentOS (2.6.9-89.0.11.ELsmp)
        root (hd0,0)
        kernel /vmlinuz-2.6.9-89.0.11.ELsmp ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.9-89.0.11.ELsmp.img

respaldamos y hacemos la imagen de arranque  para nuestro disco nuevo "uname" nos entregara la versión de kernel que estamos ejecutando .

# mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
# mkinitrd /boot/initrd-`uname -r`.img `uname -r`


Si el sistema falla debemos tener un disco de seguridad . y regresar las configuraciones iniciales .

movemos nuestros datos del  disco duro sin RAID a nuestro Arreglo de RAID.
Primero movemos la particion LVM del /dev/sda2  al  /dev/md1

# pvmove /dev/sda2 /dev/md1

esto tomara un rato  dependiendo de la cantidad de información contenida . Al terminar  removemos el grupoVolGroup00   y le indicamos al sistema que no use mas  LVM  /dev/sda2

# vgreduce VolGroup00 /dev/sda2
# pvremove /dev/sda2

cambiamos la particion a tipo raid  como en el disco anterior

# fdisk /dev/sda

==============================

The number of cylinders for this disk is set to 2797.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
=====================================


al terminar agregamos la particion creada a la RAID

#mdadm --add /dev/md1 /dev/sda2

Podemos observar el progreso de sincronizacion de los arreglos  con un cat

#watch  cat /proc/mdstats

montamos la particion /dev/md0

#mkdir /mnt/md0 ; mount /mnt/md0 /dev/md0

copiamos el contenido de /dev/sda1 a /dev/md0

# cd /boot
# cp -dpRx  . /dev/md0

Instalamos el Grub en el disco duro
# grub
grub>  root (hd0,0)
grub>  (hd0,0)

grub>  root (hd1,0)
grub>  (hd1,0)
grub> quit

# reboot

Convertimos el /dev/sda1 a linux raid

#fdisk /dev/sda

convertimos de la misma manera que las anteriores. Agregamos la nueva particion a la RAID

# mdadm --add /dev/md0 /dev/sda1
#watch cat /proc/mdstat

creamos y verificamos como quedo la lista de RAID

# mdadm --examine --scan > /etc/mdadm.conf
# cat /etc/mdadm.conf

reiniciamos el sistema
# reoboot





Como configurar raid 1 con Lvm en ambientes productivos

Este manual que me ha servido mucho es de Falko Timme,

En el explica como configurar RAID en sistemas productivos con LVM y GRUB. En este manual se utilizara Centos 5 , 2 discos duros /dev/sda y /dev/sdb los cuales deben de ser de las mismas características /dev/sda/ ya esta configurado y /dev/sdb es un disco nuevo sin informacion.



  • /dev/sda1: /boot partition, ext3;
  • /dev/sda2: es usada para LVM (volume group VolGroup00) y contine / (volume LogVol00) y swap (volume LogVol01).
Al fina obtendremos el siguiente resultado:

  • /dev/md0 (puesto por /dev/sda1 y /dev/sdb1): /boot partition, ext3;
  • /dev/md1 (puesto por /dev/sda2 y /dev/sdb2): LVM (volume group VolGroup00), contiene / (volume LogVol00) y swap (volume LogVol01).
La situación actual es la siguiente :

comando df muestra la cantidad de espacio disponible y usado en las particiones

# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
266G 139G 115G 55% /
/dev/sda1 99M 75M 19M 80% /boot
none 3.9G 0 3.9G 0% /dev/shm


fdisk es un comando de manipulación de particiones

# fdisk -l

Disk /dev/sda: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 35539 285362595 8e Linux LVM

Disk /dev/sdb: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Disk /dev/sdb doesn't contain a valid partition table


utilizamos el comando pvdisplay que permite ver los atributos de uno o mas dispocitivos fisicos de almacenamiento

# pvdisplay

--- Physical volume ---
PV Name /dev/sda2
VG Name VolGroup00
PV Size 272.14 GB / not usable 18.41 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 8708
Free PE 5
Allocated PE 8703
PV UUID UOsZLo-tA91-Gg6H-AR4H-zNC5-aFre-6Oi7b5


utilizamos vgdisplay para ver los atributos de los grupos de volúmenes

# vgdisplay

--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 272.12 GB
PE Size 32.00 MB
Total PE 8708
Alloc PE / Size 8703 / 271.97 GB
Free PE / Size 5 / 160.00 MB
VG UUID CyPUXB-5FI0-FT5m-3abs-4btK-2wLf-LqGSl2


utiliamos el comando lvdiplay para ver los atributos de los volúmenes lógicos

# lvdisplay

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID v50HGy-DfSm-Qn2c-aEms-faqa-fl4V-jnUNfP
LV Write Access read/write
LV Status available
# open 1
LV Size 270.03 GB
Current LE 8641
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID kjJlJm-yGgQ-Ummv-NNeM-1jAC-Zqda-ec7FWN
LV Write Access read/write
LV Status available
# open 1
LV Size 1.94 GB
Current LE 62
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1

estos datos nos serviran para compara informacion al terminar de hacer nuestra configuración. Instalamos la paqueteria necesaria

# yum-y install mkinitrd mdadm

instalamos los módulos necesarios al kernel



# modprobe linear
# modprobe multipath
# modprobe raid0
# modprobe raid1
# modprobe raid5
# modprobe raid6
# modprobe raid10


Verificamos la correcta integración de los módulos cargados

# cat /proc/mstats

el resultado es el siguiente


Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices:


copiamos la particiones del /dev/sda al /dev/sdb para que los discos tengan exactamente la misma estructura

# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 35539 cylinders ,255 heads, 63 sectors/track,
Units = cylinders of 16065 * 512 = 8225280 bytes


sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System
/dev/sdb1 * 63 208844 208782 83 Linux
/dev/sdb2 208845 20964824 20755980 8e Linux LVM
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)

utilizamos el comando fdisk para verificar que tengan la misma estructura.

# fdisk -l

Disk /dev/sda: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 35539 285362595 8e Linux LVM

Disk /dev/sdb: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 83 Linux
/dev/sdb2 14 35539 285362595 8e Linux LVM


ahora cambiaremos el tipo de partición para el disco /dev/sdb para que funcione como raid0

# fdisk /dev/sdb


The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):
<-- m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help):
<-- t
Partition number (1-4): <-- 1
Hex code (type L to list codes): <-- L

0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32m style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "> 5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 <3 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
Hex code (type L to list codes):
<-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help):
<-- t
Partition number (1-4): <-- 2
Hex code (type L to list codes): <-- fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help):
<-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


verificamos que las particiones se convirtieron correctamente .

# fdisk -l

Disk /dev/sda: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 35539 285362595 8e Linux LVM

Disk /dev/sdb: 292.3 GB, 292326211584 bytes
255 heads, 63 sectors/track, 35539 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 fd Linux raid autodetect
/dev/sdb2 14 35539 285362595 fd Linux raid autodetect


Nos aseguramos que no exista ningún remanente de particiones RAID anteriores

# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdb2


Creamos las particiones RAID en los discos /dev/sdb1 y /dev/sdb2 por el momento no podemos crear las de /dev/sda1 y /dev/sda2 por que el sistema esta funcionando con esas particiones .



# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2

verificamos con el comando cat que los RAID se activaron correctamente

# cat /proc/mdstat

ahora creamos el sistema de archivos que vamos a utilizar en nuestra No LVM_RAID

#mkfs.ext3 /dev/md0

ahora cremaos el sistema de volumens para nuestra particion RAID

# pvcreate /dev/md1

creamos el grupo de volúmenes extendido

# vgestend VolGrup00 /dev/md1

ahora creamos el archivo de configuracion /etc/mdadm.conf

# mdadm --examine --scan > /etc/mdadm.conf

*** debemos tener a la mano un disco de emergencia y resplado de los archivos que estamos modificando.

Modificamos el archivo /etc/fstab y cambialos la etiqueta LABEL=/boot /boot por /dev/md0 /boot

# vi /etc/fstab

continua