David Bohm

Hay dos frases que definen mi manera de pensar:
Realmente no hemos prestado mucha atención al pensamiento como un proceso; hemos participado en pensamientos, pero sólo hemos prestado atención al contenido, no al proceso.
La capacidad de percibir o pensar de manera diferente es más importante que el conocimiento adquirido.
Ambas son de David Bohm.

sábado, 13 de octubre de 2018

Kali Linux en Windows 10 (Parte 2) - Entorno gráfico

Aqui es donde le damos a Kali en el WSL (Windows Subsystem Linux) un entorno gráfico, basándonos en xfce. Si consultamos lo que dice la wikipedia sobre este entorno gráfico: "es un entorno de escritorio libre para sistemas tipo Unix como GNU/Linux, BSD, Solaris y derivados. Su objetivo es ser rápido y ligero, sin dejar de ser visualmente atractivo y fácil de usar. Consiste en varios componentes empaquetados por separado que en conjunto proporcionan la funcionalidad completa del entorno de escritorio, pero se pueden seleccionar por separado para que el usuario pueda adaptar el ambiente de trabajo a sus necesidades."

Veamos como instalarlo. Accedemos a Kali a través de menú inicio/ejecutar, tecleamos la palabra kali y pulsamos enter. Sigo no acostumbrandome a tener un linux dentro de Windows :-)

Una vez que estemos dentro de Kali, descargamos el script que va a realizar todo el trabajo:

   $ wget https://kali.sh/xfce4.sh

Damos permisos de ejecución al script:

   $ chmod +x xfce.sh

Y lanzamos el script:

   $ sudo ./xfce4.sh

Atención, va a tardar un buen rato en terminar, así que se recomienda tener muuucha paciencia. Cuando el script termina, nos indica el dato importante:

   [+] Configuring XRDP to listen on port 3390 (but not starting the service)...

Es decir, tenemos que iniciar el servicio y nos conectaremos al entorno de escritorio a través del puerto 3390. Para arrancar el servicio podemos ejecutar:

   $ sudo service xrdp start

y obtendremos algo como esto:

[....] Starting Remote Desktop Protocol server: xrdp-sesman xrdp[20181013-01:57:16] [DEBUG] Testing if xrdp can listen on 0.0.0.0 port 3390.
[20181013-01:57:16] [DEBUG] Closed socket 6 (AF_INET6 :: port 3390)
. ok

Abrimos en Windows una conexión de escritorio remoto y nos conectamos a:

   127.0.0.1:3390

Igual que lo anterior pero mas facil de teclear:

   localhost:3390

Tenemos que validarnos con nuestras credenciales del WSL, que las creamos en una entrada anterior, cuando instalamos el subsistema.

La primera vez que lo iniciamos, Kali nos muestra un mensaje de bienvenida:

   Welcome to the first start of the panel
   Choose below witch setup you want for the first startup
   [use default config] [one empty panel]

Pulsamos "use default config" y a jugar con kali!!!

SaluDOS


miércoles, 10 de octubre de 2018

Modificar el mensaje del día

Al hilo de la entrada anterior, en la que activabamos ssh en Kali Linux, un punto a personalizar, y es una tontería pero se puede poner algún mensaje interesante recordando ciertas normas por ejemplo, es el banner del día.

Para personalizarlo solo hay que editar el siguiente archivo:

   # vim /etc/motd

Y editamos poniendo algo como esto para probar:

The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

H         H AAAAA CCCCC K     K  EEEEEE RRRRR     ! ! !
H         H A         A C            K   K    E             R        R     ! ! !
HHHHH AAAAA C            K k       EEE        RRRRR     ! ! !
H         H A         A C            K   K    E             R   R          ! ! !
H         H A         A CCCCC K     K  EEEEEE R     R
                                                                                     R     ! ! !

Al conectarnos por ssh desde otra máquina, aparece el mensaje.

SaluDOS

Abrir ssh en Kali Linux

Si queremos conectarnos a una máquina Kali a través de ssh desde otro ordenador, podemos hacer lo siguiente:

Instalamos openssh-server:

   # apt install openssh-server

Iniciamos el servicio y lo hacemos persistente:

   # systemctl start ssh
   # systemctl enable ssh

También podriamos lanzar el siguiente comando para activar el servicio cada vez que arranca:

   # update-rc.d -f ssh enable 2 3 4 5

Cambiamos la keys por defecto, son genéricas y un atacante podría llegar a acceder por esta razón:

   # cd /etc/ssh
   # mkdir keys_originales
   # mv ssh_host_* keys_originales

Creamos unas nuevas keys:

   # dpkg-reconfigure openssh-server

Si no es capaz de reiniciar el servicio, lo reiniciamos:

   # systemctl restart ssh

Para poder acceder como root a través de otra máquina, podemos editar el archivos de configuración:

   # vim /etc/ssh/ssh_config

      Y cambiamos la línea:

         PermitRootLogin without-password

      Por:

         PermitRootLogin yes

Lo ideal es que no usemos root para conectarnos y lo hagamos con otro usuario administrador.

Reiniciamos el servicio y listo:

   # systemctl restart ssh

Si hemos estado trasteando intentando conectarnos, es muy posible que nuestro cliente ssh nos diga algo así:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:haT1L2EXIOd/F4UvYeAbr+HFnuPgCaK8dajK77R9m8I.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:3
  remove with:
  ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.1.203"
ECDSA host key for 192.168.1.203 has changed and you have requested strict checking.
Host key verification failed.
---------------------------------------------------------------------

Es tan sencillo como lanzar el comando para la ip que identifica la máquina linux:

    # ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.x.x"

Una vez que se regenere el fingerprint, ya podremos conectarnos.

SaluDOS.

martes, 12 de junio de 2018

Instalar Qemu

Qemu es un emulador y virtualizador de máquinas genérico y de código abierto. Es una herramienta gratuita que permite a los usuarios crear y gestionar máquinas virtuales dentro del sistema operativo del host.

Los recursos del sistema operativo host, tales como disco duro, memoria, procesador, etcétera serán divididos y compartidos por los sistemas operativos invitados, lo que denominamos máquinas virtuales.

Cuando se utiliza como un virtualizador, Qemu logra un rendimiento casi nativo al ejecutar el código invitado directamente en la CPU del host.

Qemu tiene dos modos de funcionamiento:

  • Emulación completa del sistema: En este modo, emula un sistema completo, un PC por ejemplo, incluyendo un procesador y varios periféricos. Se puede utilizar para iniciar diferentes sistemas operativos sin reiniciar el PC o para depurar el código del sistema.


  • Emulación en modo usuario, sólo host Linux: En este modo, Qemu puede iniciar procesos Linux compilados para una CPU en otra CPU. Por ejemplo, se puede utilizar para iniciar Wine o para facilitar la compilación y depuración cruzadas.


Después de esta brevísima introducción, vamos al grano.

En nuestro caso vamos a instalarlo sobre una máquina elementaryOS para realizar virtualizaciones completas de sistemas, entornos de pruebas, Linux, Windows, etc.

Previamente hacemos un update y upgrade del sistema y para realizar la instalación ejecutamos:

   $ sudo apt-get install qemu-kvm qemu virt-manager virt-viewer libvirt-bin

Ejecutamos un reinicio, y listo.

   $ init 6

No nos tenemos que olvidar de activar en BIOS las opciones de virtualización.

SaluDOS

martes, 5 de junio de 2018

Descargar una página web completa en Linux

Hoy no pensaba escribir ninguna entrada, pero a la que he estado ejecutando un comando...me he dado cuenta que no lo tenia apuntado en mis apuntes on line.

Descargar una página web completa es bastante sencillo en linux. Utilizaremos la herramienta wget. Veamos como, para empezar nos vamos a un directorio conocido y creamos una carpeta, acto seguido nos vamos dentro de esa ruta. La descarga se realizará en la ruta en la que nos encontremos.

   $ cd /home/usuario/Descargas

   $ mkdir pagina_descargada

   $ cd pagina_descargada

Ahora lanzamos wget para realizar la descarga, como ejemplo iremos a decargar una dirección inventada: http://www.paginaquemegusta.com/quieroesta/

   $ wget --recursive --level=20 -p --convert-links http://www.paginaquemegusta.com/quieroesta/

Analicemos lo que le estamos diciendo:

   --recursive realizará la descarga de forma recursiva, es decir, irá entrando en los diferentes niveles de la web

   --level=20 en este caso le hemos dicho que queremos profundizar 20 niveles. Yo reconozco que suelo utilizar --level=inf que es un poco bestia pero no le pones limite. Lo hago cuando tengo claro lo que voy a descargar y que no va a estar 3 horas descargando. Vamos que con inf descargamos todo el sitio web. Es por ello que suelo acompañarlo de --wait=30 de tal forma que espera 30 segundos entre descarga y descarga, de esta manera si es mucho lo que trae, le ponemos ciertos limites.

   -p le indica que descargue los archivos auxiliares

   --convert-links le indica que convierta los links, de la web a la ruta en la que estamos descargando, de esta forma la web será perfectamente utilizable.

Ejemplo alternativo con lo que hemos comentado:

   $ wget --recursive --level=inf -p --wait=30 --convert-links http://www.pagina.com/quieroesta/

Para saber que mas opciones tenemos, no dudes en lanzar:

   $ man wget

Creo que esta herramienta puede sorprender mucho.

Las páginas web pueden inhabilitar este tipo de descargas desde robots.txt. Una alternativa muy común a wget es httrack que tiene muchas configuraciones posible y para los que no encajan en la consola, tiene un interfaz gráfico. Aunque suele estar en los repositorios, puedes descargarlo aqui: http://www.httrack.com/

SaluDOS


lunes, 4 de junio de 2018

Instalación de Python y Jupyter en Linux

Vamos a ver como instalar un entorno de trabajo en python en nuestra distribución de Linux, en mi caso sobre elementary OS.

Antes de nada tenemos que hacer un update y un upgrade de nuestro sistema:

   $ sudo apt update

   $ sudo apt upgrade -y

Para empezar instalamos python de los repositorios oficiales, para ello lanzamos:

   $ sudo apt install python3 -y

Instalamos el compilador de c llamado g++, la mayoria de módulos van a estar en este lenguaje y necesitarán que los compilemos

   $ sudo apt install g++ -y

