Desde Linux http://blog.desdelinux.net Desde Linux: Usemos Linux para ser libres Thu, 21 May 2015 12:36:13 +0000 es-ES hourly 1 http://wordpress.org/?v=4.2.2 Gedit evoluciona a IDE http://blog.desdelinux.net/gedit-evoluciona-a-ide/ http://blog.desdelinux.net/gedit-evoluciona-a-ide/#comments Tue, 19 May 2015 16:38:44 +0000 http://blog.desdelinux.net/?p=61575 CS50 Curso MOOC de Harvard

Lo que me permitió descubrir esta nueva funcionalidad

Entre las cosas que hago estos días, está un curso MOOC dictado por Harvard, CS50 a través de edX.org, no sé cuantos de uds lo conocen pero se los recomiendo si su deseo es aprender a programar (viene con certificado gratis incluido, y si no te gusta la programación hay una gran cantidad de opciones para escoger), bueno el asunto es que ellos te proveen de una máquina virtual para que puedas trabajar y con todas las herramientas incluidas que ellos ya han preparado para ti, así no tienes que preocuparte por otra cosa sino por aprender.

Sin embargo, yo nunca he sido muy fan de las máquinas virtuales, así que leyendo por aquí y por allá y gracias al hermoso repositorio de AUR ya tengo instalado lo básico. Lo curioso es que en el curso se utiliza el compilador clang en vez de gcc, al principio esto me extrañó, de hecho antes no sabía que existía este compilador (ya luego me enteré que hay guerra santa entre los dos y Stallman le da un infarto cada vez que se menciona clang xD). Al principio decidí ignorar el nuevo compilador pues soy de esos que piensa ¿para que tener dos herramientas que hacen el mismo trabajo?

Gedit y Clang hacen equipo

Sin embargo al final decidí darle una oportunidad al compilador básicamente por dos razones, estaba teniendo problemas a la hora de compilar (específicamente con la etiqueta -Qunused-arguments que al parecer no existe en gcc) y segundo porque en una de las actualizaciones rutinarias noté que el Gedit me lanzó un tip de que para activar el “code assistance” (asistencia de código) era necesario instalar clang. En vista de esto decidí probar de que se trataba y ejecuté (solo válido para Arch y/o Manjaro)

sudo pacman -S clang

La magia vino al instante =). Si colocas el puntero sobre las advertencias te indica la pista de lo que está mal, lástima que en la captura de pantalla desaparezca.

Captura de pantalla

Captura de pantalla

Las siguientes líneas pueden herir sentimientos

Por supuesto hay que resaltar que la magia no solo viene de gedit, de hecho esto no fuera posible sin clang, utilizando las APIs correctas los demás editores también podrían hacer uso de la asistencia de código. Sé que a los mas puristas esto les debe dar dolor de cabeza, pero hay que reconocer el buen trabajo de los desarrolladores de clang, y la conclusión inmediata a la que puedo llegar es,

  • La competencia siempre permite la evolución con beneficio a los usuarios.
  • No todo lo que no sea estrictamente GPL es malo
  • Quienes predican libertad de pensamiento deberían justamente hacer evolucionar los programas en base a las necesidades de los usuarios, porque los pensamientos de todos valen, no solo el de los desarrolladores. (Tu programa puede tener todo lo que quieras, pero si a los usuarios no les gusta fracasas, punto)

Tengo entendido que esto es algo que a gritos se venía pidiendo que se incluyera en gcc, pero como las mayores demandas al parecer venían de grandes empresas privadas pues se ignoraron. No creo que eso sea el mejor ejemplo de libertad de pensamiento y de lo que el open source predica y representa.

Para reflexionar

Soy un gran admirador del Open Source y Linux en general, lo utilizo a diario, pero últimamente me he comenzado a cuestionar ciertas cosas que pienso que deberíamos mejorar como comunidad. Creo que hemos perdido un poco el rumbo del verdadero significado de lo que significa libertad de pensamiento y lo que era el open source en un principio, ahora nos hemos convertido en caníbales que entre nosotros mismos nos vivimos odiando a nosotros mismos y a los demás, odio a los usuarios de Windows, odio a los usuarios de Apple, si uso Ubuntu odio a los debianitas y viceversa, si uso Arch odio a los de Gentoo y viceversa, y lo peor de todo es que a los nuevos potenciales usuarios los tratamos como coleto si es que se les ocurre hacer una pregunta “trivial” para nosotros que por supuesto para ellos no lo es.

Sé que no todos son así, pero una buena parte de la comunidad linuxera seguro se siente identificada, y estoy convencido que como sigamos así, jamás podremos conquistar el escritorio. Tenemos que dejar el odio entre nosotros a un lado, tenemos que tratar mejor a los nuevos potenciales usuarios sin importar si hacen preguntas “tontas” o “repetidas” y no menos importante, los desarrolladores deben dejar de hacer guerra a las empresas privadas y centrarse en atender las necesidades, la fragmentación es una consecuencia directa de esto pienso yo. Seguro estoy que si se hubieran atendido las necesidades de los demás, sin importar de donde provinieran hoy la historia habría sido “gedit y gcc hacen equipo para formar un IDE” o “gcc permite a los pequeños editores convertirse en verdaderos IDEs”

]]>
http://blog.desdelinux.net/gedit-evoluciona-a-ide/feed/ 37
Añadir Papelera de Reciclaje al Terminal http://blog.desdelinux.net/papelera-reciclaje-terminal/ http://blog.desdelinux.net/papelera-reciclaje-terminal/#comments Tue, 19 May 2015 12:42:56 +0000 http://blog.desdelinux.net/?p=61533 rm

El uso del comando rm acarrea ciertos peligros, puesto que, si cometemos un error no hay forma de recuperar lo que hemos borrado. Sin embargo, a través del uso de alias y la ayuda de cron podemos hacer un par de mejoras y evitarnos un dolor de cabeza.

Excelente! ¿Qué debemos hacer?

Bash soporta alias de órdenes, usados para crear abreviaciones o nombres alternativos para ordenes actuales. Podemos usar la orden alias para ver los que están definidos.

Para definir un nuevo alias se utiliza la siguiente sintaxis:

alias comando personalizado='comando real'

por ejemplo:

$ alias lista='ls -l'
$ lista
total 3
drwxr-xr-x 2 usuario grupo 4096 may 15 13:12 Documentos
drwxr-xr-x 2 usuario grupo 4096 may 12 11:05 Descargas
drwxr-xr-x 2 usuario grupo 4096 may 15 05:47 Escritorio
Al ejecutar una orden, la shell busca primero en los alias y luego en la variable de entorno PATH

Lo primero que debemos hacer es crear un directorio que nos sirva para almacenar los archivos que eliminaremos

mkdir $HOME/Papelera

El siguiente paso es crear un alias para la orden rm que mueva lo que deseamos eliminar al directorio Papelera

alias rm='mv -t $HOME/Papelera'

La opción -t en el comando anterior hace que el resto de los argumento se muevan al directorio especificado
Si deseamos que el alias esté disponible para futuras sesiones bash debemos añadirlo en el $HOME/.bashrc

Ahora, cada vez que ejecutamos rm, en vez de eliminar, enviaremos el archivo al directorio Papelera

Eliminando la papelera de forma automática

Muchas veces, para liberar espacio en disco, eliminamos archivos. Es necesario hacer que cada cierto tiempo se borre por completo el contenido de la papelera para no llenar nuestro disco duro. Para tal fin usaremos cron

Cron es un demonio utilizado para ejecutar tareas de forma automática en determinado periodo de tiempo. Su sintaxis es la siguiente:

Chuleta_Cron

Existe /etc/crontab (general del sistema, incluye un apartado para añadir el usuario que ejecuta) y /var/spool/cron/crontabs/usuario (uno por cada usuario)

El comando crontab -e permite añadir (mediante un editor de textos como nano o vi) una entrada nueva. Nuestra línea quedará de la siguiente forma:

# h m dom mon dow comando

