seguridad

Cómo empezar un cortafuegos en PHP

2020-06-08 - Categorías: Drupal / Magento / PHP / Prestashop / Symfony / WordPress
WAF Web Application Firewall

Este post es un sencillo howto para ejecutar un código, antes de cualquier ejecución en PHP en una aplicación web. Sirve para montar lo que se llama un WAF en la capa de aplicación, cuyas siglas significan Web Application Firewall.

Así después, le podemos añadir toda la lógica que necesitemos. Con ésta técnica, en cada petición que se reciba en PHP, se ejecutará lo que pongas en el WAF antes de la ejecución de nuestra aplicación web.. 🧐

Continuar leyendo..

Cómo dar permisos de acceso a un directorio web en GNU/Linux

2018-11-06 - Categorías: General / GNU/Linux
Permisos de acceso a ficherosd

Ahora vengo a compartir un pequeño, pero muy pequeño HOWTO. Se trata de un par de acciones para configurar los permisos de archivos y directorios en un servidor web Linux, y unas pocas explicaciones para saber el porqué hay que dar estos permisos..

La mayoría de los servidores web de Internet corren sobre sistemas operativos Linux. En estos sistemas operativos se establecen usuarios y los recursos del sistema operativos tienen unos permisos de acceso. De esta forma hay propietarios de los directorios y de los ficheros, con lo que los servidores web tienen que tener permiso para poder acceder a dichos ficheros. De lo contrario no podrán servir las páginas web.

Continuar leyendo..

GNU/Linux: bloqueando visitas por IPs

2018-02-19 - Categorías: GNU/Linux
Internet Firewall

Cuando tenemos un servidor visible desde Internet, desde cualquier lugar del mundo, recibimos visitas constantemente. Esperamos que estas visitas siempre sean las deseadas, pero quizá no lo son. No sólo hay personas y ordenadores con buenas intenciones conectados a Internet. También puede incluso haber sistemas informáticos mal configurados, que involuntariamente, ocasionen problemas a tus sistemas informáticos.

Por ejemplo, nos podemos encontrar con casos como estos:

  • Una araña de un buscador, que escanea los contenidos de tu web con muy buenas intenciones, pero se engancha y no deja de escanearte llegando a bloquearte.
  • Registro de usuarios ficticios, a modo de SPAM.
  • Comentarios de SPAM con contenidos que enlazan a otras webs.
  • Una web que se copia tus contenidos tratando de posicionarse en buscadores antes que tú.
  • Y un largo etcétera.

Debemos de tener siempre nuestros servidores lo más actualizados posibles. Y sólo permitir la escucha en los puertos totalmente necesarios. Además de que sólo debemos de abrir los puertos para las IPs, o países que sean extrictamente necesarios.

Los escaneos automáticos en busca de vulnerabilidades en nuestros servidores va a ser constante, dalo por hecho. Si no lo haces, te arrepentirás más pronto que tarde, cuando la catástrofe haya acontecido. Así que los simples mortales como yo, que no somos expertos en ciberseguridad, debemos dejar trabajar a los que saben aplicando todas las actualizaciones lo antes posible, y sólo abriendo los puertos de escucha de los servicios estrictamente necesarios.

Cómo bloquear a estos visitantes

Ahora es cuando llegamos a Iptables. Iptables es un cortafuegos integrado en el núcleo de Linux. Es bastante engorroso de configurar así que han desarrollado utilizades que automatizan su configuración. Una utilidad muy interesante en GNU/Linux para manejar este cortafuegos es el UFW, que son las siglas de Uncomplicated FireWall.

Es bien sencillo de usar, por ejemplo para bloquear todas las conexiones que vengan de una IP basta con hacer lo siguiente:

$ sudo ufw deny from IP

También tenemos incluso una interfaz gráfica del UFW, es el llamado GUFW, que se ve tal que así si tienes escritorio gráfico en el servidor:

GUFW

Ahora bien, veamos los primeros pasos con este UFW desde línea de comandos. Ya que suponemos que estamos configurando un Servidor Ubuntu o basado en la distribución Debian.

Instalación

En Ubuntu 16 viene instalado por defecto. Si por lo que sea no lo tienes puedes hacer lo siguiente:

$ sudo apt-get install ufw

Para ver el estado en el que está podemos hacer:

$ sudo ufw status
Estado: inactivo

Perfecto, ya lo tenemos instalado, listo para activarlo.

