Manual técnico

De Wiket
Salta a la navegació Salta a la cerca

Hardware

1 Raspberry Pi 3 Model B 1 Micro SD 16GB
RaspberryPi.jpg MicroSD.png

Instalación OS

Montadas ya la Raspberry, debemos instalar un sistema operativo en ella para así poder llevar a cabo el proyecto. En mi caso, el sistema operativo elegido ha sido Linux, y para ser más específico, he escogido la distribución de Ubuntu, con la versión 16.04. Para empezar, descargamos la imagen: Descarga de Ubuntu 16.04

Con la imagen ya descargada, el siguiente paso es descargar algún programa para poder grabar la imagen que acabamos de descargar. El programa que he utilizado ha sido Etcher. Descarga de Etcher

Cómo utilizar Etcher
Abrimos el programa en nuestro equipo, agregamos la imagen seleccionada y y pulsamos Flash.

Etcher.jpg

Servicio SSH

SSH o Secure shell es un protocolo de administración remota que permite a los usuarios controlar y modificar sus servidores remotos a través de internet. Después de este pequeño resumen, el servicio SSH lo habilitaremos en nuestra Raspberry para poder administarla desde el otro ordenador, por comodidad del administrador. Utiliza el puerto 22 por defecto.

Habilitamos el servicio SSH con el siguiente comando:

sudo systemctl enable ssh

Cuando ya lo tenemos activado, debemos iniciarlo para poder conectarnos:

sudo service ssh start

Servicio DNS

El sistema de nombres de dominio​ (DNS, por sus siglas en inglés, Domain Name System) es un sistema que asigna nombres a direcciones IP. Ahora explicaremos cómo lo hemos utilizado: En primer lugar, debemos asignar una IP estática a nuestra Raspberry Pi. El archivo que lleva esta configuración es /etc/network/interfaces, el código que debemos emplear es el siguiente:

auto wlanX
iface wlanX inet static
address 192.168.1.ZZ
gateway 192.168.1.1
netmask 255.255.255.0
wpa-ssid el_nombre_tu_red_wifi
wpa-psk la_contraseña_de_tu_wifi

Dónde wlanX hace referencia a la tarjeta de red que se utiliza.

A continuación, cómo en nuestro caso la Raspberry estará ubicada siempre en el mismo sitio (en casa), debemos conectar de alguna manera la IP privada (la configurada en el archivo anterior), con la IP pública, que es la IP del router y con la que haremos el servicio DNS.
Breve explicación: la diferencia entre IP pública y privada es que la privada es la ip de cada dispositivo conectado a nuestra red, mientras que la pública es es el identificador de nuestra red desde el exterior, es decir, la de nuestro router de casa, que es el que es visible desde fuera. Para poder sincronizar la IP privada de nuestra raspberry con la IP pública de nuestro router y así llevar a cabo el servicio DNS, debemos introducirnos en nuestro router, poniendo en el navegador 192.168.1.1.

Puertos.PNG

Aquí vemos como hemos abierto los puertos 22 SSH y 80 HTTP para poder conectarnos remotamente con el programa PUTTY que es PuTTY es un cliente SSH, Telnet, rlogin, y TCP raw con licencia libre. A partir de ahora y gracias a esto, podemos conectarnos remotamente y desde cualquier red a nuestra Raspberry, que es lo que queríamos desde un principio. Ahora bien, para hacer el servicio DNS , debemos tener un servicio de Hosting donde asociaremos nuestra página web. El servicio Hosting lo hemos contratado de forma gratuita mediante la página Freenom. Una vez registrados, debemos crear nuestro dominio:

Freenom.PNG


Pulsamos en manage domain para configurar nuestro propio dominio.

Dns.PNG


Para finalizar, somos debemos introducir la URL de nuestro dominio y nos redirigirá directamente a nuestra página web.

Instalación de la instancia LAMP

