MCP3008

Añadiendo un ADC a la Raspberry Pi

La raspberry no tiene entradas analógicas, para ello podemos utiliza el chip MCP3008. Y con un script en Python ya lo tenemos.

MCP3008

El chip MCP3008 es un convertidor analógico-digital con 8 canales de 10 bits de resolución e interfaz SPI,

Conexiones:

 

El ADC es 10bit por lo que puede informar un rango de números de 0 a 1023 (2 a la potencia de 10). Una lectura de 0 significa que la entrada es 0V y una lectura de 1023 significa que la entrada es 3.3V.

La conversión del valor se realiza de la siguiente forma:

Voltaje = (adc * Vref)/1023

Vref = Voltaje de referencia

Interfaz SPI en Raspberry Pi 2

Raspberry Pi no tiene habilitado el módulo de comunicación SPI, lo primero que hay que hacer es habilitar la interfaz para poder comunicarnos con nuestro MCP3008.

La forma de hacerlo es mediante:

Script de Python

Script de Python, para leer el canal 1 (CH0) la tension obtenida mediante un potenciometro:

Instalando TELEGRAM

Instalación

Para instalar en Raspbian ejecutamos desde la terminal:

instalamos lo siguiente:

Ejecutamos el archivo de configuración y copilamos el programa:

da el error: configure: error: no libevent found

volvemos a ejecutar

Ejecutamos

da el error:

make: *** No rule to make target ‘tgl/scheme.tl’, needed by ‘auto/scheme.tl’. Alto.

Se ha solucionado poniendo – – recursive en:

Simplemente debemos ejecutar en la terminal:

da lo siguiente:

pi@raspberrypi:~/tg $ sudo bin/telegram-cli -k tg-server.pub -W

change_user_group: can’t find the user telegramd to switch to

Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman

Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type show_license'.

This is free software, and you are welcome to redistribute it

under certain conditions; type show_license’ for details.

Telegram-cli uses libtgl version 2.1.0

Telegram-cli includes software developed by the OpenSSL Project

