martes, 25 de abril de 2017

Como habilitar el ssh en FreeBSD

Para utilizar ssh, debemos manejar un par de archivos los cuales ‘abren’ las conexiones seguras.
Al iniciar el FreeBSD por vez primera, se generan un par de archivos con las claves públicas y privadas del server. Pero si no editamos el archivo hosts.allow ( en el directorio /etc ) y sshd_config ( en el directorio /etc/ssh ) no podremos establecer el canal seguro de conexión.
# ee /etc/hosts.allow
Al editarlo vemos que existe una línea ( ALL : ALL : allow ) sin comentario. Le agregamos un ‘#’ para inhabilitarla, y debajo ponemos sshd : ip.de.mi.red/255.255.255.??? : allow
# Start by allowing everything (this prevents the rest of the file
# from working, so remove it when you need protection).
# The rules here work on a “First match wins” basis.
#ALL : ALL : allow
# Wrapping sshd(8) is not normally a good idea, but if you
# need to do it, here’s how
sshd : 192.168.100.0/255.255.255.192 : allow
En este caso, la red 192.168.100.0/32 es aceptada para conectarse al servidor. Grabamos el archivo y de esta forma, ‘cerramos’ el acceso al mismo de cualquier otra red salvo la especificada.
Ahora, tenemos dos opciones: Permitimos conexión vía SSH al superusuario ‘root’, o lo que es mas recomendado, le permitimos el ingreso a un usuario normal, y que luego gane con ‘su’ el acceso de superusuario.
OPCION 1 – NO RECOMENDADO:
editamos el archivo sshd_config:
# vi /etc/ssh/sshd_config
Y modificamos la línea donde dice PermitRootLogin de ‘no’ a ‘yes’ como debajo:
PermitRootLogin yes
Grabamos y de esta forma podremos acceder al servidor vía ssh con algún cliente de Secure Shell como el PuTTY el cual es gratis.
OPCION 2 – RECOMENDADO :
Ingresamos un nuevo usuario con el comando ‘adduser’ y lo ingresamos al grupo ‘wheel’ ( para que pueda hacer uso del comando ‘su’ el cual le permite –luego de ingresar el password de root– ganar privilegios de superusuario ). Si el usuario ‘normal’ existe, llamado en este ejemplo ‘admin’, se hace lo siguiente:
# pw user mod admin -G wheel
Para que los usuarios tengan el uso de TAB y las flechas del cursor para los comandos anteriores, debería usar el shell ‘csh’, no el ‘sh’. Por lo tanto, lo podemos cambiar de un tipo de terminal a otro con el comando:
$ chsh -s csh

lunes, 24 de abril de 2017

Configurar un Mikrotik Paso a Paso con salida a internet

En esta ocasión les enseño como configurar un mikrotik para terner dos redes WAN asignadas, con esta configuracion estará  preparada para tener redundancia, pero eso les enseñare en otro post, por lo pronto solo trabajaremos con la red WAN1 y la red LAN.
Para este ejemplo utilizaremos un Mikrotik RB750G, aunque la configuración es la misma para otros modelos.

Lo primero que tenemos que hacer es borrar todo rastro de configuracion que trae por default el mikrotik ya que esto puede ocasionarnos problemas por los parametros preestablecidos.
Nota: Cabe aclarar que existen maneras de realizarlo desde el wizard, sin embargo por experiencia propia me resulta mas seguro realizarlo de esta manera.

1. Nos conectamos al mikrotik por MAC para no perder la comunicacion cuando borremos la configuracion. (Recuerden que si da problemas al conectarse por mac, deshabiliten las demas tarjetas de red o redes virtuales que tengan configurado en su equipo).


2. La primera vez que nos conectamos al mikrotik nos aparece el siguiente mensaje, que es un wizard para la configuracion, a nosotros no nos interesa por lo que seleccionaremos la opcion de "reset configuration".


3. Al resetear la configuracion nos tendremos que conectar nuevamente.


