Jun 01

Clúster de alta disponibilidad HAproxy en Red Hat 7

¿Que es un Cluster HA?

Un cluster de alta disponibilidad es un conjunto de dos o más máquinas que se caracterizan por mantener una serie de servicios compartidos y por estar constantemente monitorizándose entre sí. Podemos

mas información

¿Que es HAProxy?

HAProxy (que significa alta disponibilidad Proxy) es una solución de código abierto rápido y confiable, que es capaz de manejar el tráfico enorme y ofrece alta disponibilidad, balanceo de carga y proxy para TCP y aplicaciones basadas en HTTP. Similar a NginxBalancer, se utiliza un modelo orientado a eventos de un solo proceso, que consume un bajo (y estable) cantidad de memoria, lo que permite a HAProxy procesar un gran número de peticiones concurrentes al mismo tiempo, garantiza un buen equilibrio de carga con la persistencia inteligente y mitigación de DDoS.

Continue reading

Jun 01

Script en bash para crear usuarios SFTP enjaulados

En esta ocasión vamos a ver un pequeño script el cual permite la creación de usuarios enjaulados en SFTP:

 

#!/bin/bash
usage()
{
cat << EOF
USO: $0 -G grupo -u usuario  -f file system
Script para la creacion de usuarios enjaulados SFTP
OPCIONES:
   -G      Grupo
   -u      Usuario SFTP
   -f      file system
ejemplo de uso: /usr/bin/createuser.sh -G sftp -u usersftp -f /home/usersftp
EOF
}
#Declaramos todas las variables que se van a usar para guardar los parametros
inputgroup=
inputusuario=
inputfs=
#Usamos el getopts para guardar los parametros en variables
while getopts “hH:G:u:f:” OPTION
do
        case $OPTION in
                h)
                usage
                exit 1
                        ;;
                G)
                inputgroup=$OPTARG
                        ;;
                u)
                inputusuario=$OPTARG
                        ;;
                f)
                inputfs=$OPTARG
                        ;;
                esac
done
#Comprobamos que se han introducido los parametros obligatorios
if [ -z $inputgroup ] || [ -z $inputusuario ] || [ -z $inputfs ]
then
        usage
        exit 1
fi
function SSHconfig (){
if [ -f “/etc/ssh/sshd_config-bck” ]
            then
#Comentamos lineas
  sed -i ‘s/Subsystem/#&/’ /etc/ssh/sshd_config
                #Agregamos configuracion
cat << EOF >> /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match user $inputusuario
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
KbdInteractiveAuthentication yes
EOF
            else
                #Si no existe el fichero de backup muestra un error y sale del script
                echo “No se encontro el fichero de configuracion /etc/ssh/sshd_config-bck”
                exit 1
fi
}
# Creamos el grupo
groupadd $inputgroup
#Creamos el usuario
useradd -g $inputgroup  -s /bin/false -d $inputfs $inputusuario
#Asignamos una contraseña al usuario
passwd $inputusuario
mkdir -p $inputfs/public
chmod 755 $inputfs
chown root:root $inputfs
chown $inputusuario:$inputgroup $inputfs/public
#Creamos backup del fichero de configuracion de SSH
cp /etc/ssh/sshd_config /etc/ssh/sshd_config-bck
#Realizamos la configuracion de SSH
SSHconfig
#Reiniciamos el servicio
service sshd restart
Un saludo
:wq!
May 18

Configuración Inicial Switch D-link DGS-1210

Cuando configuramos por primera vez el Switch D-link DGS-1210 tenemos que tener en cuenta que viene configurado por defecto mediante una IP fije, por lo que tenemos que conectar directamente el Switch a nuestro equipo.  también  tenemos que tenerlo conectado a nuestro router.

Una vez ya tenemos conectado todo el switch inicia con la dirección IP: 10.90.90.90/24 por lo tanto debemos de ponernos un direccionamiento ip en ese rango.

Configuramos una interfaz virtual:

ifconfig eth0:0 10.90.90.91/24 up

Comprobamos que llegamos al Switch