for use in the OpenSSL Toolkit. (http://www.openssl.org/)

I: config dir=[/root/.telegram-cli]

[/root/.telegram-cli] created

[/root/.telegram-cli/downloads] created

> telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion `0′ failed.

SIGNAL received

Cambiar la dirección IP

En esta versión de Raspbian, se realiza de la siguiente forma:

Ahora hay un demonio llamado dhcpcd, .

Editamos el fichero /etc/dhcpcd.conf

y añadiendo al final:

Reiniciamos y listo.

 

Versiones anteriores a Jessie

Desde la Raspberry

Editamos el fichero interfaces, ubicado en /etc/network

Antes de modificar nada hacemos una copia de seguridad del fichero.

Editamos el fichero con «nano»:


Borramos las lineas:

Añadimos las lineas:

Grabamos Ctrl + O
Salimos Ctrl + X

Reiniciamos para que se tomen los nuevos valores.

Probamos que tenemos acceso a internet, mediante un ping a un servidor, por ejemplo google.

ping google.es

Si obtenemos respuesta afirmativa a nuestros ping, esta todo correcto. En caso contrario, debemos modificar el servidor DNS.

 Servidor DNS:

Se debe modificar en el fichero /etc/resolv.conf, la direccion del servidor de DNS.
Si no lo hacemos, no se podra conectar a internet.

Cambiar:

por

Reiniciamos y comprobamos que todo esta correcto.

 

 Modificando la tarjeta SD

Por defecto al grabar la tarjeta SD con la imagen de Raspbian, la configura para que este como DHCP.
En mi caso, no esta en funcionamiento el servidor de DHCP. Por lo que no puedo acceder al Raspberry.

Accediendo al lector de tarjetas de SD y configuro la red de la tarjeta.

En la figura anterior vemos dos figuras de Pendrive.

  • boot
  • Sistema de archivos de 2,9 GB

Abrimos la pantalla de terminal y accedemos al directorio «media».
En el vemos los dispositivos que se han montado. En mi caso

 ls /media

Vemos los dispositivos reconocidos, en nuestro caso es el 548da502-ebde-45c0-9ab2-de5e2431ee0b

548da502-ebde-45c0-9ab2-de5e2431ee0b  boot  Despacho

Accedemos a dicho directorio.

cd /media/548da502-ebde-45c0-9ab2-de5e2431ee0b/

editamos el fichero interfaces que esta en /etc/networks

sudo nano /media/548da502-ebde-45c0-9ab2-de5e2431ee0b/etc/network/interfaces

 

A partir de este cuento, lo hacemos igual que en el punto anterior «Desde la Raspberry»

Grabar Tarjeta SD en Linux


Sin conectar la tarjeta, saldra una pantalla parecida a esta:

Colocamos la tarjeta SD y repetimos el comando.

Vemos que apararece un dispositivo nuevo, /dev/sdc1. Esta es la tarjeta SD

Ahora desmontamos la SD (hacedlo con todas las particiones de esta):

copiamos la imagen con el comando:

no hay que poner el numero de la partición.

Este comando no muestra ninguna salida, parece que está ‘congelado’. Hay que esperar ya que puede tardar unos minutos.

Lighttpd con php

Instalación del servidor Web (lighttpd) 

Para la instalación ejecutaremos

Por defecto, las paginas están en /var/www/html, para cambiarlo a /var/www.

Editamos en el fichero /etc/lighttpd/lighttpd.conf con:

server.document-root        = “/var/www/html»

por

server.document-root        = “/var/www»

Para cambiarlo al puerto 8080

 

server.pot=8080

server.socket = “[::]:8080′′

En este caso pusimos en escucha el puerto 8080.

Después hay que reiniciar el servicio con:

Instalación/configuración de PHP

Para su instalación ejecutamos:

Una vez instalado PHP, hemos de efectuar alguna configuración adicional para que el servidor reconozca los scripts PHP, por ello habilitamos el módulo fastcgi-php mediante

y, a continuación, reiniciamos el servicio ya actualizado mediante

Para comprobar que el servidor web está ejecutándose miramos que el puerto 80 esté en modo Listen

Ahora podemos ir a un navegador y poner en la dirección lo siguiente: http://IP_Raspberry

 

Activar y desactivar el servicio manualmente

Si hace falta parar el servidor web la orden es:

Para volver a ponerlo en marcha:

Para reiniciarlo:

Ver los Logs

Para ver el log de acceso a la pagina, este fichero es  /var/log/lighttpd/access.log

Modificamos el fichero:

server.modules = (

«mod_access»,

«mod_alias»,

«mod_compress»,

«mod_accesslog»,

«mod_redirect»,

# «mod_rewrite»,

)

server.document-root = «/var/www»

server.upload-dirs = ( «/var/cache/lighttpd/uploads» )

server.errorlog = «/var/log/lighttpd/error.log»

accesslog.filename = «/var/log/lighttpd/access.log» — creas el archivo access.log

server.pid-file = «/var/run/lighttpd.pid»

server.username = «www-data»

server.groupname = «www-data»

server.port = 80

index-file.names = ( «index.php», «index.html», «index.lighttpd.html» )

url.access-deny = ( «~», «.inc» )

static-file.exclude-extensions = ( «.php», «.pl», «.fcgi» )

compress.cache-dir = «/var/cache/lighttpd/compress/»

compress.filetype = ( «application/javascript», «text/css», «text/html», «text/plain» )

# default listening port for IPv6 falls back to the IPv4 port

include_shell «/usr/share/lighttpd/use-ipv6.pl » + server.port

include_shell «/usr/share/lighttpd/create-mime.assign.pl»

include_shell «/usr/share/lighttpd/include-conf-enabled.pl»

reiniciamos el servicio de lighttpd

Ya con esto, ya se genera el archivo access.log, se nos guardara los accesos a la web

 

WebMin

Instalación de WEBMIN

Webmin, nos servirá para configurar a la Raspberry de forma grafica, el sistema operativo.

En la página web de Webmin podemos veremos cuál es la última versión. En este momento es la 1.820.

Nos descargaremos dicha version con el comando:

Antes de instalarla, hay que comprobar que tenemos las dependencias necesarias:

Si no da, ningún error, realizamos la instalación de Webmin:

Para acceder a la interfaz web de webmin con el navegador mediante https, poniendo la IP local de la Raspberry y el puerto 10000,:

Debemos añadir una excepción de seguridad en el navegador. Se nos pedirá el nombre de usuario y la contraseña.

Una vez que accedamos a Webmin, a la izquierda el menú de configuración del sistema. Tiene la posibilidad de ponerlo en español.

Fail2Ban

Vigila el fichero de log de los servidores que tengamos instalados y banea aquellas IPs que hayan hecho un intento ilegal de entrar en el sistema mediante fuerza bruta:

Ahora copiaremos el archivo de configuración por defecto de Fail2Ban como jail.local que sera ejecutado y nos sobreescribira las configuraciones que tengamos en jail.conf , ponemos el siguiente comando en el terminal SSH:

Y ahora abriremos el archivo copiado con el comando:

En la sección [DEFAULT], esta la configuración genérica del servicio:

ignoreip (IPs que no deseemos que se baneen, son las correspondientes al localhost y a la IP local del PC desde el que accedemos normalmente).

bantime (tiempo de baneo, expresado en segundos).

maxretry (numero de intentos fallidos de login para que se active el baneo).

En las secciones ([ssh] y [ssh-ddos]) se activa la seguridad del servidor SSH contra ataques de fuerza bruta y/o contra ataques DDoS (Distributed Denial of Service):

enabled = true al comienzo de cada una, para que se active.

port = ssh si se esta usando el puerto (22) o bien ponemos el número del puerto por el que este corriendo.

Modificamos su contenido, que quedará así:

Fail2ban se puede aplicar también a otros web, servidores FTP o de correo.

Al acabar la configuración hay que reiniciar el servicio:

Podemos comprobar:

Como conocer su estado:

Ver los servicos activos:

O el estado actual de un servicio, que nos mostrará si tiene alguna IP baneada en este momento.  En el caso del ssh :

También se puede analizar fichero de log para comprobar si ha habido intentos de acceso no autorizados:

 

RECIBIR UN CORREO DE ALERTA AL BLOQUEAR UNA IP (aun por probar)

Podemos hacer que Fail2ban nos envíe un correo cuando detecte un intento de intrusión y bloquee una determinada IP, informándonos de este hecho. Para lograrlo, lo primero que hemos de hacer es  instalar un sistema de envío de correos desde la terminal.

Luego volvemos al fichero de configuración de Fail2ban:

Dentro de él, en la sección # ACTIONS, localizamos y configuramos los siguientes parámetros:

destemail = Dirección de email para recibir los avisos

sender = pi@raspberrypi [Este es el email del remitente]

mta = mail [Servidor de correo que usamos]

action = %(action_mw)s [Está al final de la sección]

En la primera línea hemos de escribir la dirección de email en la que deseamos recibir los avisos, mientras que en las demás pondremos únicamente lo que aparece en color rojo.

Hecho lo anterior, guardamos los cambios realizados en el fichero y reiniciamos el servicio:

Así, cada vez que haya un intento de acceso no autorizado y se bloquee la IP correspondiente, enviando un aviso a la dirección de correo indicado con información sobre la IP y el ISP desde los que se ha intentado acceder sin permiso a nuestra máquina. También también avisará cada vez que se detenga o se reactive el servicio.

Servidor SSH

En versiones anteriores a Raspbian Jessie, el servidor SSH, viene activado por defecto. A partir de Jessie, hay que activarlo en la configuración inicia.

En opciones avanzadas.

Una vez activado, debemos asegurar el acceso mediante SSH, ya que es muy frecuente los intentos de acceso no autorizado a los servidores SSH

Veamos a continuación algunos parámetros que podemos modificar o añadir para que nuestro servidor SSH esté más seguro.

En el archivo de configuración realizaremos los cambios:

Cambiar el puerto de acceso:

Si lo cambiamos (poniendo, por ejemplo, el puerto 3426), dificultaremos mucho el trabajo el acceso indebido. Por defecto esta en el puerto 22, lo cambiamos al puerto 3443, modificamos la linea:

por

No haremos una redirección, para que evitar una ataque al puerto redireccionado.

Para llamar ahora al SSH, se hará de la siguiente forma:

Denegar el acceso al usuario root

Para evitar los ataque por fuerza bruta, denegaremos el acceso mediante el usuario root. Para ello ponemos o modificamos la linea de la siguiente forma:

Tiempo de pantalla de disponibilidad de login:

El tiempo en segundos que la pantalla de login estará disponible para que el usuario se identifique. Pasado ese tiempo, la pantalla de acceso se cerrará:

Denegar los password vacíos:

El servidor no debe aceptar contraseñas vacías o en blanco:

Numero máximo de errores en login:

Indica el número máximo de errores permitidos al hacer login. Al sobrepasarlo, la pantalla de login se cerrará y habrá que volver a empezar de nuevo.

Numero máximo de conexiones simultáneas:

Indica el número máximo de conexiones simultáneas por IP que permite el servidor.

Permitir unos usuarios determinados:

Podemos añadir una directiva para que sólo los usuarios especificados tengan acceso al mismo:

O, por el contrario, a permitir el acceso a todos menos a los que se indican expresamente en ella:

Comprobación de errores de configuración:

Una vez guardados los cambios, para comprobar que la configuración del fichero es correcta, con el comando:

Si no aparece ningún mensaje de error, es que todo está bien.

Reinicio del demonio:

Terminadas las modificaciones, para que tengan efecto los cambios, hay que reiniciar el servicio. Lo haremos con el comando:

Revisar lo logs de autentificaron del demonio:

Es aconsejable revisar el fichero /var/log/auth.log para comprobar si tenemos algún intento de entrada ilegal.

Para comprobar que los intentos, lo haremos con el comando:

Para contar cuántas líneas con intentos de intrusión hay:

Instalar y configurar el cortafuegos UFW

El cortafuegos ufw es el más fácil de configurar. Su acrónimo uncomplicated firewall (cortafuegos sin complicaciones).

Instalación:

Por defecto, impide todo el tráfico entrante, pero permite el tráfico saliente. Equivale a escribir estas dos reglas:

Cada puerto admite los dos protocolos: tcp y udp. Al abrir un puerto por su número, se abren ambos. Para que se abra el protocolo correspondiente (tcp o udp). debemos indicarlo.

Añadiremos las excepciones creamos convenientes.

Permitir el puerto SSH:

También se podría hacer, refieriéndonos al nombre del servicio, en lugar del puerto, de la siguiente forma:

En el caso del servidor web que tengamos instalado, Lighttpd. Podemos hacerlo de dos maneras, o abriendo directanente el puerto:

o  haciendo referencia al servicio correspondiente:

También tiene activado el protocolo cifs, que es el que usa el servidor Samba:

Para ver la lista completa de los servicios que ya trae predefinidos, escribiremos el siguiente comando:

También lo vamos a hacer con los puertos de los servidores FTP (21), VPN (1723) y DLNA (8200),  el servicio Webmin (10000):

En el caso de abrir varios puertos consecutivos (por ejemplo, del 8080 al 8083,  no es necesario que lo hagamos de uno en uno; se pueden abre todos de una vez, de la siguiente forma:

Para denegar denegar un servicio o servidor, utilizamos el comando deny. Por ejemplo, impedir el acceso al servicio webmin:

O denegar el acceso a un determinado host de nuestra red local, indicando su IP:

Una vez añadidas todas las reglas, se activara el cortafuegos:

Comandos útiles en algún momento:
Desactivar el cortafuegos:

Reiniciarlo:

Mostrar su estado:

Ejemplo de cómo borrar una regla que hemos activado: