Raspberry – Firewall

Para conectar nuestra RPI a una red y no dejar todos sus puertos abiertos, podemos recurrir a un firewall (Una de las tantas de medidas de seguridad recomendadas para cualquier equipo que conectemos a internet). Uno de los mas simples tanto por uso como por configuración es el Uncomplicated Firewall (ufw). Para su instalación seguiremos los siguientes pasos en nuestra consola, habiendo actualizado los repositorios previamente:


sudo apt-get install ufw

Con este simple comando ya tendremos instalado este firewall, ahora solo nos resta configurar las reglas para ponerlo en funcionamiento. Como nota a tener en cuenta, para poder ejecutar todos los comandos de configuración sera necesario realizarlos con sudo o siendo root.

Para poder ver el estado de nuestro firewall bastara con el comando:


sudo ufw status

o si lo queremos mas detallado:


sudo ufw status verbose

Para ver las reglas enumeradas podemos hacer:


sudo ufw status numbered

Para comenzar, vamos a denegar el acceso a todos lo que quiera entra, pero permitir a lo que quiera salir. Para ello ingresamos los siguientes comandos:


sudo ufw default allow outgoing

sudo ufw default deny incoming

Vamos a permitir por ejemplo el acceso remoto por ssh, vnc y rdp. Con los siguientes comandos respectivamente:


sudo ufw allow ssh

sudo ufw allow 

Habilitamos los paquetes TCP en el puerto HTTP (80)


sudo ufw allow 80/tcp

sudo ufw allow http/tcp

También podemos habilitar el puerto HTTPS (443) con la siguiente configuración


sudo ufw allow 443

Podemos asignar también permisos a múltiples puertos secuenciales (para aplicaciones que usan de ellos como X11)


sudo ufw allow 6000:6007/tcp

sudo ufw allow 6000:6007/udp

También podemos especificar que a un puerto se puedan conectar desde un rango de red especifico nada mas, para ello hacemos:


sudo ufw allow 192.168.0.0/24 to any port 22

permitir conexiones desde una interfaz particular a un puerto determinado.


sudo ufw allow in on eth0 to any port 80

Eliminar reglas

Para poder eliminar reglas contamos con varias alternativas. Podemos eliminarlas según su enumeración de status con el comando:


# Ejemplo para borrar la reglan N2 listada con el comando ufw status numbered

sudo ufw delete 2

También podemos borrar la regla según su descripción con


sudo ufw delete allow 80

Bloquear una dirección IP

sudo ufw deny from 192.168.100.15

o si la queremos bloquear únicamente por una interfaz de red:


sudo ufw deny in on eth0 from 192.168.100.15

Cuando tengamos todas las reglas seteadas y querramos habilitar el ufw (o deshabilitar), solo nos resta ingresar el siguiente comando (para deshabilitarlo reemplazamos el enable por disable):


sudo ufw enable

Si queremos resetear todas las reglas para volver a configurar todo de 0, podemos hacer:


sudo ufw reset

Nota:

Cuando configuramos el ufw, lo que hace es configurar las IPTables, cualquier configuracion que tuvieramos preexistente sera eliminada.

Raspbian – Manejo de Impresoras

La instalación y uso de la impresoras en nuestras Raspberry puede resultar un poco complejo con respecto a Windows, pero no es una misión imposible.

Para poder instalar una impresora es conveniente instalar previamente el CUPS y el system-config-printer. Si bien no son necesarios ambos, entre los dos se complementan. Para poder instalarlo, deberemos ir a la consola y escribir:


sudo apt-get install cups system-config-printer

Una vez instalados nos encontraremos con dos formas de configurar la impresora, una vía navegador web que corresponderá al CUPS y la otra mediante un acceso en el inicio de nuestra raspberry.

WEB

Para poder acceder a la configuración, deberemos ir en nuestro navegador a localhost:631/