root@redorbita:~# ping 10.90.90.90
PING 10.90.90.90 (10.90.90.90) 56(84) bytes of data.
64 bytes from 10.90.90.90: icmp_seq=1 ttl=255 time=3.28 ms
64 bytes from 10.90.90.90: icmp_seq=2 ttl=255 time=2.97 ms
64 bytes from 10.90.90.90: icmp_seq=3 ttl=255 time=2.54 ms
64 bytes from 10.90.90.90: icmp_seq=4 ttl=255 time=2.92 ms
64 bytes from 10.90.90.90: icmp_seq=5 ttl=255 time=2.55 ms
— 10.90.90.90 ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 2.549/2.857/3.286/0.284 ms

Continue reading

May 13

Configuración Proxy Inverso con apache en GNU/Linux

¿Que es un proxy inverso?

Un Proxy inverso es un intermediario entre una red pública y un conjunto de servidores privados; el cual se encarga de administrar las solicitudes de servicios por parte de uno o varios computadores externos. Estos funcionan manipulando los requerimientos HTTP que son enviados por varios computadores; en un proceso en cual se atienden las solicitudes y al mismo tiempo manipulan la presentación de estos servicios para evitar comprometer información crítica del grupo de servidores privados a donde se solicitan.

Diagrama:

Continue reading

May 11

Manual practico de iptables

Resetear reglas

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F

Establecer las políticas de firewall por defecto  

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -L -v -n

Ver el estado del firewall

iptables -L -n -v

 

  • -L : Muestra las reglas.
  • -v : Muestra información detallada.
  • -n : Muestra la dirección ip y puerto en formato numérico. No usa DNS para resolver nombres. Esto acelera la lista.

Mediante este ejemplo podremos ver las reglas con el numero de lineas.


iptables -n -L -v --line-numbers  

Mostrar las reglas entrantes

iptables -L INPUT -n -v

Mostrar las reglas salientes

iptables -L OUTPUT -n -v

si agregamos –line-numbers podrémos ver el numero de lineas

Eliminar reglas de Firewall

Se puede eliminar una regla por el numero de la linea, en este caso eliminamos las reglas INPUT y OUTPUT correspondiente a la linea 4.

iptables -D INPUT 4

iptables -D OUTPUT 4

También podemos una regla concreta

iptables -D INPUT -s 10.10.33.14 -j DROP

 

  • -D : Elimina una o más reglas de la cadena seleccionada.

Guardar los cambios

service  iptables save

Sólo a bloquear el tráfico entrante

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -L -v -n

Eliminar direcciones de red privada en la interfaz pública (Suponiendo eth1 como interfaz pública)

iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Permitir todo el tráfico de loopback, y eliminar todo el tráfico a 127/8 que no usa lo0

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

Aceptar todas las conexiones entrantes establecidas

iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

Eliminar cualquier paquete inválido que no pueda ser identificado

iptables -A INPUT -m state –state INVALID -j DROP

Bloquear tráfico a un dominio

Para ello debemos sacar el rango de IP del dominio:

 

host -t a www.google.es
www.google.es has address 216.58.214.163

whois 216.58.214.163  | grep CIDR
CIDR:           216.58.192.0/19

Denegamos el acceso al rango que hemos obtenido:

iptables -A OUTPUT -p tcp -d 216.58.192.0/19 -j DROP

También es posible hacerlo por nombre de dominio

iptables -A OUTPUT -p tcp -d www.google.es -j DROP
iptables -A OUTPUT -p tcp -d google.es -j DROP

Permitir todo el tráfico entrante SSH

iptables -A INPUT  -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Permitir tráfico HTTP

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Permitir HTTPS saliente.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

 

Permitir tráfico HTTP

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Permitir HTTPS saliente.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Abrir un rango de puertos de entrada

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT

Prevenir ataques DoS
-Limit 25/minute : Limita a sólo 25 conexiones por minuto.
-Limit-burst 100: Indica que el valor de limit/minute será forzado sólo después del número de conexiones en este nivel

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

 

Abrir un rango de direcciones IPs

iptables -A INPUT -p tcp –destination-port 80 -m iprange –src-range 192.168.1.100-192.168.1.200 -j ACCEPT

 

Listado de reglas ejemplo para puertos TCP/UDP comunes:

 

open port ssh tcp port 22 ##
iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 22 -j ACCEPT

## open cups (printing service) udp/tcp port 631 for LAN users ##
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp –dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp –dport 631 -j ACCEPT

## allow time sync via NTP for lan users (open udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p udp –dport 123 -j ACCEPT

## open tcp port 25 (smtp) for all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 25 -j ACCEPT