00 12 * * 5 /bin/rm $HOME/Papelera/*

La linea de cron anterior eliminará la papelera todos los viernes a las 12 del medio día

Se utiliza la ruta absoluta de rm puesto que este ahora es un alias

Espero haber abarcado todo.

Saludos :D

]]>
http://blog.desdelinux.net/papelera-reciclaje-terminal/feed/ 20
MyTourBook, tremendo gestor de entrenamientos http://blog.desdelinux.net/mytourbook-tremendo-programa-para-visualizar-recorridos-de-entrenamiento-deportivo/ http://blog.desdelinux.net/mytourbook-tremendo-programa-para-visualizar-recorridos-de-entrenamiento-deportivo/#comments Tue, 19 May 2015 12:22:52 +0000 http://blog.desdelinux.net/?p=61550 ¡Hola a todos! Por falta de tiempo hace mucho que no escribo, pero me pareció oportuno volver para compartir con Uds. algo que para mí es un gran hallazgo. Se trata de MyTourBook, un software libre que permite importar, extraer, editar, visualizar y exportar recorridos grabados con un dispositivo GPS, ya sea el de tu celular, dispositivo para correr o andar en bici, GPS tradicional, etc. El objetivo central de este programa es administrar tus entrenamientos deportivos. También se puede utilizar para editar archivos generados por el GPS de tu auto pero, como dije, está más orientado a poder realizar un seguimiento de tus entrenamientos, de forma visual y resumiendo los resultados en diferentes gráficos. Al igual que gran parte de la competencia, el programa es desarrollado en Java y es multi-plataforma (incluye soporte para GNU/Linux y Windows, no así para Mac OS X).

Contemplen a la criatura en todo su esplendor:

mytourbook

Por cierto, esta es una captura que aparece en la página oficial del programa. Lamentablemente no encontré ninguna que muestre al programa corriendo en GNU/Linux. De aquí en más, todas las capturas son mías, usando Ubuntu 15.04.

Antes de comenzar

Antes de pasar a hablar sobre esta pequeña gema, déjenme contarles cómo ocurrió su hallazgo. Hace ya unos meses que estoy completamente abocado en la noble tarea de pasarme enteramente (o lo más posible) a alternativas libres en mi viejo celular Samsung Galaxy S (más conocido como i9000 o galaxysmtd). Algo así como lo que hice al pasar de Windows a Linux en su momento. Yo creo que llega un punto en el que hay que tratar de dar el salto al vacío y pasarse enteramente, abandonando el uso de soluciones intermedias. Al menos, eso es lo que quería intentar. Esto no sólo por cuestiones filosóficas o éticas, sino también por razones prácticas. Mi pobre teléfono cada vez iba más lento con cada actualización de Cyanogenmod. Traté de borrar aplicaciones, toqueteé el teléfono con cuanta aplicación me crucé, hice un overclock (que el CPU/GPU vayan más rápido de lo que vienen configurados de fábrica). Nada funcionó e incluso creí que Android 4.4 tal vez era demasiado para mi humilde Galaxy S. En fin, probé de todo. Después de varios intentos, decidí re-instalar Cyanogenmod desde cero y probar F-Droid (en vez de Google Play) como mercado de aplicaciones.

No les voy a mentir, la transición no ha sido fácil y tiene sus pros y sus contras. En el futuro tengo pensado escribir un post sobre este tema. Por el momento, puedo adelantarles que entre las ventajas, sin lugar a dudas, cabe mencionar el ENORME salto de velocidad que ha pegado mi teléfono. Es increíble la cantidad de recursos que chupaban todas las aplicaciones de Google. Ahora que no las uso más me doy cuenta de ello. Sí claro, me esperaba un pequeño “boost”, pero nunca imagine que fuera tanto. En fin, la cuestión es que una de las aplicaciones que me costó mucho reemplazar por una alternativa libre fue Adidas Micoach. Esta aplicación es equivalente a Endomondo, Runkeeper, etc. Básicamente la usaba para registrar con el teléfono mis entrenamientos semanales por el parque. Finalmente encontré dos aplicaciones que pueden ser buenos reemplazos y que todavía hoy sigo utilizando: MyTracks y RunnerUp. La primera fue desarrollada en su momento por Google y aunque el código fuente está todavía disponible, Google ha decretado que lo quitará en cualquier momento. RunnerUp, en cambio, goza de buena salud pero todavía no fue agregado a los repositorios de F-Droid, así que hay que instalar el paquete APK a mano.

Si bien ambas aplicaciones permiten sincronizar los datos registrados con diferentes servicios online (Google Fit, etc.), al ser éstos generalmente privativos, decidí que era mejor ir por una sincronización manual. Es decir, exportar los datos a un archivo y después analizarlos desde mi computadora, sin pasar por ningún servicio en la nube. Fue ahí cuando me enfrenté al gran problema de encontrar un programa que estuviera a la altura de las circunstancias, que fuera software libre y que funcionara bajo GNU/Linux. Si bien encontré algunas alternativas relativamente decentes -como Turtle Sport o Pytrainer– MyTourBook es infinitamente superior. Déjenme mostrarles por qué…

MyTourBook

No les voy a mentir, MyTourBook es un programa complejo, con el cual se pueden hacer un montón de cosas, y es fácil perderse entre tantas opciones y botones. Aun así, es relativamente fácil de usar y posee una interfaz bastante intuitiva en comparación con otros programas similares.

Lo primero que posiblemente te vas a ver tentado a hacer es importar un archivo GPX o TCX, creado por MyTracks, RunnerUp o prácticamente cualquier programa o servicio de entrenamiento, ya que estos formatos son los más populares para guardar este tipo de datos.

importar

Esto es lo que se ve una vez que importamos los datos:

tour

Como pueden ver, no sólo importa el archivo a la perfección sino que también señala los diferentes waypoints (los números) y marca las diferencias de ritmo (pace) con distintas tonalidades, conforme el gradiente que aparece a la izquierda. De esta forma es posible ver de una forma muy intuitiva dónde corrimos más rápido o más lento. Esta misma lógica se puede aplicar al ritmo cardíaco, la altura o la velocidad utilizando los triangulitos de diferentes colores que aparecen en la barra superior. MyTourBook utiliza por defecto OpenStreetMap (un proyecto colaborativo para crear mapas libres y editables), aunque pueden seleccionarse otros proveedores de mapas.

En la pestaña Tour Editor que se ve en la parte superior es posible editar algunos datos generales del recorrido: título, descripción, punto de partida y de llegada, fecha, distancia, pulsaciones totales, calorías quemadas, datos climáticos, etc.

tour editor

Finalmente, debajo del mapa que vimos en la primera captura aparece un gráfico dinámico que permite ver y entrecruzar los datos del recorrido.

pace

Como pueden apreciar, mi ritmo promedio ronda los 6 minutos por kilómetro, lo cual no habla muy bien de mi estado físico. Por deducción, tardaría 60 minutos (1 hora) en correr los 10 K. La lógica de este gráfico es muy similar a la del mapa: con los triangulitos de la parte superior podemos ver otros datos, como el ritmo cardíaco, la velocidad, etc. No obstante, en este caso es posible entrecruzar los datos a gusto y piacere, por ejemplo así:

Entrecruzamiento datos recorrido

En este caso, la línea roja es mi ritmo cardíaco, la verde la altitud y la violeta el ritmo (pace).

Este sistema es realmente excelente para analizar en detalle cada actividad física y encontrar posibles puntos que mejorar. Por ejemplo, yo tengo un ritmo tal vez demasiado uniforme. Las pequeñas lomadas violetas que ven posiblemente tengan que ver con algún parón cuando intentaba cruzar una calle o algo así. Quitando eso, mi ritmo es muy estático, lo cual no es malo para algunos entrenamientos (por ejemplo, para recuperarse de una actividad muy cansadora reciente), pero no para todas, ya que está demostrado que correr parejo no quema tantas calorías como los pequeños arranques de fuerza sucesivos e intercalados con momentos de descanso.

Pero, MyTourBook permite mucho más que analizar un recorrido en forma aislada. Como su nombre bien lo indica, permite llevar un registro de todos nuestros recorridos en un único lugar. Algo así como un diario o libro donde almacenar todos ellos. A continuación pueden ver mi “tour book”, con algunos de los recorridos que subí al programa.

tour book

También se puede mostrar la misma información en forma de calendario:

calendario

Como ven, MyTourBook muestra que la semana pasada salí a correr dos veces. A la derecha, señala la cantidad de kilómetros recorridos, el tiempo, el ritmo y otros datos, agregados por semana.

Por último, es posible ver estadísticas generales de nuestros recorridos y filtrar los datos por día, semana, mes o año, lo cual permite llevar un control bastante preciso de nuestro entrenamiento:

estadísticas

En términos generales, hemos cubierto las funcionalidades más importantes del programa. No obstante, no crean que MyTourBook no es más que lo que se muestra en este artículo. Créanme, con él se pueden hacer muchas otras cosas. Por ejemplo, es posible exportar todos los recorridos a GPX, TCX o CSV; importar datos desde el puerto serial; comparar recorridos entre sí; hacer un test de Conconi; incorporar fotos de tus recorridos; o ajustar la altitud de tu recorrido usando los datos provistos por la NASA. No, no es broma… y esto resultó ser una funcionalidad súper útil porque mi teléfono calcula la altitud en base a los datos del GPS, que de por sí no son 100% confiables. Por otra parte, MyTracks tiene algunos problemas para grabar bien la altitud. Gracias a MyTourBook esto ya no es más un problema.

En fin, sería demasiado engorroso contarles todo lo que se puede hacer con esta maravilla de programa. Si son fanáticos del deporte, les gusta salir a correr o andar en bici y utilizan algún dispositivo para rastrear su entrenamiento no duden en probar MyTourBook.

Instalación

1. MyTourBook requiere Java 7 o superior.

En Debian/Ubuntu y derivados eso se consigue a través del siguiente comando:

sudo apt-get install openjdk-7-jre

2. Luego, hay que descargar el archivo mytourbook_x.x.x.linux.gtk.x86.zip y descomprimirlo.

3. El archivo mytourbook tiene que tener permisos de ejecución. En caso de que no los tenga podemos asignárselos con el comando:

sudo chmod +x mytourbook

Nuestros amigos usuarios de Arch Linux y derivados tienen la vida más fácil. MyTourBook se encuentra disponible en los repositorios AUR.

Para ejecutar MyTourBook en idioma español, basta con utilizar los parámetros “nl -es” de la siguiente manera:

./mytourbook -nl es

De lo contrario, MyTourBook se ejecutará utilizando el idioma por defecto del sistema operativo.

Eso es todo, amigos. Espero que lo disfruten. No se olviden de dejar sus comentarios una vez que lo hayan probado.

]]>
http://blog.desdelinux.net/mytourbook-tremendo-programa-para-visualizar-recorridos-de-entrenamiento-deportivo/feed/ 11
Instalación de Wallabag en un VPS http://blog.desdelinux.net/instalacion-de-wallabag-en-un-vps/ http://blog.desdelinux.net/instalacion-de-wallabag-en-un-vps/#comments Fri, 15 May 2015 22:02:45 +0000 http://blog.desdelinux.net/?p=61489 Pocket es un popular servicio que nos permite guardar páginas webs para leerlas posteriormente con calma. Lo que hace que sea un servicio genial es que podemos sincronizar lo que guardemos desde el navegador con nuestro teléfono y así poder llevar la información a cualquier lugar. Pero Pocket tiene un problema, es privativo.

Leyendo en MuyLinux me enteré de que existe una alternativa de código abierto llamado Wallabag, el cual podemos usar de dos formas:

  1. Nos creamos una cuenta gratuita en Framabag
  2. O lo instalamos en nuestro propio servidor.

Y es justamente lo que pretendo mostrar en este artículo, como instalar de forma simple Wallabag en nuestro VPS.

Para este ejemplo estamos suponiendo que ya tenemos instalado un LAMP (Linux/Apache/MySQL/PHP), en mi caso los pasos de instalación los realicé sobre Debian, por lo que solo pasaremos a la parte importante

Creando la base de datos

Lo primero que debemos hacer es crear una base de datos en MySQL o Postgres para Wallabag. En mi caso lo haremos con MySQL. Podemos usar PHPMyAdmin para ello, pero en este caso lo haremos mediante el terminal, así que ejecutamos lo siguiente:

$ mysql -u root -p

Ponemos nuestra contraseña de MySQL y posteriormente creamos la base de datos llamada wallabag, aunque usted puede escoger el nombre que quiera:

mysql> create database wallabag;
Query OK, 1 row affected (0.03 sec)

Ya creada la base de datos establecemos los privilegios para el usuario wallabag.

mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabag'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.13 sec)

Como es lógico donde dice password ponemos la contraseña para la base de datos. Por último ejecutamos:

mysql> FLUSH PRIVILEGES ;
Query OK, 0 rows affected (0.05 sec)

Y eso es todo, ya podemos salir de MySQL.

Instalando Wallabag

Una vez que salimos de MySQL escribimos en el terminal:

$ wget -c http://wllbg.org/latest
$ mv latest wallabag.zip
$ unzip wallabag.zip
$ mv wallabag-1.9 wallabag
$ sudo mv wallabag /var/www/wallabag
$ cd /var/www/
$ sudo chown -R www-data:www-data wallabag/
$ sudo chmod -R 755 wallabag/

Creo que se entiende lo que acabamos de hacer. Primero descargamos el fichero, luego lo renombramos, extraemos el contenido, le cambiamos el nombre a la carpeta que quedó como resultado de la extracción, y luego con privilegios administrativos la pasamos al directorio donde se encuentran alojados nuestros sitios web. Por último establecemos el propietario y los permisos necesarios sobre la carpeta.

Ahora tenemos que crear un VHost en Apache, así que ejecutamos:

touch /etc/apache2/sites-availables/wallabag.midominio.ltd

Y le ponemos adentro:

<VirtualHost *:80>
        ServerAdmin elav@midominio.ltd
        ServerName wallabag.midominio.ltd
        DocumentRoot /var/www/wallabag/
        ErrorLog "/var/log/apache2/wallabag_error.log"
        CustomLog "/var/log/apache2/wallabag_access.log" common
        <Directory /var/www/wallabag/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

Reiniciamos Apache:

$ sudo /etc/init.d/apache2 restart

Abrimos un navegador y accedemos a wallabag.midominio.ltd y nos debe salir algo como esto:

Wallabag

Tenemos que percatarnos de dos cosas antes de proseguir:

  1. Ver las dependencias necesarias para la instalación de Wallabag pinchando en el botón que dice: Some warnings, but the minimum is here !
  2. Tenemos que instalar Twig. Solo tenemos que oprimir el botón que dice: Download Vendor.zip y se instalará de forma automática.

Cuando hagamos lo del paso dos nos saldrá esto:

Wallabag

Fíjense que ahora nos salió la opción de escoger que base de datos vamos a utilizar, que como dije anteriormente será MySQL. Así que procedemos a llenar los campos con los datos de nuestra DB.

Wallabag

Ahora seleccionamos el usuario, la contraseña y el correo (opción alternativa) para Administrar Wallabag:

Wallabag

Pinchamos en Install Wallabag y si todo sale bien nos sale este mensaje:

Wallabag

Pinchamos en: Clic here to access the login form y nos pedirá nuestro usuario y contraseña y cuando accedamos, veremos esto:

Wallabag

Listo, ya tenemos Wallabag instalado.

¿Qué haces después de la instalación?

Bueno, lo primero es ir a la Configuración y seleccionar el idioma que queramos (por defecto estará en Inglés). También podemos seleccionar el tema por defecto para Wallabag, e incluso, importar nuestros artículos guardados en Pocket, Readability, Instapaper en formato json o html. También podemos exportar nuestros artículos a ePub3, Mobi y PDF.

Podemos instalar Wallabag como extensión en Mozilla Firefox y Google Chrome en los siguientes enlaces:

Wallabag_snapshot1
Y para nuestros teléfonos:

Y esto es todo, ya podemos mandar a volar a Pocket.

]]>
http://blog.desdelinux.net/instalacion-de-wallabag-en-un-vps/feed/ 9
Ya está disponible el canal release de Iceweasel para Debian Jessie http://blog.desdelinux.net/disponible-canal-release-iceweasel-debian-jessie/ http://blog.desdelinux.net/disponible-canal-release-iceweasel-debian-jessie/#comments Thu, 14 May 2015 22:58:06 +0000 http://blog.desdelinux.net/?p=61476 Ante todo, saludos a todos después de tanta ausencia a la hora de redactar en este blog. Como saben, hay algunas personas que usamos Debian y en muchas ocasiones nos hemos tenido que conformar con el navegador Iceweasel, el cual ha nacido como consecuencia de conflictos legales que ha tenido el equipo de Debian con la Fundación Mozilla con respecto a las marcas registradas y la incompatibilidad de políticas.

Normalmente, optamos por usar el repo de Debian Mozilla para actualizar la rama ESR que viene por defecto en los repos principales de Debian a la rama release o instalamos Firefox a mano, o valiéndonos de Launchpad u otro método automatizado para tener así a la mano Firefox y Thunderbird. O si es un caso extremo, cambiamos a la rama experimental en caso de que usemos la rama testing de Debian, comprometiendo seriamente la estabilidad de la distro y de la relación que tienen los paquetes (en caso de que no tengamos cuidado a la hora de gestionar repositorios de ramas distintas de Debian, por supuesto).

No obstante, después que Debian haya lanzado la edición 8.0 (con el nombre clave “Jessie”), el repositorio de Debian Mozilla ha liberado recientemente el acceso de su repositorio para la versión estable vigente de Iceweasel, la cual cuenta con la versión 37.0.2, por lo que no será necesario agregar la rama experimental a los que usan Debian Jessie ni tampoco reemplazarlo por Firefox (si ya se acostumbraron a trabajar con Iceweasel, claro).

Procedimiento de instalación

Este tutorial asume que la instalación de Debian no ha tenido configurada la función de SUDO. No obstante, en caso de tenerlo configurado, anteponga la palabra SUDO en el caso de editar la lista de repositorios y efectuar la instalación de paquetes.

Para actualizar Iceweasel a la rama release, es primordial tener instalado el paquete pkg-mozilla-archive-keyring en conjunto con debian-keyring, las cuales contienen las firmas del repositorio para así poder acceder.

apt-get install pkg-mozilla-archive-keyring debian-keyring

Ahora, lo que sigue es comprobar que las firmas del repositorio estén efectivamente instaladas.

gpg --check-sigs --fingerprint --keyring /etc/apt/trusted.gpg.d/pkg-mozilla-archive-keyring.gpg --keyring /usr/share/keyrings/debian-keyring.gpg pkg-mozilla-maintainers

Después, añadimos el siguiente repositorio con Nano u otro editor de texto (en mi caso, lo he editado con Nano).

deb http://mozilla.debian.net/ jessie-backports iceweasel-release

Actualizamos los repositorios como corresponde y actualizamos el navegador con esta línea:

apt-get update && apt-get install -t jessie-backports iceweasel iceweasel-l10n-es-ar

NOTA: el paquete iceweasel-l10n-es-ar es el paquete de Icewaeasel localizado para los hispanohablantes en Argentina. Para Chile, es iceweasel-l10n-es-cl; para España, es iceweasel-l10n-es-es; y para México, es iceweasel-l10n-es-mx.

Y éso sería todo. Espero que hayan disfrutado del tutorial.

Como nota adicional, debo agregar que Iceweasel tiene desactivado el códec OpenH.264, por lo que YouTube no activará por defecto el navegador HTML5 de forma automática. No obstante, al activar manualmente dicha función, usa el códec H.264 basándose en el códec GStreamer, por lo que es posible que les pida como sugerencia dicho paquete.

Hasta la próxima.

]]>
http://blog.desdelinux.net/disponible-canal-release-iceweasel-debian-jessie/feed/ 26
Script que muestra información de nuestro sistema http://blog.desdelinux.net/script-muestra-informacion-del-sistema/ http://blog.desdelinux.net/script-muestra-informacion-del-sistema/#comments Wed, 13 May 2015 12:53:54 +0000 http://blog.desdelinux.net/?p=61467 Cuando se tiene servidores automatizar tareas siempre es útil, nos ahorra tiempo y además, ayuda con la tolerancia a fallos, ya saben… “haz tal cosa en caso de que haya poca ram” … “reinicia tal servicio si falla tal socket” … etc, el detalle es que para automatizar tareas, lo primero es saber el estado actual del servidor.

Hace tiempo les había hablado sobre un script que mostraba estadísticas de consumo de RAM de Apache, esta vez les hablaré sobre un script que muestra esta información:

  • Está o no conectado a internet
  • Sistema Operativo
  • Distro
  • Arquitectura
  • Kernel
  • Hostname
  • IP Interna
  • IP Externa
  • DNS que usa
  • Usuarios loggeados
  • Estadísticas de RAM y SWAP
  • Espacio en HDDs
  • Tiempo que demoró el script en mostrar la información
  • Uptime

Ok me interesa, ¿cómo lo obtengo?

Lo primero es descargarlo, luego darle permisos de ejecución, finalmente lo ejecutamos con el parámetro -I para que se instale en nuestro sistema y sea más fácil ejecutarlo en el futuro. Abran una terminal y pongan los siguientes comandos:

wget http://tecmint.com/wp-content/scripts/tecmint_monitor.sh
chmod +x tecmint_monitor.sh
./tecmint_monitor.sh -I

Nos pedirá el password, lo tecleamos, presionamos Enter y listo, ya podremos ver la información de nuestro sistema al ejecutar:

monitor

Acá les dejo un screenshot:

monitor-script-screenshot

Como pueden ver en los comandos, el autor del script es TecMint.com, las gracias Avishek Kumar por publicarlo.

Bueno nada espero les sea de utilidad ;)

]]>
http://blog.desdelinux.net/script-muestra-informacion-del-sistema/feed/ 24
Pasos para asegurar nuestro VPS http://blog.desdelinux.net/pasos-para-asegurar-nuestro-vps/ http://blog.desdelinux.net/pasos-para-asegurar-nuestro-vps/#comments Fri, 08 May 2015 14:00:52 +0000 http://blog.desdelinux.net/?p=61393 Este tutorial muestra cómo preparar y asegurar un Servidor Privado Virtual (Virtual Private Server, o VPS) con Debian GNU/Linux. Antes de comenzar, se asumen ciertas cosas:

  1. Se posee un nivel intermedio de familiaridad con GNU/Linux.
  2. Se posee un VPS para uso personal al cual tenemos acceso via SSH.
  3. El VPS tiene la ipv4 externa dedicada 250.250.250.155 y nuestro proveedor es propietario del bloque 250.250.0.0/16. (1)
  4. En nuestro VPS solamente tendremos habilitados para el acceso desde el exterior los servicios http, https y ssh.
  5. No se habilitará DNS externo puesto que usualmente se hace en el panel de nuestro proveedor. (2)
  6. Se trabajará como superusuario.

Instalación

Como primer paso, actualicemos el servidor e instalemos algunos paquetes que necesitaremos:

# aptitude update & aptitude safe-upgrade
# aptitude -RvW install dropbear gesftpserver sslh iptables-persistent ulogd fail2ban nginx-light apache2-utils dnsutils telnet ghostscript poppler-utils zip unzip unrar-free p7zip-full less multitail tee mc

Configuración

Ahora vamos a crear un usuario de trabajo. Trabajar como root en un servidor es inseguro, de modo que primeramente crearemos un usuario especial:

adduser operador
usermod -aG sudo operador

El primer comando crea el usuario operador, el segundo lo agrega al grupo sudo, lo cual permitirá ejecutar aplicaciones como superusuario.

Ajustar los permisos para superusuarios

Como para trabajar regularmente utilizaremos el usuario operador anteriormente creado, necesitamos ajustar las opciones de ejecución de comandos como superusuario, para lo cual ejecutamos el siguiente comando:

visudo

Este comando básicamente permite modificar el archivo /etc/sudoers; en el cual deberíamos contener estas líneas:

Defaults env_reset,timestamp_timeout=0
%sudo ALL=(ALL:ALL) ALL

En la primera línea se agrega a los valores predeterminados la opción timestamp_timeout que permite establecer el tiempo de expiración (en minutos) de la contraseña cuando se ejecuta el comando sudo. El valor predeterminado es 5, pero en ocasiones esto es inseguro, por dos motivos:

  1. Si en un descuido abandonamos nuestro equipo con la sesión abierta antes que la contraseña expire, alguien podría ejecutar un comando como superusuario sin restricción alguna.
  2. Si por desconocimiento ejecutamos una aplicación o script que contiene código malicioso antes de que la contraseña expire, la aplicación podría tener acceso a nuestro sistema como superusuario, sin nuestro consentimiento explícito.

De manera que para evitar riesgos, hemos establecido el valor en cero, es decir, cada vez que se ejecute el comando sudo habrá que introducir la contraseña. Si se establece un valor negativo como -1 el efecto es que la contraseña no expire nunca, lo cual produciría el resultado opuesto al que deseamos.

En la segunda línea se aclara que el grupo sudo puede ejecutar cualquier comando en cualquier equipo, que es lo habitual, aunque puede ajustarse. (3) Hay quienes por comodidad ponen la línea de la siguiente manera para evitar tener que teclear la contraseña:

%sudo ALL=(ALL:ALL) NOPASSWD:ALL

No obstante, como explicamos antes esto es riesgoso, y por ello no es recomendable.

Deshabilitar reinicio

Por una cuestión de seguridad, también deshabilitaremos el reinicio utilizando la combinación de teclas Ctrl+Alt+Del, para lo cual debemos agregar esta línea en el archivo /etc/inittab:

ca:12345:ctrlaltdel:/bin/echo "Ctrl+Alt+Del se ha deshabilitado."

Reemplazar OpenSSH con DropBear

La mayoría de los VPS viene con OpenSSH instalado, lo cual sin dudas es muy útil, pero a menos que necesitemos explotar toda la funcionalidad de OpenSSH, hay alternativas más livianas para un VPS, como Dropbear, que suele ser suficiente para el uso habitual. No obstante, un inconveniente de esta aplicación es que no viene con un servidor SFTP integrado, y es por esto que al principio instalamos el paquete gesftpserver.

Para configurar Dropbear, modificaremos el archivo /etc/default/dropbear para que contenga estas dos líneas:

NO_START=0
DROPBEAR_EXTRA_ARGS="-w -p 127.0.0.1:22 -I 1200 -m"

La primera línea simplemente habilita el servicio, y la segunda hace varias cosas:

  1. Evita el acceso como root.
  2. Pone a escuchar el servicio en el puerto 22 de la interfaz local (más adelante explicaremos por qué).
  3. Establece el tiempo de espera (20 minutos).

SSLH

El puerto 22 (SSH) es bien conocido y generalmente es uno de los primeros que los hackers intentan vulnerar, de modo que en su lugar utilizaremos el puerto 443 (SSL). Sucede que ese puerto se utiliza para la navegación segura por HTTPS.

Por esto utilizaremos el paquete sslh que no es más que un multiplexador que analiza los paquetes que llegan al puerto 443, y los enruta internamente a un servicio u otro en dependencia de si el tipo de tráfico es SSH o SSL.

SSLH no puede escuchar en una interfaz donde ya esté escuchando otro servicio, y es por esto que anteriormente pusimos a escuchar Dropbear en la interfaz local.

Ahora lo que necesitamos hacer es indicar a sslh la interfaz y el puerto por el cual debe escuchar y hacia dónde redirigir los paquetes en dependencia del tipo de servicio, y para esto modificaremos el archivo de configuración /etc/default/sslh:

DAEMON=/usr/sbin/sslh
DAEMON_OPTS="--user sslh --listen 250.250.250.155:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"
RUN=yes

Finalmente, reiniciamos los servicios:

service ssh stop && service dropbear start && service sslh restart

Tras el comando anterior probablemente se interrumpa nuestra sesión segura, en cuyo caso basta con volver a iniciar sesión, pero esta vez con el usuario de trabajo y usando el puerto 443. Si la sesión no se interrumpe, de cualquier manera conviene cerrarla e iniciar nuevamente con los valores apropiados.

Si todo funciona correctamente, podemos seguir trabajando como root y si deseamos, desinstalar OpenSSH:

sudo su -
aptitude -r purge openssh-server

Cortafuegos

Lo próximo que realizaremos es separar los registros del cortafuegos hacia el archivo independiente /var/log/firewall.log para facilitar su posterior análisis, que es el motivo por el cual instalamos el paquete ulogd al inicio. Para esto editaremos el archivo /etc/logd.conf para ajustar la sección relevante:

[LOGEMU]
file="/var/log/firewall.log"
sync=1

A continuación, modificaremos el archivo de rotación de registros /etc/logrotate/ulogd para mantener una rotación diaria (con fecha) y guardar las salvas comprimidas en el directorio /var/log/ulog/:

/var/log/ulog/*.log /var/log/firewall.log {
  daily
  dateext
  missingok
  compress
  delaycompress
  sharedscripts
  create 640 root adm
  postrotate
    /etc/init.d/ulogd reload
    mv /var/log/firewall.log-*.gz /var/log/ulog/
  endscript
}

Entonces crearemos las reglas de netfilter ejecutando lo siguiente:

IPT=$(which iptables)
IPEXT=250.250.250.155
IPEXTBLK=250.250.0.0/16
IPBCAST=255.255.255.255
$IPT -F
$IPT -X
$IPT -Z
$IPT -A INPUT -i lo -j ACCEPT
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -A INPUT -m state --state INVALID -j ULOG --ulog-prefix IN_INVALID
$IPT -A INPUT -p igmp -j ULOG --ulog-prefix IN_IGMP
$IPT -A INPUT -m pkttype --pkt-type broadcast -j ULOG --ulog-prefix IN_BCAST
$IPT -A INPUT -m pkttype --pkt-type multicast -j ULOG --ulog-prefix IN_MCAST
$IPT -A FORWARD -j ULOG --ulog-prefix FORWARD
$IPT -N ICMP_IN
$IPT -A INPUT ! -i lo -p icmp -j ICMP_IN
$IPT -A ICMP_IN -p icmp -f -j ULOG --ulog-prefix IN_ICMP_FRAGMENTED
$IPT -A ICMP_IN -p icmp -m icmp -m length ! --length 28:1322 -j ULOG --ulog-prefix IN_ICMP_INVALIDSIZE
$IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-above 4/sec --hashlimit-mode srcip --hashlimit-srcmask 24 --hashlimit-name icmpflood -j ULOG --ulog-prefix IN_ICMP_FLOOD
$IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-upto 64kb/min --hashlimit-mode srcip --hashlimit-srcmask 24 --hashlimit-name icmpattack -j ULOG --ulog-prefix IN_ICMP_FLOOD
$IPT -A ICMP_IN -p icmp -m icmp -m u32 ! --u32 "0x4&0x3fff=0x0" -j ULOG --ulog-prefix IN_ICMP_ATTACK
$IPT -A ICMP_IN -p icmp -m icmp ! --icmp-type echo-request -m state --state NEW -j ULOG --ulog-prefix IN_ICMP_INVALID
$IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-request -j ULOG --ulog-prefix IN_ICMP
$IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-request -m limit --limit 1/sec --limit-burst 4 -j ACCEPT
$IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-reply -m limit --limit 2/sec --limit-burst 4 -j ACCEPT
$IPT -A ICMP_IN -p icmp -m icmp --icmp-type destination-unreachable -m limit --limit 2/sec --limit-burst 4 -j ACCEPT
$IPT -A ICMP_IN -p icmp -m icmp --icmp-type time-exceeded -m limit --limit 2/sec --limit-burst 4 -j ACCEPT
$IPT -A ICMP_IN -p icmp -m icmp --icmp-type parameter-problem -m limit --limit 2/sec --limit-burst 4 -j ACCEPT
$IPT -A ICMP_IN -j RETURN
$IPT -N UDP_IN
$IPT -A INPUT ! -i lo -p udp -j UDP_IN
$IPT -A UDP_IN ! -i lo ! -p udp -f -j ULOG --ulog-prefix IN_UDP_FRAGMENTED
$IPT -A UDP_IN -p udp -m udp --sport 53 -m length ! --length 28:576 -j ULOG --ulog-prefix IN_UDP_DNS_INVALIDSIZE
$IPT -A UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j ULOG --ulog-prefix IN_UDP_DNSREQUEST
$IPT -A UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j REJECT --reject-with icmp-port-unreachable
$IPT -A UDP_IN -p udp -m udp ! --sport 53 ! -s $IPEXTBLK ! -d $IPBCAST -m state --state NEW -j ULOG --ulog-prefix IN_UDP
$IPT -A UDP_IN -p udp -m udp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A UDP_IN -j RETURN
$IPT -N TCP_IN
$IPT -A INPUT ! -i lo -p tcp -j TCP_IN
$IPT -A TCP_IN ! -i lo ! -p tcp -f -j ULOG --ulog-prefix IN_TCP_FRAGMENTED
$IPT -A TCP_IN -p tcp -m tcp --sport 53 -m state --state ESTABLISHED,RELATED -m length ! --length 513:1500 -j ULOG --ulog-prefix IN_TCP_DNS_INVALIDSIZE
$IPT -A TCP_IN -p tcp -m tcp --dport 53 -m state --state NEW -j ULOG --ulog-prefix IN_TCP_DNS
$IPT -A TCP_IN -p tcp -m tcp --dport 53 -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
$IPT -A TCP_IN -p tcp -m tcp -m multiport ! --dports 80,443 -m state --state NEW -j ULOG --ulog-prefix IN_TCP
$IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -m hashlimit --hashlimit-upto 4/seg --hashlimit-burst 16 --hashlimit-mode srcip --hashlimit-name navreq -j ACCEPT
$IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state --state ESTABLISHED -m connlimit ! --connlimit-above 16 -j ACCEPT
$IPT -A TCP_IN -p tcp -m tcp -m multiport ! --dports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A TCP_IN -j RETURN
unset IPEXT
unset IPEXTBLK
unset IPBCAST
unset IPT

Con la configuración anterior, nuestro VPS debería quedar razonablemente asegurado, pero si deseamos podemos asegurarlo un poco más, para lo cual podemos usar algunas reglas más avanzadas.

No todos los VPS permiten la instalación de módulos extra para netfilter, pero uno muy útil es psd, que permite evitar los escaneos de puertos. Lamentablemente este módulo no viene integrado en netfilter por defecto, por lo que es necesario instalar ciertos paquetes y luego construir el módulo:

aptitude -RvW install iptables-dev xtables-addons-source module-assistant
module-assistant --verbose --text-mode auto-install xtables-addons-source

Una vez hecho lo anterior, podemos agregar una regla como esta:

iptables -A INPUT -m psd --psd-weight-threshold 15 --psd-delay-threshold 2000 --psd-lo-port-weight 3 --psd-hi-ports-weight 1 -j ULOG --ulog-prefix IN_PORTSCAN

La regla anterior básicamente significa que crearemos un contador que se incrementará en 3 cada vez que se intente acceder a un puerto inferior al 1024 y en 1 cada vez que se intente acceder a un puerto superior al 1023, y cuando este contador llegue a 15 en un lapso inferior a 20 segundos, se registrarán los paquetes mediante ulog como un intento de portscan. Igual podrían descartarse los paquetes de una vez, pero en este caso pretendemos utilizar fail2ban, que configuraremos más adelante.

Una vez creadas las reglas, debemos tomar ciertas precauciones para hacerlas persistentes, pues en caso contrario las perderemos al reiniciar el servidor. Hay varias maneras de lograr esto; en este tutorial utilizaremos el paquete iptables-persistent que instalamos al principio, que almacena las reglas en /etc/iptables/rules.v4 y /etc/iptables/rules.v6 para ipv6.

iptables-save > /etc/iptables/rules.v4

De hecho, aunque el uso de ipv6 en Cuba aun no está extendido, bien podríamos crear unas reglas básicas:

IPT=$(which ip6tables)
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT ! -i lo -m state --state ESTABLISHED,RELATED -j ACCEPT
unset IPT

Estas reglas también pueden hacerse persistentes:

ip6tables-save > /etc/iptables/rules.v6

Finalmente para mayor seguridad, limpiamos el registro del cortafuegos y reiniciamos los servicios:

echo -n > /var/log/firewall.log
service logrotate restart
service ulogd restart
service iptables-persistent restart

Nginx

Utilizaremos Nginx como servidor web, porque los VPS suelen tener una cantidad de memoria RAM reducida en comparación con un servidor real, de modo que generalmente conviene tener algo más liviano que Apache.

Antes de configurar Nginx, crearemos un certificado (sin contraseña) para su uso por HTTPS:

cd /etc/nginx
openssl genrsa -des3 -out cert.key 4096
cp -v cert.key cert.key.original
openssl req -new -key cert.key -out cert.csr
openssl rsa -in cert.key.original -out cert.key
openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Una vez realizado esto, crearemos un archivo de contraseñas para el usuario “elusuario”:

htpasswd -c .htpasswd elusuario

A continuación, modificaremos el archivo /etc/nginx/sites-available/default para ajustar las preferencias del sitio por defecto. Podría quedar aproximadamente así:

server {
  server_name localhost;

  index index.html index.htm default.html default.htm;
  root /var/www;

  location / {
    # establecer el orden de verificacion y la pagina a cargar, de no encontrarse la URI
    try_files $uri $uri/ /index.html;
  }
}

server {
  listen 127.0.0.1:443;
  server_name localhost;

  index index.html index.htm default.html default.htm;
  root /var/www;

  ssl on;
  ssl_certificate cert.crt;
  ssl_certificate_key cert.key;

  ssl_session_timeout 5m;

  # Habilitar HTTPS solo sobre TLS (mas seguro que SSL)
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  # dar preferencia a los cifrados de fuerza alta [HIGH],
  # mover los cifrados de fuerza media [MEDIUM] al final de la lista,
  # deshabilitar los cifrados de fuerza baja [LOW] (40 y 56 bits)
  # deshabilitar los cifrados con algoritmos de exportacion [EXP]
  # deshabilitar cifrados nulos [eNULL], sin autentificación [aNULL], SSL (versiones 2 y 3) y DSS (solo permite llaves de hasta 1024 bits)
  ssl_ciphers HIGH:+MEDIUM:!LOW:!EXP:!aNULL:!eNULL:!SSLv3:!SSLv2:!DSS;
  # Preferir los metodos de cifrado del servidor (por defecto se usan los del cliente)
  ssl_prefer_server_ciphers on;

  location / {
    # habilitar autentificacion
    auth_basic "Login";
    auth_basic_user_file /etc/nginx/.htpasswd;
    # establecer el orden de verificacion y el código de pagina a cargar, de no encontrarse la URI
    try_files $uri $uri/ =404;
    # permitir la creacion de un indice para los usuarios autentificados
    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;
  }
}

Comprobamos que la configuración esté correcta:

nginx -t

Finalmente, reiniciamos el servicio:

service nginx restart

Fail2Ban

Antes de comenzar a configurar Fail2Ban, para mayor seguridad detenemos el servicio y limpiamos el registro:

fail2ban-client stop
echo -n > /var/log/fail2ban.log

A continuación, creamos el archivo de configuración /etc/fail2ban/jail.local con el siguiente contenido personalizado:

# Custom configuration file /etc/fail2ban/jail.local
#
[DEFAULT]
findtime = 43200 ; 12 hours
bantime = 86400 ; 1 day
maxretry = 3 ; ban will take effect after the 4th attempt

[ssh]
enabled = false

[nginx-auth]
enabled = true
filter = nginx-auth
action = iptables-multiport[name=NoAuthFailures, port="http,https"]
logpath = /var/log/nginx*/*error*.log

