lunes, 14 de octubre de 2019

Como prohibir el acceso root a conexion por ssh

Lo primero que vamos a hacer es aprender a editar el siguiente archivo /etc/ssh/sshd.config, el cual permite el acceso al equipo como usuario root utilizando SSH
Vamos a ver como inicia estos pasos:

Ahora procedemos a configurar el servidor ssh, modificando el archivo nano /etc/ssh/sshd.config y ubicamos la directiva #PermitRootLogin y se debe des comentar y colocar como no



 

 Una vez modificado, guardamos los cambios y salimos del terminal para realizar la prueba de ingreso como usuario root

Como restringir el acceso root a los usuarios de Linux

Lo primero que vamos a hacer es aprender a editar el siguiente archivo /etc/securetty, el cual permite el acceso al equipo como usuario root a las consolas que nosotros indiquemos.
Vamos a ver como inicia estos pasos:

 

En esta imagen observamos la lista de terminales desde los cuales se permiten los accesos directos  como usuario root.
Vamos a trabajar con el dispositivo TTY para explicarlo.

Inicialmente se abre el archivo con un editor como nano y comenta la entrada tty1:

#nano /etc/securetty 

console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
#tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
Una vez comentado el TTY1 procedemos a guardar la modificación y salir de la edición.
Una vez que salimos cambiamos al primer TTY de la siguiente manera CTRL + alt + 1
e intentamos iniciar sesión como root, tendremos el siguiente resultado
 
 

Es importante que sepas que esto no afectara el inicio de sesión como usuario root cuando utilices SSH.

Para restringir el acceso como root desde la conexión de ssh ver aquí .



jueves, 10 de octubre de 2019

Los archivos que deberíamos eliminar de WordPress

En la raíz de la web solo deberíamos tener archivos con extensión php y el archivo .htaccess
El resto de archivos, con extensiones txt o html deberían ser eliminados, a menos que los hayamos añadido nosotros para algún cometido en particular, o se hayan instalado con algún plugin (normalmente ningún plugin debería dejar archivos en la raíz, pero puede que haya excepciones).

Los archivos que deberíamos eliminar son los siguientes (puede que no lo tengas todos):

license.txt
licencia.txt
readme.html
 
Si, por seguridad, no los quieres eliminar, puedes crear un directorio nuevo donde mover estos archivos o también puedes renombrarlos. 
Por ejemplo, puedes cambiar el nombre license.txt por license_oculto.txt.
En todo caso, sin estos archivos tu WordPress también funcionará perfectamente.

Importante: También se ha de tener en cuenta que cada vez que actualicemos WordPress a una nueva versión es posible que estos archivos eliminados se vuelvan a añadir, por lo que deberemos estar atentos, una vez finalizada la actualización, si es necesario volver a borrar los ficheros sobrantes.

Ver como ocultar archivos sensibles de WordPress

Ocultar archivos sensibles de WordPress

Pasemos ahora a los archivos que pueden contener información sensible.
Serían los archivos
wp-config.php 
.htaccess 

Ambos situados en la ráiz de nuestro WordPress. 

El archivo wp-config.php contiene diversa información de la configuración de WordPress, como el nombre de la base de datos que se está utilizando o el usuario y contraseña que se utiliza para conectarse, además de otra información que conviene mantener segura.

El archivo .htaccess también es importante porque puede ser utilizado por los atacantes para debilitar la seguridad de nuestra web.
 

Estos archivos no serían accesibles para usuarios externos, pero nunca viene mal añadir una capa de seguridad adicional. Para ello deberemos editar el archivo .htaccess y añadir al principio del mismo el siguiente código:

# proteger wpconfig.php
<files wp-config.php>
order allow,deny
deny from all
</files>

# proteger htaccess
<files .htaccess>
order allow,deny
deny from all
</files>

De esta manera, indicamos que se bloquee el acceso a ambos archivos de forma externa, solo siendo accesibles desde el propio servidor, que es justo lo que necesitamos.

Ocultar la versión PHP de WordPress

Si tenemos acceso al archivo php.ini, donde se guarda la configuración de PHP, nos originaria un problema por el cual se debe mejorar de la siguiente forma.

Se debe agregar la siguiente linea
expose_php = Off. 

