automount y autofs son unas herramientas potentes que permiten manejar facilmente el sistema de ficheros . Estos programas permiten a todos los usuarios montar en la misma máquina y de manera automática diferentes sistemas de ficheros en el momento que sea necesario.
Categoría: UNIX – *BSD – GNU/Linux
UNIX – *BSD – GNU/Linux
Script en bash para hacer backup de MySQL
En esta ocasión vamos a ver un pequeño script con el cual realizar backups de MySQL
#!/bin/bash
# Credenciales BBDD
user=»usuario»
password=»contraseña»
host=»localhost»
db_name=»bbdd»# definimos las variables del path y la fecha
backup_path=»/backup»
date=$(date +»%d-%b-%Y»)# Establecemos los permisos predeterminados
umask 177# Dump de la base de datos
mysqldump –user=$user –password=$password –host=$host $db_name > $backup_path/$db_name-$date.sql #Comprimir backup
xz -9 $backup_path/$db_name-$date.
sql # Eliminar archivos de más de 30 días
find $backup_path/* -mtime +30 -exec rm {} \;
lo añadimos en el crontab
rokitoh@red-orbita:# cronta -l
0 0 * * * /usr/bin/backupmysq.sh
Un saludo
:wq!
Autenticación en Active Directory vía RADIUS GNU/Linux
RADIUS (acrónimo en inglés de Remote Authentication Dial-In User Service). Es un protocolo de autenticación y autorización para aplicaciones de acceso a la red o movilidad IP. Utiliza el puerto 1812 UDP para establecer sus conexiones.
Cuando se realiza la conexión con un ISP mediante módem, DSL, cablemódem, Ethernet o Wi-Fi, se envía una información que generalmente es un nombre de usuario y una contraseña. Esta información se transfiere a un dispositivo Network Access Server (NAS) sobre el protocolo PPP, quien redirige la petición a un servidor RADIUS sobre el protocolo RADIUS. El servidor RADIUS comprueba que la información es correcta utilizando esquemas de autenticación como PAP, CHAP o EAP. Si es aceptado, el servidor autorizará el acceso al sistema del ISP y le asigna los recursos de red como una dirección IP, y otros parámetros como L2TP, etc.
Integración MediaWIKI con Active Directory
Nos descargamos la extensión LdapAuthentication:
https://www.mediawiki.org/wiki/Special:ExtensionDistributor/LdapAuthentication
También lo podemos descargar mediante git en la siguiente URL:
https://gerrit.wikimedia.org/r/#/q/status%3Aopen+project%3Amediawiki/extensions/LdapAuthentication
En mi casó dado que tengo instalado MediaWiki 1.27 bajo centOS 7 me bajo dicha versión
wget https://extdist.wmflabs.org/dist/extensions/LdapAuthentication-REL1_27-b0dba33.tar.gz
Descomprimimos la paquete
tar -xzf LdapAuthentication-REL1_27-b0dba33.tar.gz -C /var/www/html/extensions
Proxy inverso SFTP con HAproxy
¿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:
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
¿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 Nginx–Balancer, 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.
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/bashusage(){cat << EOFUSO: $0 -G grupo -u usuario -f file systemScript para la creacion de usuarios enjaulados SFTPOPCIONES:-G Grupo-u Usuario SFTP-f file systemejemplo de uso: /usr/bin/createuser.sh -G sftp -u usersftp -f /home/usersftpEOF}#Declaramos todas las variables que se van a usar para guardar los parametrosinputgroup=inputusuario=inputfs=#Usamos el getopts para guardar los parametros en variableswhile getopts «hH:G:u:f:» OPTIONdocase $OPTION inh)usageexit 1;;G)inputgroup=$OPTARG;;u)inputusuario=$OPTARG;;f)inputfs=$OPTARG;;esacdone#Comprobamos que se han introducido los parametros obligatoriosif [ -z $inputgroup ] || [ -z $inputusuario ] || [ -z $inputfs ]thenusageexit 1fifunction SSHconfig (){if [ -f «/etc/ssh/sshd_config-bck» ]then#Comentamos lineassed -i ‘s/Subsystem/#&/’ /etc/ssh/sshd_config#Agregamos configuracioncat << EOF >> /etc/ssh/sshd_configSubsystem sftp internal-sftpMatch user $inputusuarioChrootDirectory %hX11Forwarding noAllowTcpForwarding noForceCommand internal-sftpKbdInteractiveAuthentication yesEOFelse#Si no existe el fichero de backup muestra un error y sale del scriptecho «No se encontro el fichero de configuracion /etc/ssh/sshd_config-bck»exit 1fi}# Creamos el grupogroupadd $inputgroup#Creamos el usuariouseradd -g $inputgroup -s /bin/false -d $inputfs $inputusuario#Asignamos una contraseña al usuariopasswd $inputusuariomkdir -p $inputfs/publicchmod 755 $inputfschown root:root $inputfschown $inputusuario:$inputgroup $inputfs/public#Creamos backup del fichero de configuracion de SSHcp /etc/ssh/sshd_config /etc/ssh/sshd_config-bck#Realizamos la configuracion de SSHSSHconfig#Reiniciamos el servicioservice sshd restart
Instalar un servidor NTP en GNU/Linux
Network Time Protocol (NTP) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos a través del enrutamiento de paquetes en redes con latencia variable. NTP utiliza UDP como su capa de transporte, usando el puerto 123. Está diseñado para resistir los efectos de la latencia variable.
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:
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.163whois 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!

