Mostrando entradas con la etiqueta servidor. Mostrar todas las entradas
Mostrando entradas con la etiqueta servidor. Mostrar todas las entradas

lunes, 29 de abril de 2013

Port Knocking: La mejor seguridad que puedes tener en tu servidor


Golpeteo de puertos (en inglés port knocking) es sin lugar a dudas una práctica que bien todos los que administramos servidores deberíamos conocer, aquí les explico detalladamente qué es esto y cómo implementar y configurar esto ;)
Ahora mismo los que administramos algún servidor tenemos acceso SSH a ese servidor, algunos cambiamos el puerto por defecto de SSH y ya no usa el puerto 22 y otros simplemente lo dejan así (algo no recomendado), no obstante el servidor tiene habilitado el acceso por SSH mediante algún puerto y esto ya es una ‘vulnerabilidad’.
Con Port Knocking podemos lograr lo siguiente:
1. El acceso SSH no está habilitado por ningún puerto. Si tenemos SSH configurado por el puerto 9191 (por ejemplo) ese puerto (9191) estará cerrado para todos. 2. Si alguien desea acceder por SSH al servidor no podrá obviamente, pues el puerto 9191 está cerrado… pero, si usamos una combinación ‘mágica’ o secreta se nos abrirá ese puerto, por ejemplo:
1. Hago un telnet al puerto 7000 del servidor 2. Hago otro telnet  al puerto 8000 del servidor 3. Hago otro telnet al puerto 9000 del servidor 4. El servidor detecta que alguien ha efectuado la combinación secreta (tocar los puertos 7000, 8000 y 9000 en ese orden) y abrirá el puerto 9191 para que se solicite el login por SSH (lo abrirá solo para la IP desde la cual se hizo la combinación de puertos satisfactoria). 5. Ahora para cerrar SSH simplemente hago un telnet al puerto 3500 6. Haré otro telnet al puerto 4500 7. Y finalmente otro telnet al puerto 5500 8. Al efectuar esta otra combinación secreta que el servidor detecta, se cerrará el puerto 9191 de nuevo.
O sea, explicando de forma aún más simple esto…
Con Port Knocking el servidor nuestro podrá tener determinados puertos cerrados, pero cuando el server detecte que desde X IP se efectuó la combinación de puertos correcta (configuración previamente definida en un archivo de configuración) ejecutará determinado comando en él mismo obviamente (comando también definido en el archivo de configuración).
¿Se entiende no? :)

¿Cómo instalar un daemon para Port Knocking?

Yo lo hago con el paquete kockd, que nos permitirá de forma muy pero muy simple y rápida poder implementar y configurar Port Knocking.
Instalen el paquete: knockd

¿Cómo configurar Port Knocking con knockd?

Una vez instalado pasamos a configurarlo, para ello editamos (como root) el archivo /etc/knockd.conf:
nano /etc/knockd.conf
Como podrán ver en ese archivo ya viene una configuración por defecto:
 Explicar la configuración por defecto es realmente simple.
- Primero, UseSyslog significa que para registrar actividad (log) se usará /var/log/syslog.
- Segundo, en la sección [openSSH] es donde obviamente irán las instrucciones para abrir SSH, primeramente tenemos la secuencia de puertos (la combinación secreta) que está configurada por defecto (puerto 7000, puerto 8000 y finalmente puerto 9000). Obviamente los puertos se pueden cambiar (de hecho lo recomiendo) así como no tienen que ser 3 obligatoriamente, pueden ser más o menos, depende de ustedes.
- Tercero, seq_timeout = 5 significa el tiempo que se esperará para que se efectúe la combinación secreta de puertos. Por defecto está puesto 5 segundos, esto significa que una vez empecemos a efectuar el port knocking (o sea, que cuando hagamos un telnet al puerto 7000) tenemos máximo 5 segundos para terminar la secuencia correcta, si pasan 5 segundos y no hemos culminado el port knocking entonces simplemente será como si la secuencia no hubiese sido válida.
- Cuarto, command no necesita de mucha explicación. Este será simplemente el comando que el servidor ejecutará cuando detecte la combinación antes definida. El comando que está puesto por defecto lo que hace es abrir el puerto 22 (cambien este puerto por el de su SSH) solo a la IP que efectuó la combinación correcta de puertos.
- Quinto, tcpflags = syn con esta línea especificamos el tipo de paquetes que reconocerá el servidor como válidos para el port knocking.
Luego está la sección para cerrar el SSH, que la configuración por defecto no es más que la misma secuencia de puertos anterior pero en orden contrario.
Aquí les dejo una configuración con algunas modificaciones:

 ¿Cómo iniciar el daemon knockd?