Instalamos pip, que es un gestor de paquetes, para instalar módulos de python. Podemos realizar busquedas en su web para ver que módulo nos puede interesar instalar. Web: https://pypi.org/ Vamos a instalar el pip para la versión 3:

   $ sudo apt install python3-pip

Con pip podremos hacer instalaciones con el comando:

   $ sudo pip3 install paquete

Depende de lo que vayamos a realizar con python, podriamos instalar ciertas librerias de base. Ponemos un ejemplo con la libreria sympy. Cuando son librerias pesadas y conocidas, podemos en vez de instalarlo con pip hacerlo con apt, de tal forma que tiramos de los repositorios de la distribución y además ya están precompilados. Muchas veces tarda bastante en compilarse.

   $ sudo apt install python3-sympy

Si lo quisieramos hacer con pip lanzariamos:

   $ sudo pip3 install sympy

Podriamos instalar por ejemplo numpy y requiere una compilación especial, por ello nos facilitaría mucho ejecutar:

   $ sudo apt install python3-numpy

Un ejemplo a instalar con pip puede ser jupyter:

   $ sudo pip3 install jupyter

Con este comando instala el paquete y todas sus librerias asociadas.

Para ejecutar jupyter podriamos poner un modificador para que no abra el navegador predeterminado:

   $ jupyter-notebook --no-browser

Al lanzarlo así, se lanza el servicio y nos indica la dirección a la que conectarnos. Vamos aun navegador y ponemos dicha dirección. Si queremos pararlo, vamos a la consola y hacemos ctrl-c

Jupiter es una especie de cuaderno de apuntes en el que podemos ir lanzando instrucciones, comprobando su ejecución y comentando.

Tiene la opción de insertar celdas de comentarios para apuntar nosotros ciertas instrucciones o apuntes (markdown) en modo html y también insertar código python.

Con Enter editamos el contenido de cada celda y con ESC lo dejamos en modo lectura. Esto tanto para celdas de código como de markdown.

Si sobre una celda de código realizamos shift-Enter entonces ejecutamos el código y muestra el resultado.

Quizás haga algún día una pequeña entrada de como utilizar Jupyter. Todo lo que hacemos en Jupyter se guarda, lo que comentemos, el código y la salida del código. Es muy interesante cuando empezamos en el mundo de Python.

En Windows si instalamos WinPython ya lleva integrado Jupyter. Lo podemos descargar desde: https://winpython.github.io/. Creo que para empezar es una muy buena opción.

SaluDOS

domingo, 3 de junio de 2018

Ficheros comprimidos en LInux

Vamos a ver el grueso de los formatos utilizados para comprimir y descomprimir archivos y/o directorios. Además puntualizaremos algún detalle sobre los comandos que podemos lanzar para realizar ciertas tareas.

GZIP

gzip comprime fichero a fichero, no empaqueta varios ficheros en uno ni comprime
directorios. Luego comentamos una solución muy utilizada. Los ficheros tienen la extensión .gz

Como comprimir:

            # gzip fichero

Como descomprimir:

            # gzip ­d fichero.gz

Para comprimir varios ficheros y archivarlos en uno solo como podríamos hacer con los compresores zip o rar hay que combinar tar con gzip. El resultado sería ficheros que tienen la extensión .tar.gz Veamos un ejemplo:

Como comprimir:

            # tar ­czf archivo.tar.gz ficheros

Como descomprimir:

            # tar ­xvzf archivo.tar.gz

Como ver el contenido:

            # tar ­tzf archivo.tar.gz

BZIP2

bzip2 sólo comprime fichero a fichero, no comprime varios ficheros en uno ni comprime
directorios. Luego comentamos una solución muy utilizada. Los ficheros tienen la extensión .bz2

Como comprimir

            # bzip2 fichero

Como descomprimir

            # bzip2 ­d fichero.bz2

Para comprimir varios ficheros y archivarlos en uno solo como podríamos hacer con los compresores zip o rar hay que combinar tar con bzip2. El resultado sería ficheros que tienen la extensión .tar.bz2
Veamos un ejemplo:

Como comprimir:

            # tar ­c ficheros | bzip2 > archivo.tar.bz2

Como descomprimir:

            # bzip2 ­dc archivo.tar.bz2 | tar ­xv

Como ver contenido:

            # bzip2 ­dc archivo.tar.bz2 | tar ­t

ZIP

zip si que realiza compresión y descompresión de directorios y/o ficheros. En este caso vamos a realizar un apunte importante, ya que vamos a necesitar instalar dos herramientas diferentes, una para comprimir (zip) y la otra para descomprimir (unzip). Los ficheros tienen la extensión .zip

Como comprimir:

            # zip archivo.zip ficheros

Un ejemplo es que queremos comprimir todo lo que está en la ruta en el directorio en el que nos encontramos. Por ello podríamos hacer:

            # zip  fichero *

Aprovechamos para puntualizar que no es necesario especificar la extensión que va a tener el archivo zip, se añade automáticamente. Esto parece que no pero agiliza el tecleado de los comandos. Aburre repetir tanto "zip". De todas formas para diferenciar el archivo zip de otros archivos o modificadores seguiré marcando la extensión.

Para que la compresión se hiciese no solo del directorio en el que estamos sino también de todos los directorios que tenga:

            # zip -r fichero.zip *

Como descomprimir:

            # unzip archivo.zip

Aprovechamos para añadir algún otro modificador que es interesante. Reconozco que el formato que mas utilizo es .zip, ya que me permite jugar entre entornos windows y linux de una forma muy cómoda. Será la costumbre.

Por ejemplo si queremos hacer un test y obtener un resumen:

            # unzip -tq archivo.zip

En caso de que deseemos extraer un fichero que está dentro del archivo zip podemos ejecutar:

            # unzip archivo.zip documento.doc

Algo que se hace comunmente es descomprimir pero a una ruta concreta como /tmp, para luego borrarlo por ejemplo:

            # unzip archivo.zip -d /tmp

Como ver contenido:

            # unzip ­v archivo.zip
            # unzip -l archivo.zip

Si queremos borrar un fichero que esté dentro del archivo zip podemos ejecutar:

            # zip archivo.zip -d ficheroaborrar.doc

Existen un montón de opciones mas y variantes. Pero lo dejamos aquí y seguiremos con otros formatos de compresión. Recuerda que puedes lanzar la ayuda:

            # zip --help
            # man zip

            # unzip --help
            # man unzip

RAR

rar también realiza compresión y descompresión de directorios y/o ficheros. En este caso también vamos a utilizar dos herramientas, una para comprimir (rar) y otra para descomprimir (unrar), aunque veremos que se solapan, es algo bastante curioso. Los ficheros tienen la extensión .rar

Como comprimir:

            # rar a archivo.rar ficheros

Para borrar archivos en un archivo rar:

            # rar d archivo.rar ficheroaborrar.doc

Para recuperar archivos:

            # rar r archivo.rar

Como actualiar un fichero existente dentro del archivo comprimido:

            # rar u archivo.rar ejemplo.txt

Listar el contenido, para verificar por ejemplo el cambio realizado anteriormente:

            # rar l archivo.rar
            # rar v archivo.rar

Establecer contraseña en fichero rar. Tras lanzar el comando no solicitará dos veces la contraseña:

            # rar a -p archivo.rar

Al intentar descomprimir, nos solicitará la contraseña:

            # rar x archivo.rar

Podemos bloquear un archivo para que no se pueda extraer:

            # rar k archivo.rar

Como descomprimir:

            # unrar e archivo.rar

Para descomprimir en una ruta concreta:

            # unrar e archivo.rar /tmp

Para descomprimir en la estructura original:

            # unrar x archivo.rar

Si lo que queremos es listar previamente el contenido:

            # unrar l archivo.rar

Para realizar un test del fichero:

            # unrar t archivo.rar

Como siempre, podemos utilizar la ayuda de las herramientas para ver la cantidad de opciones que poseen. En este caso no podemos hacer un rar --help o unrar -help

           # man rar
           # man unrar

OTROS FORMATOS DE COMPRESIÓN

Ficheros .lha

   Para comprimir:

            # lha a archivo.lha ficheros

   Para descomprimir:

            # lha x archivo.lha

   Para ver el contenido:

            # lha v archivo.lha
            # lha l archivo.lha

Ficheros .arj

   Para comprimir:

            # arj a archivo.arj ficheros

   Para descomprimir:

            # unarj archivo.arj
            # arj x archivo.arj

   Para ver el contenido:

            # arj v archivo.arj
            # arj l archivo.arj

Ficheros .zoo

   Para comprimir:

            # zoo a archivo.zoo ficheros

   Para descomprimir:

            # zoo x archivo.zoo

   Para ver el contenido:

            # zoo L archivo.zoo
            # zoo v archivo.zoo

No tengo referencia de los links de los que he ido extrayendo o consultando esta información, la verdad es que de vez en cuando buscaba en una u otra web y me decidí a resumir todo en un único sitio para consultarlo rápidamente en caso de necesidad.

Todos estos comandos son muy útiles para realizar volcados de un servidor a otro, a una memoria USB o para realizar copias de seguridad por ejemplo. Intentaré en alguna otra entrada poner ejemplos de scripts con los que automatizo ciertas tareas de administración.

SaluDOS

Ficheros empaquetados en LInux con tar

Vamos a ver de forma puntual como utilizar tar y lo peculiar que es, porque he visto como muchos lo tratan como un compresor del estilo .zip o .rar pero nada mas lejos de la realidad.

tar empaqueta varios archivos en un solo fichero pero no comprime.

Como empaquetar:

            # tar cf archivo.tar ficheros

            -c --create. Crea un nuevo archivo
            -f --file. Utiliza un archivo

Como desempaquetar:

            # tar ­xvf archivo.tar

            -x --extract. Extrae ficheros de una archivo
            -v --verbose. Lista los ficheros procesados detalladamente
            -f --file. Utiliza un archivo

Como ver el contenido:

            # tar ­tf archivo.tar

            -t --list. Muestra el contenido de un archivo
            -f --file. Utiliza un archivo

Si necesitamos ayuda, puede ser interesante consultar tar --help y comprobar la salida de la ayuda. La descripción de los operadores indicados aquí está sacados de esa ayuda.

SaluDOS

Introducción a Magerit

Hay que tener en cuenta que las organizaciones tiran el dinero gastando millones de euros en firewalls y dispositivos de seguridad sin cubrir los eslabones mas débiles de la seguridad. El mas débil es el usuario final y hay que concienciarlo.