Las configuraciones por defecto

Para hacer las primeras configuraciones tenemos el fichero /etc/default/ufw en donde tenemos estas dos configuraciones principales:

DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="ACCEPT"

Cuidado con esto, porque de estar configurando remotamente el cortafuegos, y no darte acceso a ti mismo, te puedes autodenegar el acceso y ya la hemos liado parda. El DEFAULT_INPUT_POLICY es la configuración de denegar por defecto las conexiones entrantes. Así que, podemos aceptar por defecto las configuraciones entrantes antes de activarlo si son las primeras pruebas que estamos haciendo.

Así que ponemos DEFAULT_INPUT_POLICY=”ACCEPT”, o añadimos el permitir la entrada al puerto 22 para poder seguir trabajando remotamente. Si estas ya conectado a un servidor remoto, y quieres configurar esto, mejor dale una leída rápida a todo el post, para luego ir al grano de lo que necesites.

Algunas configuraciones

Así que vamos a arrancarlo:

$ sudo ufw enable
El cortafuegos está activo y habilitado en el arranque del sistema

Ahora vemos el estado de nuevo así:

$ sudo ufw status
Estado: activo

Ya lo tenemos en marcha. Vamos ahora con las configuraciones. Vamos a denegar el acceso a una IP:

$ sudo ufw deny from 1.2.3.4

Ahora vamos a aceptar todas las conexiones entrantes en los puertos 22, 80 y 443:

$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443

Ok, ¿sencillo verdad? la verdad es que es mucho más sencillo que usar las tradicionales Iptables. Así que ahora listamos todo lo configurado:

$ sudo ufw status
Estado: activo

Hasta Acción Desde
----- ------ -----
Anywhere DENY 1.2.3.4
22 ALLOW Anywhere 
80 ALLOW Anywhere 
443 ALLOW Anywhere 
22 (v6) ALLOW Anywhere (v6) 
80 (v6) ALLOW Anywhere (v6) 
443 (v6) ALLOW Anywhere (v6)

Imagina que ahora queremos borrar una regla. Lo más sencillo es listar numeradas las reglas y borramos:

$ sudo ufw status numbered
Estado: activo

Hasta Acción Desde
 ----- ------ -----
[ 1] Anywhere DENY 1.2.3.4
[ 2] 22 ALLOW IN Anywhere 
[ 3] 80 ALLOW IN Anywhere 
[ 4] 443 ALLOW IN Anywhere 
[ 5] 22 (v6) ALLOW IN Anywhere (v6) 
[ 6] 80 (v6) ALLOW IN Anywhere (v6) 
[ 7] 443 (v6) ALLOW IN Anywhere (v6)

Ahora borramos la regla que permite conexiones entrantes al puerto 80 en el IPv4 así:

$ sudo ufw delete 3

Volvemos a listar para asegurarnos:

$ sudo ufw status numbered
Estado: activo

Hasta Acción Desde
 ----- ------ -----
[ 1] Anywhere DENY IN 1.2.3.4 
[ 2] 22 ALLOW IN Anywhere 
[ 3] 443 ALLOW IN Anywhere 
[ 4] 22 (v6) ALLOW IN Anywhere (v6) 
[ 5] 80 (v6) ALLOW IN Anywhere (v6) 
[ 6] 443 (v6) ALLOW IN Anywhere (v6)

Borramos ahora las conexiones al puerto 80 en IPv6:

$ sudo ufw delete 5

Cómo hubiera sido con Iptables

Sólo como curiosidad, si quieres ver la configuración tradicional mediante Iptables, ejecuta lo siguiente para ver la tonelada de configuraciones que te has ahorrado mantener:

$ sudo iptables --list

Terminando

Espero que sirva como introducción, ya que el siguiente paso es bloquear las visitas por país. Si la has liado con alguna de las configuraciones, o simplemente quieres resetear todo, ejecutas esto y todo limpio:

$ sudo ufw reset

Estudiando logs de CloudFront con GoAccess

2017-10-13 - Categorías: Amazon Web Services / General / GNU/Linux
Vista de GoAccess

Quizá tienes que estudiar los registros de visitas de un proyecto que está en una nube, detrás de un CloudFront de Amazon Web Services. En este proyecto tenemos guardados los registros de las peticiones web que tenemos a los servidores. A veces es interesante revisarlos a este nivel.