La instancia LAMP (acrónimo en inglés que significa Linux operating system, Apache HTTP Server, MySQL y PHP), es un grupo de software que se instala junto para permitir los servicios webs, en nuestro caso la página web que es la finalidad de este proyecto.

Con el primer paquete ya adquirido, el instalar Linux, que hemos hecho anteriormente agregando imagen con la distribución de Ubuntu 16.04, pasaremos al paso 2.

Instalación de Apache

Apache es un servidor web HTTP de código abierto para plataformas Unix, donde pertenece Linux. Es usado principalmente para enviar páginas web.

Actualizamos lista de paquetes disponibles y sus versiones con el siguiente comando:

sudo apt-get update

A continuación, instalamos el paquete de apache:

sudo apt-get install apache2

Una vez hecho esto, reiniciamos el servicio de apache para implementar los cambios:

sudo systemctl restart apache2

Instalación de Mysql

Una vez tenemos el servidor web en funcionamiento, es momento de instalar Mysql, que es el sistema de gestión de base de datos. Su función es organizar y proporcionar el acceso a bases de datos donde nuestro servicio puede almacenar información.
Con el siguiente comando instalamos el paquete de Mysql y los paquetes de ayudar que conlleva:

sudo apt-get install mysql-server

Instalación de PHP

A continuación instalaremos el siguiente paquete, PHP.
PHP es el componente que procesará el código para mostrar el contenido dinámico. Puede ejecutar scripts, conectarse a nuestras bases de datos MySQL para obtener información y entregar el contenido procesado a nuestro servidor web para que se muestre.
El comando para instalar PHP y los paquetes de ayuda es el siguiente:

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Conclusión de LAMP

Una vez instalado al completo LAMP, vamos a instalar wordpress, donde crearemos la página web con su base de datos y sus usuarios.

Instalación de Wordpress

Lo primero que haremos es crear la base de datos y el usuario para el uso de Wordpress.
Para empezar, accederemos a la cuenta MySQL root con el siguiente comando:

mysql -u root -p

El sistema nos pedirá la password que del usuario root de MySQL que se configuró cuando se instaló el software.

A continuación creamos la base de datos que utilizará Wordpress.
El comando es:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Donde wordpress hace referencia al nombre de la base de datos.

Seguidamente crearemos la cuenta de usuario que será utilizado para operar con nuestra base de datos.
El comando para hacer lo propio es:

GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

Donde wordpress es el nombre de la base de datos, wordpressuser hace referencia al nombre de usuario, localhost es el nombre de nuestro dominio y password hace referencia a la contraseña que queremos asignarle a ese usuario.

Con la base de datos y el usuario creados, debemos refrescar los privilegios para que se reconozcan los cambios, con el siguiente comando.

FLUSH PRIVILEGES;

Un comando imprescindible es el de salir de mysql, se realiza escribiendo;

EXIT;

Instalar extensiones adicionales para PHP

Con la instancia LAMP instalamos el paquete principal de PHP y ahora vamos a instalar algunas de sus extensiones más populares.

sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

Ahora reiniciamos Apache para que reconozca las nuevas extensiones:

sudo systemctl restart apache2

Ajustar configuración de Apache

A continuación, es necesario crear ajustes menores para la configuración de Apache. Inicialmente, el uso de los archivos .htaccess está deshabilitado. Wordpress y sus plugins usan estos archivos para ediciones dentro del directorio, parar comunicarse con el servidor web.

Habilitar sobre-escritura por .htaccess

Abrimos el archivos de configuración de Apache:

sudo nano /etc/apache2/apache2.conf

Ahora permitimos los archivos .htaccess, debemos hacer que la directiva AllowOverride apunte a nuestro documento raíz. Agregamos el siguiente bloque al final del archivo:

<Directory /var/www/html/>
   AllowOverride All
</Directory>

Habilitar el módulo de re escritura

Habilitamos este módulo para utilizar la función de enlaces permanentes de Wordpress:

sudo a2enmod rewrite

Descargar Wordpress