# open dns server ports for all ##
iptables -A INPUT -m state –state NEW -p udp –dport 53 -j ACCEPT
iptables -A INPUT -m state –state NEW -p tcp –dport 53 -j ACCEPT

## open http/https (Apache) server port to all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -m state –state NEW -p tcp –dport 443 -j ACCEPT

## open tcp port 110 (pop3) for all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 110 -j ACCEPT

## open tcp port 143 (imap) for all ##
iptables -A INPUT -m state –state NEW -p tcp –dport 143 -j ACCEPT

## open access to Samba file server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 445 -j ACCEPT

## open access to proxy server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 3128 -j ACCEPT

## open access to mysql server for lan users only ##
iptables -I INPUT -p tcp –dport 3306 -j ACCEPT

 

 

:wq!

Abr 26

Instalación y configuración de Suse Manager 3

SUSE Manager 3 es el último software de gestión de servidores Linux que proporciona una gestión integral del ciclo de vida y monitorización de servidores Linux en diferentes distribuciones, arquitecturas de hardware, plataformas virtuales y entornos de nube. SUSE Manager 3 incluye el software de automatización Salt y características mejoradas de gestión de configuración, gestión de suscripciones más sencilla y capacidades de monitorización optimizadas.

Características

  • Permite gestionar varias distribuciones de Linux (Red Hat y SUSE®) desde una única consola centralizada
  • Es compatible con una gran variedad de hardware en entornos físicos, virtuales y en la nube
  • Permite mantener y cumplir fácilmente las políticas internas de seguridad y las normativas externas
  • Método estándar para salvaguardar la seguridad de Linux
  • Inventario de software y hardware simple y automatizado con elaboración avanzada de informes

Continue reading

Abr 16

Instalar PowerCLI Core en GNU/Linux

PowerCLI Core es una solución de VMware basada en Powershell de Microsoft. Nos permite utilizar esta poderosa herramienta en Linux, Mac y Docker.

En primer lugar tenemos que instalar las dependencias:

root@redorbita:~# apt-get install ca-certificates curl libunwind8 libicu52 unzip wget libcurl4-openssl-dev

 

Continue reading

Abr 16

Creando un Failover Cluster bajo Windows Server 2012

En esta ocasión nos alejamos un poco de muestra zona de confort (del mundo del software libre y de GNU/Linux) para la implementación de un Cluster de alta disponibilidad bajo en entorno Windows Server 2012.

Dado que en nuestro entorno laboral nos toca lidiar con plataformas con múltiples sistemas operativos y por desgracia no todos ellos es software libre he decidido realizar esta entrada.

 

¿Que es Cluster de Alta Disponibilidad?

Cluster de Alta Disponibilidad. Para conseguir redundancia y protección contra fallos de un sistema, la primera de las medidas que se suelen tomar es replicar sus componentes hardware más críticos. Por ejemplo en el caso de un servidor se emplean configuraciones de discos en RAID, fuentes de alimentación redundantes, varias interfaces de red en bonding, etc. Y el mismo concepto de redundancia se aplica también para el resto de componentes como la electrónica de red o el sistema eléctrico.

Estas medidas indudablemente aumentan el nivel de disponibilidad de un sistema, pero para conseguir un nivel aun mas alto, se suelen utilizar configuraciones avanzadas de hardware y software como son los clusters de Alta Disponibilidad.

Un Cluster de Alta Disponibilidad es un conjunto de dos o mas servidores, que se caracteriza por compartir el sistema de almacenamiento, y por que están constantemente monitorizándose entre sí. Si se produce un fallo del hardware o de los servicios de alguno de las maquinas que forman el cluster, el software de alta disponibilidad es capaz de rearrancar automáticamente los servicios que han fallado en cualquiera de los otros equipos del cluster. Y cuando el servidor que ha fallado se recupera, los servicios se migran de nuevo a la máquina original.

Continue reading

Abr 14

Instalación Graylog2 en GNU/Linux Debian

Graylog2 es un sistema Open Source (GPLv3) que nos permite centralizar los logs de sistemas afines para facilitar el análisis en tiempo real de nuestros sistemas.

Instalación:

Añadimos los repositorios

echo “deb http://ftp.debian.org/debian jessie-backports main” > /etc/apt/sources.list.d/backports.list
apt-get update && sudo apt-get upgrade

Instalamos el software necesario:

apt-get install -t jessie-backports   apt-transport-https openjdk-7-jre-headless uuid-runtime pwgen

Continue reading