Es decir, que tenemos registros de las visitas, anonimizados, por ejemplo con Google Analytics. Pero pasan muchas más cosas por debajo de Google Analytics que sólo quedan reflejados en los registros de los servidores. Así que resulta que queremos saber absolutamente cuáles han sido todos los registros. Queremos saber qué IPs son las que más nos visitan. Qué consultas al servidor son las que están provocando errores de servidor, los 500, incluso antes de que lleguen los robots que nos indexan. Qué IPs son de robots que nos están crawleando, o indexando, y un largo etcétera. Probablemente aquí veamos las IPs de los robots de Google, Bing, Yahoo que nos visitan en busca de información de la web..

Continuar leyendo..

Programar copias de seguridad diarias con Webmin+Virtualmin

2017-03-30 - Categorías: Amazon Web Services / General / GNU/Linux

Una de las tareas de servidor más comunes, o lo debería ser, es la copia de seguridad de los archivos. Si no queremos tener más problemas que los necesarios nos conviene tener una copia. Así que aquí estoy de nuevo escribiendo sobre Virtualmin, este gran proyecto Open Source que nos brinda una brillante interfaz de usuario web. Traigo un pequeño HOWTO para programar las copias de seguridad con este software.

Continuar leyendo..

Administrar tu servidor con Webmin y Authentic Theme

2016-01-24 - Categorías: Amazon Web Services / GNU/Linux
Webmin dashboard

¡Buenos días a todos! Voy a tratar de no perder las buenas costumbres, como esta de compartir en el blog mi granito de arena en todo esto de la informática. Hasta estos últimos días, que no he tenido la necesidad de mantener al día tantos servidores como últimamente. Estaba haciéndolo manualmente, a pelo como se suele decir, entrando en los servidores y aplicando actualizaciones, modificaciones, etc.. Todo esto es mucho tiempo así que delegar en un proveedor de hosting todo éste trabajo es una buena elección. Pero no siempre te va a valer y puede que necesites hacer configuraciones que un proveedor de hosting no te va a permitir. Administrar tu propio servidor no tiene que ser complejo.

Todo esto me ha llevado a investigar sobre paneles de control de servidores. Tenemos el gran Cpanel, Plesk, Zpanel, y un largo etcétera. Por temas laborales ya he probado algunos en los propios proveedores. Muchos funcionan de maravilla y son sencillos de gestionar. Pero no me voy a dedicar a alquilar hosts, sino que simplemente necesito mantener unos pocos servidores y no es viable comprar una solución comercial. Así que navegando y navegando al final me topé con Webmin.

Qué tiene

Webmin configurando

A grandes rasgos es una web desarrollada sobre Perl, que se instala en el puerto 10000 del servidor y se integra con el sistema operativo. Nos permite ver el estado del servidor, hacer configuraciones de red, actualizarlo, programar actualizaciones automáticas recibiendo informes a tu email. Te permite configurar usuarios, permisos, instalar bases de datos, servidor web, configurarlos. También hay módulos para instalar un servidor de correo electrónico. Puedes administrar Apache2, Mysql, Postgres, Postfix, Dovecod, etc, etc, etc.

La verdad es que te quedas mucho más tranquilo teniendo una herramienta de estas instalada en un servidor. No tienes más que entrar  y de un vistazo puedes saber qué tal anda el sistema. Puedes aplicar las principales configuraciones y a correr que el tiempo es muy valioso.

Hay algunas tareas como la configuración hosts virtuales que haciéndolas a mano me he aclarado mejor. Pero deduzco que será cuestión de acostumbrarme al panel. Leo que hay extensiones de Webmin para configurar fácilmente hosts con varios dominios, permitiendo la lectura de correos a los usuarios proporcionándoles un panel de entrada al sistema.

Un detalle que me ha gustado mucho es la autenticación en dos pasos (multi-factor authentication, MFA). Con el que podemos tener por ejemplo en nuestro móvil el Google Authenticator, y tener un código de seguridad extra que se genere a cada 30 segundos, para poder entrar como en la imagen siguiente:

Webmin mfa


El theme, piel, o plantilla que podéis ver en las imágenes no es el original. Es el ‘Authentic theme’ que me ha gustado también mucho. Es totalmente sensible al dispositivo (responsive), con lo que también podemos aplicar configuraciones sobre nuestro servidor desde el móvil o tablet, cosa que se agradece en gran manera.

Aquí podemos ver lo sencillo que se hace mantener actualizado el sistema:

Webmin update