Para iniciarlo primero debemos modificar (como root) el archivo /etc/default/knockd:
nano /etc/default/knockd
Ahí cambiamos la línea número 12 que dice: “START_KNOCKD=0” y cambiar ese 0 por un 1, nos quedaría: “START_KNOCKD=1
Una vez hecho esto ahora simplemente lo iniciamos:
service knockd start
Y listo, ya está configurado y funcionando.

Port Knocking con knockd en funcionamiento!

Como pueden ver en la configuración anterior, si se hace un port knock al puerto 1000, luego al 2000 y finalmente al 3000 entonces se abrirá el puerto 2222 (mi SSH), pues bien aquí otro ordenador ejecutando el port knock:
Una vez presione [Enter] en el Knock No.1, en el No.2 y finalmente en el No.3 se abrirá el puerto, aquí les dejo el log:
Como pueden ver al hacer el knock al puerto 1000 se registró el stage (paso) 1, luego al 2000 será el stage 2 y finalmente al 3 con el 3000, al hacer esto se ejecuta el comando que le declaré en el .conf y listo.
Luego para cerrar el puerto solo sería hacer un knock al 9000, 8000 y finalmente al 7000, aquí les dejo el log:
Y bueno aquí termina la explicación de uso :D
Como pueden ver, el Port Knocking es verdaderamente interesante y útil, pues si bien no queremos simplemente abrir un puerto luego de determinada combinación de puertos, el comando u orden que el servidor ejecutará puede variar, o sea… en vez de abrir un puerto podemos declarar que mate un proceso, detenga un servicio como apache o mysql, etc … el límite es su imaginación.
El Port Knocking solo funciona cuando se tiene un servidor físico o cuando el servidor virtual es tecnología KVM. Si tu VPS (servidor virtual) es OpenVZ entonces el Port Knocking no creo que te funcione pues no puedes manipular directamente iptables
Bueno y hasta aquí el artículo… no soy ni de lejos un experto en esta materia pero quería compartir con ustedes este tan interesante proceso.

Enlace

sábado, 2 de junio de 2012

Distros Linux para tu router

Podemos encontrar Linux en todas partes: la base del sistema operativo es también la base de un buen montón de dispositivos hardware, e incluso en los casos en que Linux no está preinstalado en dichos dispositivos es posible dar soporte a ese hardware para que saque partido del software Open Source.

Es lo que nos demuestra el artículo de LinuxPlanet en el que hablan de 3 distribuciones Linux perfectas para ser instaladas en un router, además de un sistema operativo derivado de BSD que también sirve para el mismo propósito.
Las distribuciones de las que hablan en el artículo están orientadas a servir entre otras cosas para poner en marcha un firewall de Internet muy eficiente y por supuesto para enrutar el tráfico que llega o sale de nuestros ordenadores.
En el artículo hablan de Clear OS, m0n0wall, Untangle y Vyatta, y describen sus prestaciones y sus puntos fuertes, destacando algunas de las distribuciones a la hora de asegurar nuestra red o bien de enturar el tráfico de una manera más eficiente. Una idea genial que por supuesto se complementa con esos firmwares personalizados para routers que también se han hecho famosos gracias a proyectos como OpenWRT o dd-wrt.

Fuente

lunes, 28 de mayo de 2012

Mini UPS

