Capitulo I: Configuraciones iniciales

Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.

Lo primero de todo, tienes que entrar al servidor por SSH.

ssh root@123.45.67.89

Entramos como usuario root como excepción, será la única vez que lo hagamos, luego quitaremos acceso root al servidor.
Una vez dentro, lo primero, cambiar la contraseña de root:

passw

y añadir un usuario que usaremos como principal

adduser txurdi

Ahora, quitaremos acceso ssh al usuario root y daremos permisos al usuario txurdi, además de configurar algunas cosas para mayor seguridad:

visudo

Añadimos al final del todo:

txurdi   ALL=(ALL) ALL

Para asegurarlo más, podemos copiar la clave pública nuestra en el server para acceder sin necesidad de escribir el pass cada vez. Ya lo escribí en otro Post [Acceder por SSH sin escribir clave (clave publica-privada)], por lo que no lo voy a repetir ahora.

nano /etc/ssh/sshd_config

Y cambiamos estos valores a nuestro gusto:

Port 30000                           <--- Usa un puerto diferente si quieres
Protocol 2
PermitRootLogin no
PasswordAuthentication no       <-- Esto sólo si hacemos lo de la clave pública-privada
X11Forwarding no
UsePAM no
UseDNS no
AllowUsers txurdi

Ok, ahora vamos a configurar un poco las iptables. Si no lo entendéis muy bien (como yo) hacer un copy-paste y confiad en PickledOnion que es quien escribió el artículo original en inglés.
Guardamos las reglas existentes en un archivo por si acaso:

iptables-save > /etc/iptables.up.rules

Podemos ver las reglas existentes de la siguiente manera:

iptables -L

Para modificarlas, creamos un fichero de texto nuevo:

nano /etc/iptables.test.rules

En el que escribimos +o- lo siguiente:

*filter

#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT

#  Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

Y con esta sentencia, aplicamos los cambios:

iptables-restore < /etc/iptables.test.rules

Si volvemos a mirar las reglas, vemos que han cambiado un poquito…

iptables -L

Si todo es correcto, guardamos las reglas descritas arriba:

iptables-save > /etc/iptables.up.rules

Ahora, hagamos que se apliquen las reglas cada vez que reiniciemos el servidor:

nano /etc/network/interfaces

Solo hace falta añadir una línea para que quede +o- así:

...
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.up.rules

# The primary network interface
...

Ahora que ya tenemos todo, vamos a hacer que se aplique toda la configuración de SSH reiniciando su demonio:

/etc/init.d/ssh reload

No salgas todavía, primero abre otro terminal y prueba que puedes acceder al servidor, no vaya a ser que hayamos hecho algo mal…

ssh -p 30000 txurdi@123.45.67.890

Si todo ha ido bien, podrás loguearte al server, si no, la hemos pifiado en algún punto, repasa todos los pasos. Si sales de la consola de root, y no puedes loguearte por ssh, puedes usar la consola AJAX que ofrece slicehost desde el panel de administración de tu slice.

Capítulo anterior: Configurar un servidor web
Siguiente capítulo: Capitulo II: Actualizacion del SO y ponerlo bonito

2 respuestas a «Capitulo I: Configuraciones iniciales»

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.