La información es un activo esencial y decisivo para la viabilidad de una compañía. Como la información está cada vez mas interconectada, se encuentra expuesta a nuevas amenazas y vulnerabilidades.

Como objetivo podría estar la implementación de un conjunto adecuado de políticas, procesos, procedimientos, controles, hardware y software. Sobre todo otro objetivo importante podría ser medir el comportamiento ético de las personas que trabajan en la organización. Los objetivos generales de Magerit serían:

  • Concienciar a los responsables de las organizaciones de la existencia de riesos y la necesidad de gestionarlos.
  • Ofrecer un método sistemático para analizar los riesgos derivados del uso de tecnologías de la información y comunicación.
  • Ayudar a descubrir y planificar el tratamiento oportuno para mantener los riesgos bajo control
  • Preparar a la organización para procesos de evaluación, auditoría, certificación o acreditación, según corresponda en cada caso.

La gestión de riesgos es una parte fundamental para tener un buen gobierno de la compañía y además ayuda a tomar medidas de seguridad que sustenten con seguridad los usuarios de los servicios ofrecidos.

¿Cómo identificar los riesgos que afecten a la seguridad de la información? Mediante el análisis y gestión de riesgos.

Antes de iniciar con el análisis es necesario conocer a la empresa, realizar visitas y entrevistas, para tener un panorama claro del entorno que se va a evaluar. Las técnicas y herramientas que se utilizan previamente son:
  • Entrevista a directores, responsables y usuarios.
  • Encuestas dirigidas a todos los usuarios de la organización.
  • Observación de todos los actores y equipos presentes en el tratamiento de la información
  • Revisión de documentos
  • Checklist para toda la infraestructura a evaluar de la organización.
Se podría decir que con estas 5 técnicas, podemos tener un conjunto de información para empezar a trabajar, está claro que previamente hay que hacer un ejercicio y análisis de la organización y como realiza el tratamiento de la información, para que las entrevistas o encuestas sean fructiferas.

Magerit es la metodología de análisis y gestión de riesgos elaborada por el Consejo Superior de Administración electrónica de España. La primera publicación fue en 1997 y actualmente se encuentra en su versión 3. Esta metodología marca diferentes actividades enmarcadas a los activos que una organización posee para el tratamiento de la información.

Cuenta con tres libros de apoyo:

Además esta metodología está alineada con la normativa ISO 27002:2013 e incluye una herramienta llamada PILAR que ofrece asistentes y plantillas para facilitar el proceso. Permite hacer un análisis de riesgos sobre las dimensiones de valoración como son: Confidencialidad, Integridad, Disponibilidad, Autenticidad y Trazabilidad.

Esta metodología tiene 6 fases, veamos cuales son porque tiene mucho sentido hacerlo en este orden:
  • 1) ACTIVOS. Determinación de Activos. Es imprescindible tener un inventario actualizado.
    • Hay que agruparlos según funcionalidad: Servicios, Personal, Infraestructura, Conectividad, etc. Se va a determinar que no todos son de la misma "especie".
    • Realizar un inventario
    • Plano de la topología de la red para determinar la ubicación de los activos.
  • 2) DIMENSIONES. De un activo puede interesar calibrar diferentes dimensiones.
    • Dimensiones:
      • Integridad
      • Confidencialidad
      • Autenticidad
      • Trazabilidad
      • Disponibilidad
    • Estableceremos para cada activo unas dimensiones a calibrar.
  • 3) VALORACIÓN
    • Puede ser cuantitativa: Cantidad numérica.
    • Puede ser cualitativa: Escala de niveles.
    • Pueden ser valoraciones homogeneas o relativas.
    • Como ejemplo podríamos definir esta escala:
      • Valor Alto (A). Valor numérico 3. Criterio: Daño grave a la organización.
        • Ejemplo: Base de datos administrativa
      • Valor Medio (M). Valor numérico 2. Criterio: Daño importante a la organización.
        • Sistema administrativo o infraestructura de comunicaciones
      • Valor Bajo (B). Valor numérico 1. Criterio: Daño menor a la organización.
        • Servidor local y PCs
    • Ejemplos
      • Activos aplicaciones: Sistemas operativos, software de ofimática, software de desarrollo, navegadores, clientes de correo, software de control remoto, antivirus, SQL Server, IIS o el software de backup. Quizás en esta categoría serían mas criticos aquellos aplicativos que son el core de la organización, por ejemplo el software de ofimática o el gestor documental sobre el que se apoya un departamento concreto.
      • Activos equipos: Servidores, cámaras de videovigilancia, servidor antivirus, servidores linux, puntos de acceso wifi, teléfonos, PCs, switches, servidores de base de datos, servidores frontales, servidores en DMZ, servidores AD y AD FS, etc. En esta categoría los mas críticos serían por ejemplo el servidor de base de datos, ya que de el dependen las aplicaciones de gestión y el servidor de antivirus por ejemplo ya que es mu importante evitar propagar un virus por la red. Quizás otro ejemplo serían los frontales de sharepoint de un gestor documental, sin el acceso a estos frontales no se podría trabajar.
      • Activos servicios internos: Bases de datos, servicio de antivirus, servicio web, correo electrónico. Quizás destacaríamos los servicios de base de datos y antivirus tal y como se ha mencionado anteriormente, de ellos dependería la disponibilidad y estabilidad del sistema de información.
    • Identificamos además dependencias.
    • Magerit permite ciertas ponderaciones según funcionalidad o importancia.
  • 4) AMENAZAS. Determinar las amenazas que pueden afectar a cada activo identificado.
    • Las posibles amenazas se obtienen del catálogo de elementos que nos ofrece la metodología. Se definen unas categorías:
      • Desastres naturales. Ejemplos
        • Inundación
        • Corte eléctrico por tormenta
        • Nieve
      • De origen industrial o el entorno en el que se encuentra el activo. Ejemplos:
        • Fuga de agua en una tubería
        • Temperaturas o humedades por maquinaría cercana.
      • Errores y fallos no intencionados. Defectos en aplicaciones o causadas por las personas de forma accidental. Ejemplos:
        • Errores de usuarios
        • Errores del administrador
        • Escaeps y fugas de información no itencionados
      • Ataques intencionados. Causadas por las personas de forma deliberada. Ejemplos:
        • Abuso de privilegios
        • Acceso no autorizado
        • Modificación deliberada de la información
    • Se realiza una evaluación de amenazas basada en al frecuencia de materialización de la amenaza para lo cual definiriamos la frecuencia como: Posibilidad de que ocurra en función de la cantidad de veces que se puede materializar dicha amenaza en un año. Se utiliza una escala de este estilo:
      • 0,1 - una vez cada 10 años
      • 1 - todos los años
      • 10 - todos los meses
      • 100 - todos los días
    • Además tendremos que tener en cuenta la degradación que sufra el activo ante una amenaza. Para cada tipo de equipamiento se distingue una serie de averías, errores y eventos que vamos a valorar.
    • Cada uno afectará a una dimensión concreta a controlar en los activos.
  • 5) IMPACTO Y SALVAGUARDAS. Se miden los impactos y riesos a que estarían expuestos los activos si no se protegieran en absoluto.
    • Impacto: El análisis de impacto nos indica que las consecuencias de la materialización de una amenaza puede ser críticas para una serie de activos, por ejemplo SQL Server o el backup.
    • En la estimación de Impactos de las amenazas sobre los activos identificamos las vulnerabilidades críticas.
      • Hay que determinar el grado de riesgo al que está expuesto cada activo.
      • Se colorean mediante colores diferenciando los niveles de criticidad.
      • Hay que identificar el grado de madurez de cada activo y por lo tanto 
    • Se muestra con una escala de colores según un valor:
      • 5. Crítico. Rojo
      • 4. Muy alto. Rosado
      • 3. Alto. Amarillo
      • 2. Medio. Azul
      • 1. Bajo. Verde
      • 0. Despreciable
      • OFF. el activo o uno del que depende está marcado como no disponible.
    • Este código de colores facilita mucho visualmente la identificación de salvaguardas que van a ser prioritarias.
    • Observaremos que los riesgos son mas críticos para determinados activos como puedan ser los que estén relacionados con el backup o la base de datos o cierto software importante.
    • Determinación de los criterios de aceptación del riesgo. Tenemos que conocer el riesgo residual que pueda quedar en caso de explotación de una vulnerabilidad.
    • Determinación de las medidas de seguridad necesarias o salvaguardas.
      • Calculamos que activos están mas expuestos o cuales tienen mayor importancia
      • Se calcula el riesgo potencial y el acumulado
      • Se calculan riesgos sin salvaguardas en una primera fase
      • Después aplicando las salvaguardas se calcula el riesgo final obtenido.
Utilizando la herramienta Pilar podemos gestionar todas estas fases. Conforme vayamos realizando los análisis y vayamos aplicando las contramedidas, se va observando como cambian los riesgos asociados a cada activo crítico.

Finalmente se calcula una madurez de los controles sin y con salvaguarda y se comparan los resultados finales. Habitualmente Magerit facilita realizar el estudio y el análisis de riesgos, garantizando la seguridad de los activos que intervienen en el tratamiento de la información.

Permite además mejorar la madurez de los sistemas y las políticas de seguridad. Si siempre realizamos la gestión de riesgos periódicamente con la misma metodología, podremos comparar los resultados obtenidos.

LINKS CONSULTADOS

https://youtu.be/W95lFy7XCJc
https://youtu.be/_nvctgOUBEA
https://youtu.be/Bpn5dggxt68
https://youtu.be/JF0RIYmH6No
https://www.administracionelectronica.gob.es/pae_Home/pae_Documentacion/pae_Metodolog/pae_Magerit.html#.WxL4kGMzbDc
https://www.administracionelectronica.gob.es/pae_Home/dam/jcr:fb373672-f804-4d05-8567-2d44b3020387/2012_Magerit_v3_libro1_metodo_es_NIPO_630-12-171-8.pdf
https://www.administracionelectronica.gob.es/pae_Home/dam/jcr:5fbe15c3-c797-46a6-acd8-51311f4c2d29/2012_Magerit_v3_libro2_catalogo-de-elementos_es_NIPO_630-12-171-8.pdf
https://www.administracionelectronica.gob.es/pae_Home/dam/jcr:130c633a-ee11-4e17-9cec-1082ceeac38c/2012_Magerit_v3_libro3_guia-de-tecnicas_es_NIPO_630-12-171-8.pdf

SaluDOS

sábado, 2 de junio de 2018

Conceptos básicos de Gestión de Riesgos

Vamos a comentar por encima los conceptos básicos que van a facilitan el llevar a cabo un análisis y valoración adecuado. En alguno nos entretendremos un poco mas, sobre todo porque no se le suele dar importancia. Comencemos!!!

CONCEPTOS BÁSICOS

Activo: Cualquier información o sistema relacionado con el tratamiento de la misma que tenga valor para la organización.

Inventario de activos: Imprescindible en cualquier Sistema de Gestionón de la Seguridad del Información (SGSI). Se podría decir de forma genérica que deberíamos registrar para todos los activos una serie de campos. Es muy frecuente que no se realice un correcto inventario de activos en las empresas y es imprescindible para un correcto análisis de riesgos. Para que veamos que no es trivial y hacen falta bastantes datos veamos un ejemplo:

  • Número de Serie (Hardware) / Número de Licencia (Software: Nº, Tipo de Licencia, Instalaciones, Cantidad con Licencia, Exceso o Falta de Licencia). En el caso de activos como PCs, servidores, impresoras, dispositivos móviles y cualquier otro ítem susceptible de ser etiquetado como unitario, normalmente va asociado a un número de serie único e identificable. Cuando se trata de activos del grupo de aplicaciones, cabría detallar los campos anteriormente mencionados:
  • Localización física: ciudad o edificio donde se encuentra el activo. De esta manera podrán implementarse medidas físicas, de prevención y de gestión del riego, en función de su ubicación y el nivel de madurez de los controles implantados.
  • Formato: puede que sea papel o digital por ejemplo.
  • Tipo: grupo en el que se encuentra clasificado (entorno general, servicio/activo de información, aplicación Software, PC como fijo o portátil, impresora, servidor, red, etc.)
  • Nombre: único e identificativo
    • Identificador de licencia,
    • El tipo de licencia de la que se trata,
    • Euántas instancias de la misma existen en el parque informático, y
    • Qué nivel de licenciamiento real existe actualmente para este software
  • Empresa de Soporte: definir bien la empresa encargada del mantenimiento, reparaciones y eventual sustitución del activo cuando aplique, así como aquella que pueda prestar cualquier servicio alrededor del mismo, y que implique un cierto grado de compromiso o relación más allá de la adquisición
  • ID de Contrato: es la forma de ubicar el momento de la compra del activo, o el inicio de la relación con el proveedor en lo que a ese activo se refiere. De esta forma se podrá contar con una referencia a la hora de comunicar con el proveedor de servicio, indicar la partida exacta de compra, condiciones de la misma y, por tanto, los detalles que éste necesita a la hora de prestar el servicio contratado
  • Fecha Vencimiento Soporte: guarda relación con el campo anterior, tanto en cuanto será el contrato aquel documento donde podremos identificar la fecha de firma o comienzo de soporte para el activo. Si bien este campo apunta al vencimiento y, por tanto, fecha en la que se debería renovar el soporte o servicio sobre el activo, si así fuese necesario
  • Sección/Área/Departamento que le da uso: grupo de personas interactuando con el activo, de forma habitual. Puede no corresponderse con el propietario del activo.
  • Propietario (Responsable del Activo): el responsable del Activo es lo que se denomina Propietario del Activo. Las tareas encargadas al responsable del activo son:
    • Asociar o aprobar asociaciones entre activos
    • Asociar o aprobar asociaciones ente el Activo y los procesos de negocio
    • Ajustar las dependencias o dependientes del Activo
    • Tomar las decisiones en torno al activo: creación, acceso, modificación y eliminación
  • Custodio: aquel que “guarda con cuidado y vigilancia” el activo. No tiene por qué ser el mismo que hace uso de él, como tampoco el propietario del mismo.
  • Clasificación: este campo determinará el grupo de medidas y controles de seguridad a aplicar al activo en concreto.
  • Descripción/Observaciones: cuando se desee remarcar alguna de las cualidades del activo, o aplique algún tipo de singularidad o condición no genérica al mismo
Amenaza: Evento que puede desencadenar un incidente produciendo daños materiales o inmateriales en los activos.

Vulnerabilidad: Es la debilidad que tienen los activos o grupos de activos que pueden ser aprovechada por una amenaza.

Impacto: Consecuencia de la materialización de una amenaza sobre un activo.

Riesgo: la estimación del grado de exposición de un activo a que una amenaza se materialice sobre el causando daños a la compañía. Indica lo que le podria pasar a los activos si no se protegen adecuadamente.

Riesgo intrínseco: Posibilidad de que se produzca un impacto determinado en un activo o en un grupo de activos.

Salvaguarda: Práctica, procedimiento o mecanismo que reduce el riesgo. Puede actuar disminuyendo el impacto o la probabilidad.

Riesgo residual: Riesgo que queda tras la aplicación de la salvaguarda.

ANALISIS DE RIESGOS

Por muy bien que protejamos los activos es imposible eliminar el riesgo al 100% por lo que siempre quedará un riesgo residual que la compañía debe asumir y vigilar.

Un análisis de riesgos al fin y al cabo consiste en identificar los riesgos de seguridad en nuestra compañía, determinar su magnitud e identificar las áreas que requieren implantar salvaguardas. Con este análisis conoceremos el impacto económico de un fallo de seguridad y la probabilidad realista de que ocurra ese fallo.

Hay que cubrir las necesidades de seguridad de la organización teniendo siempre en cuenta los recursos económicos y humanos con los que cuenta. La inversión en seguridad debe ser proporcional al riesgo.
[ Equilibrio en las inversiones. Proporcionales al riesgo ]
El ejemplo del vídeo que se ha consultado y cuyo enlace dejo abajo es bastante claro: Si tenemos un servidor que tiene información de valor bajo, pero lo protegemos con un lector de huellas, uno de retina y después el técnico tiene que hacer acrobacias para acceder a el, está claro que las medidas han sido desproporcionadas.
[ Objetividad ]
Un análisis de riesgos aporta objetividad a los criterios en los que se apoya la seguridad ya que se centra en proteger los activos mas críticos. Basándonos en los riesgos propios, se realiza la toma de decisiones.

Hay que contar con diferentes personas de la organización para dar valor a los activos.
[ Debe ser un equipo multidisciplinar para dar un valor objetivo ]
Hay que ir haciendo el análisis de forma progresiva conforme la compañía evoluciona en sus medidas de seguridad.

El análisis de riesgos se basa en un buen inventario de activos. Si es grande, se puede hacer un análisis solo de los activos mas críticos.
[ Es por ello que el inventario es tan importante ]
Después se identifican las amenazas que pueden afectar a los activos. Se realiza una valoración en función del impacto de la amenaza si esta se materializa. Se analizan las vulnerabilidades de los activos y se valoran. Si un activo está expuesto a una amenaza pero no tiene una vulnerabilidad que permita que esta se materialice, el riesgo es menor que si existe.

Realizaremos un análisis de las salvaguardas o medidas de seguridad ya implantadas.

Finalmente se realiza el estudio del riesgo y el impacto de todas las variables sobre los diferentes activos. Obtendremos los resultados del análisis de riesgos y se establecerá el nivel de riesgo de la compañia.

Todo debe estar perfectamente documentado para justificar las acciones a desarrollar para el nivel de seguridad que la compañía quiere alcanzar.

Existen multitud de metodologías y herramientas para facilitar la elaboración de forma sistemática. Así los sucesivos análisis serán comparables y la información reutilizable.
[ Realizamos el análisis cada cierto tiempo con la misma metodología]
METODOLOGÍAS

Existen multitud de metodologías para gestión del riesgo de la información, por ejemplo:

  • Magerit 
  • ISO/IEC 27005
  • Octave
  • NIST SP 800-30


En futuras entradas iremos viendo Magerit: Metodología de Analisis y Gestión de Riesgos de los Sistemas de Información. Es una metodología para conocer el riesgo al que está sometida la información y si está está segura o no. Es de carácter público, pertenece al Ministerio de Hacienda y Administraciones Públicas

LINKS CONSULTADOS

https://youtu.be/g7EPuzN5Awg
http://www.govertis.com/que-es-el-invectivos-parte-i
https://www.administracionelectronica.gob.es/pae_Home/pae_Documentacion/pae_Metodolog/pae_Magerit.html#.WxL4kGMzbDc
http://slideplayer.es/slide/1644740/6/images/7/Metodolog%C3%ADa+MAGERIT+Riesgo+Agenda+Amenazas+Valor+Impacto+Frecuencias.jpg
http://metodologiasderiesgo.blogspot.com/

SaluDOS

Comando sl (Steam Locomotive) en Linux

Porque no todo va a ser comandos serios y precisos para hacer tareas de administración de sistemas linux, vamos a ver un comando algo diferente.

Si instalamos sl, veremos que es un comando algo curioso.

   $ sudo apt install sl -y

Ahora vamos a probarlo

   $ sl

¿has visto lo que sale? si efectivamente, nuestra consola nos muestra una maravillosa locomotora y que se mueve!!!



Por cierto, si en vez de lanzar un ls -la por ejemplo, te equivocas y lanzas un LS -LA o un LS a secas, pasa lo mismo que con sl.

Cuando la locomotora haya pasada, pulsa ctrl-c y haz un clear. Ya puedes seguir trabajando.

Pruebalo!!!

SaluDOS

Interesante recopilatorio de comandos Linux

En el link que dejo mas abajo, me he encontrado un recopilatorio muy muy interesante de comandos Linux. Dejo aquí lo que hay ahora, pero supongo que puede variar. Recomiendo consultar la fuente original.

Algunos de estos comandos los utilizo todos los días a todas horas.

Algunos comandos de GNU/Linux

Información del sistema

  1. arch → mostrar la arquitectura de la máquina (1).
  2. uname -m → mostrar la arquitectura de la máquina (2).
  3. uname -r → mostrar la versión del kernel usado.
  4. uname -a → mostrar la información completa.
  5. lsb_release -a → mostrar la información completa de la distribución.
  6. cat /etc/issue → mostrar el nombre de la distribución
  7. dmidecode -q → mostrar los componentes (hardware) del sistema.
  8. hdparm -i /dev/hda → mostrar las características de un disco duro.
  9. hdparm -tT /dev/sda → realizar prueba de lectura en un disco duro.
  10. cat /proc/cpuinfo → mostrar información de la CPU.
  11. grep -c ^processor /proc/cpuinfo → mostrar número de procesadores.
  12. cat /proc/interrupts → mostrar las interrupciones.
  13. cat /proc/meminfo → verificar el uso de memoria.
  14. cat /proc/swaps → mostrar ficheros swap.
  15. cat /proc/version → mostrar la versión del kernel.
  16. cat /proc/net/dev → mostrar adaptadores de red y estadísticas.
  17. cat /proc/mounts → mostrar el sistema de ficheros montado.
  18. lscpu → mostrar información sobre el microprocesador.
  19. lspci -tv → mostrar los dispositivos PCI.
  20. lsusb -tv → mostrar los dispositivos USB.
  21. lshw → listar el hardware.
  22. discover → listar el hardware.
  23. date → mostrar la fecha del sistema.
  24. cal 2011 → mostrar el almanaque de 2011.
  25. cal 07 2011 → mostrar el almanaque para el mes julio de 2011.
  26. date 041217002011.00 → colocar (declarar, ajustar) fecha y hora.
  27. clock -w → guardar los cambios de fecha en la BIOS.
  28. blkid → mostrar información (nombre, etiqueta, UUID, tipo de partición) sobre los dispositivos de bloque (discos rígidos, etc.)

Apagar, reiniciar o cerrar sesión

  1. shutdown -h now → apagar el sistema (1).
  2. init 0 → apagar el sistema (2).
  3. telinit 0 → apagar el sistema (3).
  4. halt → apagar el sistema (4).
  5. poweroff → apagar sistema (5).
  6. shutdown -h hours:minutes & → apagado planificado del sistema.
  7. shutdown -c → cancelar un apagado planificado del sistema.
  8. shutdown -r now → reiniciar (1).
  9. reboot → reiniciar (2).
  10. logout → cerrar sesión.
  11. skill nombre_de_usuario → cerrar sesión (2)1)
  12. exit → salir del intérprete de comandos (si solo hay uno, equivale a cerrar sesión).

Gestionar archivos y directorios

  1. cd → ir al directorio personal.
  2. cd /home → cambiar al directorio “/home”.
  3. cd .. → retroceder un nivel.
  4. cd ../.. → retroceder 2 niveles.
  5. cd ~user1 → ir al directorio user1.
  6. cd - → ir (regresar) al directorio anterior.
  7. pwd → mostrar el camino del directorio actual.
  8. ls → listar el contenido de un directorio.
  9. ls -F → listar el contenido de un directorio (distinguiendo los directorios con una barra)
  10. ls -l → listar el contenido de un directorio, mostrando los detalles.
  11. ls -lh → listar el contenido de un directorio, mostrando los detalles (y el tamaño en un formato “humanizado”).
  12. ls -a → listar el contenido de un directorio, incluendo los ficheros ocultos.
  13. ls *[0-9] → listar los ficheros y carpetas que contienen números.
  14. ls -laR | less → listar recursivamente el contenido del directorio actual y todos los subdirectorios y archivos, incluyendo los ocultos, separados por página.
  15. tree → mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(1)
  16. lstree → mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(2)
  17. mkdir dir1 → crear un directorio de nombre 'dir1'.
  18. mkdir dir1 dir2 → crear dos directorios a la vez (en la ubicación actual).
  19. mkdir -p /tmp/dir1/dir2 → crear una estructura de directorios, si no existe.
  20. rm file1 → eliminar el archivo 'file1'.
  21. rm -f file1 → eliminar el archivo 'file1' en modo forzado.
  22. rmdir dir1 → borrar el directorio 'dir1'.
  23. rm -rf dir1 → eliminar recursivamente y en modo forzado el directorio 'dir1' con todo lo que contenga.
  24. rm -rf dir1 dir2 → borrar dos directorios con su contenido de forma recursiva.
  25. mv dir1 new_dir → renombrar o mover un fichero o carpeta (directorio).
  26. cp file1 destino/ → copiar un fichero al destino elegido.
  27. cp file1 file2 destino/ → copiar a la vez dos ficheros a un mismo directorio.
  28. cp file1 file2 → copiar file1 en file2.
  29. cp dir /* . → copiar todos los ficheros de un directorio dentro del directorio de trabajo actual.
  30. cp -a /tmp/dir1 . → copiar un directorio dentro del directorio actual de trabajo.
  31. cp -a dir1 → copiar un directorio.
  32. cp -a dir1 dir2 → copiar dos directorio al unísono.
  33. ln -s file1 lnk1 → crear un enlace simbólico al fichero o directorio.
  34. ln file1 lnk1 → crear un enlace físico al fichero o directorio.
  35. touch file1 → actualizar la fecha de modificación de file1, o crearlo si no existe.
  36. touch -t 0712250000 file1 → modificar el tiempo real (tiempo de creación) de un fichero o directorio.
  37. file file1 → salida (volcado en pantalla) del tipo mime de un fichero texto.
  38. iconv -l → listas de cifrados conocidos.
  39. iconv -f fromEncoding -t toEncoding inputFile > outputFile → crea una nueva forma del fichero de entrada asumiendo que está codificado en fromEncoding y convirtiéndolo a ToEncoding.

Encontrar archivos

  1. find / -name file1 → buscar fichero y directorio a partir de la raíz del sistema.
  2. find / -user user1 → buscar ficheros y directorios pertenecientes al usuario “user1”.
  3. find /home/user1 -name \*.bin → buscar ficheros con extensión ”. bin” dentro del directorio / home/user1.
  4. find /usr/bin -type f -atime +100 → buscar ficheros binarios no usados en los últimos 100 días.
  5. find /usr/bin -type f -mtime -10 → buscar ficheros creados o cambiados dentro de los últimos 10 días.
  6. find / -name \*.rpm -exec chmod 755 '{}' \; → buscar ficheros con extensión ”.rpm” y modificar permisos.
  7. find . -type f -print0 | xargs -0 chmod 644 → modificar recursivamente los permisos a todos los ficheros bajo el directorio actual.2)
  8. find / -xdev -name \*.rpm → Buscar ficheros con extensión '.rpm' ignorando los dispositivos removibles como cdrom, pen-drive, etc.…
  9. find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80×60 "thumbs/{}" \; → agrupar ficheros redimensionados en el directorio actual y enviarlos a directorios en vistas de miniaturas (requiere convertir desde Imagemagick).
  10. find /tmp/dir1 -depth -regextype posix-extended -regex '.*(\s+|:+|\\+|>+|<+|"+|\*+|\?+|\|+).*' -execdir rename 's/(\s+|:+|\\+|>+|<+|”+|\*+|\?+|\|+)/_/g' "{}" \; → renombrar recursivamente todos los directorios y ficheros bajo /tmp/dir1, cambiando los espacios y otros caracteres extraños por guiones bajos.
  11. locate \*.ps → encuentra ficheros con extensión ”.ps” ejecutados primeramente con el command updatedb.
  12. whereis halt → mostrar la ubicación de un fichero binario, de ayuda o fuente. En este caso pregunta dónde está el comando halt.
  13. which comando → mostrar la ruta completa a un comando.

Montando un sistema de ficheros

  1. mount /dev/hda2 /mnt/hda2 → montar un disco llamado hda2. Verifique primero la existencia del directorio '/ mnt/hda2'; si no está, debe crearlo.
  2. umount /dev/hda2 → desmontar un disco llamado hda2. (Antes es necesario salir del punto '/mnt/hda2'.
  3. fuser -km /mnt/hda2 → forzar el desmontaje cuando el dispositivo está ocupado.
  4. umount -n /mnt/hda2 → correr el desmontaje sin leer el fichero /etc/mtab. Útil cuando el fichero es de solo lectura o el disco duro está lleno.
  5. mount /dev/fd0 /mnt/floppy → montar un disco flexible (floppy).
  6. mount /dev/cdrom /mnt/cdrom → montar un cdrom / dvdrom.
  7. mount /dev/hdc /mnt/cdrecorder → montar un cd regrabable o un dvdrom.
  8. mount /dev/hdb /mnt/cdrecorder → montar un cd regrabable / dvdrom (un dvd).
  9. mount -t udf,iso9660 -o loop file.iso /mnt/cdrom → montar un fichero de imagen de un medio óptico (como un CD o DVD en formato ISO).
  10. mount -t vfat /dev/hda5 /mnt/hda5 → montar un sistema de ficheros FAT32.
  11. mount -t ntfs-3g /dev/hda5 /mnt/hda5 → montar un sistema de ficheros NTFS.
  12. mount /dev/sda1 /mnt/usbdisk → montar un usb pen-drive o una memoria (sin especificar el tipo de sistema de ficheros).

Espacio en disco

  1. df -h → mostrar una lista de las particiones montadas.
  2. ls -lSr | more → mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
  3. du -sh dir1 → Estimar el espacio usado por el directorio 'dir1'.
  4. du -sk * | sort -nr → mostrar en orden descendente el tamaño de los ficheros y subdirectorios en la ubicación actual, en KiB.
  5. du -h --max-depth=1 | sort -nr → mostrar en orden descendente el tamaño de todos los subdirectorios en la ubicación actual, usando unidades de medida adaptables.
  6. du -k --max-depth=1 | sort -k1 -nr | awk '{printf "%.3f GiB\t%s\n", $1/(1048576), $2}' | less → mostrar en orden descendente el tamaño de los directorios y archivos, en GiB.
  7. rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n → mostrar el espacio usado por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros).
  8. dpkg-query -W -f='${Package}\t${Installed-Size}\n' | sort -k 2 -nr | grep -v deinstall | head -n 25 | awk '{printf "%.3f MB\t%s\n", $2/(1024), $1}' → mostrar (en Debian o derivadas) un listado con los 25 paquetes instalados que más espacio consumen (en orden descendente).

Usuarios y grupos

  1. groupadd nombre_del_grupo → crear un nuevo grupo.
  2. groupdel nombre_del_grupo → borrar un grupo.
  3. groupmod -n nuevo_nombre_del_grupo viejo_nombre_del_grupo → renombrar un grupo.
  4. adduser usuario1 → Crear un nuevo usuario, mediante un asistente.
  5. useradd -c "Nombre Apellido" -g admin -d /home/usuario1 -s /bin/bash usuario1 → Crear un nuevo usuario perteneciente al grupo “admin”.
  6. useradd usuario1 → crear un nuevo usuario.
  7. userdel -r usuario1 → borrar un usuario, eliminando su directorio Home.
  8. usermod -c "Usuario de FTP" -g system -d /ftp/usuario1 -s /sbin/nologin usuario1 → cambiar los atributos de un usuario.
  9. usermod -aG plugdev,dialout,pip user1 → agregar el usuario user1 a otros grupos existentes, para incrementar sus permisos (en este caso, agregar la posibilidad de conectar dispositivos, configurar y utilizar el modem)
  10. passwd → cambiar contraseña.
  11. passwd usuario1 → cambiar la contraseña de 'usuario1' (solamente ejecutable como superusuario).
  12. chage -E 2011-12-31 user1 → colocar un plazo para la contraseña del usuario. En este caso dice que la clave expira el 31 de diciembre de 2011.
  13. pwck → chequear la sintaxis correcta el formato de fichero de '/etc/passwd' y la existencia de usuarios.
  14. grpck → chequear la sintaxis correcta y el formato del fichero '/etc/group' y la existencia de grupos.
  15. newgrp grupo1 → registra a un nuevo grupo para cambiar el grupo predeterminado de los ficheros creados recientemente.

Permisos en ficheros (usar "+" para colocar permisos y "-" para eliminar)

  1. ls -lh → Mostrar permisos.
  2. ls /tmp | pr -T5 -W$COLUMNS → dividir la terminal en 5 columnas.
  3. chmod ugo+rwx directory1 → colocar permisos de lectura ®, escritura (w) y ejecución(x) al propietario (u), al grupo (g) y a otros (o) sobre el directorio 'directory1'.
  4. chmod go-rwx directory1 → quitar permiso de lectura ®, escritura (w) y (x) ejecución al grupo (g) y otros (o) sobre el directorio 'directory1'.
  5. chown user1 file1 → cambiar el dueño de un fichero.
  6. chown -R user1 directory1 → cambiar el propietario de un directorio y de todos los ficheros y directorios contenidos dentro.
  7. chgrp group1 file1 → cambiar grupo de ficheros.
  8. chown user1:group1 file1 → cambiar usuario y el grupo propietario de un fichero.
  9. find / -perm -u+s → visualizar todos los ficheros del sistema con SUID configurado.
  10. chmod u+s /bin/file1 → colocar el bit SUID en un fichero binario. El usuario que corriendo ese fichero adquiere los mismos privilegios como dueño.
  11. chmod u-s /bin/file1 → deshabilitar el bit SUID en un fichero binario.
  12. chmod g+s /home/public → colocar un bit SGID en un directorio –similar al SUID pero por directorio.
  13. chmod g-s /home/public → desabilitar un bit SGID en un directorio.
  14. chmod o+t /home/public → colocar un bit STIKY en un directorio. Permite el borrado de ficheros solamente a los dueños legítimos.
  15. chmod o-t /home/public → desabilitar un bit STIKY en un directorio.

Atributos especiales en ficheros (usar "+" para colocar permisos y "-" para eliminar)

  1. chattr +a file1 → permite escribir abriendo un fichero solamente modo append.
  2. chattr +c file1 → permite que un fichero sea comprimido / descomprimido automaticamente.
  3. chattr +d file1 → asegura que el programa ignore borrar los ficheros durante la copia de seguridad.
  4. chattr +i file1 → convierte el fichero en inmutable o invariable, por lo que no puede ser eliminado, alterado, renombrado, ni enlazado.
  5. chattr +s file1 → permite que un fichero sea borrado de forma segura.
  6. chattr +S file1 → asegura que un fichero sea modificado, los cambios son escritos en modo synchronous como con sync.
  7. chattr +u file1 → te permite recuperar el contenido de un fichero aún si este está cancelado.
  8. lsattr → mostrar atributos especiales.

Archivos y ficheros comprimidos

  1. 7za a -mx=9 -ms=on -mhe=on -p archivocomprimido directorio1 archivo1 archivo2 → comprimir un directorio y dos archivos en formato 7zip, con compresión sólida máxima, y protección por contraseña (la extensión 7z se agrega automáticamente).
  2. 7za x archivocomprimido.7z → extraer un archivo comprimido en 7zip (7zip también permite descomprimir otros formatos, como por ejemplo, zip).
  3. bunzip2 file1.bz2 → descomprime in fichero llamado 'file1.bz2'.
  4. bzip2 file1 → comprime un fichero llamado 'file1'.
  5. gunzip file1.gz → descomprime un fichero llamado 'file1.gz'.
  6. gzip file1 → comprime un fichero llamado 'file1'.
  7. gzip -9 file1 → comprime con compresión máxima.
  8. rar a file1.rar test_file → crear un fichero rar llamado 'file1.rar'.
  9. rar a file1.rar file1 file2 dir1 → comprimir 'file1', 'file2' y 'dir1' simultáneamente.
  10. rar x file1.rar → descomprimir archivo rar.
  11. unrar x file1.rar → descomprimir archivo rar.
  12. tar -cvf archive.tar file1 → crear un tarball descomprimido.
  13. tar -cvf archive.tar file1 file2 dir1 → crear un archivo conteniendo 'file1', 'file2' y'dir1'.
  14. tar -tf archive.tar → mostrar los contenidos de un archivo.
  15. tar -xvf archive.tar → extraer un tarball (si el archivo además está comprimido con gzip, bzip2 o xz, descomprimirlo automáticamente).
  16. tar -xvf archive.tar -C /tmp → extraer un tarball en /tmp.
  17. tar -cjvf archive.tar.bz2 dir1 → crear un tarball comprimido en bzip2.
  18. tar -xjvf archive.tar.bz2 → descomprimir un archivo tar comprimido en bzip2
  19. tar -cJvf archive.tar.xz dir1 → crear un tarball comprimido en xz.
  20. XZ_OPT=-9e tar -cJvf archive.tar.xz dir1 → crear un tarball comprimido en xz (con máxima compresión).
  21. tar -xJvf archive.tar.xz → descomprimir un archivo tar comprimido en xz.
  22. tar -czvf archive.tar.gz dir1 → crear un tarball comprimido en gzip.
  23. tar -I pigz -cf archive.tar.gz dir1 → crear un tarball comprimido en gzip, pero utilizando pigz, que comprime en paralelo aprovechando todos los núcleos de los microprocesadores del equipo.
  24. GZIP=-9 tar -czvf archive.tar.gz dir1 → crear un tarball comprimido en gzip (con máxima compresión).
  25. tar -xzvf archive.tar.gz → descomprimir un archive tar comprimido en gzip.
  26. zip file1.zip file1 → crear un archivo comprimido en zip.
  27. zip -r file1.zip file1 file2 dir1 → comprimir, en zip, varios archivos y directorios de forma simultánea.
  28. unzip file1.zip → descomprimir un archivo zip.

Paquetes rpm (Red Hat, Fedora y similares)

  1. rpm -ivh package.rpm → instalar un paquete rpm.
  2. rpm -ivh --nodeeps package.rpm → instalar un paquete rpm ignorando las peticiones de dependencias.
  3. rpm -U package.rpm → actualizar un paquete rpm sin cambiar la configuración de los ficheros.
  4. rpm -F package.rpm → actualizar un paquete rpm solamente si este está instalado.
  5. rpm -e package_name.rpm → eliminar un paquete rpm.
  6. rpm -qa → mostrar todos los paquetes rpm instalados en el sistema.
  7. rpm -qa | grep httpd → mostrar todos los paquetes rpm con el nombre “httpd”.
  8. rpm -qi package_name → obtener información en un paquete específico instalado.
  9. rpm -qg "System Environment/Daemons" → mostar los paquetes rpm de un grupo software.
  10. rpm -ql package_name → mostrar lista de ficheros dados por un paquete rpm instalado.
  11. rpm -qc package_name → mostrar lista de configuración de ficheros dados por un paquete rpm instalado.
  12. rpm -q package_name --whatrequires → mostrar lista de dependencias solicitada para un paquete rpm.
  13. rpm -q package_name --whatprovides → mostar la capacidad dada por un paquete rpm.
  14. rpm -q package_name --scripts → mostrar los scripts comenzados durante la instalación /eliminación.
  15. rpm -q package_name --changelog → mostar el historial de revisions de un paquete rpm.
  16. rpm -qf /etc/httpd/conf/httpd.conf → verificar cuál paquete rpm pertenece a un fichero dado.
  17. rpm -qp package.rpm -l → mostrar lista de ficheros dados por un paquete rpm que aún no ha sido instalado.
  18. rpm --import /media/cdrom/RPM-GPG-KEY → importar la firma digital de la llave pública.
  19. rpm --checksig package.rpm → verificar la integridad de un paquete rpm.
  20. rpm -qa gpg-pubkey → verificar la integridad de todos los paquetes rpm instalados.
  21. rpm -V package_name → chequear el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificación.
  22. rpm -Va → chequear todos los paquetes rpm instalados en el sistema. Usar con cuidado.
  23. rpm -Vp package.rpm → verificar un paquete rpm no instalado todavía.
  24. rpm2cpio package.rpm | cpio --extract --make-directories *bin → extraer fichero ejecutable desde un paquete rpm.
  25. rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm → instalar un paquete construido desde una fuente rpm.
  26. rpmbuild --rebuild package_name.src.rpm → construir un paquete rpm desde una fuente rpm.

Actualizador de paquetes yum (Fedora, Redhat y otros)

  1. yum install package_name → descargar e instalar un paquete rpm.
  2. yum localinstall package_name.rpm → este instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositorios.
  3. yum update → actualizar todos los paquetes rpm instalados en el sistema.
  4. yum update package_name → modernizar / actualizar un paquete rpm.
  5. yum remove package_name → eliminar un paquete rpm.
  6. yum list → listar todos los paquetes instalados en el sistema.
  7. yum search package_name → Encontrar un paquete en repositorio rpm.
  8. yum clean packages → limpiar un caché rpm borrando los paquetes descargados.
  9. yum clean headers → eliminar todos los ficheros de encabezamiento que el sistema usa para resolver la dependencia.
  10. yum clean all → eliminar desde los paquetes caché y ficheros de encabezado.

Gestión de paquetes deb (Debian, Ubuntu y otros)

  1. dpkg -i elpaquete.deb → instalar / actualizar un paquete.
  2. dpkg -r elpaquete → eliminar un paquete deb del sistema.
  3. dpkg -l → mostrar todos los paquetes deb instalados en el sistema.
  4. dpkg -l | grep httpd → mostrar todos los paquetes deb con el nombre “httpd”
  5. dpkg -s elpaquete → obtener información en un paquete específico instalado en el sistema.
  6. dpkg -L elpaquete → mostar lista de ficheros utilizados por un paquete instalado en el sistema.
  7. dpkg -c elpaquete.deb → mostrar contenido de un paquete (no necesariamente instalado).
  8. dpkg -S /bin/ping → verificar a qué paquete pertenece un fichero dado.

Actualizador de paquetes apt y aptitude (Debian, Ubuntu y otros)

  1. apt-get install package_name → instalar / actualizar un paquete deb.
  2. apt-cdrom install package_name → instalar / actualizar un paquete deb desde un cdrom.
  3. apt-get update → actualizar la lista de paquetes.
  4. apt-get upgrade → actualizar todos los paquetes instalados.
  5. apt-get remove package_name → eliminar un paquete deb del sistema.
  6. apt-get check → verificar la correcta resolución de las dependencias.
  7. apt-get clean → limpiar cache desde los paquetes descargados.
  8. apt-cache search searched-package → retorna lista de paquetes que corresponde a la serie «paquetes buscados».
  9. aptitude search paquete → busca un paquete por el nombre.
  10. aptitude search ~dpaquete → busca un paquete por la descripción.
  11. aptitude show paquete | less → muestra información sobre un paquete.
  12. aptitude install paquete1 paquete2 … → instala varios paquetes con sus dependencias y recomendaciones.
  13. aptitude -R install paquete → instala un paquete con sus dependencias, pero sin las recomendaciones.
  14. aptitude why paquete → lista las razones por las que se debería instalar el paquete.
  15. aptitude why-not paquete → lista las razones por las que no se puede instalar el paquete.
  16. aptitude -rsvW install paquete → simula la instalación de un paquete con sus dependencias y recomendaciones, detallando cada una.
  17. aptitude remove paquete → desinstala un paquete.
  18. aptitude purge paquete → desinstala un paquete y lo limpia de la cache.
  19. aptitude clean → limpia la cache de paquetes.
  20. apt-file -xi search 'sql' → busca todos los paquetes que contengan un archivo o directorio con la expresión sql (sin considerar mayúsculas o minúsculas).3)

Ver el contenido de un fichero

  1. cat file1 → ver los contenidos de un fichero comenzando desde la primera línea.
  2. tac file1 → ver los contenidos de un fichero comenzando desde la última línea.
  3. more file1 → ver el contenido de un fichero de manera paginada.
  4. less file1 → parecido al commando 'more' pero permite avanzar, retroceder, y buscar (compatible con algunos comandos de vi).
  5. head -2 file1 → ver las dos primeras líneas de un fichero (ó 10, si no se especifica la cantidad de líneas).
  6. tail -2 file1 → ver las dos últimas líneas de un fichero (ó 10, si no se especifica la cantidad de líneas).

Manipulación de texto

  1. cat file1 file2 … | command <> file1_in.txt_or_file1_out.txt → sintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUT.
  2. cat file1 | command( sed, grep, awk, grep, etc…) > result.txt → sintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevo.
  3. cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt → sintaxis general para manipular un texto de un fichero y añadir resultado en un fichero existente.
  4. grep Aug /var/log/messages → buscar palabras “Aug” en el fichero '/var/log/messages'.
  5. grep ^Aug /var/log/messages → buscar palabras que comienzan con “Aug” en fichero '/var/log/messages'
  6. grep [0-9] /var/log/messages → seleccionar todas las líneas del fichero '/var/log/messages' que contienen números.
  7. grep Aug -R /var/log/ → buscar la cadena “Aug” en el directorio '/var/log' y debajo.
  8. sed 's/string1/string2/g' ejemplo.txt → reemplazar en ejemplo.txt todas las ocurrencias de “string1” con “string2”
  9. sed '/^$/d' ejemplo.txt → eliminar todas las líneas en blanco desde el ejemplo.txt
  10. sed '/ *#/d; /^$/d' ejemplo.txt → eliminar comentarios y líneas en blanco de ejemplo.txt
  11. echo 'ejemplo' | tr '[:lower:]' '[:upper:]' → convertir “ejemplo” de minúsculas a mayúsculas.
  12. sed -e '1d' ejemplo.txt → elimina la primera línea del fichero ejemplo.txt
  13. sed -n '/string1/p' → visualizar solamente las líneas que contienen la palabra “string1”.
  14. sed -r 's/(cadena1)(cadena2)/\2\1/g' → utilizar expresiones regulares extendidas para intercambiar el orden de dos cadenas de texto, en todas las instancias que aparezcan.

Establecer caracter y conversión de ficheros

  1. dos2unix filedos.txt fileunix.txt → convertir un formato de fichero texto desde MSDOS a UNIX.
  2. unix2dos fileunix.txt filedos.txt → convertir un formato de fichero de texto desde UNIX a MSDOS.
  3. recode ..HTML < page.txt > page.html → convertir un fichero de texto en html.
  4. recode -l | more → mostrar todas las conversiones de formato disponibles.

Análisis del sistema de ficheros

  1. badblocks -v /dev/hda1 → Chequear los bloques defectuosos en el disco hda1.
  2. fsck /dev/hda1 → reparar / chequear la integridad del fichero del sistema Linux en el disco hda1.
  3. fsck.ext2 /dev/hda1 → reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
  4. e2fsck /dev/hda1 → reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
  5. e2fsck -j /dev/hda1 → reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
  6. fsck.ext3 /dev/hda1 → reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
  7. fsck.vfat /dev/hda1 → reparar / chequear la integridad del fichero sistema fat en el disco hda1.
  8. fsck.msdos /dev/hda1 → reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
  9. dosfsck /dev/hda1 → reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.

Formatear un sistema de ficheros

  1. mkfs /dev/hda1 → crear un fichero de sistema tipo Linux en la partición hda1.
  2. mke2fs /dev/hda1 → crear un fichero de sistema tipo Linux ext 2 en hda1.
  3. mke2fs -j /dev/hda1 → crear un fichero de sistema tipo Linux ext3 (periódico) en la partición hda1.
  4. mkfs -t vfat 32 -F /dev/hda1 → crear un fichero de sistema FAT32 en hda1.
  5. fdformat -n /dev/fd0 → formatear un disco flooply.
  6. mkswap /dev/hda3 → crear un fichero de sistema swap.

Partición de sistema swap

  1. mkswap /dev/hda3 → crear fichero de sistema swap.
  2. swapon /dev/hda3 → activando una nueva partición swap.
  3. swapon /dev/hda2 /dev/hdb3 → activar dos particiones swap.

Salvas

  1. dump -0aj -f /tmp/home0.bak /home → hacer una salva completa del directorio '/home'.
  2. dump -1aj -f /tmp/home0.bak /home → hacer una salva incremental del directorio '/home'.
  3. restore -if /tmp/home0.bak → restaurando una salva interactivamente.
  4. rsync -rogpav --delete /home /tmp → sincronización entre directorios.
  5. rsync -rogpav -e ssh --delete /home ip_address:/tmp → rsync a través del túnel SSH.
  6. rsync -az -e ssh --delete ip_addr:/home/public /home/local → sincronizar un directorio local con un directorio remoto a través de ssh y de compresión.
  7. rsync -az -e ssh --delete /home/local ip_addr:/home/public → sincronizar un directorio remoto con un directorio local a través de ssh y de compresión.
  8. dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' → hacer una salva de un disco duro en un host remoto a través de ssh.
  9. dd if=/dev/sda of=/tmp/file1 → salvar el contenido de un disco duro a un fichero. (En este caso el disco duro es “sda” y el fichero “file1”).
  10. tar -Puf backup.tar /home/user → hacer una salva incremental del directorio '/home/user'.
  11. tar -czv --exclude=/root/dir1/* -f /var/salvas/cfg_$(date +%F_%H%M).tgz /etc /root → salvar los directorios /etc y /root (excluyendo el contenido del subdirectorio /root/dir1/) en un archivo comprimido, cuyo nombre contenga la fecha y hora actual.
  12. ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' → copiar el contenido de un directorio en un directorio remoto a través de ssh.
  13. ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' → copiar un directorio local en un directorio remoto a través de ssh.
  14. tar cf - . | (cd /tmp/backup ; tar xf - ) → copia local conservando las licencias y enlaces desde un directorio a otro.
  15. find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents → encontrar y copiar todos los ficheros con extensión '.txt' de un directorio a otro.
  16. find ~/ -type f -not -iname '*.mp*' -not \( -iregex '.*\.mozilla/.*' -o -iregex '.*\.thumbnails/.*' \) -prune -mtime 14 -print0 | xargs -0 tar -czf /var/salvas/myhome.tgz → realizar una salva de todos los archivos de nuestro perfil de usuario modificados dentro de los últimos 14 días, exceptuando los archivos mp3, mpg y similares, y los directorios .mozilla/ y .thumbnails/.
  17. find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 → encontrar todos los ficheros con extensión '.log' y hacer un archivo bzip.
  18. dd if=/dev/hda of=/dev/fd0 bs=512 count=1 → hacer una copia del MRB (Master Boot Record) a un disco floppy.
  19. dd if=/dev/fd0 of=/dev/hda bs=512 count=1 → restaurar la copia del MBR (Master Boot Record) salvada en un floppy.

CDROM

  1. cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force → limpiar o borrar un cd regrabable.
  2. mkisofs /dev/cdrom > cd.iso → crear una imagen iso de cdrom en disco.
  3. mkisofs /dev/cdrom | gzip > cd_iso.gz → crear una imagen comprimida iso de cdrom en disco.
  4. mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd → crear una imagen iso de un directorio.
  5. cdrecord -v dev=/dev/cdrom cd.iso → quemar una imagen iso.
  6. gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - → quemar una imagen iso comprimida.
  7. mount -t udf,iso9660 -o loop cd.iso /mnt/iso → montar una imagen iso.
  8. cd-paranoia -B → llevar canciones de un cd a ficheros wav.
  9. cd-paranoia -- ”-3” → llevar las 3 primeras canciones de un cd a ficheros wav.
  10. cdrecord --scanbus → escanear bus para identificar el canal scsi.
  11. dd if=/dev/hdc | md5sum → hacer funcionar un md5sum en un dispositivo, como un CD.
  12. eject -v → expulsar un medio o disco extraíble, ofreciendo información adicional.

Trabajo con la red (LAN Y WIFI)

  1. ifconfig eth0 → mostrar la configuración de una interfaz de red Ethernet.
  2. ifup eth0 → activar la interfaz eth0.
  3. ifdown eth0 → deshabilitar la interfaz eth0.
  4. ifconfig eth0 192.168.1.1 netmask 255.255.255.0 → configurar una dirección IP.
  5. ifconfig eth0 promisc → configurar eth0 en modo promiscuo para obtener los paquetes (sniffing).
  6. dhclient eth0 → activar la interface 'eth0' en modo dhcp.
  7. route -n → mostrar tabla de rutas.
  8. route add -net 0/0 gw IP_Gateway → configurar entrada predeterminada.
  9. ip route show | grep default | awk {'print $3'} → conocer la puerta de enlace predeterminada.
  10. route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 → configurar ruta estática para buscar la red 192.168.0.0/16.
  11. route del 0/0 gw IP_gateway → eliminar la ruta estática.
  12. echo 1 > /proc/sys/net/ipv4/ip_forward → activar el redireccionamiento de paquetes ip.
  13. hostname → mostrar el nombre del host del sistema.
  14. host www.example.com → buscar el nombre del host para resolver el nombre a una dirección ip (1).
  15. nslookup www.example.com → buscar el nombre del host para resolver el nombre a una direccióm ip y viceversa (2).
  16. ip link show → mostar el estado de enlace de todas las interfaces.
  17. mii-tool eth0 → mostar el estado de enlace de eth0.
  18. ethtool eth0 → mostrar las estadísticas de la interfaz de red eth0.
  19. netstat -tup → mostrar todas las conexiones de red activas y sus PID.
  20. netstat -tupl → mostrar todos los servicios de escucha de red en el sistema y sus PID.
  21. netstat -punta → mostrar todas las conexiones activas por dirección IP y puerto.
  22. tcpdump tcp port 80 → mostrar todo el tráfico HTTP.
  23. iwlist scan → mostrar las redes inalámbricas.
  24. iwconfig eth1 → mostrar la configuración de una interfaz de red inalámbrica.
  25. whois www.example.com → buscar en base de datos Whois.
  26. iftop -nNP -i eth0 → mostrar en tiempo real las conexiones abiertas en eth0 y su tasa de transferencia.
  27. sockstat → mostrar información sobre las conexiones abiertas.
  28. arp-scan -l → descubrir en la red las direcciones IP y MAC.
  29. nm-tool → muestra configuración de red (en caso de usar Network Manager obtiene los DNS).

Redes de Microsoft Windows (Samba)

  1. nbtscan ip_addr → resolución de nombre de red bios.
  2. nmblookup -A ip_addr → resolución de nombre de red bios.
  3. smbclient -L ip_addr/hostname → mostrar acciones remotas de un host en windows.

Cortafuegos (iptables)

  1. iptables -t filter -L → mostrar todas las cadenas de la tabla de filtro.
  2. iptables -t nat -L → mostrar todas las cadenas de la tabla nat.
  3. iptables -t filter -F → limpiar todas las reglas de la tabla de filtro.
  4. iptables -t nat -F → limpiar todas las reglas de la tabla nat.
  5. iptables -t filter -X → borrar cualquier cadena creada por el usuario.
  6. iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT → permitir las conexiones telnet para entar.
  7. iptables -t filter -A OUTPUT -p tcp --dport http -j DROP → bloquear las conexiones HTTP para salir.
  8. iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT → permitir las conexiones POP a una cadena delantera.
  9. iptables -t filter -A INPUT -p tcp -m multiport --dports 80,443,8080 -m state --state NEW -m limit --limit 4/sec --limit-burst 8 -j ACCEPT → establecer un límite de 4 peticiones por segundo de nuevas conexiones, con posibles ráfagas ocasionales (útil para políticas de denegación por defecto).
  10. iptables -t filter -A INPUT -p tcp -m multiport --dports 80,443,8080 -m state --state ESTABLISHED,RELATED -m connlimit ! --conlimit-above 6 -j ACCEPT → establecer un límite de 6 conexiones simultáneas por equipo a nuestro servidor web (útil para políticas de denegación por defecto).
  11. iptables -t filter -A INPUT -j LOG --log-prefix “DROP INPUT” → registrando una cadena de entrada.
  12. iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE → configurar un PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida forzada. (Indicado para enlaces tipo ppp)
  13. iptables -t nat -A POSTROUTING -s 192.168.0.127 -o eth0 -j SNAT --to-source 169.158.158.169 → enrutar los paquetes desde 192.168.0.127 hacia otras redes por eth0 y asignarles un dirección ip externa. (Indicado para enlaces tipo ADSL)
  14. iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22 → redireccionar los paquetes diriguidos de un host a otro.
  15. iptables -t nat -S → Listar todas las reglas activas en la tabla nat.
  16. iptables-save -c > archivo → Salvar las reglas en un archivo (incluyendo los contadores de paquetes y bytes).
  17. iptables-restore -c < archivo → Restaurar las reglas desde un archivo (incluyendo los contadores de paquetes y bytes).

Monitoreando y depurando

  1. top → mostrar en tiempo real las tareas de linux.
  2. htop → mostrar y gestionar las tareas con una interfaz amistosa.
  3. ps -eafw → muestra las tareas Linux.
  4. ps -e -o pid,args --forest → muestra las tareas Linux en un modo jerárquico.
  5. ps -o pid,cmd -ww -C wget → listar todas las instancias del comando wget con sus argumentos.
  6. pstree → mostrar un árbol sistema de procesos.
  7. pidof pppd → mostrar el pid del proceso pppd.
  8. kill -9 ID_Processo → forzar el cierre de un proceso y terminarlo.
  9. kill -1 ID_Processo → forzar un proceso para recargar la configuración.
  10. killall Nombre_Proceso → terminar un proceso por el nombre del comando y no por el ID.
  11. kill -HUP $(ps -A -o state,pid --no-header | grep -e '^[Zz]' | awk '{print $2}' | xargs) → terminar todos los procesos zombies.
  12. lsof -p $$ → mostrar una lista de ficheros abiertos por procesos.
  13. lsof /home/user1 → muestra una lista de ficheros abiertos en un camino dado del sistema.
  14. strace -c ls >/dev/null → mostrar las llamadas del sistema hechas y recibidas por un proceso.
  15. strace -f -e open ls >/dev/null → mostrar las llamadas a la biblioteca.
  16. watch -n1 'cat /proc/interrupts' → mostrar interrupciones en tiempo real.
  17. last reboot → mostrar historial de reinicio.
  18. lsmod → mostrar los módulos del kernel cargados.
  19. free -m → muestra el estado de la RAM en megabytes.
  20. smartctl -A /dev/hda → monitorear la fiabilidad de un disco duro a través de SMART.
  21. smartctl -i /dev/hda → chequear si SMART está activado en un disco duro.
  22. tail -f /var/log/dmesg → mostrar eventos inherentes al proceso de carga del kernel.
  23. tail -f /var/log/messages → mostrar los eventos del sistema.
  24. multitail --follow-all /var/log/{dmesg,messages} → mostrar dos registros de eventos en una misma pantalla.

Seguridad y Cifrado

  1. base64 /home/archivo > /home/archivo-codificado → codifica “archivo” en 'base64' y lo guarda en /home
  2. base64 -d /home/archivo-codificado > /home/archivo → decodifica “archivo-codificado” y lo guarda en /home
  3. openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/millave.crt -keyout /etc/millave.key → crea un certificado auto-firmado para cifrar el tráfico web con SSL.
  4. htpasswd -c -m /etc/apache2/.htpasswd nombreusuario → genera un archivo '.htpasswd' para proteger un sitio web con auntenticación.

Otros comandos útiles

  1. apropos palabraclave → mostrar una lista de comandos que pertenecen a las palabras claves de un programa; son útiles cuando tú sabes qué hace tu programa, pero desconoces el nombre del comando.
  2. man ping → mostrar las páginas del manual on-line; por ejemplo, en un comando ping, usar la opción '-k' para encontrar cualquier comando relacionado.
  3. man -t ping | ps2pdf - ping.pdf → convertir las páginas del manual del comando ping en un archivo pdf (para lo cual es necesario haber instalado Ghostscript).
  4. mkbootdisk --device /dev/fd0 `uname -r` → crear un floppy boteable.
  5. gpg -c file1 → codificar un fichero con guardia de seguridad GNU.
  6. gpg file1.gpg → decodificar un fichero con Guardia de seguridad GNU.
  7. wget -r www.example.com → descargar un sitio web completo.
  8. wget -c www.example.com/file.iso → descargar un fichero con la posibilidad de parar la descargar y reanudar más tarde.
  9. echo 'wget -c www.example.com/files.iso' | at 09:00 → Comenzar una descarga a cualquier hora. En este caso empezaría a las 9 horas.
  10. ldd /usr/bin/ssh → mostrar las bibliotecas compartidas requeridas por el programa ssh.
  11. alias hh='history' → colocar un alias para un commando. En este caso, para invocar el historial con hh.
  12. chsh → cambiar el comando Shell.
  13. chsh --list-shells → es un comando adecuado para saber si tienes que hacer remoto en otra terminal.
  14. who -a → mostrar quien está registrado, e imprimir hora del último sistema de importación, procesos muertos, procesos de registro de sistema, procesos activos producidos por init, funcionamiento actual y últimos cambios del reloj del sistema.
  15. echo "128*1024*1024" | bc → calcular desde la consola el tamaño en bytes de 128 MiB.
  16. sudo !! → ejecutar como superusuario el último comando tecleado.
  17. clear → limpiar la pantalla.
  18. uncomando > archivodesalida.txt 2>&1 → ejecuta un comando y redirige la salida a un archivo, combinando en este tanto STDOUT como STDERR.
  19. uncomando > archivodesalida.txt 2> archivoerrores.txt → ejecuta un comando, redirige la salida (STDOUT) a un archivo, y los errores (STDERR) a otro.
  20. uncomando | tee archivodesalida.txt → ejecuta un comando, muestra la salida en la pantalla y simultáneamente la escribe a un archivo.
LINKS CONSULTADOS


SaluDOS