[nginx-badbots]
enabled = true
filter = apache-badbots
action = iptables-multiport[name=BadBots, port="http,https"]
logpath = /var/log/nginx*/*access*.log
bantime = 604800 ; 1 week
maxretry = 0

[nginx-login]
enabled = true
filter = nginx-login
action = iptables-multiport[name=NoLoginFailures, port="http,https"]
logpath = /var/log/nginx*/*access*.log
bantime = 1800 ; 30 minutes

[nginx-noscript]
enabled = true
action = iptables-multiport[name=NoScript, port="http,https"]
filter = nginx-noscript
logpath = /var/log/nginx*/*access*.log
maxretry = 0

[nginx-proxy]
enabled = true
action = iptables-multiport[name=NoProxy, port="http,https"]
filter = nginx-proxy
logpath = /var/log/nginx*/*access*.log
bantime = 604800 ; 1 week
maxretry = 0

[firewall]
enabled = true
action = iptables-multiport[name=Firewall]
filter = firewall
logpath = /var/log/firewall.log
maxretry = 0

Una vez realizado esto, creamos en el directorio /etc/fail2ban/filters.d/ los siguientes archivos:

# /etc/fail2ban/filter.d/nginx-auth.conf
# Auth filter
# Blocks IPs that fail to authenticate using basic authentication
#
[Definition]
failregex = no user/password was provided for basic authentication.*client: <HOST>
user .* was not found in.*client: <HOST>
user .* password mismatch.*client: <HOST>
ignoreregex =
# /etc/fail2ban/filter.d/nginx-login.conf
# Login filter
# Blocks IPs that fail to authenticate using web application's log in page
# Scan access log for HTTP 200 + POST /sessions => failed log in
#
[Definition]
failregex = ^<HOST> -.*POST /sessions HTTP/1\.." 200
ignoreregex =
# /etc/fail2ban/filter.d/nginx-noscript.conf
# Noscript filter
# Block IPs trying to execute scripts such as .php, .pl, .exe and other funny scripts.
# Matches e.g.
# 192.168.1.1 - - "GET /something.php
#
[Definition]
failregex = ^<HOST> -.*GET .*(\.php|\.asp|\.exe|\.pl|\.cgi|\scgi)
ignoreregex =
# /etc/fail2ban/filter.d/proxy.conf
# Proxy filter
# Block IPs trying to use server as proxy.
# Matches e.g.
# 192.168.1.1 - - "GET http://www.something.com/
#
[Definition]
failregex = ^<HOST> -.*GET http.*
ignoreregex =
# /etc/fail2ban/filter.d/firewall.conf
# Firewall filter
#
[Definition]
failregex = ^.* IN_(INVALID|PORTSCAN|UDP|TCP|) .* SRC=<HOST> .*$
ignoreregex =

