Ubuntu 14.04 LTS + : Cambiar la zona horaria.

Para todos los que quieren cambiar la zona horaria con  CentOS, Ubuntu, Fedora, Debian para sus servidores.

Estaba acostumbrado a usar tzdata pero al parecer en las versiones más «recientes» no viene por defecto. Para poder hacer el cambio de la zona horaria  usaremos el comando timedatectl. Para esto necesitamos tener acceso a la máquina en donde queremos cambiar la configuración, puede ser físicamente o de manera virtual a través de una consola.

Leer más

Bloqueando Facebook con PFSense

Ahora que en la empresa estamos usando telefonía IP, me preocupa mucho más como se está usando el ancho de banda. Dentro de las cosas que estoy bloqueando para uso no autorizado es facebook, después de todo acá se viene a trabajar.

Para los que no saben, PFSense es un sistema de firewall que puedes instalar en un computador, reduciendo los costos de comprar equipos que tienen este propósito.

En este artículo iremos paso a paso como bloquear las redes de facebook usando pfsense.

Antes de continuar necesitamos saber la lista de IPs actualizada que usa facebook, en linux podemos usar el comando whois para obtener la lista.

whois -h whois.radb.net '!gAS32934'

El resultado tiene que ser como el siguiente :

A1157
204.15.20.0/22 69.63.176.0/20 66.220.144.0/20 66.220.144.0/21 69.63.184.0/21 69.63.176.0/21 74.119.76.0/22 69.171.255.0/24 173.252.64.0/18 69.171.224.0/19 69.171.224.0/20 103.4.96.0/22 69.63.176.0/24 173.252.64.0/19 173.252.70.0/24 31.13.64.0/18 31.13.24.0/21 66.220.152.0/21 66.220.159.0/24 69.171.239.0/24 69.171.240.0/20 31.13.64.0/19 31.13.64.0/24 31.13.65.0/24 31.13.67.0/24 31.13.68.0/24 31.13.69.0/24 31.13.70.0/24 31.13.71.0/24 31.13.72.0/24 31.13.73.0/24 31.13.74.0/24 31.13.75.0/24 31.13.76.0/24 31.13.77.0/24 31.13.96.0/19 31.13.66.0/24 173.252.96.0/19 69.63.178.0/24 31.13.78.0/24 31.13.79.0/24 31.13.80.0/24 31.13.82.0/24 31.13.83.0/24 31.13.84.0/24 31.13.85.0/24 31.13.86.0/24 31.13.87.0/24 31.13.88.0/24 31.13.89.0/24 31.13.90.0/24 31.13.91.0/24 31.13.92.0/24 31.13.93.0/24 31.13.94.0/24 31.13.95.0/24 69.171.253.0/24 69.63.186.0/24 31.13.81.0/24 179.60.192.0/22 179.60.192.0/24 179.60.193.0/24 179.60.194.0/24 179.60.195.0/24 185.60.216.0/22 45.64.40.0/22 185.60.216.0/24 185.60.217.0/24 185.60.218.0/24 185.60.219.0/24 129.134.0.0/16 157.240.0.0/16 204.15.20.0/22 69.63.176.0/20 69.63.176.0/21 69.63.184.0/21 66.220.144.0/20 69.63.176.0/20

Esta lista corresponde a los segmentos de red usados por Facebook. Ojo, segmento de red no es lo mismo que una dirección IP, un segmento posee más de una  direcciones IP.

Ok, lo primero que haremos es crear un Alias con todos los segmentos de red de facebook.

Menu de Alias en PFSense
Menu de Alias en PFSense

Ahora creamos un nuevo alias con las direcciones de facebook. Es importante no olvidar seleccionar la opción de networks en vez de hosts, ya que lo que obtuvimos al comienzo son redes y no direcciones IPs.

Facebook IPs PFSense
Facebook IPs PFSense

Teniendo el alias listo con todas las redes, simplemente procedemos a bloquear el tráfico hacia estos IPs.

