Apuntes de sistema: Servidor en Linux, los basics (parte 2)

linux ubuntu server basics

Instalar Linux (en especial distros server-style) de cero es como abrir un cuaderno en blanco: limpio, rápido, y listo para añadir nuestro contenido. Antes de armar nuestro proyecto en este servidor, no esta demás hacer algunas configuraciones iniciales, como en cualquier aparato hoy en día. So, hice un pequeño (¿pequeño?) apunte sobre esto, empecemos:

Indice

Acceder al bash

Lo primero, decir que estamos en Linux. Tenga o no tenga GUI, vamos a usar mucho la consola para muchas cosas, por ende, es necesario que te acostumbres a esto. Puede complicar un poco al principio, pero después se le toma hasta cariño acceder a una línea de comandos, agiliza las cosas. ¿Y como accedemos? Tenemos dos formas:

  • De forma local, conectándole a la máquina un teclado, y una pantalla.
  • De forma remota, a través de SSH (Secure Shell).

En la primera, la pantalla tiene un login básico, de usuario, y clave.

Prefiero la segunda, si tengo un notebook me da la comodidad de configurarla en la comodidad de la cama de forma remota, y no encorvando la espalda en algun lugar incomodo. Además de que si instalo servicios como VPN en la red (con la respectiva configuración), puedo acceder a ella desde cualquier parte del mundo.

Para acceder por SSH, abrimos cmd en Windows (desde W8 en adelante, anterior a eso se debe usar un programa aparte como PuTTY) o, en macOS: Terminal. Seguido a esto se debe usar el siguiente comando:

ssh user@ip

Debemos reemplazar user por el usuario que creamos en la instalación (usamos en la publicacion anterior juan), y ip, por la ip que tiene asignada. De ejemplo vamos a usar juan como usuario, y 192.168.1.101 como ip, por ende, queda así:

ssh juan@192.168.1.101

Al ser la primera vez que te conectas a Linux mediante SSH, entregará un mensaje similar a este:

Fingerprint

A esta opción escribimos yes, y posteriormente pedirá la contraseña:

Password

Despues de, si nos entrega esto:

Logon Screen

... quiere decir que ya estamos conectados vía SSH.

Actualización de software

Desde el tiempo en que se publica la distro, hasta el tiempo en que la instalaste, normalmente los programas (desde ahora les llamaremos paquetes) pueden haber recibido alguna actualización, para corregir vulnerabilidades o incorporar nuevas características. En distribuciones Debian, esto se puede realizar con los siguientes comandos:

sudo apt-get update && sudo apt-get upgrade -y

Voy a marcar dos cosas importantes en este comando. La primera, es que al apretar Enter, pedirá la clave de super usuario o root. Esto es debido a que ponemos primero sudo, comando que realiza la siguiente tarea como super usuario requerido para algunas tareas, como actualizar paquetes, o modificar algún archivo de sistema (sudo, en inglés, es como un "super user do...") La segunda, es que aquí no es un comando, si no dos. Gracias al &&, concatené sudo apt-get update y sudo apt-get upgrade -y (la y es de yes, para confirmar la operación) en una única línea. El sistema automáticamente una vez terminado el primer comando, accionará el segundo. Sirve para concatenar mas comandos inclusive:

echo hola && echo " probando" && echo " texto"

Va a dar como resultado "hola probando texto" (puse espacios antes, si no queda como holaprobandotexto).

Manuales en castellano y locales

Esto sirve si quieres tener los manuales (manpages) en español, además de configurar ciertas variables de localización para que la máquina tenga bien configurado cosas como el idioma, moneda, fechas y horas, que está en el país al que pertenece:

sudo apt-get install manpages-es && sudo dpkg-reconfigure locales

Aquí va a darte una pantalla donde elegir el país que corresponda. En mi caso, siendo Chile, usaré es_CL.UTF-8. Despues de esto, se sugiere hacer un logout / login.

En base a lo mismo, configuraremos también la zona horaria:

sudo timedatectl set-timezone America/Santiago

Aquí puse Santiago de Chile, pero depende de tu zona. Hay una lista bien útil en PHP.net donde puedes encontrar la que te corresponda, o poner el comando timedatectl list-timezones.

Cliente NTP, mantengamos sincronizada la hora

Instalaremos los paquetes ntp y ntpsec-ntpdate para mantener configurada la hora de forma automática. Usaremos el servicio NTP del Servicio Hidrográfico y Oceanográfico de la Armada (SHOA) de Chile en este caso. Debemos probar su conexión antes:

sudo apt-get install ntp ntpsec-ntpdate -y # Instala los paquetes necesarios
sudo ntpdate ntp.shoa.cl # Prueba de conexión con ntp.shoa.cl

Si funciona y actualiza la hora, añadamos el servidor a la lista del servicio ntp y lo echamos a andar:

echo "server ntp.shoa.cl" | sudo tee -a /etc/ntpsec/ntp.conf
sudo service ntpd start

Paquetes esenciales para proyectos en general

No está demas en un PC instalar algun software para descomprimir archivos zip, o algún gestor de descargas, de la misma manera, instalemos algunos paquetes que nos pueden servir mas adelante:

sudo apt-get install curl wget net-tools git unzip fail2ban ufw -y

Cosillas que vamos a instalar en este paso:

  • curl: Para transferencia de archivos, y uso de algunas API.
  • wget: Herramienta que sirve para descargas.
  • net-tools: Utilidades para la red, como ifconfig, netstat, arp, etc.
  • git: Gestor de control de versiones.
  • unzip: Para descomprimir archivos .zip (que probablemente hayas bajado con wget)
  • fail2ban: Fail2ban es una herramienta de seguridad, evita accesos no autorizados a tu servidor.
  • ufw: Firewall. A la hora de tener ciertos servicios, es muy recomendable filtrar ciertos accesos. Mas adelante hablaré sobre UFW.

Sobre fail2wan, es bien facil de activar:

sudo systemctl enable fail2ban --now
sudo fail2ban-client status

Tip: Cambio de nombre de la máquina

Si a la hora de instalar elegiste mal el nombre (hostname) de la maquina y quieres cambiarlo:

sudo hostnamectl set-hostname <define aquí tu nuevo nombre>

Puedes usar mayúsculas, minúsculas, números y guiónes.

¿Terminamos?

Una vez hecho esto, te sugiero dos cosas, limpiar paquetes que no son necesarios:

sudo apt-get autoremove -y && sudo apt-get clean

y por supuesto, un reinicio no está demás:

sudo reboot

Si quieres apagar la máquina y seguir mañana:

sudo shutdown -P now