4. Como podemos ver en la imagen no tenemos configurado nada, pero basicamente en las 6 ventanas de abajo realizaremos toda la configuracion.


Las siguientes configuraciones se encuentran en el Menú de IP del lado izquierdo de la pantalla de configuración.

5. Empezamos creando las ips para las interfaces en el menu de Address List, recordemos que utilizaremos dos redes WAN (puerto 1 y 2) y una red LAN (puerto 3), por lo que asignaremos las 3 ips a los 3 puertos. (La red LAN puede tener el segmento que querramos, y en las redes WAN1 y WAN2 tendremos configurada una ip que entregue nuestro modem).


6. Ahora crearemos un Pool de DHCP, en el menu de IP Pool, para configurar mas adelante nuestro servidor de DHCP, esto normalmente se configura solo en la RED LAN a menos que queramos tener ip dinamica en nuestra red WAN.(Llevara el nombre LAN), en la opcion de Address teclearemos de que rango a que rango queremos que se asignen las ips, en el siguiente ejemplo 10.1.0.10 a la 10.1.254.254, excluyendo unicamente las 10 primeras.


7. En el menu DHCP Server configuraremos un nuevo servidor.


En los parametros se realizaran los siguientes, el nombre que nostros querramos, lo asignaremos al puerto 3 ethernet, y es importante en Address Pool seleccionar el Pool que crearmos con anterioridad de nombre "LAN", en source address teclearemos nuestro gateway, que es la misma ip que le asignamos a nuestra interfaz, que de igual manera realizamos en los primeros pasos.


Asi se vera ya una vez creada.


 8. En la pestaña Networks crearemos una red la cual sera la encargada de enviar los parametros de configuracion para nuestro servicio de DHCP.

Para esto teclearemos en Address la red que queremos que se asigne, en Gateway nuestra ip de interfaz, La mascara de Red y nuestros servidores de DNS, de no contar con uno se pueden utilizar los de google 8.8.8.8 y 8.8.4.4 para poder navegar en internet.


Una vez configurado esto podemos conectarnos a travez del puerto 3 del mikrotik y si realizamos todo bien, nos debera asignar una ip de forma automatica, con el comando ipconfig desde la consola de Windows podemos ver algo como la siguiente imagen en la que se asigno la ip 10.1.254.254.


9. Ahora tenemos que crear la interfaz WAN, podemos editar el nombre de las interfaces para no confundirlas, esto se hace dandole doble click y asignar el nuevo nombre.



Así quedarían asignados los nombres de las 3 interfaces.


Si queremos que el puerto 4 y el puerto 5 entreguen la misma red lan en la opcion de Master port (tanto del puerto 4 y 5) debemos asignar el puerto 3.


