Contenido
En este documento veremos el proceso y comandos básicos para instalar servicios en un sistema operativo Ubuntu.
Partiremos de un Ubuntu Server al cual accederemos vía SSH.
Tecnologías a implementar
SERVER – HOST
En la primera fase prepararemos el sistema para acceso remoto con seguridad baja. En la segunda fase securizaremos el servidor.
Servicios y herramientas:
- SSH
- Apache2
- PHP
- MySQL
- FTP
- CMD o PuTTY para conexión SSH
- Workbench
- VS Code vía SSH
- FileZilla cliente
1. Conexión SSH
Primero comprobamos si SSH está instalado:

dpkg -l | grep openssh-server
Si aparece openssh-server, está instalado. Si no:
sudo apt install ssh
Una vez instalado, desde Windows o PuTTY:
ssh usuario@ipdelservidor
2. Instalación de Apache2
Instalamos Apache:
sudo apt install apache2
Esto permitirá responder a peticiones HTTP por el puerto 80.
Si la máquina usa IP dinámica, consulta la IP con:
ifconfig
(Instalar net-tools si no lo tienes: sudo apt install net-tools)
Al acceder desde un navegador a la IP del servidor, deberías ver la página por defecto de Apache.

La carpeta web se encuentra en:
/var/www/html
Aquí podrás crear tus documentos HTML.
3. Instalación de MySQL Server
Instalamos MySQL:
sudo apt install mysql-server
Ejecutamos script de configuración:
mysql_secure_installation
Las preguntas:
- Set root password? → Y
- Remove anonymous users? → Y
- Disallow root login remotely? → Y
- Remove test database? → Y
- Reload privilege tables now? → Y
Reinicia el servicio:
sudo systemctl restart mysql
Acceso:
sudo mysql -u root -p

3.1 Conexión remota a MySQL
Debemos modificar el archivo mysqld.cnf:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Busca:
bind-address = 127.0.0.1
Cámbialo por:
0.0.0.0
(Así permitimos conexiones remotas.)
Políticas de contraseñas MySQL
Valores: LOW = 0, MEDIUM = 1, STRONG = 2.
Ver configuración actual:
SHOW VARIABLES LIKE 'validate_password%';

Cambiar política:
SET GLOBAL validate_password.policy=LOW;
También puedes personalizar los requisitos:
SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.number_count = 0;
Según queramos podemos cambiar el valor por LOW, MEDIUM o STRONG
Ejemplos de contraseñas:
LOW:
12345678
password
MEDIUM
Estudiante123@
Codificador NINZA$100
demoPass#00
Esta es la recomendada, por defecto solicita
- La contraseña debe tener al menos 8 caracteres.
- El recuento de mayúsculas y minúsculas es 1 (al menos 1 letra en minúscula y 1 letra enmayúscula)
- El recuento de números es 1
- El número mínimo de caracteres especiales es 1
Otra forma de cambiar la politica de contraseñas sería:
mysql>SET GLOBAL validate_password.policy=0;
mysql>SET GLOBAL validate_password.policy=1;
mysql>SET GLOBAL validate_password.policy=2;
Tambien podemos personalizar los requisitos de cada una, ejemplo:
mysql>SET GLOBAL validate_password.length = 6;mysql>SET GLOBAL validate_password.number_count = 0;
Ahora que las reglas para una contraseña válida están claras, puedes crear un usuario con
una contraseña válida
3.2 Creación de usuario MySql
Crear usuario:
CREATE USER 'user'@'127.0.0.1' IDENTIFIED BY 'Estudiante123@';
CREATE USER 'user'@'%' IDENTIFIED BY 'Estudiante123@';
Al crear el usuario ponemos entre la @ primero el nombre y luego desde donde vamos a
permitir que se conecte. si es desde localhost, una ip determinada o cualquier sitio.
Ejemplos:
CREATE USER ‘user’@’127.0.0.1’ IDENTIFIED BY ‘Estudiante123@’;
crearemos un usuario con contraseña MEDIUM y que solo se pueda conectar desde
localhost
CREATE USER ‘user’@’%%’ IDENTIFIED BY ‘Estudiante123@’;
Asignar permisos:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD
ON *.* TO 'user'@'%' WITH GRANT OPTION;
Aplicar cambios:
FLUSH PRIVILEGES;
3.3 Conexión desde Workbench
Ahora que ya tenemos configurado nuestro gestor de mysql y hemos puesto que se pueda
acceder desde cualquier Ip, instalamos Workbench en nuestro host y nos conectamos.
En el cliente, instala Workbench y conecta usando:

- IP del servidor
- Puerto 3306
- Usuario creado
- Contraseña asignada
4. Instalación del servicio FTP (VSFTPD)
Instalar:
sudo apt install vsftpd
Hacemos backup del archivo de configuración:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_old
Editar configuración:
sudo nano /etc/vsftpd.conf
Pegar:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100
allow_writeable_chroot=YES
Como hemos realizado una copia de seguridad podemos borrar su contenido, otro truco
para muchos archivos de configuración en linux es comentar las lineas anteriores con #, o
simplemente poner la nueva configuración al final del documento.
*Ubuntu en algunas versiones, viene con un firewall llamado UFW. En este caso le debemos
de decir que abra el puerto 20, 21 y los del 10000 al 10100 para su correcto funcionamiento
Abrir puertos en UFW:
sudo ufw allow from any to any port 20,21,10000:10100 proto tcp
Reiniciar servicio:
sudo systemctl restart vsftpd
4.1 Acceso vía FTP desde el cliente
Para transmitir archivos via FTP al servidor podemos usar cualquier programa de
transmisión de archivos como Filezilla-client

Utiliza FileZilla-client y conecta usando:
- IP del servidor
- Usuario FTP
- Contraseña
- Puerto 21
Cada usuario tendrá acceso a su carpeta.
4.2 Acceso FTP a la carpeta web de Apache
Dado que nuestro objetivo es montar un servidor web, debemos tener la opción de poder
acceder a las carpetas de de apache html, para poder transmitir los archivos de una web,
imagenes, etc.
Existe varios modos, veamos el que considero mas sencillo para inicial. Que consiste en
crear un usuario donde su carpeta personal sea la www de Apache2 y dar permisos a esta
carpeta.
Creamos un usuario cuyo directorio sea la carpeta web:
sudo useradd -m ftpuser
sudo passwd ftpuser
*Con la opción -m indicamos que nos cree una carpeta para el usuario
Finalmente, podemos editar el archivo /etc/passwd para cambiar la carpeta al que el usuario
tendrá acceso.
sudo nano /etc/passwd ← Cambia el directorio del usuario.

También podrías jugar con los grupos de usuarios en Linux, para dar acceso a diferentes
usuarios, algunos comandos útiles que podrías repasar podrían ser:
Modificar grupos/permisos:
sudo chgrp -R ftpuser www
sudo groupadd grupo
sudo adduser usuario grupo
sudo chmod -R 775 www
5. Instalación del intérprete PHP
Instalamos PHP y módulos:
sudo apt install php libapache2-mod-php php-mysql php-cli
php: el propio interprete, si queremos una versión especifica podriamos poner php8.1, php7,
etc.
libapache2-mod-php: Libreria que permite trabajar a apache2 con php (Imprescindible en
nuestro caso)
php-mysql: Libreria que permite hacer conexiones desde php a mysql (Imprescindible si
hacemos app con acceso a bases de datos).
php-cli: Aunque para un servidor web no es necesario, si es util para ejecutar scripts de php
directamente en la terminal, para temas de mantenimiento, tareas crontab, envio de
mensajes, etc.
Una vez instalado puede comprobar la versión instalada con:
php -v

Crear archivo de prueba:
sudo nano /var/www/html/version.php
Contenido:
<?php
phpinfo();
?>
Dar permisos:
sudo chmod 775 version.php
Probar desde el navegador: http://IP/version.php

Ejecución PHP desde terminal
Crear archivo:
sudo nano infosys.php
Contenido:
<?php
$os = php_uname();
$cpu = shell_exec('cat /proc/cpuinfo | grep "model name" | head -n 1');
$memTotal = shell_exec('cat /proc/meminfo | grep MemTotal');
$memFree = shell_exec('cat /proc/meminfo | grep MemFree');
$disk = shell_exec('df -h');
echo "Información del Sistema:\n";
echo "Sistema Operativo: $os\n";
echo "Procesador: $cpu\n";
echo "Memoria Total: $memTotal";
echo "Memoria Libre: $memFree\n";
echo "Espacio en Disco:\n$disk\n";
?>
Ejecutar:
php infosys.php
6. Acceso por SSH desde un IDE – Visual Studio Code
Instalar VSCode: https://code.visualstudio.com/Download

Instalar extensión: Remote – SSH
Crear conexión:
- Clic en icono de conexión remota.
- Add New SSH Host.
- Indicar un nombre sin espacios.
- Elegir dónde guardar el archivo de configuración.
- Indicar sistema operativo remoto (Linux).
- Escribir parámetros:
Host Mi_conexion
HostName 192.168.x.x
User ubuntu
Una vez guardado, podrás acceder desde VS Code, abrir carpetas del servidor y usar la terminal integrada.









![[Reto] - Infraestructura virtualizada con Ubuntu Server 9dc81aff-d57d-45b1-83e9-c70955561713](https://laaventuradeaprender.com/wp-content/uploads/2026/03/9dc81aff-d57d-45b1-83e9-c70955561713-150x150.png)