Finalmente, iniciamos el servicio y cargamos la configuración:

fail2ban-service -b
fail2ban-client reload

Comprobación

Como último paso, podemos visualizar los registros con tail -f o multitail –follow-all. De hecho, esta última aplicación ofrece la ventaja de que permite visualizar varios archivos al mismo tiempo y proporciona un resaltado de sintaxis básico.

En caso de que no se configure en el VPS una cuenta de correo, conviente deshabilitar un mensaje de advertencia que sale al iniciar multitail, para lo cual ejecutaremos el siguiente comando:

echo "check_mail:0" > ~/.multitailrc

De hecho bien podríamos hacer un alias (4) para visualizar los registros rápidamente con un comando breve, por ejemplo, “flog”:

alias flog='multitail --follow-all /var/log/firewall.log /var/log/fail2ban.log'

1) Estos son valores ficticios.
2) Habilitar otros servicios es fácil una vez comprendido el funcionamiento.
3) Para más detalles, ejecutar man sudoers.
4) Opcionalmente podría añadirse al archivo ~/.bash_aliases

]]>
http://blog.desdelinux.net/pasos-para-asegurar-nuestro-vps/feed/ 5
Sugerencias de seguridad en sistemas GNU/Linux http://blog.desdelinux.net/sugerencias-de-seguridad-linux/ http://blog.desdelinux.net/sugerencias-de-seguridad-linux/#comments Thu, 07 May 2015 19:58:28 +0000 http://blog.desdelinux.net/?p=61378 Bueno, este post lo venía preparando para mi blog desde hace algún tiempo que me lo sugirieron en DesdeLinux, y por falta de tiempo no había podido, o de ganas. Si soy algo vago :D. Pero ahora les va en strike, como decimos en Cuba…