En caso de que ya tuvieras la línea con el valor On
expose_php = On 
Se debe cambiar el valor On a Off

Esta la posibilidad que no se tenga acceso a la configuracion de php debido que se este contratando un hosting que son la mayoria de los casos, deberemos solicitar este cambio a los proveedores del servicio.
 
En caso de que no se pueda contactar los administradores del hosting, podemos añadir unas líneas de código en el archivo .htaccess de la raíz de la web para evitar que se muestre la versión de PHP.

Ocultar la versión PHP con las siguientes lineas en el
.htaccess:

ServerTokens Prod
ServerSignature Off
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]


En este caso que modificamos el
.htaccess, estas líneas no evitarán que en las cabeceras HTTP siga saliendo la versión de PHP que se ejecuta, por lo que la solución correcta sería el cambio en el archivo php.ini anteriormente comentado.

De esta forma estaremos algo más protegidos.
Aunque este tema no se puede considerar una agujero de seguridad grave, nunca está de más ocultar esta información.

Ocultar listado de ficheros en directorios WordPress

Se debe añadir el siguiente texto al inicio de tu fichero .htaccess:

Options -Indexes

Si en lugar de Apache usas Nginx, has de abrir el fichero de configuración de tu VirtualHost y añadir algo así:


location / {
autoindex off;
}


Con esta sencilla medida mostrada anteriormente, si alguien intenta listar los directorios de tu web, obtendrá un bonito mensaje 403 Forbidden (Prohibido)

jueves, 3 de octubre de 2019

Como limpiar logs sin borrar el archivo

Primero ingresamos al directorio
$su
#cd /var/log

Una vez que estamos dentro del directorio listamos los archivos
#lsanaconda           btmp-20191001  dmesg.old              grubby_prune_debug  messages            secure            spooler-20190922
audit              chrony         fail2ban.log           iptraf-ng           messages-20190908   secure-20190908   spooler-20190929
boot.log           cron           fail2ban.log-20190519  lastlog 


Posteriormente verificamos cuanto es el peso de los directorios y archivos con el siguiente comando 
du 
-s  Con esta opción indicamos que solo tome en consideración los archivos especificados
(* para todos los archivos)
-c  Muestre el total del espacio consumido.
-h  Mejorar la legibilidad de los datos presentados al agregar el tamaño de los archivos en kb, mb, gb.

-csh * lista archivos y muestra el total del peso
-csh * | grep G lista archivos y muestra el total del peso que contengan la letra G
-cs * | sort -nr  ver los archivos desde el más pesado al más liviano (ordenados)
-cs * | sort -nr | head -3 ver los 3 archivos más pesado

#du -csh *
 0         tallylog
20K     tuned
860K   wtmp
44M     yum.log
55M     total


vamos a proceder a limpiar el archivo mas pesado yum.log 

#shred -vfzu yum.log






martes, 1 de octubre de 2019

Guardar y restaurar container de Docker

Resultado de imagen para container de docker exportar
En este espacio voy a explicar como se exporta un container de docker, luego enviarlo a otro servidor y por ultimo importarlo en el mismo

Entramos al terminal, iniciamos como súper usuario (root)
 y verificamos los ID de los container

#docker ps -a
CONTAINER ID        IMAGE                       COMMAND                     CREATED             STATUS                   PORTS

e9fba9a80bff        jenkins:2.179       "/sbin/tini -- /usr/…" 3 months ago    Up 3 months       8080

1-Una vez que conocemos el ID del container procedemos a preparar la exportacion
Sintaxis
#docker export ID_CONTAINER > /ruta/donde/seva/exportar/file.tar

Ejecución del comando
#docker export e9fba9a80bff  > /home/usuario/jenkins.tar

2-Ya creamos el .tar de nuestro container ahora procedemos a moverlo de un servidor a otro con el siguiente comando
Sintaxis
scp nombre_archivo.ext usuario_remoto@ip_destino:/ruta/destino

Ejecución del comando
#scp jenkins.tar root@10.10.0.2:/home/usuario
   
3-Por ultimo importamos en el servidor destino el container que acabamos de pasar via scp
Sintaxis
cat /ruta/donde/exportar/container.tar | docker import - some-name:latest

Ejecución del comando
#cat /home/usuario/jenkins.tar | docker import - jenkins:latest