Vamos a la pestaña Firewall -> Rules , y luego seleccionamos la pestaña LAN. Ahí crearemos una nueva regla en donde la acción es bloquear, el source serán todos los IPs ( En mi caso los que no estén en el alias whitelist, de querer que fueran todas simplemente seleccionamos any ) y en la dirección de destino simplemente seleccionamos como alias el nombre que le hayamos puesto a las direcciones de facebook, en mi caso facebookIps .

La regla debería quedar de la siguiente manera.

Reglas Firewall PFSense Facebook
Reglas Firewall PFSense Facebook

Cabe destacar que para que la regla funcione, debe de estar en el inicio de las reglas del firewall, si no el firewall nunca llegará a esta regla.

Esto es todo, ojala a alguien le sirva.

Saludos!

 

👉 ¿Te gustó este contenido? Hay más esperando por ti.

Cada semana, comparto aprendizajes y reflexiones que no encontrarás en ningún otro lugar. ¡Únete a la comunidad de más de 9,000 emprendedores que ya están avanzando!

Calcular la máxima cantidad de clientes en Apache2 /prefork

En general la forma de calcular cuanta gente puede acceder de manera concurrente a mi servidor web ( MaxClients ) es sencilla pero bastante manual. Encontré un script en la web de referencia que me puede ayudar a hacerlo de manera más práctica así que lo comparto.

Hace algunos años desarrollando un sistema de regalos corporativos fue la primera vez que me encontré con este problema, si está mal definida la cantidad máxima de usuarios que pueden acceder al apache este consume mucha memoria y en el caso de que tengas el servidor MySQL en el mismo lugar este puede caerse sin ningún aviso.

La idea es que podamos definir bien la cantidad de usuario que puede manejar apache.

Este es el procedimiento que seguiremos.

  1. Definir cantidad de usuarios que pueden acceder concurrentemente al sistema.
  2. Modificar apache para que pueda soportar esta nueva cantidad de usuarios.

Definiendo cantidad de usuarios que pueden acceder

Antes que todo debemos saber cuanta Memoria Ram ( no Swap ! ) tiene nuestro sistema. Eso lo podemos lograr con el comando «free -m«.

ubuntu@ip-10-10-10-69:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          7983       6620       1363         63        183       5584
-/+ buffers/cache:        852       7131
Swap:            0          0          0

En mi caso mi servidor tiene 8Gigas de memoria. Ahora debemos revisar cuanto ocupa Apache ( Ojo, pestaña y ceja, la idea es que apache ocupe la menor cantidad de recursos posibles, para ello puedes optimizar tu sitio con herramientas para el cache).

Para definir la cantidad de memoria que ocupa Apache usaremos un script que nos dice la cantidad de memoria utilizada por proceso llamado ps_mem.py.

Antes de ejecutar esta herramienta simularemos tráfico con BlazeMeter ( ¡La versión gratuita deberá ser suficiente por ahora !), que para mi es la forma más sencilla de simular el  tráfico.

Una vez simulado el tráfico, o durante el utilizamos el script.

ubuntu@ip-10-10-10-69:~$ sudo python ps_mem.py 
 Private  +   Shared  =  RAM used    Program

172.0 KiB +  28.5 KiB = 200.5 KiB    acpid
188.0 KiB +  17.5 KiB = 205.5 KiB    sh
188.0 KiB +  27.5 KiB = 215.5 KiB    atd
256.0 KiB +  54.0 KiB = 310.0 KiB    upstart-file-bridge
256.0 KiB +  54.5 KiB = 310.5 KiB    upstart-socket-bridge
288.0 KiB +  54.0 KiB = 342.0 KiB    cron
288.0 KiB +  79.5 KiB = 367.5 KiB    upstart-udev-bridge
484.0 KiB + 180.0 KiB = 664.0 KiB    su
560.0 KiB + 127.5 KiB = 687.5 KiB    systemd-logind
760.0 KiB +  48.5 KiB = 808.5 KiB    dbus-daemon
788.0 KiB +  67.5 KiB = 855.5 KiB    systemd-udevd
  1.1 MiB + 264.0 KiB =   1.3 MiB    getty (7)
  1.5 MiB +  58.5 KiB =   1.6 MiB    rsyslogd
  1.0 MiB + 659.0 KiB =   1.6 MiB    sudo (2)
  1.6 MiB + 106.5 KiB =   1.7 MiB    init
  1.7 MiB +  49.0 KiB =   1.8 MiB    screen
  2.1 MiB + 128.0 KiB =   2.2 MiB    sendmail-mta
  2.6 MiB +  17.0 KiB =   2.6 MiB    dhclient
  1.3 MiB +   2.1 MiB =   3.4 MiB    sshd (3)
  9.0 MiB +   1.2 MiB =  10.1 MiB    bash (6)
 23.8 MiB +  93.5 KiB =  23.9 MiB    miniserv.pl
