PEC1 SOLUCION Servidores

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

PEC1 - Solución

Seguridad y calidad en servidores web

PEC1: Instalación de una plataforma LAMP

Período: 201802

Ejercicio 1

Instalación del servidor web


sudo apt-get install apache2 apache2-utils

Crear vhost para el puerto 80


En Apache tenemos un vhost por defecto que escucha por el puerto 80. Su definición está
en el archivo ​/etc/apache2/sites-enabled/000-default.conf​. Se puede modificar la
configuración de este vhost si es necesario. Aquí vemos que se indica la raíz del servidor
web (DocumentRoot), la dirección del administrador (ServerAdmin) o las rutas a los archivos
de log (ErrorLog i CustomLog).
<VirtualHost *:80>
# The ServerName directive sets the request scheme,
hostname and port that
# the server uses to identify itself. This is used when
creating
# redirection URLs. In the context of virtual hosts, the
ServerName
# specifies what hostname must appear in the request's
Host: header to
# match this virtual host. For the default virtual host
(this file) this
# value is not decisive as it is used as a last resort host
regardless.
# However, you must set it for any further virtual host
explicitly.
#ServerName www.example.com

ServerAdmin jzaera@uoc.edu
DocumentRoot /var/www/html

1/9
# Available loglevels: trace8, ..., trace1, debug, info,
notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for
particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which


are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For
example the
# following line enables the CGI configuration for this
host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Para configurar un nuevo servidor virtual para un hipotético blog, primero se tiene que
decidir si será un servidor por nombre o por IP. Suponiendo que sea por nombre los pasos
serán los siguientes:

● Creamos la carpeta del nuevo vhost:

sudo mkdir /var/www/html/blog.elmeudomini.edu

● Dentro de la carpeta creamos un archivo HTML llamado, por ejemplo, index.html:

<html>
<head>
<title>Blog</title>
</head>
<body>
Usted está en el blog
</body>
</html>

● Copiamos el archivo del vhost por defecto en uno nuevo para el nuevo vhost
(aunque se podría configurar dentro del mismo archivo):

2/9
sudo cp /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/blog.elmeudomini.edu

● Modificamos el archivo dando valor a las directivas ServerName, ServerAlias (si cal),
DocumentRoot, ErrorLog y CustomLog:

● Activamos el nuevo vhost:

sudo a2ensite blog.elmeudomini.edu.conf


● Reiniciamos Apache.

sudo apache2ctl restart

Para comprobar que el vhost funciona deberíamos tener la entrada correspondiente en


nuestro DNS. Como no la tenemos, podemos añadir al archivo ​/etc/hosts​una línea que
permita resolver el nombre ​blog.elmeudomini.edu​. De esta forma, al poner la URL
http://blog.elmeudomini.edu​en el navegador, veremos el contenido del archivo index.html
que hemos creado antes.

3/9
Ejercicio 2