10. De igual manera crearemos una interfaz para la red WAN (supongamos que el modem entrega ip en una red 192.168.0.0/24, por lo cual podemos asignarle


Con esto ya tendremos veremos red hacia el modem 192.168.0.1 pero no salida a internet, esto es porque nos falta crear una ruta por default.



11. Para crear la ruta nos vamos a la opción de Route List, y la ruta por default se crea ruteando la red 0.0.0.0


Al agregar una nueva ruta debemos configurar los siguientes parametros:

En la que el Gateway sera la ip de nuestro módem.


Ahora el mikrotik ya cuenta con internet, pero no quiere decir que la red LAN ya tenga, lo que tenemos que hacer es crear un NAT.


12. En firewall, nos vamos a la pestaña NAT y agregamos una nueva:


Al Nuevo NAT le asignamos los siguientes parámetros



Despues de hacer esto, nuestra red LAN ya cuenta con internet.



Nuestro mikrotik Ha quedado configurado.



martes, 4 de abril de 2017

Configurar Reverse Proxy en Apache Linux

Versión apache2 en Linux Debian

   Para empezar explicare como funciona un servidor proxy, según Wikipedia, y en sencillas palabras; Un proxy, en una red informática, es un programa o dispositivo que realiza una acción en representación de otro, esto es, si una hipotética máquina A solicita un recurso a una C, lo hará mediante una petición a B; C entonces no sabrá que la petición procedió originalmente de A.



      
 Instalación y Configuración

 Lo primero que debemos hacer es instalar Apache2

      #apt-get install apache2

Para verificar que el servicio se haya instalado bastara con ver la dirección http://localhost
Si nos arroja la siguiente ventana es que el servicio está arriba:



       La instalación del Apache2 nos deja una estructura de carpetas y archivos en /etc/apache2 en la cual podemos ver que las carpetas existen en pares:

                     conf-available                  conf-enabled
·                    mods-available                mods-enabled
·                    sites-available                  sites-enabled

Adicional a esto se encuentra el archivo de configuración apache2.conf entre otros.

     Como podrán deducir, en una carpeta se encuentra lo “disponible” para usar y en la otra se encuentra  lo "habilitado".

El apache cuenta con 2 comandos básicos para habilitar y deshabilitar los módulos y sitios.
 - a2ensite y a2enmod para habilitar sitios y módulos respectivamente.
 - a2dissite y a2dismod para inhabilitar sitios y módulos respectivamente.

Nota: Los modulos pueden ser instalados de manera adicional en caso de no contener alguno que necesitemos.


     Dentro de la carpeta sites-available nos trae dos sitios 000-default.conf y default-ssl.conf, uno para el puerto 80 y otro para el puerto 443 (http y https respectivamente),  de estos sitios podemos crear una copia para editarlos y ahí construir nuestro servicio proxy. (nos posicionamos en la carpeta /etc/apache2/sites-available

  #cp 000-default.conf /etc/apache2/sites-available/servicios.conf
  #cp default-ssl.conf /etc/apache2/sites-available/servicios-ssl.conf

Ahora se tiene que habilitar los módulos que utilizaremos:
  #a2enmod proxy
  #a2enmod proxy_http
  #a2enmod proxy_ajp
  #a2enmod rewrite
  #a2enmod deflate
  #a2enmod headers
  #a2enmod proxy_balancer
  #a2enmod proxy_connect
  #a2enmod proxy_html

     Muy a menudo se desea configurar un servidor Apache como front-end para ocultar los servidores que contienen realmente las aplicaciones web. De este modo, sólo el Apache está en la DMZ, mientras que el servidor de back-end queda dentro de la red interna:

esquema_dmz

     Este esquema se puede utilizar sin importar el protocolo o puerto que utilice el servidor de back-end. Para poder implementar el proxy es necesario que el servidor apache tenga habilitados una serie de módulos, que dependen del protocolo a través del cual se desea atacar el servidor de back-end. En este ejemplo voy a suponer que el servidor de back-end está escuchando por el puerto 80.

Para el ejemplo utilizaremos los siguientes parámetros:
Servidor proxy: proxy.solovidabien.com
Servidor destino: destino.solovidabien:8080/consulta


<VirtualHost *:80>
                ErrorLog "/var/log/apache2/frontend-error.log"
                CustomLog "/var/log/apache2/frontend-access.log" common
                ServerName proxy.solovidabien.com                                  
                ServerAdmin administrador@solovidabien.com             
                ProxyRequests Off                                                                      
                ProxyPreserveHost On
                DocumentRoot /var/www/html

                ProxyPass /consulta http://destino.solovidabien:8080/consulta/
                ProxyPassReverse /consulta/ http://destino.solovidabien:8080/consulta/

                SetOutputFilter     proxy-html
                RequestHeader       unset Accept-Encoding
</VirtualHost>

Nota: Todo el archivo puede o no quedar igual, puesto que hay archivos que traen texto y otras opciones, pero lo importante es que cuente con los parametros antes escritos.

La directiva "ServerName" hace referencia a la URL a la que se dirige la petición. Deberá configurarse una entrada en el DNS que apunte al servidor.

La directiva ServerAdmin hace referencia al correo electrónico de contacto del administrador del servicio.

La directiva DocumentRoot /var/www/html hace referencia a la dirección de nuestro html local si contaramos con uno, de no llevar este parámetro no podríamos alojar una pagina web de manera local en el servidor.

La directiva ProxyRequests Off evita que el front-end sea utilizado como proxy, es decir, que usuarios puedan saltar al front-end y de ahí a cualquier otra dirección. Es muy importante dejarlo deshabilitado para evitar problemas de seguridad o incluso legales.

La directiva ProxyPreserveHost On permite que el salto del servidor de front-end al de back-end sea transparente para el usuario. Si no estuviera habilitada, el usuario se dirigiría a http://proxy.solovidabien.com pero inmediatamente vería como la dirección cambia a http://destino.solovidabien.com. Además, como en este supuesto el servidor de back-end no es visible desde Internet el usuario vería un error.

Por último, las directivas ProxyPass y ProxyPassReverse gestionan el salto y la vuelta del servidor de front-end al de back-end.

Una vez configurado nuestro vhost con el nombre servicios.conf solo nos queda habilitarlo  y reiniciar el servicio con los siguientes comandos:

  #a2ensite servicios.conf
  #service apache2 reload

Con esto ya tendremos habilitado nuestro servidor proxy, para el puerto 80.


Como habilitar el puerto 443 (https) 

lunes, 3 de abril de 2017

Como utilizar el Crontab de Linux

CRONTAB

El comando crontab se utiliza en sistemas UNIX para programar la ejecución de otros comandos, es decir, para automatizar tareas. Podemos ver los crontabs que se están programados y también editarlos, lógicamente.
Para verlos, utilizamos este comando:
sudo crontab -l
Para editarlos:
sudo crontab -e

FORMATO DE LAS TAREAS

Las tareas cron siguen una determinada sintaxis. Tienen 5 asteriscos seguidos del comando a ejecutar. Ahora explicaré para qué sirve cada cosa.
* * * * * /bin/ejecutar/script.sh

Los 5 asteriscos

De izquierda a derecha, los asteriscos representan:
  1. Minutos: de 0 a 59.
  2. Horas: de 0 a 23.
  3. Día del mes: de 1 a 31.
  4. Mes: de 1 a 12.
  5. Día de la semana: de 0 a 6, siendo 0 el domingo.
Si se deja un asterisco, quiere decir "cada" minuto, hora, día de mes, mes o día de la semana. Por ejemplo:
* * * * * /bin/ejecutar/script.sh
Ejecuta este script:
  • Cada minuto
  • De cada hora
  • De cada día del mes
  • De cada mes
  • De cada día de la semana
Otro ejemplo:
30 2 * * 1 /bin/ejecutar/script.sh
Ejecutar este script:
  • En el minuto 30
  • De las 2 de la noche
  • De cada día del mes
  • De cada mes
  • Sólo si es viernes
En resumen, todos los viernes a las 2:30 horas se ejecutará el script.

Intervalos de tiempo

Ejecutar un script de lunes a viernes a las 2:30 horas:
30 2 * * 1-5 /bin/ejecutar/script.sh
Ejecutar un script de lunes a viernes cada 10 minutos desde las 2:00 horas durante una hora:
0,10,20,30,40,50 2 * * 1-5 /bin/ejecutar/script.sh
Esto quizá puede ser largo. La sintaxis de crontab permite lo siguiente. Imaginemos que queremos ejecutarlo cada 5 minutos:
*/5 2 * * 1-5 /bin/ejecutar/script.sh

PALABRAS RESERVADAS

Muchas veces tenemos palabras reservadas para facilitar el uso de programas o lenguajes de programación. Cron no podía ser menos, así que tenemos algunas que suelen ser las más comunes. Ya cada uno que lo configure conforme a sus necesidades. Aquí van:
  • @reboot: se ejecuta una única vez al inicio.
  • @yearly/@annually: ejecutar cada año.
  • @monthly: ejecutar una vez al mes.
  • @weekly: una vez a la semana.
  • @daily/@midnight: una vez al día.
  • @hourly: cada hora.
Por ejemplo, para ejecutar el script cada hora:
@hourly /bin/ejecutar/script.sh