Ahora que el software ya está configurado en el servidor, es momento de descargar y configurar Wordpress. Para empezar creamos una carpeta donde descargaremos la versión comprimida.

mkdir wordpress

A continuación descargamos la versión comprimida:

curl -O https://wordpress.org/latest.tar.gz

Extraremos el archivo comprimido.

tar xzvf latest.tar.gz

Creamos el archivo .htaccess y configuramos los permisos escribiendo:

touch wordpress/wordpress/.htaccess
chmod 660 wordpress/wordpress/.htaccess

Ahora copiamos el archivo de configuración donde Wordpress lo pueda leer:

cp wordpress/wordpress/wp-config-sample.php 
wordpress/wordpress/wp-config.php

También creamos el directorio upgrade, para que no haya conflictos a la hora de actualizar el software:

mkdir wordpress/wordpress/wp-content/upgrade

Para terminar vamos a copiar el contenido del directorio en nuestro documento raíz. Usamos -a para indicar que copie también los archivos ocultos, ya que .htaccess es uno de ellos.

sudo cp -a wordpress/wordpress/. /var/www/html

Configurar el directorio Wordpress

Vamos a ajustar los permisos y la autoridad de Wordpress Empezaremos asignando la propiedad de los archivos en nuestro documento raíz a nuestro usuario.

sudo chown -R david:www-data /var/www/html

Le damos al grupo cceso de escritura a la carpeta wp-content, para poder hacer cambios en los temas y plugins.

sudo chmod g+w /var/www/html/wp-content

Tambié damos acceso al servidor web al contenido de los dos directorios:

sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins

A continuación, vamos a configurar el método que Wordpress usará para escribir en el sistema de archivos.

Entramos en el archivo de configuración con:

sudo nano /var/www/html/wp-config.php

Ahora configuramos los parámetros en los que hace referencia a nuestra base de datos wordpress, a nuestro usuario wordpressuser y a la contraseña password. Guardamos y ya podremos configurar gráficamente nuestro Wordpress, que es el siguiente apartado.

Instalación a través de la interfaz web

Vamos a enseñar como se configura Wordpress desde la interfaz gráfica: Instalación de Wordpress en imágenes

Snort en Ubuntu 16.04

Esta guía esta hecha para explicar detalladamente la instalación de Snort como un IDS (Intrusion Detection System), que se basa en la detección de accesos no autorizados a nuestro servidor o red. Utilizaremos software adicional para mejorar la funcionalidad de Snort, en nuestro caso Snorby, que es una interfaz gráfica basada en web para ver y borrar eventos Snort. Configuraremos Snort a partir de un par de pasos: descargaremos el código, lo configuraremos, lo instalaremos en el directorio conveniente y para terminar configuraremos las reglas de detección, que serán por las que se rija a la hora de usarse. Empezamos creando una carpeta para descarga snort.

mkdir snort_src
cd snort_src

Snort utiliza algo llamado biblioteca de adquisición de datos (DAQ) para hacer llamadas abstractas a bibliotecas donde se capturan los paquetes. A continuación el comando para descargar dicha biblioteca.

wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz

Ahora extraemos el archivo y entramos en la carpeta.

tar -xvzf daq-2.0.6.tar.gz
cd daq-2.0.6

Ejecutamos el script de configuración usando sus valores predeterminados, luego compilamos el programa con make y finalmente instalamos DAQ.

./configure
make
sudo make install

Una vez instalado DAQ, ya podemos empezar con Snort, usaremos la última versión:

wget https://www.snort.org/downloads/snort/snort-2.9.11.1.tar.gz

Extraemos y entramos en la carpeta:

tar -xvzf snort-2.9.11.1.tar.gz
cd snort-2.9.11.1

Luego configuramos la instalación con sourcefire habilitado y ejecutamos make y make install.

./configure --enable-sourcefire
make
sudo make install

Ahora vamos con los archivos de configuración