Allí encontraremos la pagina donde se administran las impresoras. Administrarlas por aquí puede ser algo engorroso ya que se necesita acceso para muchas cosas, por lo tanto saltearemos esta explicación para hacerla mas detallada en otro momento

APLICACIÓN EN MENÚ INICIO

Para poder configurar la impresora deberemos ir a:

Menú inicio -> Preferencias -> Configuración de impresión

Se nos abrirá la siguiente pantalla donde haciendo click en el botón add nos permitirá agregar la nueva impresora.

Config-Printer-1

En el siguiente paso, tendremos que seleccionar la conexión de la impresora. Pudiendo ser una impresora de red, serial y otra.

Config-Printer-2

Luego nos dará para seleccionar el driver de la misma, podemos proveerle un archivo ppd para la misma (Como suele darse en las impresoras ticketeadoras o tipo POS) o podemos recurrir a seleccionar un driver de la base de datos del programa.

Config-Printer-3

Esta base es bastante amplia, pero no suele tener los drivers para las ultimas impresoras, allí tendremos que recurrir a instalarlos primero vía el software que nos provean las mismas.

Config-Printer-4

Finalmente, nos pedirá que detallemos algunos nombres de la impresora para identificarla posteriormente.

Config-Printer-6

Realizado esto, ya tendremos instalada nuestra impresora y podremos acceder a ella de la misma forma que estamos acostumbrados.

Raspbian – Descargar versiones antiguas de Raspbian

Para poder instalar Raspbian en nuestras Raspberry´s la forma simple es ir a la pagina https://www.raspberrypi.org/ y en su sección de Downloads, bajar la ultima versión del SO. En esta ubicación siempre disponemos de la ultima versión, pero no tenemos ningún acceso directo para bajar otra versión del sistema operativo. Por suerte, existe una manera para poder descargar las versiones antiguas del Raspbian, que lo almacena la misma pagina. Para poder acceder a estas descargas, deberemos ir a http://downloads.raspberrypi.org/raspbian/images/

Allí, nos encontraremos con un listado donde están todas las release históricas.

ListadosRelease.jpg

Ahora sera cuestión de entrar a la carpeta de la release que deseemos y bajar la imagen comprimida en formato Zip.

 

Raspbian – Imagen menú inicio

Ya sea porque queremos cambiar el icono del menú inicio por una imagen personalizada que no sea la frambuesa o porque como sucedía en distribuciones anteriores se nos desvinculaba la misma del botón, modificarla es muy simple. Basta con hacer click derecho sobre el «botón» (si se nos desvincula la imagen el botón seguirá estando pero pasara a ser muy finito) y seleccionar modificar imagen. Al hacerlo se nos abrirá un menú para navegar y encontrar la imagen que querramos colocar.

Si no pretendemos modificar la imagen pero se nos desvinculo, la imagen original la encontraremos en la siguiente ruta:


/usr/share/raspberrypi-artwork/launch.png

Tenemos que tener en cuenta que la imagen debe poseer una dimensión de 32×32 pixeles y posee un borde, por lo cual quedara aun un poco mas chica.

El menu original:

Menu inicio - Before

y con el icono modificado:

Menu inicio - After

Raspbian – Modem comando AT

Si bien he explicado como conectar un modem 3G / 4G en post anteriores, se me ha presentado casos donde por ese medio no pude hacerlos funcionar. Esto sucede ya que esos modems funcionan con otro sistema. En el caso de ahora voy a describir como conectarse con un modem que reciba comandos AT. Esta metodología sirve para modems GPRS/ 2G / 3G / 4G. Tambien sirve pra conectarse mediante los módulos electrónicos usados en Arduino como los sim800 o los Ai thinker A6 o posteriores.

Para empezar deberemos instalar el programa que realizara la gestión de la conexión. Este programa es el wvdial. Para instalarlo deberemos realizar:


sudo apt-get install wvdial

Ademas, deberemos tener instalado un gestor de peers como el pppd (michos linux lo traen preinstalado)

Una vez instalado, tendremos que configurar el wvdial, para ello haremos en la consola:


nano /etc/wvdial.conf

Allí dispondremos de la siguiente configuracion basica:


[Dialer Defaults]

Dial Command = ATDT

Init1 = ATZ

Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0

Init3 = AT+CFUN=1,0

Init4 = AT+CGDCONT=1,"IP","igprs.claro.com.ar"

Stupid Mode = 1

ISDN = 0

Modem Type = Analog Modem

Ask Password = 0

Phone = *99#

Modem = /dev/ttyUSB0

Username = clarogprs

Password = clarogprs999

Baud = 9600

New PPPD = yes

Una vez finalizada la edición del archivo de configuración, grabamos y salimos (ctrl + X).

Ahora ya estamos listos para probar la conexión, para esto debemos ejecutar el programa, desde cualquier ubicación en nuestra consola:


sudo wvdial

De esta forma ira mostrando paso a paso como se conecta, hasta que finalmente nos muestre los datos de nuestra conexión.

Windows – Interfaz virtual de red

Muchas veces nos encontramos con el inconveniente de tener en un red física múltiples redes virtuales. Generalmente esto se realiza para sectorizar accesos, por ejemplo en una empresa donde tenga un sector planta y otro administrativo con sus respectivas impresoras, cada uno tiene VLANs independientes asegurándose que solo puedan utilizar las impresoras de su sector. El problema surge cuando uno necesita administrar todas las redes o equipos y solo contamos con una placa de red. Existe una manera de utilizando una placa de red poder utilizar múltiples IP (de diferentes VLAN), pero solo de forma estática. Esto nos permite acceder a las distintas redes mientras estén físicamente conectadas. Para esto en Windows 10 tenemos que seguir los siguientes pasos.

Debemos ir a Configuración -> Red e Internet -> Ethernet

Allí accederemos a cambiar opciones del adaptador

opciones de adaptador

Cambien podemos acceder aquí a través de:

Panel de control -> Redes e Internet -> Conexiones de red

Aquí elegiremos a que placa de red queremos asignarle múltiples IP (puede ser en nuestra placa Ethernet o WiFi), haremos click derecho sobre la misma e iremos a las propiedades.

proopiedades

Ahora seleccionamos Protocolo de Internet versión 4 y haremos click sobre el botón propiedades y nos abrirá el siguiente dialogo

propiedadesIPV4

Aquí deberemos configurar nuestra interfaz principal de red la cual tendrá la puerta de enlace (En el resto de las interfaces, solo se podrá configurar la dirección IP y la mascara de subred).

Una vez configurada, hacemos click en Opciones avanzadas para que nos abra un nuevo dialogo

propiedadesAvanzadasIPV4

Ahora solo restara agregar presionar agregar en Direcciones IP, y nos solicitara una dirección y una mascara de subred.

AgregarIP

Una vez agregado nos quedara lista la configuración para (en el caso del ejemplo) poder conectarnos a las VLAN 192.168.100.x y 10.10.5.x

Raspberry – Interfaces Virtuales de Red

Muchas veces me he encontrado con el requerimiento de conectar un dispositivo que analice información proveniente de una subred y la re-envié a través de otra subred. Normalmente la solución rápida es colocar varias placas de red y con cada una de ellas conectarnos a una subred distinta. Esto esta bien cuando disponemos de un equipo donde podemos hacerlo, ahora en un SBC, esto requiere otro tipo de solución. Para ello están las interfaces virtuales de red, que nos permitirán conectarnos a dos o mas VLAN al mismo tiempo.

Interfaces con IP fija:

La forma mas simple para conectarnos a dos VLAN es teniendo en ambas una IP fija. Supongamos que tenemos una serie de equipos que nos van a transmitir información a través de la red 10.10.1.x y nuestras base de datos o conexión a Internet para subir esa información al servidor esta sobre la red 192.168.0.x.

Como primer paso vamos a ingresar a nuestro archivo de configuración de interfaces en Linux


sudo nano /etc/network/interfaces

