Etiquetassh

Mejorar seguridad de servidor Linux

1.- Instalar y ejecutar solo lo necesario

Muchas distribuciones o paquetes pueden iniciar ciertos servicios, ejecutándose en diferentes puertos. Eso podría suponer un riesgo de seguridad. Entonces, abrir la terminal y ejecutar:

netstat -npl

La salida mostrará que servicios se están ejecutando y en que puertos. Si detecta algún servicio que no debería estar funcionando, detenerlo. También se debe vigilar los servicios que están habilitados y se ejecutan al inicio del sistema. Se puede  comprobar con el siguiente comando en sistemas que ejecutan systemd:

systemctl list-unit-files --type=service | grep enabled

Dependiendo del sistema,  se obtendrá una salida como la que se muestra en la Figura 1 anterior. Si aparece algún servicio no deseado, deshabilitarlo usando el comando systemctl:

systemctl disable service_name

2.- Restringir acceso al servidor

No es buena práctica utilizar el acceso root. Para lo cual se debe crear un nuevo usuario.

Agregar usuario para Red Hat / Centos

A.- Agregar usuario

useradd nombreusuario

B.- Crear contraseña para el usuario:

passwd nombreusuario

Ingresar la contraseña respectiva.

C.- Ahora se deben dar poderes «sudo».  Para lo cual ejecutar el siguiente comando:

EDITOR=nano visudo

D.- Buscar la siguiente línea:

# %wheel ALL=(ALL) ALL

