Category Archives: Linux

Como optimizar la concurrencia de ejecución de Apache para WordPress

Apache para WordPress

El día de hoy les hablaré de como Optimizar Apache para WordPress o en otras palabras, que configuraciones deberías tomar en cuenta para mejorar el rendimiento de tu blog o página web basada en wordpress y sobre un servidor Apache.

Para realizar esta optimización nos enfocaremos en los siguientes pasos:

  • Configuraciones en Apache
  • Configuración de Módulo de MultiProcesamiento (MPM Event)
  • Configuración de PHP5 handler (php5-fpm)
  • Configuración de FastCGI

Antes de comenzar debo indicarles que este manual lo haré basándome en las siguientes premisas:

  • Versión de Sistema operativo:  Debian 8.3
  • Versión de Apache: 2.4.10
  • Versión de PHP: 5.6.26
  • Todos los comandos se estan ejecutando con el usuario root, en caso de no contar con ese usuario deben hacer sudo
  • Antes de modificar algún archivo debes hacer backup del mismo

Comencemos con las Configuraciones en Apache

Editar el archivo /etc/apache2/apache2.conf, modificando un subconjunto de parámetros de configuración que pertenecen al núcleo Apache con el fin de optimizar la concurrencia.:

Para una explicación más detallada de los parámetros anteriores, puedes consultar la documentación de Apache.

Continue reading

Protegerse de ataques DDoS con chainsaw

protegerse de ataques ddos

Antes de hablar de como protegerse de un ataque DDoS, vale la pena mencionar lo que esto significa; un ataque de denegación de servicios, también llamado ataque DoS (de las siglas en inglés Denial of Service) o DDoS (de Distributed Denial of Service), es un ataque a un sistema de computadoras o red que causa que un servicio o recurso sea inaccesible a los usuarios legítimos. Normalmente provoca la pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los recursos computacionales del sistema de la víctima.

Para evitar este problema les suministraré dos herramientas que pueden ser utilizadas para mitigar un DDoS.

La primera es un shell script denominado chainsaw creado por @aminesali como una simple y efecti alternativa para protegerse de un ataque DDoS haciendo uso de herramientas como nestat, lsof, iptables, etc.

Continue reading

Como configurar un proxy en Apache para tus containers de Proxmox 4 – Parte 3

proxy en apache

Siguiendo con las optimizaciones de nuestro Proxmox 4, el día de hoy les traigo unos tipos para crear un proxy en Apache que permita redirigir los diferentes dominios que tengas a containers lxc diferentes y así sacarle el mayor provecho posible a la virtualización de tus servidores.

Para esto haremos los siguientes pasos:

  1. Instalar Apache 2 (en caso de no tenerlo instalado) con el comando apt-get install apache2
  2. Habilitar los mods de apache necesarios para la configuración del proxy con el siguiente comando a2enmod proxy proxy_http ssl rewrite
  3. Sustituir el archivo 000-default.conf ubicado en la ruta /etc/apache2/sites-available con la siguiente información:
# Recuerda modificar  tu dominio y la ip de tu container
<VirtualHost *:80>
        ServerAdmin tucorreo@dominio.com
        ServerName tudominio.com
         <IfModule mod_proxy.c>
          ProxyPreserveHost On
          ProxyPass             /       http://10.0.0.1/
          ProxyPassReverse      /       http://10.0.0.1/
        </IfModule>

        ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Y finalmente realizar el reinicio de tu servidor apache con el comando apachectl restart

Nota: debes eliminar la regla de iptables que redirigia la información del puerto 80 del host a tu container
Nota2: un agradecimiento especial a Joyal por todo el conocimiento que me enseño.

Como dar salida/entrada a internet a tu Container (LXC) de Proxmox 4 – Parte 2

Hoy vengo con la segunda parte de Como configurar la red en Containers de Proxmox 4 (LXC container) donde les explico el paso final para que su container pueda tener acceso de entrada / salida a Internet, es decir, puedas descargar información y enviar información hacia otro host fuera de tu red.

Para esto solo hacen falta dos sencillos pasos:

El primero es activar el ip_forward, que puedes hacerlo de dos maneras:

  1. De forma temporal ejecutando el comando echo 1 > /proc/sys/net/ipv4/ip_forward como root
  2. De forma permanente modificando el archivo /etc/sysctl.conf y editando la propiedad net.ipv4.ip_forward para colocarle el valor 1 (ejemplo: net.ipv4.ip_forward = 1) y posteriormente ejecutar el comando sysctl -p para que se activen los cambios.

El segundo paso es ejecutar la siguiente regla en iptables:

/sbin/iptables -t nat -A POSTROUTING -s ‘iplocaldetucontainer/24’ -o vmbr0 -j MASQUERADE#BRIDGE

Donde iplocaldetucontainer debe ser la ip que tiene tu container eliminando el ultimo octeto y colocando un cero. (ejemplo: si tu ip es 10.0.0.1, el valor debería ser 10.0.0.0)

Es importante aclarar que el valor vmbr0 es el nombre de tu bridge principal (el que te da la ip publica) dentro del host que tiene instalado Proxmox 4.

One more thing:

Si quieres crear un container con apache para montar tu sitio web y adicionalmente te gustaría conectarte por ssh a ese servidor, puedes crear un shell dentro de /etc/init.d/ que se encargue de crear reglas a través de iptables para redireccionar a tu container. Para eso puedes usar el siguiente script llamado nat-container.sh

El cual implementa la regla de redirección de internet y de los puertos de ssh(22) y http(80) hacia tu container, una vez creado lo ejecutas de la siguiente manera /etc/init.d/nat-container.sh start o puedes ejecutar los siguientes comandos para agregarlo al arranque de tu servidor:

chmod 755 /etc/init.d/nat-container.sh
update-rc.d nat-container.sh defaults

Nota: utilice como ejemplo la ip interna 10.0.0.1 en caso de que tu ip sea diferente debes cambiarla dentro del script y cambiar la parte donde dice 10.0.0.0/24 por la ip que tiene tu container eliminando el ultimo octeto y colocando un cero dividido entre 24. (ejemplo: si tu ip es 10.0.0.1, el valor debería ser 10.0.0.0/24)

Nota2: gracias a mi amigo Joyal por facilitarme el shell script 😀

Como configurar la red en Containers de Proxmox 4 (LXC container) – Parte 1

Actualmente me encuentro configurando un servidor Debian 8.3 con Proxmox 4 y al crear mi container utilizando LXC me encuentro con que no puedo acceder a mi servidor host.

Dándome a la tarea de buscar en internet, logro conseguir muchísima información pero aun nada resuelva completamente mi problema, entre ellas la información mas util fue de la wiki de Proxmox

Para lograr que ambos servidores se vean he realizado las siguientes acciones:

En el host modifique el archivo /etc/network/interfaces y agregue lo siguiente:

 auto vmbr2
 iface vmbr2 inet static
 address 10.0.0.254
 netmask 255.255.255.0
 bridge_ports none
 bridge_stp off
 bridge_fd 0
 

y en el container modifique el archivo /etc/network/interfaces de la siguiente manera:

 auto lo
 iface lo inet loopback
 auto eth0
 iface eth0 inet static
 address 10.0.0.1
 netmask 255.255.255.0
 gateway 10.0.0.254
 

Para posteriormente hacer un reinicio del servidor (host) y lograr hacerle ping desde el container al host y del host al container.

Sin embargo, aun no logro que el container tenga internet (pueda acceder a cualquier host de internet, por ejemplo www.google.com a través de ping).

Seguiré buscando en internet la solución a este problema y pronto les traeré la actualización… Actualización 01/02/2016: Ya logre la solución y la pueden ver en:  Como dar salida/entrada a internet a tu Container (LXC) de Proxmox 4

Problemas con Firestarter

Al instalar mi Ubuntu 8.04 y después de haber configurado todo, me di a la tarea de instalar el tan importante firewall, para eso en vez de usar el que trae el nuevo ubuntu ( UFW ) preferí descargar vía "apt-get" el front end de iptables llamado Firestarter. Una vez instalado, lo ejecute y me lanzo un error relacionado con el dispositivo de red, en mi caso el eth0 y lo solucione modificando el script de inicialización.

 

Modifica el archivo /etc/init.d/firestarter con tu editor de textos favorito y en modo super usuario:

sudo gedit /etc/init.d/firestarter

 

Luego busca la siguiente linea:

INMASK = `/ sbin / ifconfig $ IF | grep Mas | cut-d: 4-f`

 

Y sustituyela por ésta otra:

INMASK = `/ sbin / ifconfig $ IF | grep Más | cut-d: 4-f`

 

Guarda el archivo e intenta abrir de nuevo el firestarter y listo, problema solucionado xD.

 

El error se debe a que ifconfig devuelve la mascara con un acento en la a por eso lo unico que hay que cambiar es donde dice grep Mas por grep Más

 

Espero les sirva…

Comandos Linux

Recopilación de algunos de los comandos LINUX más usados.

A

addgroup
Se utiliza para crear un grupo nuevo.
Sintaxis: addgroup nom_grupo

adduser
Se utiliza para añadir un usuario. En ese momento, no solo se creará la cuenta del usuario sino también su directorio de trabajo, un nuevo grupo de trabajo que se llamará igual que el usuario y añadirá una serie de ficheros de configuración al directorio de trabajo del nuevo usuario.
Sintaxis: adduser nom_usuario [nom_grupo]

alias
En ciertas ocasiones se suelen utilizar comandos que son difíciles de recordar o que son demasiado extensos, pero en UNIX existe la posibilidad de dar un nombre alternativo a un comando con el fin de que cada vez que se quiera ejecutar, sólo se use el nombre alternativo.
Sintaxis: alias nom_alias=’comando’

apt-cache search (texto)
Muestra una lista de todos los paquetes y una breve descripción relacionado con el texto que hemos buscado.

apt-get dist-upgrade
Función adicional de la opción anterior que modifica las dependencias por la de las nuevas versiones de los paquetes.

apt-get install (paquetes)
Instala paquetes.

apt-get remove (paquete)
Borra paquetes. Con la opción –purge borramos tambien la configuración de los paquetes instalados.

apt-get update
Actualiza la lista de paquetes disponibles para instalar.

apt-get upgrade
Instala las nuevas versiones de los diferentes paquetes disponibles.

at
Realiza un tarea programada una sola vez.
Sintaxis: at [-lr] hora [fecha].

 

B

bash, sh
Existen varias shells para Unix, Korn-Shell (ksh), Bourne-Shell (sh), C-Shell (csh),bash.
Sintaxis: bash / sh / ksh / csh.

bg
Manda un proceso a segundo plano.
Sintaxis: bg PID.

Continue reading

Configurar Servidor FTP en Ubuntu

Este manual fue encontrado originalmente en Wikilearning.com y editado por mi en algunos aspectos… Gracias a el ya tengo mi server FTP totalmente operativo 😀

 

Lo Primero que haremos sera entrar al Synaptic e instalar el paquete "vsftpd", o escribir en la consola "sudo apt-get install vsftpd".

Luego editamos el fichero que está en /etc/vsftpd.conf con el comando "sudo gedit /etc/vsftpd.conf" para configurar los accesos y que solo tengan entrada por esta vía los respectivos dueños de los web sites que hosteamos.

anonymous_enable=NO local_enable=YES write_enable=YES chroot_list_enable=YES chroot_local_user=NO chroot_list_file=/etc/vsftpd.chroot_list pam_service_name=vsftpd userlist_enable=YES

Ahora necesitamos editar el archivo

/etc/vsftpd.chroot_list (si no lo encuentran, creenlo ustedes) que es donde estará el listado de las personas que vamos a dejar entrar a la maquina como accesos chroot:

usuarioftp1 usuarioftp2

Luego editamos el archivo

/etc/vsftpd.user_list (si no lo encuentran, creenlo ustedes) para decidir quien tendrá acceso o no.

usuarioftp1

usuarioftp2


Y nos queda por añadir las cuentas al sistema, lo hacemos con el comando:

sudo adduser usuarioftp1
sudo adduser usuarioftp2


Añadimos los usuarios al grupo editando /etc/group y colocándolos donde toca (en el grupo apache)

apache:x:48:usuarioftp1:usuarioftp2


Modificamos el fichero de passwords, /etc/passwd

usuarioftp1:x:506:508::/var/www/html/www.indaya.com/:/bin/false
usuarioftp2:x:507:508::/ruta donde estara la pagina.com/:/bin/false


Y finalmente, ejecutamos lo de /etc/init.d/vsftpd restart