Aquí en la imagen se puede ver cómo configurar que todos los días se apliquen todas las actualizaciones del sistema, no sólo las de seguridad. Esto dispara cada día la instalación de todos los paquetes para actualizar y me envía un informe del resultado de la instalación a mi email. Ya os podéis hacer a la idea de que tiene muchas cosas, y lo tranquilo que me quedo con cada correo que recibo diciéndome que todo se ha actualizado correctamente.

Como buen usuario de Ubuntu, todas las pruebas y las imágenes que se ven son sobre Ubuntu. Me lo voy a anotar como indispensable en las nuevas instalaciones. Navegando y navegando por el menú lateral ya veo que no me lo voy a acabar, así que tendré que ver la documentación oficial de cada herramienta para ir más al grano en las tareas que se necesiten.

Terminando

Aquí la web oficial: http://webmin.com/

Es un proyecto alojado en Github, que por lo que veo se ve bien activo. Ahora mismo hace 4 horas que han subido una actualización, lo que denota que vamos a seguir teniendo actualizaciones frecuentemente, como todo buen proyecto Open Source.

Para el que quiera seguir investigando en esta joya de la informática, son interesantes los módulos Usermin y Virtualmin. No creo que tarde mucho en probarlos. De estos tenemos una versión gratuita y otra comercial, con las que vamos añadiendo más y más funcionalidades al panel de control.

¿Alguna sugerencia de otro programa similar para administrar servidores?


Gufw, también tenemos cortafuegos en Linux

2015-11-15 - Categorías: General / GNU/Linux
Gufw1

En mi caso, en el Centro de Software de Ubuntu, simplemente con buscar cortafuegos me sale como disponible. Se llama ‘Configuración del cortafuegos’ y es una interfaz gráfica para que podamos manejar las configuraciones de iptables con las que configuramos las reglas de nuestro cortafuegos.

Si no lo pudiéramos instalar así desde un terminal lo podemos instalar escribiendo:

$ sudo apt-get install gufw

Una vez arrancado veremos una ventana como la de la imagen. Con sólo elegir un perfil y activarlo ya tendremos una protección extra ante posibles servicios de nuestro sistema que estén abiertos. Estos servicios que estén escuchando la red pueden ser vulnerables y siempre va a ser mejor configurar su acceso.

Fundamentos

Es interesante saber que gufw simplemente es una interfaz gráfica que nos ayudará a establecer unas reglas o configuraciones sobre nuestro acceso a la red. Gufw trabaja sobre iptables, que es una capa de sofware que establece directamente las reglas o configuraciones que vemos en la interfaz. A su vez, iptables trabaja sobre netfilter.

Netfilter es un framework que ofrece el núcleo de Linux para trabajar sobre la red. Permite filtrar, modificar, redireccionar, bloquear, registrar, etc.. paquetes de red a nivel de núcleo. Es decir, el núcleo de Linux proporciona unas herramientas para hacer todo tipo de tareas relacionadas con los cortafuegos de red.

Todas estas configuraciones que podemos hacer sobre iptables, gufw nos las sirve bien fácil para configurar. Y no sólo eso, sino que también nos proporciona una serie de plantillas para configurar los programas más habituales.

A parte de esto, también hay otras soluciones que no son iptables para configurar los cortafuegos de núcleos Linux. Y también trabajan sobre netfilter.

Probando

Gufw3

Para verificar que de verdad está funcionando podemos hacer una sencilla prueba. Vamos a la sección de reglas y podemos crear una regla que nos impida conectar con nuestro router. Habitualmente el router está en 192.168.0.1, depende del fabricante. En mi caso, creo una regla que bloquee la conexión saliente hacia el router al puerto 80 y no me deja conectarme a:

http://192.168.0.1/

Se me queda el navegador pensando y no sale nunca la página del router. Ya está comprobado de que funciona, borro la regla y vuelvo a la normalidad.

Si en una regla le activas que guarde registro luego puedes ir al directorio /var/log en donde tendrás los logs. Como se trata de una regla que se ejecuta al nivel de kernel se guarda en el fichero /var/log/kern.log. Esto también se puede configurar. Para ello hay que entrar a configurar ficheros de registro para iptables.

Es muy sencillo de configurar, a nada que vayamos probando haciendo click en todos los botones seguro que llegaremos a la configuración que queremos. Ya sea para casa, trabajo, o redes públicas. Como ya decía en el post sobre el antivirus ClamAV y la interfaz ClamTK, todavía más seguro puedes estar en Linux si activas el cortafuegos 😉

