Upload
daniel-exposito-mateo
View
279
Download
0
Embed Size (px)
DESCRIPTION
Manual casero para instalación de Lubuntu (Linaro) en Radxa Pro.
Citation preview
Radxa Rock Pro: Linaro Server Manual casero de instalación
Radxa Rock Pro: Linaro Server Manual casero de instalación de un servidor Linaro en Radxa Rock Pro
Por Daniel Expósito Mateo. Última actualización: 10/06/2015 03:46:20
Índice de contenido
0. Introducción
1. Instalación de Ubuntu Server en tarjeta Micro SD.
2. Acceso SSH
3. Configurar una dirección IP estática a la conexión ethernet
4. Habilitar conexión Wifi
5. Actualizar el sistema operativo
6. Cambiar la hora del sistema
7. Establecer contraseña del usuario root
8. Crear un usuario nuevo y borrar el usuario por defecto
8.1. Crear el nuevo usuario
8.2. Borrar el usuario por defecto
9. Hacer un backup del sistema (a lo bruto)
10. Ver programas instalados
11. Instalar MySQL
11.1. Cambiar contraseña de “root” de MySQL
11.2. Crear usuario de MySQL
11.3. Habilitar MySQL para uso remoto
11.4. Cambiar el puerto de MySQL
11.5. MySQL Workbench: Cliente de MySQL
12. Instalar Apache2
12.1. Deshabilitar el listado de directorios web
1 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
12.2. Permisos óptimos para /var/www.
12.3 Configurando Apache
13. Instalar SFTP
13.1. Crear usuario SFTP
13.2. Instalar el servidor SFTP
13.3. Enjaular usuario SFTP
13.4. Enjaular usuario SFTP para acceder a /var/www
14. Instalar PHP.
14.1. Configurando PHP.
15. Instalar cliente de DNS dinámico (ddclient)
16. Usar múltiples dominios en el servidor
17. Instalar firewall UFW
17.1. Uso del firewall
18. Redimensionar partición de la tarjeta SD
19. Hacer backups de datos usando cron
19.1. Usando crontab
0. Introducción
Este documento está basado en mi experiencia instalando y configurando en la Radxa Pro. Me considero un novato en Linux, y todo lo escrito aquí ha sido fruto de muchas horas consultando en internet. Por tanto, seguramente la información contenida es muy mejorable, pero me sirve como punto de partida y referencia para futuras instalaciones en la Radxa Pro. Por favor, si ves errores o conoces un método mejor para hacer algo contenido aquí, no dudes en contactar conmigo y haré los cambios en beneficio de todos los que consultemos este documento.
1. Instalación de Ubuntu Server en tarjeta Micro SD.
Instalaremos el sistema operativo en una tarjeta Micro SD para conservar en NAND (memoria interna de la tarjeta) el sistema Android que viene por defecto. Esto puede ser una buena idea
2 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
porque nos permite hacer copias de las tarjetas y usarlo como un sistema de backup bastante sencillo.
El primer paso consiste en descargar la imagen más reciente del sistema operativo. Hay que tener cuidado de elegir bien la imagen, teniendo presente el tipo de tarjeta Radxa Rock que se posea (las imágenes no son iguales para Rock Lite y Rock Pro, por ejemplo), y que sea para instalar en SD y no en NAND. Las imágenes se encuentran en el siguiente enlace:
http://radxa.com/Rock/prebuilt_images
En el momento de redactar este documento, está disponible la versión Ubuntu (Linaro) 14.04 Server (141030) como la más reciente.
Ahora, necesitaremos una tarjeta Micro SD disponible, un lector de tarjetas para el PC y el programa necesario para añadir la imagen a la tarjeta. El programa se llama Win32 Disk Imager (para Windows), y puede descargarse aquí:
http://sourceforge.net/projects/win32diskimager/
La instalación es sencilla, en el campo Image File seleccionamos el archivo con extensión .img de la imagen y pulsamos el botón Write. Esto copiará la imagen en la tarjeta Micro SD.
Una vez terminado, insertamos la tarjeta en la Radxa Rock. Nos aseguramos de que tiene el cable HDMI y el de red conectados y la encendemos.
Nota: Si por un casual sigue cargando el sistema operativo desde NAND y no desde la tarjeta Micro SD, entonces habrá que configurar la Radxa Rock para ello. Esto se sale de este manual en este momento, la documentación oficial está aquí: http://radxa.com/Rock.
Como es la versión Server del sistema operativo, sólo obtendremos el prompt (línea de comandos) y estará listo para usarse.
Recordemos que usuario/contraseña por defecto son rock/rock respectivamente, aunque se identifica automáticamente como usuario root, que no tiene asignada ninguna contraseña.
2. Acceso SSH
Si nuestro router tiene habilitado el protocolo DHCP, al estar conectada la Radxa Rock con el cable de red, conseguirá automáticamente una dirección IP que le asigna el router. Con ello, conseguirá acceso a nuestra red interna, y por tanto, a internet. Esto nos posibilita establecer una conexión SSH con nuestra Radxa Rock, que no es otra cosa que poder manejar la Radxa Rock desde otro ordenador a través de un terminal que nos muestra el prompt, como si estuviéramos trabajando directamente en ella. Esto es muy recomendable porque al contar únicamente con la línea de comando en la Radxa Rock, es más cómodo trabajar con ella como
3 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
si fuera una ventana en un entorno de trabajo con ratón, navegador web, etc, sobretodo para seguir este manual para copiar y pegar todas las instrucciones que vendrán a continuación.
En primer lugar, desde la Radxa Rock necesitaremos saber qué dirección IP le ha asignado el router. Para ello, en la línea de comando escribiremos lo siguiente:
ifconfig
Esto nos mostrará las interfaces de redes configuradas en ese momento. Nos interesa la que se llama eth0, que corresponde a la conexión por cable ethernet. Nos dará un parámetro llamado Link encap con cuatro números separados entre puntos parecido a esto: “192.168.0.50”. Esa será la dirección IP asignada a la Radxa Pro, que al ser obtenida dinámicamente mediante DHCP, podría cambiar si reiniciamos la Radxa Pro, por ejemplo, así que más tarde le asignaremos una IP fija que no varíe.
Para establecer una conexión DHCP, lo mejor es contar con una aplicación cliente para nuestro PC, siendo el más conocido (en Windows) uno llamado PuTTY, que podemos descargarlo de manera gratuita aquí: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. Ni siquiera hay que instalarlo, lo ejecutamos y listo, añadimos la dirección IP que obtuvimos antes (el puerto por defecto es 22) y pulsamos en Open. Se nos abrirá una ventana y, si todo ha ido bien, nos pedirá login y contraseña, que recordemos que en la Radxa Pro, por defecto es rock para ambos. Ahora podemos trabajar con la Radxa Pro desde nuestro PC, incluso podríamos retirar el cable HDMI y el teclado porque no lo usaremos mucho.
Para acceder a través de otro entorno linux, podemos usar el siguiente comando (asumiendo que la IP es, por ejemplo, 192.168.0.50):
ssh -p 22 192.168.0.150 -l rock
3. Configurar una dirección IP estática a la conexión ethernet
Al usar la Radxa Pro como servidor, no nos conviene que utilizar una dirección IP dinámica, porque si instalamos, por ejemplo, un servidor web para ver desde cualquier parte del mundo y se nos cambia la IP, dejará de tener acceso al exterior. Por lo tanto, es muy recomendable asignarle a la Radxa Pro una IP estática que no varía con los cortes de luz o entre en conflicto con otros dispositivos que obtengan por error la misma IP.
Lo que haremos será editar el archivo de configuración del acceso a internet por cable con este comando:
sudo pico /etc/network/interfaces.d/eth0
Por defecto, contendrá algo así:
4 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
auto eth0 iface eth0 inet dhcp
Y necesitamos que sea algo así (los datos son de ejemplo, habría que sustituirlos por los datos que utilice nuestra red):
auto eth0 iface eth0 inet static
address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.1 dnsnameservers 8.8.8.8 8.8.4.4
El editor de texto pico que hemos usado utiliza Control + x para salir, y como hemos realizado cambios, nos pedirá confirmar que deseamos guardarlos, y el nombre del archivo que lo dejaremos como está.
En la teoría, para que los cambios surtan efecto, necesitamos reiniciar la interface de conexión, sería algo así (no hacer):
sudo ifdown eth0
sudo ifup eth0
Esto iría bien trabajando directamente desde la Radxa Pro, pero como seguramente estaremos trabajando desde SSH, nos desconectaría en el primer comando y no podríamos ejecutar el segundo. Para no estar cambiando a la Radxa Pro, podemos probar un comando para reiniciarla:
sudo shutdown -r now
Si todo ha ido bien, la Radxa Pro se reiniciará, pero recordemos que la IP la hemos cambiado, así que deberemos usar la nueva IP para acceder desde SSH.
4. Habilitar conexión Wifi
Confieso que le he dedicado muchas horas a esto y no he conseguido mantener una conexión Wifi que me funcione bien. Como voy a usar el servidor con una conexión ethernet, dejo este punto para estudiarlo más adelante. Mientras, remito a la documentación oficial: http://radxa.com/Rock/Wireless.
5. Actualizar el sistema operativo
Para empezar bien a trabajar con la Radxa Rock, lo más recomendable es actualizar el sistema operativo para asegurarnos de que está al día. El comando para ello es el siguiente:
5 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
sudo apt-get update
sudo apt-get upgrade
6. Cambiar la hora del sistema
La hora del sistema tiene tela, porque muestra la hora según la franja horaria universal (UTC), así que quizás tengamos la hora correcta, pero el sistema muestra una que no corresponde (porque la franja horaria es diferente). Un ejemplo, si vives en Canarias y son las 22:00 horas, y usamos el siguiente comando:
date
El resultado que daría es este:
Sat Jul 19 21:00:00 UTC 2014
No sale correcto porque está dándonos la hora en otra franja horaria. Para cambiar la franja horaria, el método más fiable y rápido es usar el siguiente comando:
sudo dpkg-reconfigure tzdata
Aparecerá un programa parecido a los de MSDOS y nos hará elegir la ubicación en la que nos encontramos. En el ejemplo de Canarias, habría que elegir:
Atlantic Ocean Canary
Si volviéramos a pedir la hora, saldría algo así:
Sat Jul 19 22:00:00 WEST 2014
Quizás tengamos la zona horaria bien pero la hora sea incorrecta. Para cambiar la hora sería así:
date --set "2015-04-29 1:24"
Las fuentes que seguí son las siguientes:
Web Servidor Debian. Debian administrator.
7. Establecer contraseña del usuario root
El usuario root es el superusuario del servidor, el que puede hacer cualquier cosa en él. Ahora mismo no tiene contraseña y eso es un fallo grave de seguridad, cualquier otro usuario del
6 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
servidor podría cambiar cosas en él, y no conviene. Así que vamos a asignarle una contraseña con el siguiente comando:
sudo passwd root
Nos pedirá que confirmemos la contraseña. Y para ser precavidos, lo mejor es apuntar la contraseña en un papel y guardarlo. A lo largo del documento vamos a tener que establecer diversas contraseñas, y conviene por seguridad que sean diferentes, así que apuntarlas es lo más aconsejable de cara al futuro.
8. Crear un usuario nuevo y borrar el usuario por defecto
Usar el usuario que viene por defecto tampoco es una buena idea de cara a la seguridad. Lo normal es que cada uno utilice su propio usuario, y es recomendable eliminar el usuario por defecto.
8.1. Crear el nuevo usuario
Como primer paso nos vamos a identificar como usuario root para hacer los cambios sin tener problemas de permisos. Se hace simplemente escribiendo:
su
Ahora, podríamos crear el usuario en un solo paso, pero es mejor hacerlo primero por partes para entender lo que hacemos. Lo primero, creamos el usuario. Para este ejemplo usaré mi nombre, aunque es mejor usar algo un poco más complejo o diferente:
useradd daniel
Luego le asignamos una contraseña:
passwd daniel
Todo usuario tiene una carpeta en /home, la creamos así:
mkdir /home/daniel
Y a esa carpeta le asignamos dueño y grupo:
chown daniel:daniel -R /home/daniel
Luego le asignamos permisos:
chmod 755 -R /home/daniel
Y asignamos la carpeta al nuevo usuario:
7 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
usermod -d /home/daniel daniel
El método para hacerlo todo en un solo paso es el siguiente (el grupo debe existir previamente):
useradd -g daniel -d /home/daniel -m -s /bin/bash daniel
Donde g especifica el grupo, d la carpeta home, m crea la carpeta home si no existe, y con s establecemos el shell del usuario, que suele ser /bin/bash y básicamente viene a decir que le permitiremos usar la consola.
Ahora entraremos en el archivo /etc/passwd para asegurarnos de que el usuario se ha creado terminando la línea en /bin/bash en vez de /bin/sh:
pico /etc/passwd
Buscamos el usuario nuevo, y si termina con /bin/sh, lo sustituimos.
Por último, añadiremos el usuario en todos los grupos al que pertenece el usuario “rock”. Para ello, abrimos el archivo /etc/group:
pico /etc/group
Buscaremos las siguientes líneas y añadiremos el usuario. Si el usuario rock está en la línea, lo separamos con una coma. Son las siguientes:
dialout:x:20:rock,daniel cdrom:x:1000:rock,daniel sudo:x:27:daniel audio:x:29:rock,daniel dip:x:1000:rock,daniel video:x:44:rock,daniel plugdev:x:1000:rock,daniel
Guardamos con Control + x.
Fuente seguida:
Habilitar root. Administración de usuarios y grupos. Crear un usuario nuevo y todo lo que ello implica.
8.2. Borrar el usuario por defecto
Si todo ha ido bien, podremos hacer login con el nuevo usuario y eliminar el usuario rock. Seguramente, si lo hacemos a continuación de crear nuestro usuario, nos dará problemas al
8 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
borrar rock porque lo hemos estado usando y tiene procesos abiertos, así que lo más sencillo es reiniciar la Radxa Rock:
sudo shutdown -r now
Una vez reinicie la Radxa Rock, nos identificamos con el usuario nuevo. Si nos deja, es que todo ha ido bien. Ahora queda borrar el usuario rock de esta manera:
sudo userdel -r rock
Fuente que he seguido: Eliminar usuario y su home en Debian/Ubuntu.
9. Hacer un backup del sistema (a lo bruto)
Llegados a este punto, no estaría de más hacer un backup del servidor en el estado actual, ya que empezaremos a instalar programas y si falla algo, puede que resulte complicado solucionarlo y tengamos que empezar de cero. Hay varios métodos para hacer backups, pero para hacerlo fácil nos aprovecharemos de que tenemos el sistema en una tarjeta Micro SD. En un punto posterior veremos cómo hacer backups de los datos de un modo más sofisticado.
Primero, apagaremos el servidor para poder sacar la Micro SD:
sudo shutdown -h now
Insertaremos la Micro SD en el lector del PC y volveremos a abrir el programa Win32 Disk Imager. Esta vez, en Image File pondremos la ruta y el nombre que le daremos al archivo, por ejemplo este:
C:\radxa.img
Y para guardar la imagen usaremos el botón Read. Tardará un poco, y el archivo ocupará el tamaño que tenga la tarjeta Micro SD.
10. Ver programas instalados
Ahora estaríamos listos para instalar programas, como el servidor de Apache, Php, etc. Pero puede que la distribución de Linux que tenemos ya traigan esos programas instalados. Para comprobar la lista de programas instalados usaremos este comando:
dpkg --get-selections
También podemos ver los paquetes conocidos por el sistema, que suelen coincidir con los programas instalados, además da una corta descripción de los mismos para hacernos una idea. Se consigue de esta manera:
dpkg -l
9 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
El comando anterior lo podemos usar para buscar un programa específico y saber si está instalado. Por ejemplo, si queremos saber si Apache 2 está instalado sería así:
dpkg -l | grep apache2
Si devuelve algo es que sí está instalado.
La fuente que he seguido:
Cómo saber si un paquete se encuentra instalado o no de manera fácil y rápida.
11. Instalar MySQL
MySQL es un servidor de base de datos muy conocido y extendido.
La imagen de Linux que instalé en la Radxa Rock ya tiene instalado el MySQL, de todas formas no viene mal saber cómo se instala manualmente. Sería así:
sudo apt-get install mysql-server mysql-client
A mitad de la instalación nos pedirá una contraseña para el usuario “root” de MySQL (no confundir con el usuario “root” del sistema). Conviene no poner siempre la misma contraseña para todo, por seguridad.
Para probar que funciona correctamente, usaremos este comando:
mysql -u root -p
Nos pedirá la contraseña de root, y si consigue identificarse, el prompt habitual cambiará a “mysql>” y podremos escribir comandos de MySQL. Por ejemplo, para mostrar las bases de datos existentes, hay que escribir esto:
show databases;
Para salir de MySQL y volver al prompt del sistema, escribimos esto:
exit;
11.1. Cambiar contraseña de “root” de MySQL
Si MySQL viene instalado en el sistema, el usuario root no tendrá contraseña, o es probable que con el paso del tiempo, si no la hemos apuntado, se nos haya olvidado. La forma más sencilla de restablecerla es escribiendo lo siguiente:
sudo dpkg-reconfigure mysql-server-5.5
10 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
Hay que tener en cuenta que sirve para la versión 5.5 de MySQL, si queremos saber qué versión de MySQL tenemos instalado, podemos usar el comando del punto anterior:
dpkg -l | grep mysql
Y luego, en el comando de arriba, cambiar el número de versión.
11.2. Crear usuario de MySQL
Como no es recomendable usar el usuario “root” para trabajar (desde fuera de la Radxa Rock ni se nos permitirá), crearemos un usuario nuevo que podamos usar. Como ejemplo, crearemos un usuario ‘lola’ con la contraseña ‘flores’. Dentro de mysql debemos ejecutar por separado las siguientes tres líneas:
CREATE USER 'lola'@'%' IDENTIFIED BY 'flores';
GRANT ALL PRIVILEGES ON *.* TO 'lola'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Para comprobar que se ha creado bien, saldremos de mysql (“exit;”) y volveremos a entrar usando el nuevo usuario.
mysql -u lola -p
11.3. Habilitar MySQL para uso remoto
Es posible que podamos trabajar localmente, pero no se nos permita acceder desde otra máquina. Eso lo arreglamos editando el archivo /etc/mysql/my.cnf y comentando algunas líneas. Para editar el archivo usamos esta línea:
sudo pico /etc/mysql/my.cnf
Las líneas que hay que comentar son las siguientes (si estuvieran):
skipexternallocking skipnetworking (a veces no sale) bindaddress = 127.0.0.1
Recordemos que para comentar hay que poner una almohadilla “#” al principio de la línea.
Para que surta efecto, hay que parar el MySQL y volver a iniciarlo. Estos dos comandos harán eso:
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
O simplemente usar:
11 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
sudo /etc/init.d/mysql restart
Por último, es conveniente terminar probando la conexión desde otra máquina para asegurarse de que queda funcionando.
11.4. Cambiar el puerto de MySQL
Las peticiones al servidor MySQL se hacen, por defecto, a través del puerto 3306. Para añadir un poco de seguridad al servidor vamos a cambiar el puerto de las peticiones. Primero debemos asegurarnos del puerto actual y elegir uno que no se esté usando. Esto podemos averiguarlo con esta línea:
sudo netstat -napt
Vamos a usar como ejemplo el puerto 3307, aunque sea demasiado obvio. Tendremos que acceder al archivo de configuración de MySQL y hacer los cambios. Podemos acceder al archivo así:
sudo pico /etc/mysql/my.cnf
Debemos buscar y cambiar las líneas que contengan lo siguiente:
port = 3350
Suele estar un par de veces, en la sección [client] y [mysqld].
Para finalizar tendremos que reiniciar el servidor:
sudo /etc/init.d/mysql restart
A partir de ahora, no debería dejar acceder a través del puerto 3306, sino a través del puerto 3307.
11.5. MySQL Workbench: Cliente de MySQL
Como nota adicional, recomiendo usar el programa MySQL Workbench para trabajar remotamente con MySQL, no sólo porque nos facilitará la gestión y es gratuito, sino también porque es de la misma compañía de MySQL. Se puede descargar aquí: http://www.mysql.com/products/workbench/.
12. Instalar Apache2
Apache es uno de los servidores web HTTP más utilizados.
También viene instalada en la imagen de Linux que elegí para la Radxa Rock, pero si tuviéramos que instalarla de nuevo, sería así:
12 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
sudo apt-get install apache2
Y listo, para probarlo, únicamente tendremos que ir a un navegador web y copiar la IP que le hayamos asignado a la Radxa Pro. Por ejemplo;
http://192.168.0.100/
Si no da error y aparece una página con el texto “It works!”, es que la instalación ha ido bien.
Las páginas se guardan en /var/www por defecto. El archivo de configuración lo podemos encontrar en /etc/apache2/apache2.conf y /etc/apache2/conf.d para configuración adicional. Hay más archivos de configuración extra (para módulos y demás) en la misma carpeta.
12.1. Deshabilitar el listado de directorios web
Si añadimos en /var/www unas cuantas páginas y carpetas, nos daremos cuenta enseguida que, desde el navegador web, podemos ver el listado de subcarpetas y archivos que contiene una carpeta. Esto nos supone un problema serio de seguridad, así que lo mejor es deshabilitarlo para que no se vea el contenido de las carpetas. Lo más rápido es hacer lo siguiente:
sudo a2dismod autoindex
Y reiniciar el Apache. Podemos usar esta línea:
sudo /etc/init.d/apache2 restart
12.2. Permisos óptimos para /var/www.
Cuando se instala Apache 2, se crea la carpeta /var/www, que posiblemente pertenezca y forme parte del grupo de “root”. Normalmente trabajaremos en esa carpeta con un usuario FTP y habrá que asegurarse de que pertenezca al mismo grupo para que no haya problemas de permisos.
Tendremos que cambiar el grupo de la carpeta /var/www para que sea “wwwdata”, si no lo es ya:
sudo chgrp www-data -R /var/www
Luego, daremos los permisos correctos a la carpeta /var/www:
sudo chmod 664 -R /var/www/*
Entramos en la carpeta:
cd /var/www
13 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
Y terminamos de establecer permisos:
sudo find ./ -type d -exec chmod 775 \;
sudo find ./ -type d -exec chmod g+s \;
Básicamente, lo que hemos conseguido es que el propietario de los archivos, y los que pertenezcan al mismo grupo que los archivos, puedan leer, escribir y ejecutar lo que hay dentro de /var/www, y el resto sólo pueda mirar pero no tocar.
Me he guiado de esta fuente: Permisos óptimos para archivos de apache en Debian.
12.3 Configurando Apache
Es probable que tengamos que cambiar la configuración de Apache en algún momento. Los ficheros de configuración los podemos encontrar en /etc/apache2/. El archivo principal puede variar, normalmente está en /etc/apache2/apache2.conf, si no, lo mejor es mirar si hay un archivo “readme” que especifique dónde se configurar el servidor.
Una de las modificaciones frecuentes, es habilitar el uso de archivos .htaccess, que permite realizar configuraciones especiales para cada directorio, sin necesidad de modificar la configuración establecida de Apache. Para ello tenemos que usar esta línea:
sudo pico /etc/apache2/apache2.conf
Buscaremos un trozo de texto que ponga lo siguiente:
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Puede que no tenga la línea “Options Indexes FollowSymLinks”, esa línea es lo que evita que se vean los archivos de los directorios, visto en el punto anterior.
Cambiaremos la opción AllowOverride por lo siguiente:
AllowOverride All
Luego, basta con reiniciar Apache2, esta vez usaremos un método más directo:
sudo /etc/init.d/apache2 restart
Es posible que también queramos activar el módulo mod_rewrite de Apache2, que dos da acceso a modificar más cosas dentro del .htacess. Activarlo es tan fácil como esto:
sudo a2enmod rewrite
14 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
Y de nuevo, reiniciar el Apache2:
sudo /etc/init.d/apache2 restart
13. Instalar SFTP
El programa SFTP es un servidor FTP para intercambio de archivos de forma segura, ya que usa el protocolo SSH.
13.1. Crear usuario SFTP
Antes de instalar el programa, vamos a crear el usuario que usaremos para conectarnos por SFTP. Tendrá estas características:
Por seguridad, no le dejaremos acceder al sistema mediante consola, sólo servirá para el intercambio de archivos.
Será su carpeta en /home la que usaremos para compartir por SFTP.
Sabiendo de antemano que vamos a necesitar permisos de administrador y es una lata poner la contraseña cada vez, nos ponemos en modo “sudo” para el resto de comandos:
sudo -i
El primer paso es crear el usuario, usaremos como ejemplo “lola”. El parámetro “s /bin/bash” es el que hará que pueda acceder vía SSH:
useradd -d /home/lola -s /bin/bash lola
Ahora lo asignaremos al grupo “wwwdata”, pues luego añadiremos /var/www a ese grupo para que el usuario SFTP pueda manipular archivos y carpetas:
adduser lola www-data
También hace falta que el usuario tenga una contraseña:
passwd lola
Antes mencionamos que el usuario compartiría su carpeta en /home por FTP, pero realmente lo que nos interesa es que comparta /var/www/html, que por temas de permisos y seguridad, no es posible. Lo solucionamos creando un enlace simbólico (symlink) como su carpeta en /home, que ya especificamos al crear el usuario que la llamaríamos “lola”:
ln -s /var/www /home/lola
Cuidado, si ya existe una carpeta con ese nombre, lo que hará este comando es crear un enlace simbólico llamado “www” dentro, y no nos vale. Hay que asegurarse de que la carpeta
15 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
no existe antes de usar el comando. Sabremos que “lola” es un enlace simbólico, si al listar ejecutar “ls l /home” sale la carpeta así:
lola > /var/www
Si es así, lo hemos hecho bien.
13.2. Instalar el servidor SFTP
En primer lugar, es bueno asegurarse de que no está ya instalado el programa. En la imagen que elegí, ya viene instalado. El paquete del programa se llama opensshserver, para comprobar si está instalado recordemos este comando:
dpkg -l | grep openssh-server
Si nos lista el paquete, es que ya está instalado. Si no, la instalación es sencilla usando el siguiente comando:
sudo aptitude install openssh-server
Ahora toca configurar un poco el SFTP:
sudo pico /etc/ssh/sshd_config
Aquí buscaremos la siguiente línea:
UsePrivilegeSeparation yes
Y debajo escribiremos lo siguiente:
AllowUsers daniel lola
Donde lola es el usuario que creamos anteriormente para SFTP. Es importante comentar que añadimos el usuario que estamos usando para conectar vía SSH (daniel) o dejará de funcionar y no podremos acceder al servidor remotamente.
Por último, podemos cambiar el puerto que usará el SFTP, que por defecto es 22. Más tarde vendrá bien para añadir seguridad cuando instalemos el firewall. Para cambiarlo buscamos la siguiente línea y le cambiamos el número:
Port 22
Recordemos que para asegurarmos de no elegir un puerto ya usado, podemos listar los que están en uso así:
sudo netstat -napt
Por último, tendremos que reiniciar el servidor:
16 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
sudo /etc/init.d/ssh restart
Es posible que nos desconecte la conexión SSH y tengamos que cambiar el puerto en el cliente SSH para volver a conectar, o quizás pase como me ha pasado a mí y aún podamos acceder por el puerto 22. No soy un experto en linux y desconozco por qué, quizás porque detecta que hay una conexión SSH abierta (la nuestra), así que lo más fácil es usar el método Windows: reiniciar el servidor. Recordemos:
sudo shutdown -r now
Hay que tener en cuenta que habrá que usar un cliente SFTP en vez de FTP para la transferencia de archivos. Por ejemplo, el Dreamweaver tiene la opción de conexiones SFTP.
La fuente que he seguido:
Instalar un servidor SFTP en Debian GNU/Linux.
13.3. Enjaular usuario SFTP
Si nos conectamos al servidor a través de algún programa de transferencia de archivos SFTP nos daremos cuenta de que podemos ver todas las carpetas del servidor, y esto puede ser peligroso si creamos un usuario SFTP para terceras personas. Lo que debe hacerse es “enjaular” al usuario en una carpeta (su carpeta home, por ejemplo), para que no pueda salirse de ahí y así limitamos su acceso. Vamos a intentar enjaular al usuario lola que ya hemos creado.
Antes de nada, lo que haremos será borrar la carpeta /home/lola, porque cuando la creamos lo hicimos como un enlace simbólico y no nos sirve. Vamos a crearla como una carpeta normal:
rm -r /home/lola
mkdir /home/lola
Vamos a hacer que el usuario lola no pueda salir de su carpeta home que es /home/lola. Es esencial que quede claro que todas las carpetas que se incluyen en la ruta del directorio “jaula” tienen que tener como propietario al usuario root, si no, no funcionará. En la carpeta /home es más que probable que sea así si no la hemos tocado, comprobemos la carpeta /lola:
ls -l /home
Si el propietario de /lola no es root lo cambiamos (recordemos que el usuario lola pertenecía al grupo wwwdata:
chown root:www-data /home/lola
El segundo punto a tener en cuenta, es que los permisos tienen que ser los correctos o no funcionará, en este caso:
17 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
chmod 755 /home/lola
Con esos permisos, el usuario lola tiene una carpeta home que puede consultar, pero sin permisos para añadir o borrar archivos. Dentro de la carpeta, vamos a crear otra que pueda manipular:
mkdir /home/lola/archivos
chown lola:www-data /home/lola/archivos
Ahora toca modificar la configuración del SSH:
pico /etc/ssh/sshd_config
Tenemos que buscar la línea que ponga “Subsystem sftp /usr/lib/openssh/sftpserver” y cambiarlo por esto:
#Subsystem sftp /usr/lib/openssh/sftpserver Subsystem sftp internalsftp
Y al final del documento, añadimos lo siguiente:
Match group wwwdata ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internalsftp
Con esto le decimos al SSH que a todo usuario que sea del grupo wwwdata lo enjaule en la carpeta con su nombre de usuario que esté dentro de la carpeta /home.
Finalmente, bastaría con reiniciar el servicio SSH:
/etc/init.d/ssh restart
Pero como, sin razón aparente, a veces no me ha funcionado y me lo puedo permitir, prefiero reiniciar todo el servidor:
shutdown -r now
Si todo ha ido bien, deberíamos poder acceder a través de SSH y manipular archivos en la carpeta /home/lola/archivos. Ojo con qué programa lo probamos, por alguna razón, en Dreamweaver me fue perfecto, pero en Aptana me daba errores.
Por cierto, recordemos que el usuario lola tenía acceso a consola, si con un usuario solo vamos a usar programas de transferencia de archivos y no necesitamos la consola, es mejor no permitir que se use. Podemos hacerlo si modificamos el archivo /etc/passwd o así:
18 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
chsh -s /bin/false lola
Fuente seguida: Enjaulado SFTP.
13.4. Enjaular usuario SFTP para acceder a /var/www
Cuando encerramos a un usuario en una carpeta de esta manera, hay que tener en cuenta un par de cosas: la primera es que no podrá salirse de ella, no podremos acceder a nada más a menos que lo configuremos; la segunda es que debido a ello los enlaces simbólicos no funcionarán, por eso lo borramos antes.
La solución más simple para permitir al usuario acceder a /var/www es usar la propia carpeta /var/www para enjaular al usuario, y que tenga acceso a /var/www/html, o enjaularlo en /var/www/html y que tenga su propia de acceso en /var/www/html/lola. Como ejemplo, hagamos lo primero, simplemente tendríamos que volver a configurar lo último que añadimos a la configuración del SSH de esta manera:
Match group wwwdata ChrootDirectory /var/www X11Forwarding no AllowTcpForwarding no ForceCommand internalsftp
Así le decimos que todos los usuarios del grupo wwwdata pueden acceder a /var/www. Para el segundo ejemplo, crearíamos la carpeta /var/www/html/lola con propietario lola:wwwdata y configuraríamos SSH de esta manera:
Match user lola ChrootDirectory /var/www/html X11Forwarding no AllowTcpForwarding no ForceCommand internalsftp
Con esto le decimos que el usuario lola puede acceder a /var/www/html. Ojo, podría ver otras carpetas dentro de /var/www/html, a parte de la suya propia, a no ser que controlemos bien los permisos.
Reiniciamos el servidor SSH o todo el servidor y debería funcionar.
Fuente seguida: Enjaulado SFTP.
19 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
14. Instalar PHP.
PHP es un módulo de Apache2 que nos permite mostrar y trabajar con el lenguaje de programación PHP. Conviene asegurarse de que si ya está instalado el paquete libapache2modphp5, si no, sólo necesitamos ejecutar esta línea de comando:
sudo apt-get install php5 libapache2-mod-php5
Tras eso, sólo queda reiniciar el Apache2:
sudo /etc/init.d/apache2 restart
Además, PHP también tiene otros módulos útiles, podemos ver una lista de los disponibles tecleando lo siguiente:
apt-cache search php5
Comprobamos si tenemos ya instalado los que nos interesa. Para instalar módulos nuevos, sería algo así (en caso de querer instalar los módulos para mysql y GD):
apt-get install php5-mysql php5-gd
Y volvemos a reiniciar el Apache2:
/etc/init.d/apache2 restart
14.1. Configurando PHP.
Para configurar PHP hay que localizar el archivo php.ini que está en /etc/php5/apache2/php.ini, aunque no viene mal asegurarse, ya que no es difícil terminar modificando el archivo erróneo (a mí me ha pasado). Para saber la ubicación exacta, basta con crear un archivo php con la instrucción “<?php phpinfo(); ?>” y verla desde el navegador; saldrá una tabla con un montón de información sobre el servidor, y en el primer bloque nos sale la ubicación en el parámetro “Loaded Configuration File”.
Para modificar el archivo pondremos:
sudo pico /etc/php5/apache2/php.ini
Un cambio útil podría ser habilitar las etiquetas cortas de código PHP, es decir, poder usar ‘<? ?>’ en vez de ‘<?php ?>’. Lo conseguimos buscando el parámetro short_open_tag y modificando su valor a On:
short_open_tag = On
Otro de los cambios útiles consiste en modificar el parámetro display_errors para permitir mostrar los errores que surjan en PHP, nos ayudará mucho si estamos programando en PHP
20 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
(ojo, no es recomendable tenerlo activo en páginas ya visibles al público, mostrar los errores puede ser un gran agujero de seguridad). La variable debería quedar así:
display_errors = On
Recordemos que también se pueden ver los errores (muy recomendable) mirando el log de errores, que está en /var/log/apache2/error.log:
sudo pico /var/log/apache2/error.log
También podemos echarle un vistazo, por ejemplo, con este comando, mostrando las última 20 líneas:
sudo tail -20 /var/log/apache2/error.log
Las fuentes que he seguido:
Installing PHP5. Configuración del php.ini.
15. Instalar cliente de DNS dinámico (ddclient)
Cuando contratamos un ADSL, lo normal es que nos suministren una IP dinámica para nuestro hogar, es decir, esta IP puede variar si, por ejemplo, reseteamos el router. Esto puede ser un problema si queremos que nuestro servidor esté siempre online y visible desde cualquier parte del mundo a través de un dominio permanente (ejemplo: esteesmidominio.com). Asumiendo que ya hemos contratado un dominio, una solución barata es crear una cuenta con un proveedor de DNS dinámico, que se encarga de actualizar la IP a la que apunta nuestro dominio, así si se nos cae el router o hay problemas técnicos, reestablecerá automáticamente la nueva IP. Normalmente estos proveedores necesitan que instales un cliente en el servidor que se encargará de comprobar si la IP ha cambiado, y ese cliente suele ser ddclient. Instalarlo es muy sencillo:
sudo apt-get install ddclient
Una serie de pantallas de configuración aparecerán en pantalla y tendremos que rellenar los datos. La mayoría de ellos los suministrará el proveedor. En definitiva, estas pantallas lo que harán será completar el fichero de configuración que se encuentra en /etc/ddclient.conf.
Como ejemplo, aquí está la configuración base de dynu.com, que es un proveedor de DNS dinámico:
# ddclient configuration for Dynu # /etc/ddclient.conf daemon=60 # Check every 60 seconds. syslog=yes # Log update msgs to syslog.
21 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
mail=root # Mail all msgs to root. mailfailure=root # Mail failed update msgs to root. pid=/var/run/ddclient.pid # Record PID in file. ssl=yes # Use sslsupport. Works with ssllibrary . use=web, web=checkip.dynu.com/, webskip='IP Address' # Get ip from server. server=api.dynu.com # IP update server. protocol=dyndns2 login=myusername # Your username. password=YOURPASSWORD # Password or MD5 of password. MYDOMAIN.DYNU.COM # List one or more hostnames one on each line.
Nota: no hay que olvidar que las DNS de nuestro dominio tienen que apuntar a los servidores del proveedor de DNS dinámico.
Por último, nos queda crear un demonio que se encargue de ir comprobando la IP. Sería así:
/usr/sbin/ddclient -daemon 300 -syslog
Esto puede añadirse en el crontab para que se ejecute al iniciarse el servidor:
Fuente: ddclient (en inglés).
16. Usar múltiples dominios en el servidor
Teniendo un servidor propio es muy probable que queramos alojar varios sitios web con diferente dominio. Si tenemos dos dominios, por ejemplo midominio.com y otrodominio.com, y ambos apuntan a nuestra IP pública podemos comprobar que, en los dos casos, se mostrarán los archivos alojados en /var/www/html, y no es lo que queremos. Apache nos ayuda con eso a través de la configuración de sitios en dos carpetas diferentes. La primera carpeta es /etc/apache2/sitesavailable, que guarda las configuraciones existentes, y por defecto, debería haber dos archivos: 000default.conf (web por defecto) y defaultssl.conf (web por defecto con certificado ssl, y sin certificado no se usa).
Lo primero que haremos será crear, dentro de la carpeta, un archivo nuevo copiando el ya existente:
cd /etc/apache2/sites-available
sudo cp 000-default.conf midominiocom.conf
Luego lo editamos:
sudo pico midominiocom.conf
Y modificamos estos valores:
22 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
DocumentRoot /var/www/html/midominiocom ServerName www.midominio.com ServerAlias midominio.com
Con esto, básicamente le decimos al Apache que si le llega una petición de mostrar midominio.com, tiene que buscar los archivos en /var/www/html/midominiocom en vez de en /var/www/html. Hay que mencionar que si no usamos el ServerAlias, www.midominio.com y midominio.com apuntarán a sitios diferentes, el primero a la carpeta ./html/midominiocom y el segundo a la carpeta ./html.
El siguiente paso es añadir la configuración a la segunda carpeta que mencionamos, que es /etc/apache2/sitesenables creando un enlace simbólico, y esto lo hacemos fácilmente con este comando:
sudo a2ensite midominiocom.conf
Si quisiéramos, podríamos eliminarlo con este comando:
sudo a2dissite midominiocom.conf
Esto es útil si, por alguna razón, no queremos que se muestre una web durante un tiempo pero tampoco queremos eliminar la configuración.
Nos queda crear la carpeta donde se guardarán los archivos:
sudo mkdir /var/www/html/midominiocom
Podemos crear rápidamente un archivo de prueba así:
cd /var/www/html/midominiocom
sudo touch index.html
sudo chmod 777 index.html
sudo echo "Funciona el dominio" > index.html
Por último, hay que reiniciar el Apache:
sudo /etc/init.d/apache2 reload
Sólo queda probarlo, pero no podemos acceder a través del dominio desde dentro de nuestra IP (desde la misma red usamos, por ejemplo, http://192.168.0.100/midominiocom/). ¿Lo más fácil? Pues desactivar el Wifi del móvil y acceder desde su navegador, ya que no estará dentro de nuestra red doméstica al usar el plan de datos. Hay que comprobar el dominio con y sin “www”.
Y en resumen, estos pasos habría que seguirlos por cada dominio que queramos alojar, donde cada uno se guardará en una carpeta diferente.
23 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
Fuente: Alojar varios dominios en un hosting con Apache.
17. Instalar firewall UFW
Una de las maneras de intentar mantener seguro el servidor, es controlar los puertos de acceso para que no pase nadie sin autorización. Esto es muy importante en puertos como el 22 (SSH), 21 (FTP), etc. Además, si tenemos el sistema actualizado constantemente y encima cambiamos los puestos por defecto por otros que elijamos, añadimos seguridad al equipo. Por ejemplo, podemos cambiar el puerto 22 del SSH por el 70. Como hemos visto en puntos anteriores, estos puertos se cambian en los archivos de configuración de los programas, y muchos de ellos requieren reiniciarlos. Ejemplo:
sudo pico /etc/proftpd/proftpd.conf
sudo /etc/init.d/proftpd restart
Mi imagen ya tiene instalado el cortafuegos UFW, pero si necesitamos instalarlo solo hay que teclear lo siguiente:
sudo apt-get install ufw
17.1. Uso del firewall
Para habilitar y deshabilitar el firewall los comandos son estos:
sudo ufw enable
sudo ufw disable
Para permitir todo el acceso (no recomendado) o denegar todo el acceso (ojo, que nos quedamos sin SSH si está habilitado el firewall):
sudo ufw default allow
sudo ufw default deny
Para añadir o denegar acceso a un puerto:
sudo ufw allow 59345
sudo ufw allow 59345 /tcp
sudo ufw deny 59345
sudo ufw deny 59345 /tcp
Para eliminar alguna regla que hayamos creado, sería así:
sudo ufw delete allow 59345
sudo ufw delete allow 59345 /tcp
sudo ufw delete deny 59345
sudo ufw delete deny 59345 /tcp
24 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
Para ver las reglas que hemos añadido, usamos este comando:
sudo ufw status
Quizás muestre un texto como este:
WARN: uid is 0 but '/' is owned by 1001
Eso quiere decir que la carpeta ‘/’ no tiene a root como propierario y eso no es bueno. Para cambiarlo, modificaremos el propietario y permisos de esa carpeta:
sudo chown root.root /
sudo chmod 0755 /
Lo mismo con cualquier otra carpeta que no tenga el propietario adecuado.
La fuentes que he usado:
Configura facilmente tu FIREWALL en debian/ubuntu.
18. Redimensionar partición de la tarjeta SD
Normalmente en Lubuntu, el rootfs () tiene un tamaño por defecto de 2Gb, así que si usamos una tarjeta SD de 8Gb, nos sobrarán 6Gb que no se usarán para nada, y no tendremos mucho espacio para instalar cosas y gestionar archivos.
Para solucionar esto desde la propia Radxa, lo primero que debemos hacer es aumentar el tamaño de rootfs, así que crearemos un script que haga esto mismo.
Creamos un archivo nuevo donde guardaremos el código del script:
sudo pico cambiarootfs.sh
Dentro, guardaremos el siguiente código, extraído de la página de ayuda de Radxa:
#!/bin/bash START_SECTOR=cat /sys/block/mmcblk0/mmcblk0p1/start fdisk /dev/mmcblk0 << EOF d n p 1 $START_SECTOR w EOF
25 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
echo e "\n\n\n \n============================================================" echo "!!!!!expands rootfs done! reboot system" echo "!!!!!and run command "resize2fs/dev/mmcblk0p1" after reboot" echo e "=============================================================\n\n\n"
A continuación, lo ejecutaremos:
sudo bash cambiarootfs.sh
Cuando el proceso termina, necesitamos reiniciar el sistema:
sudo shutdown -r now
Y por último, una vez reinicie, cambiaremos el tamaño de la partición con este comando:
sudo resize2fs /dev/mmcblk0p1
Además, como ya no es necesario, podremos borrar el script de esta manera:
rm cambiaparticion.sh
Me he guiado de esta fuente: Resize Linux Rootfs (en inglés).
19. Hacer backups de datos usando cron
Ya hemos visto cómo hacer un backup rudimentario de toda la tarjeta SD, pero seguramente necesitaremos hacer copias frecuentes de algunos datos, por ejemplo, de las bases de datos mysql. Una forma sencilla es usar el comando cron. Para poner un ejemplo, configuraremos un backup diario de todas las bases de datos a un pendrive USB.
El primer paso será identificarnos como root:
su
Ahora necesitamos conectar el pendrive en el USB y comprobar qué nombre tiene:
fdisk -l
Nos dará el nombre del dispositivo USB, en este caso, /dev/sda1.
Para trabajar con el dispositivo USB, crearemos una carpeta y montaremos el dispositivo sobre ella. La carpeta la crearemos de esta manera:
mkdir /backup
26 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
Es recomendable automatizar el proceso de montar el dispositivo, así que editaremos el archivo /etc/fstab:
pico /etc/fstab
Y lo editaremos con el siguiente texto:
/dev/sda1 /backup vfat defaults 0 0
Luego, podemos montar el dispositivo (y todos los que estén en esa lista):
mount -a
En este momento ya tenemos el dispositivo USB montado y podemos ver su contenido. Ahora, crearemos un script para que haga un respaldo de las bases de datos en el pendrive. Como queremos que se haga diariamente, lo guardaremos en la carpeta etc/cron.daily, que es donde se ejecutan los script diarios:
pico /etc/cron.daily/mysql_backup.sh
Añadiremos este texto, que se encarga de hacer el backup de las bases de datos:
#!/bin/sh now="$(date +'%d_%m_%Y_%H_%M_%S')" filename="mysql_$now".gz backupfolder="/backup" fullpathbackupfile="$backupfolder/$filename" logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt echo "mysqldump started at $(date +'%d%m%Y %H:%M:%S')" >> "$logfile" mysqldump user=usuario password=contrasenia defaultcharacterset=utf8 alldatabases | gzip > "$fullpathbackupfile" echo "mysqldump finished at $(date +'%d%m%Y %H:%M:%S')" >> "$logfile" echo "*****************" >> "$logfile" exit 0
Como se ve en la línea del mysqldump, se está proporcionando el usuario y contraseña de mysql, y como no queremos que cualquiera pueda ver esa información, vamos a cambiar los permisos del archivo, para que solo root pueda leerlo:
chmod 700 /etc/cron.daily/mysql_backup.sh
Si queremos, podemos probar el script manualmente escribiendo lo siguiente:
27 de 28
Radxa Rock Pro: Linaro Server Manual casero de instalación
bash /etc/cron.daily/mysql_backup.sh
Las fuentes que he seguido:
How to mount USB drive in Linux (inglés). Linux shell script for database backup (inglés). Manual básico de cron (español).
19.1. Usando crontab
Es posible que, como a mí, no termine de ejecutarse el script aunque lo hayamos colocado en /etc/cron.daily/. Así que otra manera de hacer que se ejecute el script es creando un archivo crontab específico para el usuario, en este caso, root.
Con este comando podemos ver si ya existe un archivo para el usuario, y ver qué contiene:
crontab -l
Para editarlo, el comando es el siguiente:
crontab -e
Siguiendo el ejemplo anterior, si queremos que el script se ejecute todos los días a las 6 de la mañana, añadiríamos la siguiente línea:
* 6 * * * bash /etc/cron.daily/mysqlbackup.sh
Los asteriscos corresponden a lo siguiente (min hor dmes mes dsem):
min: minuto al que se ejecuta (0 a 59). hor: hora a la que se ejecuta (0 a 23). dmes: día del mes en el que se ejecuta. mes: el mes en el que se ejecuta. dsem: día de la semana en la que se ejecuta (0 a 7, donde 0 y 7 son domingo).
Fuente: Cron & crontab, explicados (español).
28 de 28