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
Deja una respuesta