Instala PHP
Primero instalamos (​https://thishosting.rocks/install-php-on-ubuntu/​):

sudo apt-get install php

Comprobamos que está instalado con:

php -v

Aprovechamos e instalamos algunos módulos de PHP que nos pueden hacer falta y otros
que pueden ser útiles:

sudo apt-get install php-pear php7.2-dev php7.2-zip php7.2-curl


php7.2-gd php7.2-mysql php7.2-xml libapache2-mod-php7.2

Si intentas instalar el módulo mcrypt para PHP, en la versión 7.2 se ha eliminado, com se
puede leer aquí: ​https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/

Comprobaciones
Comprobamos si Apache tiene el módulo de PHP activado consultando la lista de módulos
activados:

sudo apache2ctl -M

Su resultado:

4/9
También se puede ejecutar combinada con grep para obtener la información más
rápidamente:

sudo apache2ctl -m | grep php

El archivo de configuración de PHP está en ​/etc/php/7.2/apache2/php.ini​. Esta ruta puede


variar en función de la versión de PHP. A continuación veremos las comprobaciones y
cambios de configuración que se tienen que hacer.

● Si la directiva log_errors tiene valor On (está así por defecto) el log de errores de
PHP estará activado.

log_errors = On

● La ruta del log de errores se configura en la directiva error_log:

5/9
error_log = php_errors.log
● Para establecer el tamaño máximo de la subida de archivos:

upload_max_filesize = 50M
● Para establecer el tamaño máximo de memoria RAM que se puede utilizar:

memory_limit = 256M
● Para limitar a 2 minutos el tiempo de ejecuciónde los scripts:

max_execution_time = 120 #segons


● Para limitar a 2 minutos de proceso de los datos de entrada:

max_input_time = 120 #segons

Después de modificar la configuración reiniciamos el servidor Apache:

sudo apache2ctl restart

Finalmente queda ejecutar phpinfo para ver toda la información sobre nuestro servidor. Para
hacerlo vamos a la raíz del servidor web y creamos allí un archivo, llamado info.php (por
ejemplo), con el siguiente contenido:

<?php
echo phpinfo();
?>

Si vamos a la ​http://<IP servidor>/info.php​se nos mostrará una página con toda la


información de nuestro sistema LAMP.

Ejercicio 3

Instala MySQL

sudo apt-get install mysql-server mysql-client

6/9
Accede a MySQL desde el terminal

mysql -u root -p

Si la llamada muestra un error denegando la conexión desde ​root@localhost,​ la solución


que se puede aplicar es acceder como superusuari del sistema
(​https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-ac
count-in-ubuntu-16-04​):

sudo mysql -u root -p


Hay que poner la contraseña del usuario del sistema y después la del root de MySQL. En
principio la contraseña está vacía.

A continuación se puede camviar la contraseña de root con:

ALTER USER 'root'@'localhost' IDENTIFIED WITH


mysql_native_password BY 'nueva_contrasenya';

Esto cambiará la contraseña y la siguiente vez ya permitirá entrar a MySQL sin sudo y con
el usuario root. Debemos tener en cuenta que el usuario root podrá acceder por MySQL a la
base de datos vía web. Si no queremos que acceda root vía web con phpmyadmin,
entonces se puede modificar la configuración de la aplicación modificando la directiva
AllowRoot, dándole valor FALSE
(​https://www.tecmint.com/disable-root-login-access-to-phpmyadmin/​).

Configuración de MySQL

Archivo de configuración
El archivo de configuración de MySQL está en ​/etc/mysql/my.cnf​. En la versión actual de
MySQL este archivo contiene las instrucciones para modificar la configuración global o de
usuario del servidor. Se puede ver que se incluye la referencia a las carpetas donde está la
configuración del servidor MySQL. En ​/etc/mysql/mysql.conf.d/mysqld.cnf​está la
configuración que en versiones anteriores estaba en el archivo principal.

7/9
Seguridad
El comando siguiente permite gestionar la seguridad del servidor:

mysql_secure_installation

Hay que identificarse con el usuario root de MySQL. Después permite configurar y activar el
complemento VALIDATE PASSWORD: Permite configurar la calidad de la contraseña de los
usuarios, cambiar de contraseña de root, habilitar o deshabilitar cuentas anónimas, evitar
conexiones remotas de root (solo desde localhost), eliminar la base de dats de prueba y
actualizar las tablas de permisos.

Ejercicio 4

Instalación de phpmyadmin
Hay que descargar la aplicación desde ​http://www.phpmyadmin.net​. Se puede instalar
también mediante apt-get pero optamos por la instalación tradicional y común a cualquier
sistema. Una vez descargada la aplicación se descomprime en el directorio
/var/www/html/phpmyadmin​.

unzip phpMyAdmin-4.8.5-all-languages.zip

A continuación copiamos la carpeta con phpmyadmin en el árbol de carpetas del servidor:

sudo mv phpMyAdmin-4.8.5-all-languages /var/www/html/phpmyadmin

En este ejemplo se ha movido cambiando el nombre de la carpeta por phpmyadmin.


Cambiamos el propietario y grupo de la carpeta para que lo sea www-data, el usuario de
Apache:

sudo chown www-data:www-data /var/www/html/phpmyadmin

Este paso no es necesario para que funcione phpmyadmin pero puede serlo en algunas
aplicaciones que lean y escriban algunos archivos o carpetas, además de gestionar los
permisos sobre estos.

El acceso a phpmyadmin será ​http://<IP del servidor>/phpmyadmin​.

8/9
Referencias
● VirtualHost Examples (web oficial de Apache)
● How to install PHP (7, 7.2 or 7.3) on Ubuntu
● How to install mcrypt for PHP 7.2
● can't login as mysql user root from normal user account in ubuntu 16.04
● How to Disable root Login Access to PhpMyAdmin
● phpMyAdmin

9/9

También podría gustarte