102.7 MiB +   1.6 MiB = 104.3 MiB    ajenti-panel
129.6 MiB + 242.5 KiB = 129.8 MiB    mysqld
  1.6 GiB +  59.7 MiB =   1.7 GiB    apache2 (61)
---------------------------------
                          2.0 GiB
=================================

En este caso tenemos que el sistema está usando 2G en total de memoria en donde apache lidera el consumo con 1.7G y 61 usuarios concurrentes.

Para calcular la memoria de apache2 tomaremos las siguientes consideraciones.

  1. Cuanta memoria reservaremos para el sistema.
  2. Cuanta memoria usaremos para mysql.
  3. Cuanta memoria usa en promedio un cliente conectado.
  4. La diferencia entre la memoria disponible y la usada por los otros servicios es la que usaremos para apache.

Por ahora asumiré que ningún otro proceso correrá en el servidor, por lo que 256 megas será suficiente para el sistema.

Mysql usa menos del 10% de apache para 61 usuarios. Es razonable asumir que no pasaremos del uso de 1GB, por lo que usaremos esa cantidad.

Con 61 usuarios conectados el sistema usa 1.7GB de ram, lo que es aproximadamente 28 Megas por cliente conectado. ( En el peor caso. )

La memoria aproximada disponible son los 8Gigas menos 1GB de Mysql menos 256 megas en ram menos 256 megas en ram para tener un margen de error considerable. Esto nos da 6.5GB de ram aproximados disponibles.

6.5*1024/28 = 237

Lo anterior nos da 237 usuarios concurrentes. En mi caso lo dejaré en 250 debido a que la ram ocupada por usuario en general sera menor que los 28 megas y estoy usando un buen sistema de cache para mi sitio.

Configurando el servidor con los nuevos datos.

En general puedes encontrar el archivo de configuración en /etc/apache2/apache2.conf o /etc/httpd/httpd.conf. En mi caso usando Ubuntu Server 14.04 la dirección para configurar el prefork aparece en la carpeta de configuraciones /etc/apache2/mods-enabled/mpm_prefork.conf .

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of requests a server process serves


<IfModule mpm_prefork_module>
StartServers       15
MinSpareServers    15
MaxSpareServers    20
ServerLimit       250
MaxClients        250
MaxRequestsPerChild  4000
</IfModule>

Ok, ahora tenemos un servidor configurado para alojar 250 usuarios de manera concurrente. ¡Al mejorar el rendimiento de apache en el consumo de memoria pueden ser mucho más !

Origen: Fuscata Consulting :: Knowledge Base :: How To Set MaxClients in Apache/prefork

👉 ¿Te gustó este contenido? Hay más esperando por ti.

Cada semana, comparto aprendizajes y reflexiones que no encontrarás en ningún otro lugar. ¡Únete a la comunidad de más de 9,000 emprendedores que ya están avanzando!

Firewall usando UFW en un servidor Ubuntu /  Debian

Aprende como configurar un firewall usando UFW ( Uncomplicated Firewall ) en un servidor Ubuntu / Debian.

Soy de las personas que siempre a usado IPTables para configurar el firewall de un servidor, pero la verdad es que no lo se de memoria y siempre debo recordarlo al momento de realizarlo. Esto es debido a que no lo hago muy seguido y no es muy amigable.