Esto es una recopilación de normas de seguridad básicas para los administradores de sistemas, en este caso, para los que como yo administramos redes/sistemas basados en GNU/Linux… Pueden haber más y de hecho hay más, esto solo es una muestra de mis andanzas por el mundo linuxero…

0- Mantener actualizados nuestros sistemas con los últimos updates de seguridad.

0.1- Listas de correo de actualizaciones críticas [Slackware Security Advisor, Debian Security Advisor, en mi caso]

1- Cero acceso físico a los servers por parte de personal no autorizado.

1.1- Aplicar password al BIOS de nuestros servers

1.2- No boot por CD/DVD

1.3- Password en el GRUB/Lilo

2- Buena política de passwords, caracteres alfanuméricos y otros.

2.1- Envejecimiento de los passwords[Password Aging] con el comando “chage”, así como número de días entre cambio de password y última fecha de cambio.

2.2- Evitar el uso de password anteriores:

en /etc/pam.d/common-password

password sufficient pam_unix.so use_auth ok md5 shadow remember 10

Así cambias el password y te recuerda los ultimos 10 passwords que tenía el usuario.

3- Buena política de gestión/segmentación de nuestra red[routers, switches, vlans] y firewall, así como reglas de filtrado INPUT, OUTPUT, FORWARD[NAT, SNAT,DNAT]