Un saludo.


Syncthing, sincronización de archivos en tu propia nube

2015-05-15 - Categorías: General

Hace poco escribí, desde el punto de vista de la programación, sobre el proyecto #Syncthing. Viendo y viendo alternativas a #Dropbox, #Google #Drive, #One #Drive, etc. Llegué a encontrar #BitSync, #SeaFile, #OwnCloud. Muy interesantes todos, pero en particular me parece especialmente interesante Syncthing por eso estoy escribiéndoles este post.
Vamos a echarle un vistazo..

Se trata de un programa, o exactamente, un proyecto que incluye varios programas. Con los cuales podemos conectar varios ordenadores y sincronizar archivos entre ellos.

Qué es

Técnicamente es un programa cliente-servidor de sincronización de ficheros. Lo novedoso es que te hace independiente de cualquier empresa intermedia y puedes configurarlo de forma que no haya nadie que pueda saber nada de tus archivos. La información puede transmitirse exclusivamente entre tus ordenadores.

El servidor

En la fecha en que les escribo tenemos disponible la versión 0.11.3, que se distribuye independientemente de las interfaces disponibles. Se trata de un servicio para el sistema operativo que proporciona una interfaz web y una API rest para poder conectar desde otros programas y manejarlo.

El servidor de descubrimiento global

Lo único externo a nosotros que de momento están proporcionando los desarrolladores es dicho servidor de descubrimiento.

¿Porqué es necesario? Piensa en si tienes un ordenador en tu casa y otro en el trabajo, ¿cómo se encuentran? Fácilmente, cada uno siempre le dice al servidor de descubrimiento donde está. Así cuando tengan que sincronizar los archivos se conectan directamente el uno al otro.

Dicho servidor de descubrimiento también lo tenemos disponible.

Interfaz

A fecha de hoy he leído que tenemos para Mac, Windows, Linux, FreeBSD y Solaris. Leo que hay un proyecto de interfaz multiplataforma con GTK pero no lo he probado nada más que en Linux, y funciona muy bien. Es el de la foto.

La interfaz te puede poner un bonito icono en la barra de tareas y encargarse de arrancar o de instalar el servidor. 

Terminando

Para resumir, de todas las alternativas que he probado, para estar tranquilo de que las copias de los archivos se están haciendo correctamente, me quedo con Syncthing 🙂

Página oficial: https://syncthing.net/
APT para Ubuntu/Debian: http://apt.syncthing.net/
Instalador para Windows: https://github.com/kozec/syncthing-gui/releases/latest

Se me olvidaba comentar que es un proyecto Open Source, por eso que da gusto compartirlo y si quieres echar una mano siempre puedes curiosear un poco más.

Saludos.


ClamAV con ClamTk en Ubuntu, aún más seguro si cabe

2015-02-22 - Categorías: GNU/Linux

En Linux, dicen que no hay virus. Pero ¿es así realmente? Podemos buscar información que nos dice que en todos los sistemas operativos hay virus. Incluso en ordenadores Mac hemos tenido los sonados casos con miles de ordenadores infectados. En Linux de igual manera que podemos tener virus. Pero hay una gran diferencia, es muy raro que lleguemos a instalarnos uno.

Otro asunto es que podemos llegar a tener almacenados virus entre nuestros ficheros ofimáticos. Nunca nos van a afectar tal vez porque nuestro sistema operativo no es compatible con dicho virus. Pero podemos ser portadores transmitiendo dicho virus a otros ordenadores. Éste es el caso de virus almacenados en servidores de email, web.. o simplemente porque tengamos algún fichero ofimático de Windows que contenga una macro con virus.

Para ésto tenemos dentro del Centro de Software de Ubuntu el ClamTk que simplemente es una interfaz visual del antivirus en línea de comandos ClamAV. Podemos programar análisis con nuestro programador de tareas en estaciones de trabajo o servidores fácilmente con la línea de comandos. También podemos simplemente analizar nuestro sistema con ClamTk como venimos haciendo con otros tantos antivirus.

Web oficial de ClamAV: http://www.clamav.net/
Web oficial de ClamTk: http://clamtk.sourceforge.net/

También hay versión para otros sistemas operativos como Windows o Mac:
http://www.clamav.net/download.html#otherversions

Un saludo 🙂

© 2020 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.