Академический Документы
Профессиональный Документы
Культура Документы
SERVICIOS DE RED
MEDIANTE UNA
RASPBERRY PI
VERSIN 13.3.2
MicroComputador Raspberry Pi
Servicios Gateway/DHCP/DNS/Proxy HTTP
Punto de acceso/Repetidor
Controlador de Dominio Principal (PDC)
Servicio de autenticacin RADIUS
Servicio NAS (SMB/FTP/NFS/SSHFS)
Copias de Seguridad Remotas
Servicio HTTP/HTTPS
Servicio de Correo WebMail
Servicio VPN
Control Domtico Va Web
ndice de Prcticas
Prctica n1.-Instalacin del Sistema Operativo Raspbian..............................................................5
Prctica n2.-Primer Arranque de la Raspberry Pi...........................................................................7
Prctica n3.-Conexin a Internet de la Raspberry........................................................................10
3.1.- Configuracin de la Interfaz Inalmbrica de manera grfica (GUI).................................10
3.2.- Configuracin de la Interfaz Inalmbrica desde la terminal (CLUI)................................10
3.3.- Actualizacin de los Repositorios y del Software del Sistema.........................................11
Prctica n4.-Configuracin de la Raspberry como servidor DHCP..............................................12
4.1.- Instalacin del software servidor DHCP...........................................................................13
4.2.- Configuracin del servicio DHCP....................................................................................13
4.3.- Configuracin de los clientes DHCP................................................................................14
Prctica n5.-Configuracin de la Raspberry como servidor DNS................................................16
5.1.- Instalacin y Configuracin del servicio DNS.................................................................16
5.2.- Raspberry Pi como servidor DNS Maestro......................................................................16
5.3.- Comprobacin del servicio DNS......................................................................................17
Prctica n6.-Configuracin de la Raspberry como Puerta de Enlace...........................................19
6.1.- Configuracin bsica de la Raspberry como Firewall......................................................20
6.2.- Configuracin de la Raspberry como Punto de Acceso (AP)...........................................21
Prctica n7.-Configuracin de la Raspberry como servidor RADIUS.........................................24
7.1.- Introduccin al servicio RADIUS....................................................................................24
7.2.- Definiciones previas: RADIUS, NAS, WEP, WPA..........................................................25
7.3.- Instalacin y Configuracin de FreeRADIUS..................................................................28
7.3.- Configuracin del punto de Acceso..................................................................................30
Prctica n8.-Configuracin de la Raspberry como unidad de red Network-Attached Storage
(NAS).............................................................................................................................................31
8.1.- Configuracin de la Raspberry como servidor FTP..........................................................32
8.2.- Configuracin de la Raspberry como servidor CIFS/SMB..............................................36
8.3.- Configuracin de la Raspberry como servidor SSHFS....................................................38
8.4.- Configuracin de la Raspberry como servidor NFS.........................................................39
Prctica n9.-Configuracin de la Raspberry como servidor HTTP/HTTPS................................42
9.1.- Creacin de la Entidad Certificadora (CA).......................................................................42
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 3
Usado
5,2G
4,0K
1,3M
0
1,1M
0
706G
32K
Disp
16G
3,8G
1,6G
5,0M
3,8G
100M
159G
3,7G
Uso%
25%
1%
1%
0%
1%
0%
82%
1%
Montado en
/
/dev
/run
/run/lock
/run/shm
/run/user
/home
/media/0520-EB19
/etc/default/keyboard:
[root@raspberry]# nano /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
XKBMODEL="pc105"
XKBLAYOUT="es"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
3) ssh, nos permitir activar por defecto el servicio SSH, de tal forma que dicho servicio se
iniciar automticamente en los siguientes arranques. La activacin SSH es fundamental para
acceder y gestionar remotamente la Raspberry, y poder configurar unidades en red va SSHFS.
Ahora tan slo necesitaremos conocer la direccin IP que tiene asignada la Raspberry: ssh
pi@dirIP_Raspberry_Pi.
4) boot_behaviour, nos permite seleccionar la opcin de arrancar en modo consola o en modo
grfico. Dependiendo de la finalidad para la que la se use la Raspberry convendr ms elegir una
opcin u otra. Por ejemplo, si queremos utilizar la Raspberry como media center, la opcin
idnea es indicar que se desea iniciar en modo grfico (acceso al escritorio o Desktop de
Raspbian). En cambio si vamos a utilizar la Raspberry como servidor, por ejemplo, como almacn
de copias de seguridad, unidad de red NAS o control domtico, no tiene sentido el modo grfico
debido a los recursos que estara consumiendo intilmente; en ese caso seleccionaremos en modo
consola. No obstante, si se elige en modo consola, en cualquier momento se puede acceder al
escritorio o entorno grfico (GUI, Interfaz de Usuario Grfica) ejecutando el comando startx
(por ejemplo, para realizar posteriores configuraciones de la Raspberry puede resultar ms
cmodo acceder a su entorno grfico).
5) expand_rootfs, nos permite agrandar la particin raz del sistema con la finalidad de
aprovechar al mximo la capacidad de la tarjeta SD. Esto es necesario ya que el archivo *.img de
la distribucin Raspbian una vez volcado sobre la tarjeta SD no ocupa todo el espacio disponible,
quedando una buena parte del espacio de la memoria SD sin asignar.
En el caso de querer hacer varias particiones, es recomendable utilizar alguna herramienta
grfica como gparted, una vez ejecutado el comando dd, disponible en cualquier distribucin
GNU/Linux. En el caso de que el software gparted nos informe sobre algn tipo de problema al
redimensionar y gestionar las particiones de la memoria SD, sera conveniente ejecutar previamente
los siguientes comandos:
[root@linux]# e2fsck -f /dev/sdc2 #Debe corresponderse con tu particin raiz Raspbian
[root@linux]# e2fsck /dev/sdc2
[root@linux]# gparted
6) change_pass, cambiar la contrasea raspberry que viene por defecto para el usuario pi.
Para ejecutar comandos de administracin habr que precederlos del comando sudo, o
suplantar al usuario administrador ejecutando sudo su. Tambin es conveniente asignar una
password al usuario administrador root por si ocurriera algn desastre con nuestra cuenta habitual
de usuario. Para ello:
[pi@raspberry]# sudo su
[root@raspberry]# passwd root
Antes de empezar a configurar un servidor DHCP deberemos tener claro que rango de
direcciones IP dentro del rango que tengamos disponible queremos asignar (por ejemplo,
192.168.1.101-240). De igual forma, nos podr interesar que determinadas mquinas (servidores,
equipos NAS, impresoras, etc.) reciban del servidor DHCP siempre la misma direccin IP para dar
un correcto servicio en la red. Dicha asignacin deberemos reflejar igualmente en la configuracin
del servicio. Segn esto, en la configuracin del servicio distinguiremos dos partes:
1) Configuraremos el servidor DHCP para asignar dinmicamente direcciones IP a los clientes que
lo soliciten de manera indiferente a quien haga la solicitud. Segn esto el servidor asignar al
equipo cliente en cuestin la primera direccin IP que tenga libre dentro del rango de asignacin.
2) Configuraremos el servidor DHCP para asignar determinadas direcciones IP a determinadas
mquinas en la red. Para ello necesitaremos conocer las direcciones hardware o direccin MAC de
los equipos clientes DHCP que deseamos que reciban siempre la misma IP. Por ejemplo, para
conocer la MAC de un equipo GNU/Linux tan slo tendremos que ejecutar el comando ifconfig.
[root@servidordhcp]# ifconfig eth0
eth0 Link encap:Ethernet direccinHW e8:03:9a:ba:e9:3c
Direc. inet:192.168.1.1 Difus.:192.168.1.255 Msc:255.255.255.0
Direccin inet6: fe80::c685:8ff:fe1d:d61b/64 Alcance:Enlace
ACTIVO DIFUSIN MULTICAST MTU:1500 Mtrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B) TX bytes:0 (0.0 B)
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 12
INTERFACES=eth0
# INTERFACES=wlan0
# INTERFACES=eth0 wlan0
...
A continuacin editaremos el archivo principal de configuracin del servicio ubicado en
/etc/dhcp3/dhcpd.conf, introduciendo algo similar a lo siguiente:
## PARTE N1 Asignacin dinmica de direcciones IP independiente del solicitante
## Indicamos la direccin de la red o subred con su correspondiente mscara en la que se
encuentra el servidor DHCP
subnet 192.168.1.0 netmask 255.255.255.0 {
## Establecemos el rango de direcciones IP que asignar dinmicamente el servidor
range 192.168.1.101 192.168.1.240;
## Indicamos la direccin IP de la puerta de enlace o gateway, y de los servidores DNS que
deber quedar configurada en los clientes, la mscara de red o subred, y la correspondiente
direccin de broadcast (la direccin IP ms alta de la red o subred)
option routers 192.168.1.254;
option domain-name-servers 8.8.8.8, 195.55.130.247;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
## Establecemos los tiempos (por defecto, y mximo) tras los cuales el cliente tendr que
hacer una renovacin de direccin IP. Si transcurrido ese tiempo, el cliente no solicita
renovacin, el servidor entender que el equipo cliente esta apagado o ya no la requiere, y
ser libre de asignarla a otro cliente que la solicite
default-lease-time 600;
max-lease-time 7200;
## En el caso de que pertenezcamos a un dominio puede indicarse este
option domain-name "iestiemposmodernos.es";
}
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 13
Genmask
0.0.0.0
255.255.255.0
Indic Mtric
UG 0
U
1
Interfaz
eth0
eth0
};
3) Editamos el archivo asociado a la zona aulainformatica.es indicado en la configuracin de la
zona anterior, /etc/bind/maestras/maestra.aulainformatica.es. En el deberemos registrar todos
los equipos pertenecientes al dominio:
[root@servidordns]# mkdir /etc/bind/maestras
[root@servidordns]# nano /etc/bind/maestras/maestra.aulainformatica.es
$TTL 604800
@
IN
SOA localhost. root.localhost. (
2012100501
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
;
@
IN
NS
nameserver
nameserver
IN
A
192.168.1.254 ;Indicaramos la direccin IP de la Raspberry
servidorweb
IN
A
192.168.1.254 ;IP del servidor Web del dominio
www
IN
CNAME
servidorweb ;Definicin de www como alias
aulainformatica.es. IN
MX 10
correo
correo
IN
A
192.168.1.254 ;IP del servidor de correo del dominio
webmail
IN
CNAME
correo
ficheros
IN
A
192.168.1.254 ;IP del servidor de archivos
ftp
IN
CNAME
ficheros ;Alias del servidor de archivos
impresora1
IN
A
192.168.1.250 ;IP de la impresora
; Identificamos a diferentes equipos dentro de varios subdominios
$GENERATE
100-125
equipo$.seccion1
IN
A
192.168.1.$
$GENERATE
200-225
equipo$.seccion2
IN
A
192.168.1.$
Para configurar a la Raspberry como puerta de enlace, tan slo sern necesarias dos cosas:
exit 0
2 Opcin: Editar el archivo /etc/sysctl.conf y descomentar la lnea que hace referencia al
ip_forward:
[root@gw]# nano /etc/sysctl.conf
# Contenido del sysctl.conf:
...
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
exit 0
Disear un firewall para que los equipos clientes de la Intranet puedan conectarse
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 20
nicamente a servicios HTTP, HTTPS y FTP ofrecidos en internet, exceptuando las pginas
de www.youtube.com y www.facebook.com. Adems al equipo de la Intranet con
direccin IP 192.168.2.43 nicamente debemos permitirle el acceso a servicio HTTP, pero
no HTTPS ni FTP:
[root@gw]# nano /etc/rc.local
# Contenido del rc.local. Aadimos las siguientes lneas:
exit 0
Importante!! Para poder implementar esta configuracin la interfaz USB wireless que utilicis
debe soportar alguno de los modos siguientes: mode master/repeater/ad-hoc. En el caso de que
estemos utilizando la interfaz wireless USB aconsejada en la prctica N3, el nico modo soportado
es el ad-hoc.
Para probar su comportamiento como punto de acceso, a continuacin se muestran los
comandos que la configuraran para dar servicio wireless en un red inalmbrica llamada red2,
siendo consecuentes con la figura:
[pi@puntoacceso]# sudo su
[root@puntoacceso]# iwconfig wlan1 mode ad-hoc
[root@puntoacceso]# iwconfig wlan1 essid red2
[root@puntoacceso]# ifconfig wlan1 192.168.2.254
[root@puntoacceso]# iwconfig wlan1 key 12345678
Tras la configuracin anterior, el cliente de la Intranet recibir la configuracin IP
suministrada por el servicio DHCP ofrecido por la Raspberry tras conectarse a la red inalmbrica
red2. El rango de direcciones IP asignadas va DHCP deber ser del mismo rango que la que
tiene la propia Raspberry en su interfaz inalmbrica wlan1 (en el ejemplo, 192.168.2.0/24).
Una vez comprobado su correcto funcionamiento, deberamos crear un script que contenga
los comandos de configuracin anteriores y asegurarnos que se ejecuta al iniciarse la Raspberry.
Una posibilidad sera incluir los comandos de configuracin en el script de arranque /etc/rc.local
tal como hemos hecho con la configuracin del gateway y el firewall, otra crear un script con dichos
comandos y enlazarlo en el directorio /etc/rc2.d, en el caso en que el runlevel sea el de por
defecto (ejecuta el comando runlevel y comprueba antes que se inicia en nivel 2), o una ltima
opcin sera editar el archivo de configuracin /etc/network/interfaces e incluir hay la
configuracin deseada (mirar la prctica N3 para ms informacin relativa a la configuracin de
las interfaces de red).
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 22
protocolo, viendo tambin conceptos relacionados con el mismo, como AAA, NAS, y mecanismos
de proteccin de redes inalmbricas (como WEP y WPA).
Despus instalaremos FreeRADIUS en nuestra Raspberry y la configuraremos como servidor para
que d servicio a los distintos puntos de acceso que pueden encontrarse en la Intranet a la que
pertenece. Obviamente tambin tendremos que configurar el punto de acceso para que funcione
como cliente del servicio ofrecido por la Raspberry. En concreto necesitaremos informar a los
puntos de acceso de la direccin IP de la Raspberry, el puerto por el que da el servicio RADIUS, y
una clave secreta que validar el servidor RADIUS antes de atender una solicitud de autenticacin
procedente de un punto de acceso. Por ltimo, probaremos nuestra nueva configuracin de la red
inalmbrica conectando a dicha red una mquina cliente de la Intranet bajo GNU/Linux o
Windows.
En definitiva, la estructura que vamos a implementar, es una estructura cliente-servidor de
doble nivel. Es decir, el equipo cliente de la Intranet solicita un servicio Wireless al punto de
acceso, y este a su vez hace de cliente para el servidor RADIUS, al solicitarle la comprobacin de
autenticacin en relacin al login y passwords introducidos por el cliente de la Intranet.
7.2.- Definiciones previas: RADIUS, NAS, WEP, WPA.
En este punto introduciremos diversos conceptos cuyo conocimiento es clave para poder
entender cuestiones posteriores de la prctica.
7.2.1) Definicin de RADIUS .
RADIUS (Remote Authentication Dial-In User Server) es un protocolo que nos permite
gestionar la autenticacin, autorizacin y registro de usuarios remotos sobre un determinado
recurso. La tupla autenticacin, autorizacin y registro es ms conocida como AAA, al ser ste su
acrnimo de su denominacin original inglesa Authentication, Authorization, and Accounting.
Veamos a continuacin a qu se refiere cada uno de estos trminos:
Un tipo habitual de credencial es el uso de una contrasea (o password) que junto al nombre
de usuario nos permite acceder a determinados recursos. El nombre de usuario es nuestra identidad,
que puede ser pblicamente conocida, mientras que la contrasea se mantiene en secreto, y sirve
para que nadie suplante nuestra identidad. Otros tipos ms avanzados de credenciales son los
certificados digitales tal como se ha visto en el servicio SSH, para crear usuarios de confianza.
Existen muchos mtodos concretos que implementan el proceso de la autenticacin. Algunos
de ellos, soportados por RADIUS, son:
- Autenticacin de sistema (system authentication), tpica en un sistema Unix, normalmente
realizada mediante el uso del fichero /etc/passwd.
- Los protocolos PAP (Password Authentication Protocol), y su versin segura CHAP (Challenge
Handshake Authentication Protocol), que son mtodos de autenticacin usados por proveedores de
servicios de Internet (ISPs) accesibles va PPP.
- LDAP (Lightweight Directory Access Protocol), un protocolo a nivel de aplicacin (sobre TCP/IP)
que implementa un servicio de directorio ordenado, y muy empleado como base de datos para
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 25
Algunos de los principales protocolos estndar para proporcionar seguridad en redes inalmbricas
IEEE 802.11 son:
WEP (Wired Equivalent Privacy). Fue introducido en 1997 con objeto de proporcionar un
nivel de confidencialidad similar al de las redes cableadas. Usa una clave esttica de 64
128 bits con el algoritmo RC4. Su uso se desaconseja completamente, ya que aunque es muy
fcil de configurar y est muy extendido al ser el primero que surgi, presenta graves fallos
de seguridad.
WPA (Wi-Fi Protected Access) fue creado para corregir los mltiples fallos detectados en el
protocolo WEP. WPA fue diseado por el consorcio Wi-Fi Alliance basndose en un
borrador del estndar 802.11i (es un subconjunto del mismo), y utiliza TKIP (Temporal Key
Integrity Protocol) como protocolo de cifrado que sustituye a WEP sin necesidad de
modificar el hardware existente (podra funcionar actualizando el firmware). En concreto,
WPA sigue usando RC4 como algoritmo de cifrado con claves de 128 bits, pero usa TKIP
para cambiar dinmicamente estas claves. WPA fue diseado para ser usado junto a un
servidor AAA (habitualmente RADIUS), de manera que se le asignan claves distintas a cada
uno de los posibles usuarios. Sin embargo, para entornos domsticos o pequeas oficinas
tambin se puede usar, de forma menos segura, con una nica clave compartida (pre-shared
key, PSK). En este caso hablamos de WPA-PSK.
WPA2 se basa en el nuevo estndar 802.11i, y el cambio ms significativo respecto a WPA
es que usa el protocolo de cifrado AES en lugar de RC4. Mientras que WAP puede
ejecutarse en el hardware que soporte WEP, WAP2 necesita un hardware ms nuevo. Sin
embargo, se sabe que WAP tambin terminar siendo comprometido a medio plazo y por
tanto slo se recomienda como transicin a WAP2.
Otro concepto relacionado con la seguridad en redes inalmbricas que merece la pena
destacar es EAP (Extensible Authentication Protocol). EAP es un marco general de autenticacin, y
no un mecanismo de autenticacin concreto. EAP proporciona algunas funciones comunes y un
mtodo para negociar el mecanismo de autenticacin a usar. Actualmente hay ms de 40 mtodos
distintos. En esta prctica haremos uso del denominado EAP protegido (PEAP) para la
autenticacin de nuestro usuario en la red inalmbrica, ya que los suplicantes, equipos bajo
GNU/Linux o Windows, o un mvil bajo sistema Android soportan PEAP con MSCHAPv2.
7.3.- Instalacin y Configuracin de FreeRADIUS.
En primer lugar instalaremos el software que convertir nuestra Raspberry en un servidor
RADIUS:
[pi@raspberry]# sudo su
[root@raspberry]# apt-get install freeradius
Despus lo configuraremos en tres pasos: A) configuracin de equipos clientes, B) creacin
de cuentas de usuario (login/password) vlidas en la autenticacin, y C) protocolos a usar en el
proceso de autenticacin. Todos los archivos de configuracin necesarios los encontraremos en
/etc/freeradius. En concreto, el archivo principal de configuracin es radiusd.conf, y en este se
encuentran incluidos el resto mediante directivas $INCLUDE, lo que facilita su gestin y
configuracin:
[root@raspberry]# more radiusd.conf | grep '$INCLUDE'
# $INCLUDE line.
$INCLUDE proxy.conf
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 28
$INCLUDE clients.conf
$INCLUDE ${confdir}/modules/
$INCLUDE eap.conf
#
$INCLUDE sql.conf
#
$INCLUDE sql/mysql/counter.conf
#
$INCLUDE sqlippool.conf
$INCLUDE policy.conf
#
This next $INCLUDE line loads files in the directory that
$INCLUDE sites-enabled/
A) Indicaremos al servidor quienes van a ser sus clientes. En concreto, le indicaremos quienes van
a ser nuestros puntos de acceso que van a solicitarle comprobacin de la autenticacin del usuario.
Para ello editaremos en primer lugar el archivo /etc/freeradius/clients.conf y aadiremos lo
siguiente:
[root@raspberry]# nano /etc/freeradius/clients.conf
#client direccin_IP_AP_Cliente {
#
secret = Password_AP_acceso_servicio_RADIUS
#
shortname = alias_AP
#
nastype = other
#}
client 192.168.1.201 {
secret = passap1
shortname = ap1
nastype = other
}
client 192.168.1.202 {
secret = passap2
shortname = ap12
nastype = other
}
# Lo siguiente nos permitira englobar a todos los AP bajo la misma clave de acceso al servicio
client 192.168.1.0/24 {
secret = passap s
shortname = aps
nastype = other
}
B) Daremos de alta cuentas de usuario con las que puedan validarse los usuarios de la red
inalmbrica y as poder acceder al servicio. Aunque existen otro tipo de gestin de cuentas ms
eficiente (p.e. Mediante una BD MySQL), aqu usaremos la ms simple: editar el fichero users.
[root@raspberry]# nano /etc/freeradius/users
# <nombre_cuenta_usuario>
Cleartext-Password := <password_usuario>
#
Reply-Message = "<mensaje personalizado>"
arturo
Cleartext-Password := "1234"
Reply-Message = "Hola, %{User-Name}, Bienvenido!!"
usuw1
Cleartext-Password := "usuwireless1"
Reply-Message = "Hola, %{User-Name}, Bienvenido!!"
de requerirlo, conectarnos a este desde cualquier equipo de la red, descargarlo y llevar a cabo la
instalacin. En este caso, la mquina que nos suministra el software remotamente, se dice que esta
exportando sus archivos al resto de la red, y que hace las funciones de servidor de archivos.
En cambio, al equipo desde el que llevamos a cabo la importacin y que se beneficia de la
informacin proporcionada por el servidor, se denomina cliente.
En definitiva, el uso de nuestra Raspberry como una unidad de red nos garantizara entre
otros beneficios:
1) Evitar redundancia de informacin en la red. Es decir, en una red puede suceder que
varios equipos de sta necesiten consultar ficheros comunes, con la finalidad de llevar a
cabo su trabajo: realizacin de informes, noticias actualizadas, disponibilidad de audio y
vdeo, etc. Una solucin sera realizar tantas copias de la informacin como usuarios
(equipos) la requieran, con los innumerables inconvenientes que ello supone: desperdicio de
espacio al redundar la informacin, adems de poder encontrar posibles problemas de
inconsistencia. Otra solucin sera ubicar toda esa informacin en un nico equipo (o
distribuida entre varios, pero sin redundancia), y que accedan a l todo aquel que lo requiera
para su consulta.
2) Favorecer el mantenimiento y gestin de la red. Permite que todos los usuarios de la red
guarden sus datos en un nodo central, garantizando que desde cualquier equipo de la red
tengan la informacin disponible. Esto puede llevarse al extremo, configurando los equipos
de tal forma que el HOME (/home/<usuario>) de todos los usuarios de una red sea
montado por NFS nuestra Raspberry.
3) Todo lo anterior puede traducirse igualmente, que en una red con mltiples equipos con una
configuracin muy similar, puedan compartir los ficheros de configuracin, ubicndolos en
un nico nodo de la red, lo que favorecera el posterior mantenimiento.
4) Y todo ello nos lo permitira nuestra Raspberry con una consumo de energa elctrica muy
reducido.
dir_IP_Raspberry
Puerto 21
serftp1.raspFTP.es
Auditora: /var/ftp/serftp1
dir_IP_Raspberry
Puerto 21000
serftp2.raspFTP.es
DocumentRoot
Permisos/ACL
/mnt/discoftp/ftp1
/mnt/discoftp/ftp1/privado
/mnt/discoftp/ftp1/publico
/mnt/discoftp/ftp1/subidas
Leer
Leer/Stor
Leer/Escribir
Usuarios: profesor
Grupos: ftpg1 (ftpusu1, ftpusu2)
Cuota : 10MB/12MB - 20 files
/mnt/discoftp/ftp1
/mnt/discoftp/ftp1/privado
/mnt/discoftp/ftp1/publico
/mnt/discoftp/ftp1/subidas
Leer
Leer/Escribir
Leer
Leer/Stor
/mnt/discoftp/anonimo
/mnt/discoftp/anonimo/publico
/mnt/discoftp/anonimo/privado
/mnt/discoftp/anonimo/subidas
Leer
Leer/Escribir
Leer/Stor
/mnt/discoftp/anonimo
/mnt/discoftp/anonimo/publico
/mnt/discoftp/anonimo/privado
/mnt/discoftp/anonimo/subidas
Leer/Stor
Leer/Escribir
Leer/Escribir
Leer/Escribir
Usuarios: profesor
Grupos: ftpg3 (ftpusu5, ftpusu6)
Cuota: 50MB/62MB - 800 files
Auditora: /var/ftp/serftp2
En cuanto a la configuracin del servicio FTP propiamente dicha, en lugar de modificar el archivo
/etc/proftpd/proftpd.conf, crearemos uno propio y lo incluiremos en este:
[root@raspberry]$ nano /etc/proftpd/proftpd.conf
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 33
DefaultRoot ~
<Limit LOGIN>
AllowUser profesor
AllowGroup ftpg3
DenyAll
</Limit>
<Directory /mnt/disco2/anonimo/privado>
<Limit WRITE>
AllowAll
</Limit>
</Directory>
<Directory /mnt/disco2/anonimo/publico>
<Limit WRITE>
AllowAll
</Limit>
</Directory>
<Directory /mnt/disco2/anonimo/subidas>
<Limit WRITE>
AllowAll
</Limit>
</Directory>
<Directory /mnt/disco2/anonimo>
<Limit STOR>
AllowAll
</Limit>
<Limit WRITE>
Denyall
</Limit>
</Directory>
<Anonymous /mnt/disco2/anonimo>
Requirevalidshell off
User anonimo
Useralias anonymous anonimo
<Directory /mnt/disco2/anonimo/privado>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory /mnt/disco2/anonimo/publico>
<Limit WRITE>
AllowAll
</Limit>
</Directory>
<Directory /mnt/disco2/anonimo/subidas>
<Limit STOR>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
</Limit>
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 35
</Directory>
<Directory /mnt/disco2/anonimo>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
</VirtualHost>
Usuarios Permitidos
(LOGIN)
Permisos
recursogeneral
Todos
/mnt/disco2/publico
lectura
recursoespecial
gruposamba
(ususamba1,
ususamba2,
ususamba3)
ususamba3: lectura
/mnt/disco2/privado
ususamba1, ususamba2:
lectura y escritura
Una vez configurado Samba, podemos comprobar si hemos cometido algn error sintctico
al escribir las directivas de configuracin ejecutando testparm. Este comando nos informar en
el caso de que encuentre problemas al procesar alguna de las secciones o recursos compartidos. En
caso de que este correcto, tan slo ser necesario reiniciar el servicio:
[root@raspberry]$ testparm
[root@raspberry]$ /ect/init.d/samba restart
Para conectarse a la unidad de red compartida desde el cliente existen multitud de
alternativas dependiendo del sistema operativo. Por ejemplo:
Por tanto, NFS es un sistema de archivos virtual que permite que en una red bajo
UNIX/GNU Linux podamos compartir la informacin entre todos los equipos que la forman. Se
denomina virtual, porque una vez que hemos montado o conectado a la unidad de red remota, el
usuario del equipo cliente, tiene la impresin de que la unidad con todos sus archivos es propia del
equipo.
El gran inconveniente que presenta este sistema de archivos es que el permiso de acceso a
los recursos compartidos se hace por direccin IP, sin necesidad de autenticarse (login/password) o
de mostrar credenciales (certificado del cliente que asegure que es quien dice ser).
Para evitar confusiones, sera importante recalcar que aunque en la figura anterior de la
impresin de que la estructura de la red sea del tipo cliente-servidor, no es cierto, ya que est
estrategia en realidad es de tipo peer-to-peer, donde todo equipo de la red puede ser cliente y
servidor al mismo tiempo. Es decir, se trata de una estrategia deslocalizada o descentralizada de la
informacin.
Para convertir nuestra Raspberry en un servidor NFS deberemos instalar el software
siguiente:
[root@raspberry]# apt-get install nfs-kernel-server
Aclaracin!! Se puede comprobar que antes de instalar el software anterior, nuestro equipo
servidor no soporta sistema de archivos NFS, y por tanto, no esta preparado para dar dicho servicio:
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 39
Equipos Permitidos
Permisos
/home/arturo/datos
192.168.1.1
192.168.1.2
192.168.2.0/24
/mnt/disco2
Todos
ro (read only)
Mediante el /etc/fstab:
de
la
Raspberry
como
servidor
A continuacin veremos como configurar nuestra Raspberry como servidor Web mediante la
ayuda del software ms afamado en este sentido: Apache. Concretamente la configuraremos para
dar un servicio en modo seguro, HTTPS. Posteriormente haremos uso de l en la ltima parte de las
prcticas correspondiente al control domtico va Web.
[pi@raspberry]# sudo su
[root@raspberry]# apt-get install apache2
Adems para garantizar un servicio seguro confiable por el usuario final, crearemos en
primer lugar una entidad certificadora que se encargar a posterior de certificar que el servicio
HTTPS lo ofrece quien dice ser que lo hace.
nombre de dominio deseado (p.e. miservicio.es), junto con el nombre del equipo correspondiente
(p.e. www.miservicio.es).
Por ltimo, la CA firmar la solicitud anterior generando el correspondiente certificado:
[root@raspberry]# openssl x509 -req -in servercert.p10 -out servercert.pem \
-CA ../ca/cacert.pem -CAkey ../ca/ca.pem -CAcreateserial -days 365
dir_IP_Raspberry
80
443
servicio1.miservidor.es
/var/www/misite1
my-site1.html
dir_IP_Raspberry
443
servicio2.miservidor.es
/var/www/misite2
my-site2.html
Acceso Usuarios
Alias
UserDir (~/myweb)
Annimo
ususeguro1, ususeguro2,
ususeguro3
Annimo con secciones no
annimas (un directorio y un
archivo)
ususeguro1, ususeguro2
otrospdf
/mnt/disco2/pdf
otrospdf
/mnt/disco2/pdf
otrosdoc
/mnt/disco2/doc
Con la finalidad de cumplir las especificaciones anteriores, seguiremos los siguientes pasos
para su correcta configuracin: 1) Crearemos un fichero de configuracin auxiliar en
sites-available (p.e. ejemplo1.conf), 2) habilitaremos el fichero de configuracin anterior, 3)
habilitaremos los mdulos que no estn precargados en la instalacin y que sean necesarios para su
correcto funcionamiento funcionamiento, 4) editaremos el fichero ports.conf para verificar que
Apache escucha por los puertos deseados, dando servicio a ms de un sitio Web bajo la misma IP, 5)
crearemos la base de datos para la autenticacin bsica de usuarios Apache, 6) crearemos el fichero
de usuarios de apache para la autenticacin digest y 7) reiniciaremos el servicio para que surtan
efecto todos los cambios. Se da por hecho que la estructura del sitio Web ya ha sido realizada a
parte.
1) Creacin del fichero de configuracin asociado al servicio que queremos dar:
[root@raspberry]# nano /etc/apache2/sites-available/ejemplo1.conf
# Especificacin del primer virtualhost
<VirtualHost dir_IP_Raspberry:80 dir_IP_Raspberry:443>
ServerName servicio1.miservidor.es
DocumentRoot /var/www/misite1
DirectoryIndex my-site1.html
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 44
Userdir /home/*/myweb
Userdir enabled ususeguro1 ususeguro2 ususeguro3
Userdir disabled
<Directory /home/*/myweb>
Allow from all
</Directory>
SSLEngine on
SSLCipherSuite RSA:+HIGH:+MEDIUM
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/server/servercert.pem
SSLCertificateKeyFile /etc/apache2/server/server.pem
SSLCACertificateFile /etc/apache2/ca/cacert.pem
<Directory /var/www/misite1>
Allow from all
</Directory>
Alias /otrospdf /mnt/disco2/pdf
</VirtualHost>
# Especificacin del segundo virtualhost
<VirtualHost dir_IP_Raspberry:443>
ServerName servicio2.miservidor.es
DocumentRoot /var/www/misite2
DirectoryIndex my-site2.html
Userdir /home/*/myweb
Userdir enabled ususeguro1 ususeguro2
Userdir disabled
<Directory /home/*/myweb>
Allow from all
</Directory>
SSLEngine on
SSLCipherSuite RSA:+HIGH:+MEDIUM
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/server/servercert.pem
SSLCertificateKeyFile /etc/apache2/server/server.pem
SSLCACertificateFile /etc/apache2/ca/cacert.pem
<Directory /var/www/misite2>
Allow from all
</Directory>
Alias /otrospdf /mnt/disco2/pdf
Alias /otrosdoc /mnt/disco2/doc
<Files trabajo.html>
AuthType Basic
AuthName No Annima 1
AuthDBMType SDBM
AuthDigestProvider dbm
AuthDBMUserFile /etc/apache2/control/access.db
Require user access1 access3
</Files>
<Directory /var/www/misite2/clases>
AuthType Digest
AuthName No Annima 2
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 45
AuthDigestProvider file
AuthUserFile /etc/apache2/control/access.dat
Require valid-user
</Directory>
</VirtualHost>
2) Habilitaremos el fichero de configuracin anterior para que sea tenido en cuenta en el prximo
reinicio del servicio:
[root@raspberry]# a2ensite ejemplo1.conf
3) Habilitaremos los mdulos de Apache necesarios para poder ofrecer un servicio seguro (mdulo
ssl) y para permitir que determinados usuarios puedan publicar contenidos Web desde su HOME
(mdulo userdir).
[root@raspberry]# a2enmod ssl
[root@raspberry]# a2enmod userdir
4) Editaremos el archivo ports.conf e incluiremos la directiva NameVirtualHost, al hacer uso de
la misma direccin IP de la Raspberry y puerto (80/443) en ms de un sitio Web habilitado en
Apache:
[root@raspberry]# nano /etc/apache2/ports.conf
NameVirtualHost dir_IP_Raspberry:80
NameVirtualHost dir_IP_Raspberry:443
5) Crearemos la base de datos con los usuarios con permiso para acceder a la seccin no annima
No Annima 1. Para ello haremos uso del comando htdbm el cual nos pedir la password del
usuario que deseamos crear (la opcin -c crea la base de datos, luego hay que quitarla para
aadir nuevos usuarios):
[root@raspberry]# htdbm -TSDBM -c /etc/apache2/control/access.db access1
[root@raspberry]# htdbm -TSDBM /etc/apache2/control/access.db access2
[root@raspberry]# htdbm -TSDBM /etc/apache2/control/access.db access3
6) Crearemos el fichero de usuarios con permiso para acceder a la seccin no annima No
Annima 2 tipo digest. Para ello haremos uso del comando htdbm:
[root@raspberry]# htdigest -c /etc/apache2/control/access.dat No Annima 2 access4
[root@raspberry]# htdigest /etc/apache2/control/access.dat No Annima 2 access5
[root@raspberry]# htdigest /etc/apache2/control/access.dat No Annima 2 access6
7) Por ltimo reiniciaremos el servicio:
[root@raspberry]# /etc/init.d/apache2 restart
Al igual que el servidor DNS Cach, el proxy HTTP Cach almacenar en memoria las
distintas pginas Web solicitadas por los clientes, evitando de esta forma tener que salir a Internet a
buscar los documentos Web en el caso de que los tenga cacheados debido a solicitud previa
equivalente.
Adems el servidor proxy, al mismo tiempo que ofrece el servicio anterior, nos va a permitir:
Controlar tanto desde que equipos clientes se permite el acceso a Internet, como a que
equipos servidores web esta permitida la conexin, como si se tratara de un firewall.
2. Controlar la franja horaria en la que esta permitida el acceso al servicio web.
3. Obligar a los usuarios que hacen uso del servicio a una autenticacin previa.
4. Filtrar URLs y contenidos evitando que los usuarios puedan conectarse a determinados
sitios Web.
1.
5.
Informar mediante ficheros de auditora tanto de los accesos realizados desde los clientes,
como de los contenidos solicitados.
Para ello el proxy ser necesario definir listas de control de acceso (ACLs) mediante la
directiva acl, y posteriormente tomar la decisin de permitir o denegar mediante la directiva
http_access. De manera resumida, destacaramos los siguientes tipos de ACL:
Sintaxis directiva acl: acl nombre-acl tipo-acl descripcin|fichero-descripciones
Sintaxis directiva http_access: http_access allow|deny nombre-acl
Tipo ACL
src
Significado
Ejemplo de ACL
time
TCP/IP entre las diferentes interfaces de red, y habilitaremos la NAT POSTROUTING para que
todos los paquetes que atraviesen a la Raspberry hacia el exterior lo hagan con la direccin de
origen cambiada por la de su interfaz eth0 192.168.1.1. Todo ello puede programarse en el
/etc/rc.local que se ejecuta al arrancar la Raspberry:
[root@raspberry]# nano /etc/rc.local
...
#Aadimos la siguientes lneas:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
exit
b) Para que haga de servidor DNS cach simplemnente haremos lo indicado en la prctica N5 del
siguiente documento, que bsicamente se reduce a dos pasos: instalar bind en la Raspberry, y
configurar en los clientes a la Raspberry como servidor DNS predeterminado.
[root@raspberry]# apt-get install bind9
[root@cliente]# echo nameserver dir_IP_Raspberry > /etc/resolv.conf
c) Para convertir la Raspberry en un servidor DHCP tan slo tendremos que seguir las explicaciones
de la prctica N4 del presente documento. Importante advertir, que para poder asignar direcciones
IP va DHCP dentro de un rango de IPs, debemos haber asignado previamente una de dicho rango a
la propia Raspberry.
d) Para asignar una interfaz de red virtual a la Raspberry a se puede hacer simplemente ejecutando
el correspondiente comando ifconfig eth0:redprivada 192.168.2.1 con el inconveniente que ser
pierde dicha configuracin al reiniciar el equipo, o modificar el archivo de configuracin
/etc/network/interfaces y reiniciar el servicio networking para que surtan efecto los cambios:
[root@raspberry]# ifconfig eth0:redprivada 192.168.2.1
[root@raspberry]# nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
auto eth0:red1
iface eth0:redprivada inet static
address 192.168.2.1
netmask 255.255.255.0
[root@raspberry]# /etc/init.d/networking restart
Aclaracin!! El nombre de la interfaz virtual eth0:nombre puede ser el que uno desee.
Autenticacin
Tamao Cach
Webs no permitidas
N Directorios y
Subdirectorios
Auditoria Cach
Tamao mximo de
archivo a cachear
/var/spool/squid3
3128 y 8088
1GB
32 MB
16/256
128MB
Usuarios permitidos
Equipos permitidos y no
permitidos
Auditoria acceso
www.marca.com
www.sport.es
www.as.com
*youtube*
*porn*
*sex*
cache_log
/var/log/squid3/cache.log
S
usuproxy1, usuproxy2 y
usuproxy3
192.168.2.0/24 a excepcin
del 192.168.2.100
access_log
/var/log/squid3/access.log
http_port 3128
http_port 8088
# Datos de la Cache:
## Ruta absoluta del directorio donde se cachearn los sitios Web visitados, su tamao 1000MB, y
el nmero de directorios (16) y subdirectorios (256)
cache_dir ufs /var/spool/squid3 1000 16 256
## Cantidad de memoria RAM que reservamos para este servicio proxy HTTP (p.e.): 32 MB
cache_mem 32 MB # Cuidado, debe haber un espacio entre el 32 y el MB!!!
## Mximo tamao del archivo que una vez descargado ser cacheado (p.e.): 128 MB
maximum_object_size_in_memory 128 MB
# Archivos de auditora en relacin con los accesos y contenidos visitados:
access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
# Autenticacin de usuarios:
## Mtodo de autenticacin: ncsa_auth, y archivo de usuarios y contraseas: claves.dat
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/claves.dat
## Cantidad de procesos involucrados en la autenticacin
auth_param basic children 5
## Nombre realm identificativo
auth_param basic realm "Raspberry HTTP Proxy - Arturo"
## Periodo de validez de la autenticacin. Trascurrido ese tiempo se requerir de nuevo
auth_param basic credentialsttl 2 hours
# Definicin de Listas de Control de Acceso, ACLs
## Definicin de ACL para asegurar la autenticacin declarada anteriormente
acl passwd proxy_auth REQUIRED
## Definicin de ACLs para controlar el acceso a mquinas
acl todos src all
acl maquina1 src 192.168.2.100
#acl acceso src 192.168.100.0/24
## Definicin de ACLs para filtrar URLs de determinados sitios Web por nombre de dominio:
acl websnopermitidas dstdomain "/etc/squid3/websprohibidas1.dat"
## Defincin de ACLs para filtrar URLs Web segn expresiones regulares:
acl contenidosnopermitidos url_regex "/etc/squid3/websprohibidas2.dat"
# Filtrado en base a las ACLs definidas anteriormente:
http_access deny websprohibidas1
http_access deny websprohibidas2
http_access deny maquina1
http_access allow todos passwd
Una vez configurado el servicio proxy, antes de reiniciar el servicio para que surtan efecto
los cambios, editaremos los ficheros indicados en la configuracin anterior: claves.dat,
websprohibidas1.dat y websprohibidas2.dat.
Respecto al fichero de autenticacin de usuarios claves.dat, haremos uso de la
herramienta software htpasswd, tal como utilizbamos para la autenticacin de zonas no
annimas en Apache. A modo de ejemplo, crearemos a continuacin un fichero que contendr tres
usuarios vlidos (login/password) llamado usuproxy1, usuproxy2 y usuproxy3 (la opcin
-c crea el fichero de usuarios, y por tanto, slo se incluye al crear el fichero para el primer
usuario):
Autenticacin
Tamao Cach
Webs no permitidas
N Directorios y
Subdirectorios
Auditoria Cach
Tamao mximo de
archivo a cachear
/var/spool/squid3
3128
transparent
32 MB
1GB
16/256
128MB
Usuarios permitidos
Equipos permitidos y no
permitidos
Auditoria acceso
No
www.marca.com
www.sport.es
www.as.com
cache_log
/var/log/squid3/cache.log
access_log
/var/log/squid3/access.log
servicio proxy 3128 todos aquellos paquetes TCP/IP que reciba la Raspberry (es el gateway de la
Intranet) y que vayan dirigidos al puerto 80 (-p tcp/udp --dport 80). Despus tan slo nos quedar
comprobar que desde el cliente se puede navegar sin necesidad de una configuracin previa:
[root@raspberry]# iptables -t nat -A PREROUTING -s 192.168.2.0/24 -p tcp --dport 80 \
-j REDIRECT --to-port 3128
[root@raspberry]# iptables -t nat -A PREROUTING -s 192.168.2.0/24 -p udp --dport 80 \
-j REDIRECT --to-port 3128
[root@raspberry]# /etc/init.d/squid3 restart
En la presente prctica se mostrar como configurar un conexin VPN (Red Privada Virtual)
entre nuestro equipo servidor de una Intranet (Raspberry) con un cliente de la Internet. Esto
permitir al cliente externo acceder a cualquier recurso de la Intranet, siempre y cuando no haya
algn firewall que lo evite, y adems de una manera segura.
Antes de que existieran las VPN, la forma ms habitual de acceder a un recurso localizado
en el interior de una Intranet era instalando un software servidor en el equipo al que se deseaba
acceder, y posteriormente configurar en el router de nuestro proveedor de servicios de Internet (ISP)
la correspondiente NAT PREROUTING (redireccionamiento de puertos). Esto ya no es necesario
al configurar una VPN, ya que el cliente externo va a creer que se encuentra dentro de la propia
Intranet, tal como mostraremos al final a travs de su tabla de enrutamiento.
La red privada virtual, se denomina as, ya que har creer tanto al servidor VPN, como a los
clientes VPN, que se encuentran en una nueva Intranet con su propio rango de direcciones IP
privadas (p.e. 172.30.1.0/24), como si estuvieran conectados directamente entre s a travs de un
dispositivo de interconexin (hub, switch, punto de acceso, etc.), cuando en realidad, la conexin
entre todos ellos se realiza a travs de la Internet con multitud de dispositivos de enrutamiento entre
ellos.
Para ello, el software OpenVPN que usaremos en la presente prctica para formar la VPN
crear en los equipos que la forman (servidor y clientes) un nuevo dispositivo de red virtual
(tun/tap) que recibir una direccin IP dentro de la red privada reservada para ello, y permitirn que
se puedan interconectar entre s a travs de un supuesto dispositivo de interconexin virtual. En
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 56
concreto, dependiendo del ambito de la VPN, la interfaz de red virtual deber ser tun (interfaz
network tunel) en el caso de necesitar manejar paquetes con cabeceras del nivel 3 o de la capa red
del modelo TCP/IP, o tap (interfaz network tap) si tan slo necesitamos manejar paquetes de
nivel 2 o de capa de enlace. Segn lo anterior, si la VPN va a establecerse a travs de Internet o una
Intranet con direccionamiento IP haremos uso de un dispositivo tun, en cambio, si la VPN va a
establecerse sin necesidad de direccionamiento IP, en la configuracin del servicio escogeremos
tap.
En concreto, para la prctica que aqu se plantea, se ha escogido la direccin de red/subred
privada 172.30.1.0/24, y dispositivos de red de tipo tun. A la hora de escoger dicha direccin
de red en la prctica, debemos tener cuidado con no entrar en conflicto con ninguna otra direccin
de red privada o intranet correspondientes a las redes privadas asociadas a los propios equipos que
forman parte de la VPN. Por ejemplo, si observamos el esquema de la figura que se presenta al
principio, las direcciones de red 192.168.1.0/24, 192.168.2.0/24 y 192.168.123.0/24 estn siendo
utilizadas para direccionar los equipos que forman las distintas redes privadas reales del esquema.
Por ello, si queremos evitar conflictos con la VPN, la red privada virtual que deseamos crear no
debe volver a usar ninguno de los rangos anteriores.
Respecto a la direccin de red o subred a utilizar para la VPN advertir que la IANA (Internet
Assigned Numbers Authriy) tiene reservados varios rangos de direcciones de red para asignarlos a
redes privadas (el resto de redes de clase A, B o C son de asignacin pblica, con validez en
Internet). En concreto son las siguientes:
Clase y Mscara de red
A (255.0.0.0)
10.0.0.0 10.255.255.255
B (255.255.0.0)
172.16.0.0 172.31.255.255
C (255.255.255.0)
192.168.0.0 192.168.255.255
openssh-server, ser desde el propio cliente quien ejecutar el scp (el usuario ususervidor
debe tener permiso de lectura sobre el contenido de /etc/openvpn):
[root@cliente1vpn]# scp ususervidor@IP_servidor:/etc/openvpn/ca/cacert.crt /etc/openvpn
[root@cliente1vpn]# scp ususervidor@IP_servidor:/etc/openvpn/cliente1/cliente1.key \
/etc/openvpn
[root@cliente1vpn]# scp ususervidor@IP_servidor:/etc/openvpn/cliente1/cliente1cert.crt \
/etc/openvpn
Por ltimo, crearemos el archivo de configuracin del equipo cliente VPN
/etc/openvpn/cliente1.conf. End dicha configuracin deberemos tener en cuenta lo siguiente:
El servidor da el servicio va protocolo udp, por el puerto 1194, tal como tiene
configurado en su archivo de configuracin.
El tipo de dispositivo virtual necesario para comunicarse con el servidor ser tun, tal
como justificamos en la configuracin del servidor VPN.
La solicitud de conexin desde el cliente no se realiza directamente sobre el servidor VPN,
ya que este se encuentra en el interior de una Intranet que es inaccesible de manera directa.
Es decir, la solicitud se realizar sobre la direccin IP pblica que tenga asignada nuestro
router ISP (proporcionado por nuestro Proveedor de Servicios de Internet), que en el
ejemplo propuesto en este caso prctico es 192.168.123.170. Por tanto ser necesario
configurar una NAT prerouting en el router ISP para que redireccione las solicitudes de
conexin recibidas por udp/1194 haca el equipo de la Intranet que hace de servidor VPN
(en el esquema 192.168.1.X+50). Dicha configuracin se ha realizado al comienzo de la
prctica.
user nobody
group nogroup
## Indicamos que los datos de la comunicacin entre cliente y servidor VPN viajarn comprimidos
comp-lzo
## Nivel de verbosidad: cantidad y tipo de mensajes de informacin que aparecern por pantalla
verb 4
Por ltimo, haremos la solicitud de conexin mediante la ayuda del archivo de configuracin
creado:
[root@cliente1vpn]# openvpn --config /etc/openvpn/cliente1.conf
Para comprobar el correcto funcionamiento de la VPN, deberemos advertir cambios
producidos en la tabla de enrutamiento del equipo cliente de la VPN, ya que deben aparecer nuevas
reglas de enrutamiento necesarias para que el equipo cliente sepa como alcanzar las Intranet
privadas reales a travs del servidor VPN. A continuacin se muestran las tablas antes y despus de
establecer la conexin con la VPN:
[root@cliente1vpn]# route -n (antes de iniciar la conexin VPN)
Destino
Gateway
Mscara
Flag
192.168.100.0
0.0.0.0
255.255.255.0
U
0.0.0.0
192.168.100.110
0.0.0.0
UG
Mtrica
0
0
Interfaz
eth0
eth0
Mtrica
0
0
0
0
0
Interfaz
tun0
tun0
tun0
eth0
eth0
Mtrica
0
0
0
0
1000
0
Interfaz
tun0
tun0
tun0
eth0
tun0
eth0
cliente1
IN
bajo el cual cuando un usuario trata de iniciar sesin desde un equipo cliente dentro
dominio, el login y password introducidos se debern corresponder con el nombre de
usuario y contrasea de una cuenta del sistema GNU/Linux Raspbian que se habr tenido
que haber creado previamente.
domain logons: Habilita a nuestro equipo como servidor de autenticacin del dominio.
local master: Configura a nuestro equipo servidor.
domain master: Configura a nuestro equipo servidor como controlador del dominio.
preferred master: Configura al servidor como preferente.
os level: Nivel de control de acceso.
logon path: Ruta de red donde se almacenarn los perfiles de los usuarios del dominio.
Cuando un usuario se autentifica se cargar en el equipo cliente el perfil que tenga
almacenado en esta ubicacin. De igual forma, cuando un usuario cierra sesin, todas las
modificaciones producidas en su perfil se almacenarn en la ruta indicada.
logon drive: Letra de la unidad de red que se auto configurar en los equipos clientes una
vez autentificados los usuarios. A travs de dicha unidad los usuarios accedern, por
ejemplo, a su HOME dentro servidor GNU/Linux Raspbian.
logon home: Ruta de la unidad de red especificada en la directiva logon drive.
logon script: Nombre del script que deber encontrarse dentro del recurso NETLOGON, y
que ser ejecutado cuando los usuarios inicien sesin.
add machine script: Script de creacin de mquinas dentro del dominio.
Haciendo uso de las directivas de configuracin anteriores, la seccin [global] debera tener
al menos las siguientes directivas configuradas adecuadamente, para lo cual habr que aadir
aquellas directivas que no aparezcan, descomentar aquellas que lo estn (quintando la # que le
precede) o modificar el valor que tengan asignado:
[root@raspberry]# nano /etc/samba/smb.conf
[global]
workgroup = intranet.es
netbios name = server-intranet
server string = Raspberry PDC
wins support = yes
dns proxy = yes
name resolve order = wins host lmhosts bcast
security = user
domain logons = yes
os level = 64
local master = yes
domain master = yes
preferred master = yes
logon path = \\%N\%U\profile
logon drive = H:
logon home = \\%N\%U
logon script = logon.bat # Habr que generarlo dentro del recurso compartido [netlogon]
add machine = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s
/bin/false %u
# Resto de directivas de la seccin [global]
Por otro, para que surta efecto todo lo anterior, habr que habilitar el los siguientes recursos
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 67
Adems habr que habilitar la seccin [netlogon] que igualmente viene preconfigurada
correspondiente al recurso compartido donde se almacenar todo aquello que queramos que
afecte a los usuarios que se autentifican sobre el dominio:
Despus crearemos una cuenta de usuario que pueda utilizarse para autenticarse al iniciar
sesin desde un equipo cliente del dominio. Para ello, primero crearemos la cuenta de usuario en el
sistema para que tenga su propio directorio [home], y luego la daremos de alta en Samba (le
asignaremos una shell falsa, -s /bin/false en el caso de que deseemos evitar su acceso va SSH).
Por ejemplo, para una cuenta de usuario llamada usudominio1:
[root@raspberry]# useradd -m -d /home/usudominio1 [-s /bin/false] usudominio1
[root@raspberry]# passwd -l usudominio1
[root@raspberry]# smbpasswd -a usudominio1
webmail
IN
Nos preguntarn que tipo de servicio SMTP que queremos ofrecer: servicio local/interno,
servicio asociado a sitio de Internet o servicio de un sitio de Internet dependiente de otro
servidor SMTP principal o smarthost. Contestaremos Sitio de Internet, ya que nuestro
servidor SMTP va a dar un servicio de manera independiente, y con la posibilidad de
ofrecerlo en Internet si el nombre de dominio es registrado de manera pblica, configurado
el MX y redireccionando el puerto 25/tcp del servicio SMTP de nuestro router ISP hacia el
equipo servidor del dominio (en este caso nuestra Raspberry).
Despus nos preguntar por el nombre del dominio cualificado (FQDN) al cual va dar el
servicio SMTP. Indicaremos servidormail1.es o servidormail2.es, dependiendo si
estamos configurando el primer servidor o el segundo.
listen = *
...
Por ltimo, antes de reiniciar el servicio dovecot para que surtan efecto los cambios en la
configuracin, segn la configuracin anterior cada uno de los usuarios que vayan a usar el servicio
de correo deber disponer del directorio y archivo indicados en la directiva mail_location. Por
ejemplo, si en el equipo servidor del primer dominio, quisiramos crear una cuenta de correo
llamada usuario1@servidormail1.es haramos lo siguiente, dependiendo de si queremos que dicha
cuenta de usuario tenga una shell vlida para poder iniciar sesin, por ejemplo va SSH, o con una
shell falsa para evitar posibles problemas de seguridad:
[root@servidorimap]# useradd -m -d /home/usuario1 -s /bin/bash usuario1
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 75
NameVirtualHost 192.168.1.254:80
<VirtualHost 192.168.1.254:80>
DocumentRoot /usr/share/squirrelmail
ServerName webmail.servidormail1.es
</VirtualHost>
...
Aclaracin!! La directiva NameVirtualHost tan slo ser necesaria si el servidor Web Apache ya
esta sirviendo otro sitio Web bajo la misma direccin IP y el mismo puerto 192.168.1.254:80. Es
decir, esta directiva advierte a Apache, que en el caso de se hayan definido ms de un VirtualHost
con la misma direccin IP y el mismo puerto, debe fijarse en el ServerName de la URL solicitada
para saber que sitio Web debe servir. Esta directiva slo debe aparecer una vez por IP y puerto,
independientemente del nmero de VirtualHost habilitados en la configuracin que lo cumplan.
Por ello, al tener que definirse una sola vez, por cuestin de organizacin, sera mejor colocar esa
directiva en caso de ser necesaria en el fichero /etc/apache2/ports.conf.
2.2) En el caso de que queramos ofrecer este servicio de manera segura mediante el protocolo
HTTPS a travs del puerto 443, modificaremos el VirtualHost anterior, habiendo seguido
previamente los pasos ya explicados a lo largo de la prctica N9. Segn lo visto en esa prctica, lo
primero ser crear un certificado para el nuevo servicio que vamos a ofrecer (suponemos que la
entidad certificadora ya fue creada en la prctica N9 correspondiente a HTTP/HTTPS):
Importante!! Repasar lo visto ya en la prctica N9 correspondiente a configurar la Raspberry
como servidor HTTP/HTTPS.
[root@servidorwebmail]# mkdir /etc/apache2/webmail
[root@servidorwebmail]# cd /etc/apache2/webmail
[root@servidorwebmail]# openssl genrsa -out webmail.pem 2048
[root@servidorwebmail]# openssl req -new -key webmail.pem -out webmailcert.p10
Importante!! Entre los datos importantes introducidos al crear la solicitud de certificado del
servicio Webmail, el ms importante es el Common Name, el cual debe corresponderse con el
nombre de dominio cualificado (FQDN) asociado al servicio web que se quiere dar. Es decir,
deber coincidir con el valor asignado a la directiva ServerName de configuracin de Apache.
En este caso, para el primer servidor de correo, webmail.servidormail1.es tal como ya se defini
previamente en el servicio DNS.
Ahora la CA firmar la solicitud anterior generando el correspondiente certificado:
[root@servidorwebmail]# openssl x509 -req -in webmailcert.p10 -out webmailcert.pem \
-CA ../ca/cacert.pem -CAkey ../ca/ca.pem -CAcreateserial -days 365
[root@servidorwebmail]# nano /etc/apache2/sites-available/servicio-webmail.conf
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 77
NameVirtualHost 192.168.1.254:443 # Solo se indicar si es necesaria
<VirtualHost 192.168.1.254:443>
DocumentRoot /usr/share/squirrelmail
ServerName webmail.servidormail1.es
SSLEngine on
SSLCipherSuite RSA:+HIGH:+MEDIUM
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/webmail/webmailcert.pem
SSLCertificateKeyFile /etc/apache2/webmail/webmail.pem
SSLCACertificateFile /etc/apache2/ca/cacert.pem
<Directory /usr/share/squirrelmail>
Allow from all
</Directory>
</VirtualHost>
Aclaracin!! La directiva NameVirtualHost tan slo ser necesaria si el servidor Web Apache ya
esta sirviendo otro sitio Web bajo la misma direccin IP y el mismo puerto 192.168.1.254:443.
Es decir, esta directiva advierte a Apache, que en el caso de se hayan definido ms de un
VirtualHost con la misma direccin IP y el mismo puerto, debe fijarse en el ServerName de la
URL solicitada para saber que sitio Web debe servir. Esta directiva slo debe aparecer una vez por
IP y puerto, independientemente del nmero de VirtualHost habilitados en la configuracin que lo
cumplan. Por ello, al tener que definirse una sola vez, por cuestin de organizacin, sera mejor
colocar esa directiva en caso de ser necesaria en el fichero /etc/apache2/ports.conf.
3) Tras configurar el nuevo sitio Web seguro o no, asociado al servicio Webmail de squirrelmail,
tan slo nos quedar habilitar el sitio Web anterior, habilitar el mdulo ssl en el caso de querer dar
el servicio en modo seguro y reiniciar Apache para que surtan efecto los cambios en la
configuracin.
[root@servidorwebmail]# a2ensite servicio-webmail.conf
[root@servidorwebmail]# a2enmod ssl
[root@servidorwebmail]# /etc/init.d/apache2 restart
Ahora ya deberamos poder visualizar nuestro sitio web Webmail, si desde un equipo cliente
iniciamos un navegador Web, que tenga configurado como servidor DNS la direccin IP del equipo
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 78
Tal como se podr observar, con la opcin 1 del men principal configuraremos las
preferencias, con la 2 los datos relativos al equipo servidor, y al propio servicio, y as con el resto
de opciones. A continuacin se detalla alguna de las opciones ms importantes:
Opcin n2 del men principal: nos permite informar a squirrelmail sobre los servidores
SMTP y IMAP. De este submen elegiremos la opcin A para configurar las opciones del
protocolo IMAP. En concreto le informaremos de que el software que estamos utilizando
como servidor IMAP es dovecot.
Opcin n3 del men principal: nos permite personalizar los nombres que se asignarn a
los enlaces de la aplicacin Web que nos permiten ver los mensajes enviados, borradores o
enviados a la basura.
Opcin n10 del men principal: nos permite personalizar el idioma de la aplicacin
Webmail. En el caso de que queramos que el idioma sea el espaol deberemos seleccionar
el idioma es_ES, adems de configurar el sistema mediante los comandos
dpkg-reconfigure locales y locale-gen es_ES.
Por ltimo, tas slo ser necesario comprobar que se pueden enviar perfectamente los
correos entre usuarios de un dominio y otro tras iniciar sesin con el nombre de usuario
correspondiente (p.e. usuario1 y su correspondiente password del sistema).
Nos garantiza 100% de compatibilidad con todos los mdulos ya existentes para Arduino.
Esto nos permite desarrollar entornos muy verstiles.
Nos permite poder trabajar con seales analgicas procedentes de cualquier sensor
(temperatura, humedad, velocidad del viento, etc.) de que dispongamos.
Nos permite reutilizar la infinidad de programas que ya hay desarrollados para sistemas
Arduino.
El lenguaje de programacin utilizado para el desarrollo de aplicaciones es C, un lenguaje
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 82
El nico inconveniente que presenta de momento es el coste, ya que este shield cuesta
actualmente ms que la propia Raspberry.
Como puede observarse, el puerto GPIO esta compuesto por 26 patillas, de las cuales
algunas de ellas no son configurables (patillas de alimentacin y de referencia o masa, patillas de
comunicacin con elementos externos como UART o SPI, etc.) y otras que s que lo son (las patillas
de propsito general GPIO pueden configurarse como entrada o salida).
A la hora de gestionar el GPIO existen numerosas alternativas: en lenguaje C, Java, Phyton,
etc. Pero a mi parecer, la forma ms sencilla de gestionarlo es mediante comandos especficos de la
shell del sistema, ofrecindonos la opcin de poderse ejecutar directamente desde una consola o
terminal del sistema o embeber en cualquiera de los lenguajes de programacin que existen. En el
ejemplo que se mostrar a continuacin, se ha desarrollado una sencilla aplicacin Web en PHP que
permite ejecutar comandos del sistema de gestin del GPIO desde un cliente Web.
Antes de empezar a controlar elementos externos, habr que instalar el programa o librera
wiringPi, para lo que seguiremos los siguientes pasos:
[pi@raspberry]# sudo su
[root@raspberry]# apt-get update; apt-get upgrade
[root@raspberry]# apt-get install git-core
[root@raspberry]# exit #No requerimos ser el root para la gestin GPIO mediante wiringPi
[pi@raspberry]# git clone git://git.drogon.net/wiringPi #Descargamos la librera necesaria
[pi@raspberry]# cd wiringPi
[pi@raspberry]# git pull origin #Comprobacin de que esta actualizado
[pi@raspberry]# ./build
Para comprobar que se ha instalado correctamente podemos ejecutar los siguientes
comandos, que nos dar informacin del estado de cada uno de los puertos GPIO:
[pi@raspberry]# gpio readall
Adems, si queremos hacer algunas pruebas de gestin del GPIO, podramos conectar
alguna resistencia y diodo led entre cualesquiera de los puertos de propsito general del GPIO y
masa o GND, configurar a continuacin el correspondiente puerto como salida (out), y encender y
apagar el diodo led en funcin de si la salida esta a 1 o 0 respectivamente. Por ejemplo, si
suponemos que hemos colocado una resistencia de 330 en serie con un diodo emisor de luz (LED)
entre el pin 22 (GPIO 25) y el pin 20 (GND/masa) y deseamos controlar su encendido mediante
comandos de la shell:
[pi@raspberry]# gpio -g mode 25 out #Definimos el pin 22, GPIO 25, como salida
[pi@raspberry]# gpio -g write 25 1 #Ponemos en estado alto el GPIO 25, encendiendo el LED
[pi@raspberry]# gpio -g write 25 0 #Ponemos en estado bajo el GPIO 25, apagando el LED
Importante!! Como puede advertirse de los ejemplos anteriores, para hacer referencia a un pin o
puerto del GPIO no se hace uso de su nmero o posicin (p.e. pin 22), sino a su identificador (p.e.
GPIO 25).
domtico), y la subpgina Web (control1.php) encargada de interactuar con el usuario para permitir
la gestin domtica podra ser el que se muestra a continuacin:
Importante!! Mediante la ayuda de la funcin PHP shell_exec() ejecutaremos el comando del
sistema gpio que controla el estado de los puertos de entrada y salida del GPIO de la Raspberry.
En concreto, a modo de ejemplo se puede controlar el estado de un led que haya conectado en el
puerto GPIO25, pero podra ser el estado de una bombilla a travs de un rel o cualquier otro
dispositivo elctrico.
[root@raspberry]# nano /var/www/web/index.php
<? session_start(); ?>
<style type="text/css">
fieldset.f1 { width: 50%; margin-top: 100px; margin-left: auto;
margin-right: auto; background-color: yellow; text-align: center; }
fieldset.f2 { width: 50%; margin-left: auto; margin-right: auto;
background-color: black; color: white; text-align: center; }
</style>
<fieldset class="f1">
<legend>Control de Acceso</legend>
<form name="form1" method="post" action="">
Nombre: <input type="text" name="nombre" size="20"><br><br>
Password: <input type="password" name="pass" size="20"> <br><br>
<input type="submit" name="boton" value="Enviar">
</form>
</fieldset>
<?
if ( isset($_POST['boton']) ) {
if ( $_POST['nombre'] == "arturo" && $_POST['pass'] == "1234" ) {
$_SESSION['comprobacion'] = "ok";
$_SESSION['nombreusu'] = $_POST['nombre'];
header('Location: control1.php');
}
else {
$_SESSION['comprobacion'] = "error";
?>
<br>
<fieldset class="f2">
<legend style="color: red;">Respuesta ante la autenticacion</legend>
Lo sentimos ... Tu login o password son falsos.
</fieldset>
<?
}
unset($_POST['boton']);
} ?>
[root@raspberry]# nano /var/www/web/control1.php
<? session_start(); ?>
<style type="text/css">
fieldset.f3 { width: 100%; margin-top: 0px; margin-left: auto; margin-right: auto;
background-color: lightblue; color: brown; text-align: right; }
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 86
}
unset ($_POST['boton']);
}
?>
<br><br>
<hr><a href="index.php">VOLVER PAGINA INICIO</a>
Y para probarlo:
[root@raspberry]# g++ -lrt -lpthread ejemplo1.cpp arduPi.o -o ejemplo1
[root@raspberry]# ./ejemplo1
Ejemplo 2) Encender/Apagar dos leds externos conectado en el Pin2 y Pin6 del Arduino
shield peridicamente: cada ciclo ser de 4 segundos de los cuales, la mitad del ciclo
permanecer encendido el primero y apagado el segundo, y la otra mitad se invertir el estado
de estos.
[root@raspberry]# nano ejemplo2.cpp
// Incluimos la librera arduPi
#include "arduPi.h"
// Necesario para la comunicacin serie
SerialPi Serial;
// Necesario para aceder a GPIO: pinMode, digitalWrite, digitalRead, i2C
functions
WirePi Wire;
//Necesario para SPI
SPIPi SPI;
// Definimos los pines 2 y 6 del Arduino shield como salidas
int ledPin2rojo = 2;
int ledPin6verde = 6;
void setup()
{
pinMode(ledPin2rojo, OUTPUT);
pinMode(ledPin6verde, OUTPUT);
}
// Programamos lo que ocurrir en cada ciclo
void loop()
{
digitalWrite(ledPin2rojo, HIGH);
digitalWrite(ledPin6verde, LOW);
delay(2000);
digitalWrite(ledPin2rojo, LOW);
digitalWrite(ledPin6verde, HIGH);
delay(2000);
}
// Editamos el programa principal
int main (){
setup();
while(1){
loop();
}
return (0);
}
Y para probarlo:
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 90
}
if ( valor2 == HIGH && valor1 == LOW )
{
digitalWrite(ledPin2rojo, HIGH);
digitalWrite(ledPin3verde, LOW);
system(echo `date +%H:%M_%d/%m/%y` Led Rojo ON >> auditoria.dat);
}
// Editamos el programa principal
int main (){
setup();
while(1){
loop();
}
return (0);
}
Y para probarlo:
[root@raspberry]# g++ -lrt -lpthread ejemplo3.cpp arduPi.o -o ejemplo3
[root@raspberry]# ./ejemplo3
Triac Optoacoplado
Rel de estado slido
VRED
230V/50Hz
1) Para garantizar una comunicacin segura, crearemos un nuevo sitio Web en Apache basado en un
VirtualHost que escuche por el puerto 443 (p.e. ejemplo-domotico1.conf). Por ello, lo primero ser
crear un certificado para el nuevo servicio que vamos a ofrecer (suponemos que la entidad
certificadora ya fue creada en la prctica N9 correspondiente a HTTP/HTTPS):
Importante!! Repasar lo visto ya en la prctica N9 correspondiente a configurar la Raspberry
como servidor HTTP/HTTPS.
[root@raspberry]# mkdir /etc/apache2/server2
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 92
[root@raspberry]# cd /etc/apache2/server2
[root@raspberry]# openssl genrsa -out server2.pem 2048
[root@raspberry]# openssl req -new -key server2.pem -out server2cert.p10
Importante!! Entre los datos importantes introducidos al crear la solicitud de certificado del
servidor Web, el ms importante es el Common Name, el cual debe corresponderse con el nombre
de dominio cualificado (FQDN) asociado al servicio web que se quiere dar. Por ejemplo,
domotica.miservidor.es. Por ello, configuraremos el servicio DNS dando de alta la zona o
nombre de dominio deseado (p.e. miservidor.es), junto con el nombre del equipo correspondiente
(p.e. domotica.miservidor.es).
Ahora la CA firmar la solicitud anterior generando el correspondiente certificado:
[root@raspberry]# openssl x509 -req -in server2cert.p10 -out server2cert.pem \
-CA ../ca/cacert.pem -CAkey ../ca/ca.pem -CAcreateserial -days 365
[root@raspberry]# nano /etc/apache2/sites-available/ejemplo-domotico1.conf
<VirtualHost dir_IP_Raspberry:443>
ServerName domotica.miservidor.es
DocumentRoot /var/www/domotica1
DirectoryIndex index.php
SSLEngine on
SSLCipherSuite RSA:+HIGH:+MEDIUM
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/server2/server2cert.pem
SSLCertificateKeyFile /etc/apache2/server2/server2.pem
SSLCACertificateFile /etc/apache2/ca/cacert.pem
<Directory /var/www/domotica1>
Allow from all
</Directory>
</VirtualHost>
Tras configurar el nuevo sitio Web seguro, tan slo tendremos que habilitarlo y reiniciar el
servicio para que surtan efecto los cambios:
[root@raspberry]# a2ensite ejemplo-domotico1.conf
[root@raspberry]# /etc/init.d/apache2 restart
2) Para poder progamar nuestro sitio Web en PHP, deberemos previamente instalar la librera en
Apache que le permite interpretar cdigo PHP:
[root@raspberry]# apt-get install libapache2-mod_php5
3) Para evitar que intrusos de manera malintencionada controlen los dispositivos externos que se
desean controlar con la aplicacin, ser necesario autenticarse. Un ejemplo bsico de cdigo PHP
para la pgina index.php sera el siguiente, donde mediante variables de sesin $_SESSION
almacenamos la correcto autenticacin del usuario y redireccionamiento hacia el resto de las
pginas del sitio Web (p.e. control1.php):
[root@raspberry]# nano /var/www/domotica1/index.php
Configuracin de la Raspberry Pi como estacin de Servicios Arturo Martn Romero 93
unset ($_POST['boton']);
}
?>
<br><br>
<hr><a href="index.php">VOLVER PAGINA INICIO</a>
Donde el contenido de el contenido de los programas encender y apagar sera:
[root@raspberry]# nano encender.cpp
// Incluimos la librera arduPi
#include "arduPi.h"
// Necesario para la comunicacin serie
SerialPi Serial;
// Necesario para aceder a GPIO: pinMode, digitalWrite, digitalRead, i2C
functions
WirePi Wire;
//Necesario para SPI
SPIPi SPI;
// Definimos el pin 2 como pin de salida: deber haber una resistencia (p.e.
370) y el anodo del led del triac optoacoplado
int optoPin2 = 2;
void setup()
{
pinMode(optoPin2, OUTPUT);
}
// Programa principal
int main (){
setup();
//Encendemos la bombilla al excitar el led del triac optoacoplado
digitalWrite(ledPin2rojo, HIGH);
return (0);
}
digitalWrite(ledPin2rojo, LOW);
return (0);
}