E.- Descomentar la línea (el símbolo # significa que está comentado; simplemente eliminar el símbolo para descomentar) para que se vea así:

%wheel ALL=(ALL) ALL

F.- Guardar y cerrar el archivo. Si el usuario no pertenece al grupo de wheel, se puede agregar ejecutando este comando:

# usermod -aG wheel nombreusuario
Agregar usuario para Ubuntu / Debian

A.- Agregar usuario:

adduser nombreusuario

Responder algunas preguntas que hará el sistema, incluida la creación de la contraseña para este usuario.

B.- Una vez creado, proporcionar al usuario los poderes de sudo:

gpasswd -a nombreusuario sudo

Abrir otra ventana del terminal e iniciar sesión en el servidor con el usuario recién creado y probar algunos comandos con sudo.

3.- Deshabilitar root

Para hacerlo, abrir el archivo de configuración sshd:

sudo vi /etc/ssh/sshd_config

A continuación, buscar la línea comentada:

#PermitRootLogin yes

Para editar el archivo, presionar la letra «A» del teclado y cambiar a:

#PermitRootLogin no

Luego presionar ESC para salir de la edición y finalmente guardar presionando ingresar los siguientes caracteres y presionar ENTER

:wq

Reiniciar servicio:

Para Red Hat / Centos:

sudo /etc/init.d/sshd restart

Para Ubuntu / Debian:

sudo /etc/init.d/ssh restart

Importante: No desconectarse del servidor todavía ya que se debe comprobar que el nuevo usuario tiene acceso vía SSH, de lo contrario no se podrá ingresar al servidor.
Si todo funciona bien, cerrar la sesión del servidor de forma segura como root.

4.- Cambiar puerto

De esta forma se dificulta el acceso vía SSH ya que el puerto por defecto (22) estará cerrado.

Abrir archivo sshd_config (esta vez como sudo, porque ya no se puede iniciar sesión en el servidor como root):

sudo vi /etc/ssh/sshd_config

Buscarla siguiente línea comentada:

#Port 22

Para editar el archivo, presionar la letra «A» del teclado y cambiar al puerto elegido. Importante es verificar que este puerto no sea utilizado por otro servicio.

Para esta prueba se usará el puerto 1966:

Port 1966

Luego presionar ESC para salir de la edición y finalmente guardar presionando ingresar los siguientes caracteres y presionar ENTER

:wq

Una vez más, antes de cerrar sesión en el servidor, verificar la configuración abriendo otra ventana de terminal e iniciar inicie sesión usando este patrón:

ssh -p{port_number} [email protected]_IP

Ejemplo:

ssh -p1966 [email protected]_IP

 

Fuente: https://www.linux.com/learn/how-make-your-linux-server-more-secure

Actualización de paquetes Linux (Ubuntu/Debian)

Actualización de paquetes de seguridad (Ubuntu/Debian)

Conectar vía SSH y correr los siguientes comandos:

grep security /etc/apt/sources.list | tee /etc/apt/security.sources.list
apt-get update
apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list

Presionar «Y» (sin comillas) y luego «ENTER»Press “Y” and “Enter”.

Para verificar y aplicar actualizaciones, haga esto:

apt-get update
apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list

Actualización de todos los paquetes (Ubuntu/Debian)

Conectar vía SSH y correr los siguientes comandos:

apt-get update && apt-get upgrade

Presionar «Y» (sin comillas) y luego «ENTER»

 

Fuente: https://www.3cx.com/blog/voip-howto/os-security-updates-debian/

Comandos útiles para conectarse al servidor vía SSH

Lo más básico es conectar al servidor y esto se realiza a través de consola, ya sea utilizando Terminal(Mac), Putty(Win), etc.

Una vez abierta la aplicación, ingresamos el siguiente comando:

SSH [email protected]

Presionamos «enter» y luego ingresamos la contraseña.

Con esto ya deberíamos estar en el servidor y comenzar a utilizar los comandos para las tareas que deseamos realizar.

A continuación, los comendos básicos

Comandos de navegación

  • pwd muestra el path completo del directorio en el que se encuentra
  • cd cambia de directorio, por ejemplo cd directorio/subdirectorio
  • cd ~ lleva a su directorio home
  • cd – lleva al último directorio en el que estuvo
  • cd .. sube a un directorio superior

Listado de archivos

  • ls lista archivos y directorios de un directorio
  • ls -al lista archivos y directorios e información sobre los mismos
  • ls -aR lista archivos e información incluyendo todos los subdirectorios
  • ls -aR | more lista archivos e información incluyendo todos los subdirectorios por pantallas
  • ls -alR > resultado.txt lista archivos e información de subdirectorios y lo guarda en un archivo
  • cat resultado.txt mostraría en pantalla el contenido del archivo
  • ls *.html lista todos los archivos acabados en .html
  • ls -al directorio/subdirectorio/ lista archivos e información de ese subdirectorio

Espacio

  • df -h – Espacio utilizado del disco en GB
  • df -m – Espacio utilizado del disco en MB
  • df -k – Espacio utilizado del disco en KB
  • df -T – Muestra el tipo del sistema
  • df -ht /home – Uso de un directorio específico
  • df –help – Ayuda

Crear, editar o eliminar archivos y directorios

  • pico /home/usuario/public_html/index.html    edita el archivo index.html con el editor pico
  • touch /home/usuario/public_html/404.html     crea el archivo vacío 404.html en ese directorio
  • rm archivo.txt     elimina archivo.txt
  • rm -rf directorio/     ¡CUIDADO! elimina el directorio indicado, los subdirectorios y todos sus archivos
  • mkdir descargas     Crea un directorio llamado descargas
  • rmdir descargas     Elimina el directorio llamado descargas

Otros comandos SSH

  • cp -a /home/usuario/public_html/origen/* /home/usuario/public_html/destino/Copia todos los archivos de un directorio a otro manteniendo sus respectivos permisos
  • du -sh muestra es espacio total ocupado por el directorio en el que se encuentra
  • du -sh * muestra el espacio ocupado de cada archivo y directorio
  • lynx midominio.com usar el navegador Lynx para acceder a www.midominio.com
  • whoami muestra su nombre de usuario

Compresión y descompresión de archivos

  • zip archivo.zip /home/usuario/public_html/directorio Comprimir directorio
  • unzip archivo.zip Descomprimir archivo.zip
  • unzip -v archivo.zip Ver contenido de archivo.zip

Comprimir DIRECTORIOS COMPLETOS

Comprimir y descomprimir archivos es una de las tareas más comunes que vamos a tener que realizar en Linux por línea de comandos. Podemos hacerlo mediante diversas herramientas, pero existen dos que van a estar disponibles en casi cualquier distribución.

Son dos herramientas que se tienen que utilizar de manera complementaria. Se trata de tar, que simplemente empaqueta varios archivos en un único fichero, y gzip, que hace la compresión propiamente dicha.

El comando tar tiene la siguiente sintaxis:

tar [opciones] [origen] [destino]

Donde opciones son, por ejemplo, las siguientes:

c: crear un archivo
x: extraer de un archivo
t: listar los contenidos de un archivo
v: ver un reporte de las acciones a medida que se van realizando
f: empaquetar contenidos de archivos
z: para comprimir a la vez que se empaqueta

Como se puede ver, con la opción z se puede comprimir en el mismo paso en el que se empaqueta, lo que puede hacer las cosas más rápidas y cómodas. De todos modos, tar simplemente hace el empaquetado y es gzip el que realiza la compresión. Simplemente que nosotros no tenemos que llamar a gzip, sino que ya lo hace directa e internamente tar.

Ejemplos

1) Si queremos empaquetar un directorio llamado «html» y guardar los datos en «html-paq.tar», lo haríamos con la sentencia:

tar cvf html-paq.tar html

2) Si queremos comprimir un directorio llamado «archivos» y guardarlo en un fichero llamado «archivos-comp.tgz», `podríamos hacer algo como esto:

tar czvf archivos-comp.tgz archivos

Si nos fijamos, en este caso el nombre del archivo comprimido le hemos puesto extensión .tgz, que indica que está empaquetado y comprimido.

3) Si queremos desempaquetar un archivo llamado xxx.tar podemos utilizar un comando como este:

tar xvf xxx.tar

Eso supone que tenemos el archivo xxx.tar en el mismo directorio desde donde lanzamos el comando. Los contenidos se desempaquetarán en el mismo directorio donde estamos situados.

4) Si el archivo que queremos desempaquetar está comprimido. Es decir, si queremos descomprimir y desempaquetar en un solo paso, tenemos que hacerlo con la opción z del comando tar. Algo como esto:

tar xzvf xxx.tgz

Disclaimer:
SIEMPRE respalda antes de hacer cambios, ahh y por no soy responsable de lo que puedas hacer con este tutorial.

Fuentehttp://www.aemilius.net/ayuda/articulos/comandos-ssh-shell-telnet-frecuentes.html

Imagenhttp://www.freepik.com/free-photo/working-from-bed_789592.htm#term=computer code&page=1&position=7

© 2020 Grafreek

Tema por Anders NorénSubir ↑