This circuit provides an uninterrupted power supply (UPS) to operate 12V, 9V and 5V DC-powered instruments at up to 1A current. The backup battery takes up the load without spikes or delay when the mains power gets interrupted. It can also be used as a work bench power supply that provides 12V, 9V and 5V operating voltages. The circuit immediately disconnects the load when the battery voltage reduces to 10.5V to prevent deep discharge of the battery. LED1 indication is provided to show the full charge voltage level of the battery. Miniature white LEDs (LED2 and LED3) are used as emergency lamps during power failure at night.

A standard step-down transformer provides 12V of AC, which is rectified by diodes D1 and D2. Capacitor C1 provides ripple-free DC to charge the battery and to the remaining circuit. When the mains power is on, diode D3 gets forward biased to charge the battery. Resistor R1 limits the charging current. Potentiometer VR1 (10k) with transistor T1 acts as the voltage comparator to indicate the voltage level. VR1 is so adjusted that LED1 is in the 'off' mode. when the battery is fully charged, LED1 glows indicating a full voltage level of 12V.

When the mains power fails, diode D3 gets reverse biased and D4 gets forward biased so that the battery can automatically take up the load without any delay. When the battery voltage or input voltage falls below 10.5V, a cut-off circuit is used to prevent deep discharging of the battery. Resistor R3, zener diode ZD1 (10.5V) and transistor T2 form the cut-off circuit. When the voltage level is above 10.5V, transistor T2 conducts and its base becomes negative (as set by R3, VR2 and ZD1). But when the voltage reduces below 10.5V, the zener diode stops conduction and the base voltage of transistor T2 becomes positive. It goes into the 'cut-off' mode and prevents the current in the output stage. Preset VR2 (22k) adjusts the voltage below 0.6V to make T2 work if the voltage is above 10.5V.

When power from the mains is available, all output voltages-12V, 9V and 5V-are ready to run the load. On the other hand, when the mains power is down, output voltages can run the load only when the battery is fully charged (as indicated by LED1). For the partially charged battery, only 9V and 5V are available. Also, no output is available when the voltage goes below 10.5V. If battery voltage varies between 10.5V and 13V, output at terminal A may also vary between 10.5V and 12V, when the UPS system is in battery mode.

Outputs at points B and C provide 9V and 5V, respectively, through regulator ICs (IC1 and IC2), while output A provides 12V through the zener diode. The emergency lamp uses two ultra-bright white LEDs (LED2 and LED3) with current limiting resistors R5 and R6. The lamp can be manually switched 'on 'and 'off'by S1.the circuit is assembled on a general-purpose PCB. There is adequate space between the components to avoid overlapping. heat sinks for transistor T2 and regulator ICs (7809 and 7805) to dissipate heat are used.

The positive and negative rails should be strong enough to handle high current. Before connecting the circuit to the battery and transformer, connect it to a variable power supply. Provide 12V DC and adjust VR1 till LED1 glows. After setting the high voltage level, reduce the voltage to 10.5V and adjust VR2 till the output trips off. After the settings are complete, remove the variable power supply and connect a fully-charged battery to the terminals and see that LED1 is on. After making all the adjustments connect the circuit to the battery and transformer. The battery used in the circuit is a 12V, 4.5Ah UPS battery.





Fuente

jueves, 24 de mayo de 2012

Ideas para un server ideal

Bueno, es necesario hacer una recopilación de algunas ideas para un server ideal.

Hardware
1- Fuente de alimentación de notebook conectada a la placa madre. Lo ideal es que sea redundante (o sea, dos fuentes), pero ya al ser ya sin coolers y más integrada, es menor la probabilidad de fallos.
2- Aguardando los procesadores ARM de varios núcleos. Al ser de esta marca, no es necesario que tengan refrigeración activa, sino disipadores pasivos... Ahorro de electricidad, y menor ruido.

Software
1- La distribución que está en estado testing es Zentyal, basada en Ubuntu Server.
Tiene una administración muy amigable vía interfaz web.