UFW es una herramienta o frontend que agrega estas reglas al firewall de iptables de una manera sencillo y casi humana de entender, por lo que para mi ha sido genial debido a que puedo tener la fortaleza de iptables pero de una manera que es muy práctica y difícil de olvidar.

Hace poco menos de un año que comencé a usar UFW para gestionar las reglas de IPTables, y se lo recomendé a muchas personas debido a su simplicidad.  Este jueves fui  a casa de un amigo y me encontré que estaba configurando un servidor debian usando UFW y empecé a ver el proceso y ayudarlo un poco ( ¡ Pero solo de curioso ! No creo que haya necesitado ayuda en verdad ).  Me di cuenta que recordaba todos los comandos de como usarlo y no mucha gente lo conoce, por lo que la recomendación ahora se extiende con un mini tutorial de como usarlo a todo aquel quién le sirva.

En este caso el tutorial lo haré con un ejemplo de un sitio wordpress que corre en un servidor Ubuntu 14.04 que debo configurar.

Ya teniendo el sitio andando, lo primero que quiero hacer es bloquear todas las conexiones por defecto excepto al puerto 80 ( http ) y al 22 ( ssh )

Si no tienes ufw simplemente lo instalamos :

sudo apt-get install ufw

Podemos ver el estado de las reglas actuales ejecutando

sudo ufw status

Si estás partiendo de cero igual que yo, lo más probable que el resultado sea  : «Status: inactive»

Para activarlo simplemente ejecutamos :

sudo ufw enable

Antes de hacer cualquier cosa, agreguemos la regla de ssh para las conexiones permitidas en caso de que bloquemos todo por error.

# sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)

A esta altura tenemos el servidor de firewall activo, y tenemos dos reglas para acceso ssh por IPV4 y IPV6.

Lo siguiente que me gusta hacer es que por defecto de bloqueen todas las conexiones entrantes, es aquí donde alguien puede diferir conmigo, pero para mi lógica es mejor bloquear todo y luego aceptar que aceptar y luego bloquear.  Esto lo hacemos de la siguiente manera :

sudo ufw default deny incoming

Si trabajas con webservices y no coneces los puertos por los que tu servidor se conectará a futuro a ellos, lo más sencillo es dejar que la política de conexiones salientes sea para permitirlas todas. Esto sería bueno cambiarlo a futuro cuando tengas certeza a que servidores te vas a conectar y sus puertos.

sudo ufw default allow outgoing

A esta altura tenemos el servicio andando, aceptando conexiones ssh, pero no podemos acceder a nuestra página web. Para hacerlo lo podemos hacer de dos maneras, especificando el servicio o el puerto. Adjunto las dos formas :

sudo ufw allow http
sudo ufw allow 80/tcp

Si bien, esto es todo lo que quiero incluir en este tutorial, hay otra cosa que se debería hacer que recomiendo. Me gusta cambiar el puerto del ssh a un puerto obviamente que vayas a recordar.

Imaginemos que este puerto es el 2228, lo que haremos es agregar esta regla al firewall y luego lo cambiaremos en la configuración del ssh.

sudo ufw allow 2228

Editamos el archivo de configuración del server ssh :

sudo vim /etc/ssh/sshd_config

Y editamos la línea que dice Port por el puerto que nosotros queramos ocupar y reiniciamos el servicio ssh.

sudo service ssh restart

En estos momento ya necesito el nuevo puerto para acceder, pero tenemos reglas que nos sobran. Ahora podemos eliminar nuestra regla de ssh que creamos en un comienzo debido a que ya no la vamos a utilizar.

sudo ufw delete allow ssh

Ya, ahora tenemos un server PSEUDOSEGURO, o al menos mucho mejor de lo que viene por defecto. Ojala les sirva !

Origen: How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server | DigitalOcean

👉 ¿Te gustó este contenido? Hay más esperando por ti.

Cada semana, comparto aprendizajes y reflexiones que no encontrarás en ningún otro lugar. ¡Únete a la comunidad de más de 9,000 emprendedores que ya están avanzando!