Allí, realizamos la siguiente configuración suponiendo que nuestra interfaz de red sea la eth0:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface auto lo iface lo inet loopback
# The primary network interface
# Static IP address
auto eth0
iface eth0 inet static
  address 192.168.0.100
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.1.255
  gateway 192.168.0.1
dns-nameservers 192.168.0.1 8.8.8.8
# Virtual interface
# Static IP address
auto eth0:0
iface eth0:0 inet static
  address 10.10.1.100
  netmask 255.255.255.0

Interfaces con DHCP:

Solo podremos tener la interfaz principal por DHCP, las virtuales serán por IP estética y compartirán las configuraciones de red que nos de el DHCP.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface auto lo iface lo inet loopback
#The primary network interface
# DHCP IP address
auto eth0
iface eth0 inet dhcp
# Virtual interface
# Static IP address
auto eth0:0
iface eth0:0 inet static
address 10.10.1.100
netmask 255.255.255.0

Raspbian – Configuración usuario pi

Por default nuestro Raspbian viene configurado con el usuario pi como superuser. Adicionalmente, tiene configurado que no solicite contraseña al utilizar un comando sudo, y el autologueo al iniciar el equipo.

Esta configuracion es practica para cualquier usuario no habiatuado a Linux, pero es un gran problema de seguridad para cualquier equipo que quede en funcionamiento sin un usuario detras, ya que cualquiera podra editar o cambiar cualquier la configuracion del equipo. Incluso podria pasar que si el equipo es utilizado por distintos usuarios, alguno con mala intesion pueda modificar la configuracion del equipo. Lo ideal seria generar usuarios, pero eso sera tratado mas adelante, por ahora vamos a realizar que el usuario pi solicite su contraseña.

Para evitar esto deberemos editar los permisos del sudoers, pero si realizamos un:


sudo visudo

Nos encontraremos que el usuario pi, no tiene configurada ninguna regla alli. Esto se debe a que tiene un archivo con sus configuraciones en la ubicacion:


/etc/sudoers.d/010_pi-nopasswd

Aqui tenemos dos posibilidades, eliminar el archivo o cambiar los permisos. El primer caso es el mas simple, ya que basta con el comando:


sudo rm /etc/sudoers.d/010_pi-nopasswd

En cambio para poder editar los permisos, primero debemos recordar que el archivo no puede quedar vacio, tiene que poseer contenido. Luego para editar el mismo, conviene realizarlo a traves del visudo, ya que evitara que se rompa el mismo por el uso y edicion en simultaneo. Para esto debemos ejecutar el siguiente comando:


sudo visudo /etc/sudoers.d/010_pi-nopasswd

Una vez abierto el archivo, ahora podremos editar el archivo con tranquilidad. Un extra al editar el archivo con el visudo, es que corroborara la sintaxis del mismo y nos avisara si posee inconsistencias.

Una nota a tener en cuenta, es muy importante cambiarle la contraseña al usuario pi y no dejar la que posee por default, ya que esta es ampliamente conocida y no seria util solicitar una contraseña ampliamente conocida.

Raspberry – Punto de Acceso WiFi (AP)

En la siguiente explicacion se detallara como generar un punto de acceso WiFi para en una raspberry SIN compartir internet desde su conexion Ethernet. Mas adelante agregare un post con la explicacion para compartir Internet a traves de la AP. Este tipo de configuracion es util para generar un servidor que recibe datos de diferentes sensores los cuales no requieren acceso a internet.

Para empezar vamos a suponer que tenemos nuestro equipo con el SO Raspbian recien instalado y totalmente actualizado. Nos haran falta 2 programas para gestionar el AP, uno sera el que demonio que levantara el Access Point (hosapd), y el segundo sera nuestro servidor DHCP (dnsmasq). Para instalar los mismos nos alcanza con ir a la consola y poner el siguiente comando:

sudo apt-get install hostapd dnsmasq