Configurando Snort para que se ejecute en modo NIDS

Debemos configurar Snort para que sea compatible con nuestro sistema, etoy conlleva a editar y descargar diferentes archivos y reglas. Comenzamos actualizando las bibliotecas compartidas:

sudo ldconfig

Creamos un enlace simbólico:

sudo ln -s /usr/local/bin/snort /usr/sbin/snort

Configuración de usuario y estructura de carpetas

Para ejecutar Snort en Ubuntu de forma segura sin acceso de root, debemos crear un nuevo usuario sin privilegios y un nuevo grupo de usuarios para que se ejecute el daemon.

sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

Ahora creamos la estructura de carpetas para guardar la configuración:

sudo mkdir -p /etc/snort/rules
sudo mkdir /var/log/snort
sudo mkdir/usr/local/lib/snort_dynamicrules

Establecemos permisos:

sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib /snort_dynamicrules

Creamos archivos para las listas blancas y negras, así como las reglas locales:

sudo touch /etc/snort/rules/white_list.rules
sudo touch /etc/snort/rules/black_list.rules
sudo touch /etc/snort/rules/local.rules

Luego copiamos los archivos de configuración de la carpeta de descargas. sudo cp /snort_src/snort-2.9.11.1/etc/*.conf* /etc/snort sudo cp /snort_src/snort-2.9.11.1/etc/*.map /etc/snort

Hasta aquí la configuración de Snort, ahora entra la parte en la que el administrador debe crear una serie de reglas para llevar a cabo el sistema de detección de intrusos que nos ofrece Snort.


Snorby: una GUI web para Snort

Snorby es una GUI web para Snort que usa Ruby on Rails para proporcionar una interfaz Web-2.0.

Vamos a empezar instalando Snorby 2.6.3 Instamos los requisitos previos:

sudo apt-get install -y imagemagick apache2 libyaml-dev libxml2-dev libxslt-dev

Instalamos también los repositorios de Brightbox para Ruby:

sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update

Instalamos Rube 2.3

sudo apt-get install ruby2.3 ruby2.3-dev

Hacemos una comprobación para ver que Ruby se ha instalado correctamente:

ruby2.3 -v

Nos debe aparecer esto: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux-gnu] Instalamos la versión 2.6.3 de Snorby y la movemos al directorio web:

cd /snort_src/
git clone https://github.com/Snorby/snorby.git
sudo cp -r ./snorby/ /var/www/snorby/

Instalamos los requisitos previos de Snorby:

cd /var/www/snorby
sudo bundle install

Snorby usa database.yml para decirle cómo conectarse al servidor MySQL. Copiaremos el archivo de ejemplo a la ubicación correcta y lo editaremos con nuestras credenciales:

sudo cp /var/www/snorby/config/database.yml.example /var/www/snorby/config/database.yml
sudo nano /var/www/snorby/config/database.yml

Ahora queremos instalar a Snorby. El siguiente comando descargará las gemas necesarias y creará una nueva base de datos llamada Snorby para su uso:

cd /var/www/snorby
sudo bundle exec rake snorby:setup

Ahora queremos editar la base de datos MySQL Snorby para otorgar acceso a un usuario con menos privilegios (no queremos que la aplicación Snorby use la contraseña de root para interactuar con la base de datos):

$ mysql -u root -p
myslq> create user 'snorby'@'localhost' IDENTIFIED BY 'PASSWORD123';
myslq> grant all privileges on snorby.* to 'snorby'@'localhost' with grant option;
myslq> flush privileges;
myslq> exit

Ahora que hemos creado un nuevo usuario y contraseña de snorby MySQL, edite Snorby's database.yml para usar la nueva cuenta:

sudo nano /var/www/snorby/config/database.yml

Debemos configurar los parámetros establecidos anteriormente. Para finalizar, ya podemos ejecutar Snorby:

sudo bundle exec rails server -e production

Esto iniciará Snorby y estará disponible en el puerto 3000.