4- Habilitar el uso de shells[/etc/shells]. Los usuarios que no deban loguearse en el sistema les toca /bin/false o /bin/nologin.

5- Bloquear usuarios cuando el login falla[faillog], así como controlar la cuenta de usuario del sistema.

passwd -l pepe -> bloquear al usuario pepe
passwd -v pepe ->  desbloquear al usuario pepe

6- Habilitar el uso de “sudo”, NUNCA loguearnos como root por ssh, “NUNCA”. De hecho se debe editar la configuración de ssh para lograr este propósito. Use llaves públicas/privadas en sus servers con sudo.

7- Aplicar en nustros sistemas el “Principio del privilegio mínimo“.

8- Chequear nuestros servicios cada cierto tiempo[netstat -lptun], para cada uno de nuestros servers. Agregar herramientas de monitoreo que nos puedan ayudar en esta tarea[Nagios, Cacti, Munin, Monit, Ntop, Zabbix].

9- Instalar IDSs, Snort/AcidBase, Snotby, Barnyard, OSSEC.

10- Nmap es tu amigo, úsalo para verificar tu subred/subredes.

11- Buenas prácticas de seguridad en OpenSSH, Apache2, Nginx, MySQL, PostgreSQL, Postfix, Squid, Samba, LDAP[los que la mayoría usa] y algún que otro servicio que necesites en tu red.

12- Encriptar toda comunicación mientras sea posible en nuestros sistemas, SSL, gnuTLS, StarTTLS, digest, etc… Y si manejas información sensible, encripta tu disco duro!!!

13- Actualizar nuestros servidores de correo con las últimas reglas de seguridad, listas negras y antispam.

14- Logueo de actividad en nuestros sistemas con logwatch y logcheck.

15- Conocimiento y uso de herramientas como top, sar, vmstat, free, entre otras.

sar -> system activity report
vmstat -> procesos, memoria, systema, i/o, actividad del cpu, etc
iostat -> cpu i/o status
mpstat -> multiprocessor status and usage
pmap -> uso de memoria por los procesos
free -> memoria
iptraf ->  tráfico en tiempo real de nuestra red
ethstatus -> console-based ethernet statistics monitor
etherape -> graphical network monitor
ss -> socket status[tcp socket info, udp, raw sockets, DCCP Sockets]
tcpdump -> Análisis detallados de tráfico
vnstat -> network traffic monitor of selected interfaces
mtr -> herramienta de diagnóstico y análisis de sobrecarga en las redes
ethtool -> stats about network cards

Por ahora es todo. Sé que existen mil y una sugerencias de seguridad más en este tipo de entorno, pero, estas son las que más me han chocado de cerca, o que en algún momento he tenido que aplicar/ejercer en algún ambiente de los que he administrado.

Un abrazo y que ojalá les sirva :D

]]>
http://blog.desdelinux.net/sugerencias-de-seguridad-linux/feed/ 24
Creador de Orlas en Gambas http://blog.desdelinux.net/creador-de-orlas/ http://blog.desdelinux.net/creador-de-orlas/#comments Tue, 05 May 2015 18:24:19 +0000 http://blog.desdelinux.net/?p=61209 El creador de orlas Es software libre y gratuito hecho para facilitar a los profesores (o la asociación de padres del colegio) crear una orla como recuerdo del curso de sus alumnos. En principio, esta pensado para hacer orlas de cursos infantiles, donde normalmente la tarea de hacer la orla recae sobre los profesores y no se contrata a una empresa especializada, pero también se pueden usar para otros cursos.

Permite:

Gestionar las fotos y datos (nombres, asignatura, lugar de nacimiento) tanto a los alumnos (1) como a los profesores (2)

orla agregar alumnos y profesores

Podemos añadir la información de los alumnos o profesores mediante un formulario (botones 3) o arrastrando la imagen al cuadro (4)

Tiene una serie de plantillas ya listas para usar, con varios tipos de fondos.

orla elegir plantillas

Pulsando en (1) vamos al formulario de datos de la orla, donde podemos elegir la plantilla (2) y pasar a continuación a la edición (3) para organizar las fotos

También se pueden crear nuevas plantillas usando el programa Inkscape que también es software libre y gratuito. Tiene un editor, donde podéis organizar las fotos de forma automática o manualmente.

Editor para colocar las fotografias

Editor para colocar las fotografías de los profesores y alumnos

Se pueden añadir efectos a las fotografías (1): distintos marcos o recortes a las fotos (tipo cuna, elipse, etc). (2) tanto a los profesores como a los alumnos:

orla aplicando efectos a las fotos de alumnos y profesores

Podemos tener una vista previa de la orla:

orla vista previa

Además al generar la orla (1) el formato de salida es .SVG y .SVG (3) , y con el fichero generado en formato .svg podemos editarlo (para añadir más detalles (2) con Inkscape (https://inkscape.org/es/)

orla generar

 

orla editando

Editando la orla generada desde Inkscape

Para más información:

http://creadordeorlas.blogspot.com.es/

Nota:

Esta realizado en gambas3, para instalarlo lo tenéis explicado para varias distribuciones en este enlace:

http://cursogambas.blogspot.com.es/2012/08/instalacion-desde-repositorios-del.html

]]>
http://blog.desdelinux.net/creador-de-orlas/feed/ 6
Sobre la hipocresía dentro del mundo GNU/Linux http://blog.desdelinux.net/la-hipocresia-del-mundo-gnulinux/ http://blog.desdelinux.net/la-hipocresia-del-mundo-gnulinux/#comments Tue, 05 May 2015 13:58:11 +0000 http://blog.desdelinux.net/?p=61325 Revisando las estadísticas de DesdeLinux, me he percatado de un dato que cuanto menos es curioso: son muy pocos los que nos visitan usando distribuciones 100% libres. Claro, las cifras pueden variar poco más o poco menos teniendo en cuenta que no todos configuran el User Agent del navegador.

Puede que se pregunten ¿A que diablos viene todo esto? pues es muy simple, este es un artículo de opinión personal, con el que pueden estar de acuerdo o no, sin embargo, creo que es necesario y propongo, un debate respetuoso al respecto de lo que comentaré a continuación.

Los que son, y los que dicen ser

Hay muchos tipos de usuarios dentro del mundo GNU/Linux, pero hay dos de ellos en especial a los que van dedicadas estas líneas:

  1. Los que usan Software Libre por convicción (generalmente fieles seguidores de Stallman o su filosofía).
  2. Los que usan Software Libre e intentan venderte la imagen de que son como los primeros que mencioné.

Si, me refiero a esos usuarios que promueven, proclaman, evangelizan al Software Libre, a los que dicen seguir su movimiento, sus ideas, y que cumplen en un 100% con las 4 libertades del Software Libre y sin embargo en el fondo, no son más que puros hipócritas.

Nótese que no quiero ofender, pero es que el adjetivo es ese y aclaro, yo mismo he llegado a ser parte en ocasiones de ese grupo de usuarios. No quiero herir a nadie en especial con este comentario por muy desafortunado que parezca, pero aceptemos la realidad ¿cuantos de nosotros realmente usamos al 100% Software Libre? ¿Cuantos de nosotros no usamos drivers privativos, o aplicaciones que no son OpenSource?

Que levante la mano el que esté libre de pecado. Les hablaré desde mi experiencia, pues como dije, yo he pecado en ocasiones de ser tan hipócrita como muchos otros.

De la Filosofía no solo vive el hombre

Cuando comencé a usar GNU/Linux lo primero que me llamó la atención fue que era gratis, diferente. Eso de no tener que usar números de series, ni drivers para el audio o el video era algo que siempre me llamó la atención y me encantó. En ningún momento comencé a usarlo porque sus aplicaciones era OpenSource y podía consultar el código fuente, y muchísimo menos porque me identificaba con LA FILOSOFÍA DE RICHARD STALLMAN.

Las ventajas de usar software OpenSource y la dichosa filosofía, las fui conociendo después, a medida que me iba introduciendo en el mundo GNU/Linux, pero si les soy sincero, siempre me pareció en exceso extremista eso de que hay que usar Software 100% Libre todo el tiempo, por convicción.

No me malinterpreten, sería lo ideal, sería magnífico que no hubiese necesidad de usar drivers privativos para que los gráficos y efectos se muestren correctamente, o no usar Flashplayer porque la web ya funciona completamente sobre HTML5, o simplemente, no usar Google Chrome u Opera y siempre usar alternativas OpenSource.. Si, sería magnífico, pero estamos muy lejos de esa realidad.

Hay muchos usuarios que usan GNU/Linux por cosas que van más allá de la filosofía, o de querer ser “libres”. Hay muchísimos usuarios que usan GNU/Linux porque les da su reverenda gana, o porque les gusta tal aplicación o más cual escritorio, y si a eso le sumamos lo de gratis y lo de abierto, pues mejor ¿no?

Entonces hay un dilema, si su tarjeta AMD o NVidia no funciona bien con los drivers libres ¿que haces, te quedas sin usar Linux porque usar el privativo sería entregar su alma al diablo?

Vuelvo a mi experiencia. A pesar de que nunca he necesitado usar drivers privativos o aplicaciones de código cerrado, pienso que si las tengo que usar las uso y punto. No le debo explicaciones a nadie por ello, bastante tengo con tratar día a día de no usar nada que sea de código cerrado o que tenga que piratear.

Soy consciente de lo que puede significar para mi privacidad o seguridad usar una aplicación como Google Chrome (que dicho sea de paso NO la uso, pero podría si quisiera), y no por ello tengo que dejar de recomendar a todo el que pueda que use Software Libre. De hecho, uso muchos de los servicios de Google e incluso, soy un feliz usuario de Android y aún así, sigo siendo un usuario de Software Libre.

Yo no soy de esas personas que te dicen que uses todo OpenSource, soy de esas personas que te recomiendan usar una distribución GNU/Linux por todas las ventajas que esto conlleva, con el Software que te permita tener la mejor experiencia y cubra tus necesidades.

Hay mucha hipocresía en el mundo GNU/Linux

Si estás leyendo esto y de alguna forma te sientes ofendido, primero que todo, antes de emitir un comentario mírate al espejo para ver si de verdad eres como Richard Stallman:

  • sin teléfono móvil.
  • sin ningún dispositivo con el que puedan rastrearte.
  • sin escuchar música en .mp3 o ver videos que no sean en .ogg.
  • sin usar formatos de compresión cerrados.
  • sin usar drivers o software de código cerrado.
  • sin abrir un .doc, o tener cuenta en cualquier servicio de la nube.
  • sin webcams, bluetooth o wifi..

por poner solo algunos ejemplos. Y es que es muy, pero muy difícil lograr cumplir con todo esto en el mundo actual. Claro, a no ser que vayas en un avión y caigas en una isla desierta. Es más, que me disculpe RMS, pero estoy seguro (aunque no pueda probarlo ahora mismo) que en algún momento, queriendo o no, ha tenido que usar algo que vaya en contra de sus principios.

Es por ello mis queridos lectores que les pido, digan NO a la hipocresía. Usemos las distribuciones de GNU/Linux por placer, por diversión, por lo que queramos, pero no hagamos de eso una religión. Si puedes usar todo 100% libre, perfecto, pero no serás menos que el resto por tener que usar algo que, aunque sea por muy poco, no cumpla con la Free Software Fundation. Usemos el Software que queramos, aunque si es libre, mejor.

Si Debianitas y Ubuntero, a ustedes mismos los estoy mirando. Activar los repositorios non-free por necesidad, o porque sencillamente les da la gana no es un pecado, es un derecho que nos otorga esa misma libertad que algunos exigen y otros proclaman.

A los “mas puros”: Recomienden usar GNU/Linux y Software 100% libre si quieren, pero no miren al que usa algo “que no cumple con la filosofía como un bicho raro. Vivan y dejen vivir. Y si no están de acuerdo con lo que pienso, bien, entonces usen lo que deseen, pero piénsenlo dos veces antes de arremeter contra alguien por pensar diferente, por usar algo diferente, aunque sea cerrado. Si de verdad usan todo abierto al 100%, felicidades, pero desde aquí les digo: no siempre será así.

Actualizado: Si desean tener un debate un poco más dinámico, pueden entrar a la sala #DesdeLinux_Oficial en Freenode
]]>
http://blog.desdelinux.net/la-hipocresia-del-mundo-gnulinux/feed/ 256