Con ese comando se instalaran los programas y se iniciaran. Por lo tanto para poder configurarlos, conviene detener estos servicios. Para eso recurriremos a los siguientes comandos:

sudo systemctl stop hostapd
sudo systemctl stop dnsmasq

Para proceder con la configuracion, tendremos que editar 3 archivos. Empezaremos definiendo la ip de nuestra interfaz inhalambrica, para lo cual deberemos editar el sigueinte archivo:

sudo nano /etc/dhcpcd.conf

Alli, iremos al final del mismo y agregaremos las siguientes lineas:

interfaz wlan
static ip_address = 192.168.4.1/24
nohook wpa_supplicant

Finalizado esto grabamos y cerramos el archivo (ctrl-x).

Con esta configuracion, lo que estamos haciendo es asignarle a nuestro equipo la IP 192.168.4.1 de forma estatica en la red inhalambrica. Esta IP puede ser la que mas comoda nos resulte y no tiene porque ser la descripta. Lo unico que debemos tener en consideracion siempre es que esta no sea la misma de nuestro router ethernet, ya que si mas adelante queremos compartir internet a traves de nuestra AP, tendremos conflictos de IP.

Servidor DHCP

Ahora procederemos a configurar el servidor DHCP, para esto primero haremos una copia de seguridad del archivo de configuracion original (Siempre es conveniente dejar una copia de seguridad del archivo original por si editamos algo y no funciona luego).

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.old.conf

Ahora si, procederemos a editar el archivo agregando las siguientes lineas:

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.50,255.255.255.0,24h

Como es usual, finalizado grabamos y cerramos el archivo (ctrl-x).

Con esto, le estamos diciendo que maneje por DHCP la interfaz wlan0 (interfaz wireless), y asigne las ip comenzando desde la 192.168.4.2 hasta la 192.168.4.50. Ademas, le estamos diciendo la configuracion de la mascara de red y le decimos que almacene la cesion por 24 hs (El dnsmasq cada vez que asigna una ip guarda a que equipo se la concedio, para darle nuevamente la misma IP en la proxima reconexion).

Demonio del Host Access Point

Por ultimo, vamos a editar la configuracion del hostapd donde estara la configuracion de la red WiFi. Para ello editaremos el archivo ingresando:

sudo nano /etc/hostapd/hostapd.conf

Alli, verteremos la siguiente configuracion:

# Aqui definimos la interfaz donde se montara el
# Access Point
interface=wlan0
# Configuramos el driver
driver=nl80211
# Definimos que la intrefaz WiFi sea 802.11g
# (soporta los estandar a / b / g / n / ac dependera
# del hardware de nuestro equipo).
# g significa que estara en la banda 2.4GHz
hw_mode=g
# Aqui definimos que canal de la señal utilizaremos,
# en 0 buscara el canal con menor interferencia de
# forma automatica.
channel=0
# Definimos el soporte QoS
wmm_enabled=0
macaddr_acl=0
# Definimos el algoritmo de seguridad 1=WAP, 2=WEP, 
# 3=both
auth_algs=1
# Aca definimos que solo aceptaremos WPA como seguridad
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
# Aqui definimos que sea o no visible el nombre de nuestra
# AP (AP oculta), en este caso es visible
ignore_broadcast_ssid=0
# Definimos el nombre de nuestra AP, aqui sera "MYRPIAP"
ssid=MYRPIAP
# Definimos la contraseña de la AP: "admin"
wpa_passphrase=admin

Finalmente, como siempre grabamos y salimos del archivo (Ctrl+x)

Ahora para poder activar nuestro AP, deberemos reiniciar los servicios, para esto ejecutaremos:


sudo systemctl restart hosapd

sudo systemctl restart dnsmasq

Ahora, si queremos registrar que arranque al iniciar el equipo, debemos ejecutar:


sudo update.rc-d hostapd enable

sudo update.rc-d isc-dhcp-server enable

Luego de esto, cada vez que iniciemos nuestro equipo, se generara el punto de acceso de forma automatica.