Comando de La Semana 22 LYNIS
Comando de La Semana 22 LYNIS
Ficha N° 22 LYNIS
CSIRT DE GOBIERNO
I. CONTEXTO
Este documento, denominado, en esta oportunidad, “LYNIS", tiene como objetivo ilustrar sobre una
herramienta que puede ser de utilidad para el lector, a objeto de ir potenciando las capacidades
locales de autochequeo, detección simple de vulnerabilidades que están expuestas a internet en sus
sitios o sistemas web y, a su vez, la obtención de una verificación de la subsanación de aquellas que
se les han sido reportadas, facilitando la interacción con el CSIRT de Gobierno. El objetivo no es
reemplazar una auditoria de código o evaluación de vulnerabilidades, sino que establecer
capacidades básicas de chequeo y obtención de información de manera rápida para temas
específicos, como por ejemplo la verificación de la subsanación de alertas o vulnerabilidades
reportadas por “CSIRT GOB CL”. Todas estas herramientas al contar con la posibilidad de ser usadas
desde una línea de comando, permiten en algún grado la integración dentro de script’s o programas
escritos en lenguajes que facilitan la automatización tales como PERL, AWK, Shell Scripting1, Expect,
Python, C, C#, C++, Golang, JavaScript, PowerShell, Ruby, Java, PHP, Elixir, Elm, Go, Dart, DLang, Pony,
TypeScript, Kotlin, Nim, OCaml, Q#2, Reason, Rust (RustyBuer), Swift, entre otros, con miras a
automatizar estas actividades y así poder invertir el tiempo de los especialistas o analistas en el
estudio e investigación de los datos para encontrar los problemas relevantes y descartar los falsos
positivos.
Es importante que conozca al menos lo básico de los lenguajes más nuevos o no convencionales, pues
se ha detectado que los desarrolladores de malware van incorporándolos como estrategia de
ofuscación, para dificultar la detección y análisis que proveen las soluciones de seguridad.
Solo a modo de curiosidad se comparte un gráfico en el que se muestra el resultado de una encuesta
entre muchos desarrolladores, dejando ver que lenguajes son más queridos, temidos (primer gráfico)
y luego cuales son los más preferidos3 (segundo gráfico).
1
https://scis.uohyd.ac.in/~apcs/itw/UNIXProgrammingEnvironment.pdf
2
https://github.com/Microsoft/QuantumKatas/
3
https://insights.stackoverflow.com/survey/2021#most-loved-dreaded-and-wanted-language-love-dread
Página 1 de 53
Al final de este documento se presenta, a modo de curiosidad, el tradicional “Hola, Mundo” escrito
en algunos de estos lenguajes, con el objetivo de motivar al lector a conocerlos, estudiarlos y
aplicarlos a sus entornos de trabajo.
Página 2 de 53
Página 3 de 53
Página 4 de 53
II. INTRODUCCIÓN
Por hardening entenderemos a un conjunto de actividades que son llevadas a cabo por el
administrador de un sistema operativo para reforzar al máximo posible la seguridad de su equipo o
servidor.
El propósito del hardening es entorpecer la labor del ciberdelincuente y ganar tiempo para poder
minimizar las consecuencias de un inminente incidente de seguridad e incluso, en algunos casos,
evitar que éste se concrete en su totalidad. Una de las primeras cosas que hay que dejar en claro del
Hardening de sistemas operativos es que no necesariamente logrará establecer equipos
“invulnerables”. Es importante recordar que, según el modelo de defensa en profundidad, el host es
sólo una capa de éste.
En otras palabras, un factor más a considerar dentro del gran número de puntos a ser tomados en
cuenta para defender “globalmente” un sistema. Entre las actividades propias de un proceso de
hardening se pueden contar las siguientes:
4
https://apps.nsa.gov/iaarchive/library/ia-guidance/security-configuration/operating-systems/index.cfm
5
https://www.factor.mx/portal/base-de-conocimiento/sistemas-de-archivos/
Página 5 de 53
de actualizaciones, que deberá probar en un entorno de laboratorio el impacto de la
instalación de actualizaciones antes de instalarlas en producción.
Instalación, configuración y mantención de programas de seguridad tales como Antimalware,
Antispyware, EDR, HIDS, y un filtro Antispam según las necesidades del sistema.
Configuración de la política local del sistema, considerando varios puntos relevantes: Política
de contraseñas robusta, con claves caducables, almacenamiento histórico de contraseñas
(para no usar contraseñas cíclicas), bloqueos de cuentas por intentos erróneos y requisitos
de complejidad de contraseñas. Renombramiento y posterior deshabilitación de cuentas
estándar del sistema, como administrador e invitado. Asignación correcta de derechos de
usuario, de tal manera de reducir las posibilidades de elevación de privilegios, y tratando
siempre de limitar al mínimo los privilegios y/o derechos de los usuarios activos.
Configuración de opciones de seguridad generales, como aquellas relacionadas con rutas de
acceso compartido, apagado de sistema, inicio y cierre de sesión y opciones de seguridad de
red.
Restricciones de software, basado en lo posible en el uso de listas blancas de software
permitido más que en listas negras del mismo.
Activación de auditorías de sistema, claves para tener un registro de algunos intentos de
ataque característicos como la adivinación de contraseñas.
Configuración de servicios de sistema. En este punto es necesario tratar siempre de
deshabilitar todos aquellos servicios que no vayan a prestar una funcionalidad necesaria para
el funcionamiento del sistema. Por ejemplo, si su equipo no posee tarjetas de red
inalámbrica, el servicio de redes inalámbricas debería estar deshabilitado.
Configuración de los protocolos de Red. En la medida de lo posible, es recomendable usar
sistemas de traducción de direcciones (NAT) para direccionar los equipos internos de una
organización. Deshabilitar todos aquellos protocolos de red innecesarios en el sistema y
limitar el uso de los mismos al mínimo. TCP/IP es un protocolo que no nació pensando en
seguridad, por lo que limitar su uso al estrictamente necesario es imperativo. Por ejemplo si
internamente no utiliza IPv6 deshabilítelo y solo deje activo IPv4.
Configuración adecuada de permisos de seguridad en archivos y carpetas del sistema. En la
medida de lo posible, denegar explícitamente cualquier permiso de archivo a las cuentas de
acceso anónimos o que no tengan contraseña. Una correcta definición y asignación de
permisos a nivel de carpetas y archivos es clave para evitar un acceso no deseado al
contenido de los mismos.
Configuración de opciones de seguridad de los distintos programas, como clientes de correo
electrónico, navegadores de internet y en general de cualquier tipo de programa que tenga
interacción con la red.
Configuración de acceso remoto. En caso de no ser estrictamente necesario, es bueno
deshabilitar el acceso remoto. Sin embargo, cuando es necesario tener control remoto de la
máquina, es preciso configurarlo de manera adecuada, restringiendo el acceso a un número
Página 6 de 53
muy limitado de usuario, restringiendo al mínimo las conexiones concurrentes, tomando
cuidado en la desconexión y cierre de sesión y estableciendo un canal cifrado de
comunicaciones para tales propósitos, como SSH6.
Configuración adecuada de cuentas de usuario, tratando de trabajar la mayor parte del
tiempo con cuentas de acceso limitado y deshabilitando las cuentas de administrador. Es
absolutamente recomendable usar la impersonificación de usuarios para realizar labores
administrativas en vez de iniciar sesión como administradores.
Cifrado de archivos o unidades según las necesidades del sistema, considerando un
almacenamiento externo para las llaves de descifrado. Considerar además la opción de
trabajar con sistemas de cifrado de mensajería instantánea y correo electrónico.
Realizar y programar un sistema de respaldos frecuente a los archivos y al estado de sistema.
En la medida de lo posible, administrar los respaldos vía red o llevar los respaldos a unidades
físicas que estén alejadas del equipo que las origina.
El espectro de actividades que deben ser llevadas a cabo dentro de este proceso es amplio y tiene
actividades de todo tipo. Sin embargo, el objetivo para todas estas actividades es siempre el mismo:
Dejar el sistema operativo lo más restringido posible.
En consecuencia, el Hardening es una ayuda indispensable para ahorrarse bastantes problemas por
parte de los administradores de sistemas. Entre sus ventajas, se puede contar la disminución de
incidentes de ciberseguridad, mejoras en el rendimiento al disminuir niveles de carga inútil en el
sistema, una administración más simple y mayor rapidez en la identificación de problemas, ya que
muchas de las posibles causas de ellos quedarán descartadas en virtud de las medidas tomadas, y
finalmente la posibilidad – en muchos casos – de poder hacer un seguimiento de los incidentes y en
algunos casos identificar el origen de los mismos.
En este contexto se inserta la herramienta que les presentamos en esta edición del “comando de la
semana”: LYNIS.
6
https://www.ccn-cert.cni.es/informes/abstracts/4880-medidas-de-seguridad-para-acceso-remoto/file.html
Página 7 de 53
¿Qué es LYNYS?
Lynis es una herramienta de auditoría de seguridad, de código abierto. Su principal objetivo es auditar
y fortalecer los sistemas basados en Unix y Linux (hardening). Escanea el sistema realizando muchas
comprobaciones de control de seguridad. Los ejemplos incluyen buscar software instalado y
determinar posibles fallas de configuración.
Muchas pruebas son parte de pautas y estándares de seguridad comunes, además de pruebas de
seguridad adicionales. Después del escaneo, se mostrará un informe con todos los hallazgos
descubiertos.
Lynis funciona en casi todos los sistemas y versiones basados en UNIX, incluyendo
AIX
FreeBSD
HP-UX
Linux
macOS
NetBSD
NixOS
OpenBSD
Solaris
y otros
Cómo funciona
La exploración de Lynis es modular y oportunista. Esto significa que sólo utilizará y probará los
componentes que pueda encontrar, como las herramientas del sistema disponibles y sus bibliotecas.
La ventaja es que no es necesario instalar otras herramientas, por lo que puede mantener sus
sistemas limpios.
Al utilizar este método de escaneo, la herramienta puede funcionar casi sin dependencias. Además,
cuantos más componentes descubra, más extensa será la auditoría. En otras palabras: Lynis siempre
realizará escaneos adaptados a su sistema. Ninguna auditoría será igual.
Ejemplo: Cuando Lynis detecta que está ejecutando Apache, realizará una ronda inicial de pruebas
relacionadas con Apache. Luego, cuando realiza las pruebas específicas de Apache, también puede
Página 8 de 53
descubrir una configuración SSL/TLS. Entonces realiza pasos adicionales de auditoría basados en eso.
Un buen ejemplo es la recopilación de los certificados descubiertos, para que puedan ser escaneados
posteriormente también.
Pasos de auditoría
Inicialización
Realiza comprobaciones básicas, como la propiedad de los archivos
Determinar el sistema operativo y las herramientas
Buscar los componentes de software disponibles
Comprobar la última versión de Lynis
Ejecutar los plugins habilitados
Ejecutar pruebas de seguridad por categoría
Realizar la ejecución de sus pruebas personalizadas (opcional)
Informar del estado del escaneo de seguridad
Además del informe y de la información mostrada en pantalla, todos los detalles técnicos del análisis
se almacenan en un archivo de registro (lynis.log). Los resultados, como las advertencias y las
sugerencias, se almacenan en un archivo de informe independiente (lynis-report.dat).
Lynis realiza cientos de pruebas individuales. Cada prueba ayuda a determinar el estado de seguridad
del sistema. La mayoría de las pruebas están escritas en shell script y tienen un identificador único
(por ejemplo, KRNL-6000).
Flexibilidad
Con los identificadores únicos es posible ajustar un análisis de seguridad. Por ejemplo, si una prueba
es demasiado estricta para su apetito de escaneo, simplemente desactívela. De este modo, obtendrá
una auditoría del sistema óptima para su entorno.
Lynis es modular y permite ejecutar sus propias pruebas. Incluso puede crearlas en otros lenguajes
de scripting o programación.
Plugins de Lynis
Los plugins son extensiones modulares de Lynis. Con la ayuda de los plugins, Lynis realizará pruebas
adicionales y recogerá más información del sistema.
Página 9 de 53
Cada plugin tiene el objetivo de recoger datos específicos. Estos datos se almacenan en el archivo de
informes de Lynis (lynis-report.dat). Dependiendo de su uso de Lynis, los datos recogidos pueden
proporcionar información valiosa entre los sistemas o entre las exploraciones individuales.
Los plugins proporcionan el mayor valor en entornos con más de 10 sistemas. Algunos plugins están
disponibles en la sección de descargas7.
Plugins adicionales
Como parte de nuestra oferta Lynis Enterprise, los desarrolladores del núcleo mantienen un conjunto
de plugins para nuestros clientes. Los datos que se recogen de forma centralizada (SaaS o
autoalojado), proporcionan información adicional, como los usuarios disponibles, los procesos y los
detalles de la red. Otra área importante es la de las pruebas de conformidad, en la que los puntos de
datos ayudan a probar los estándares comunes y las guías de endurecimiento.
Estándares soportados
Otras herramientas suelen utilizar los mismos archivos de datos para realizar las pruebas. Lynis no se
limita a una distribución específica de Linux, por lo que utiliza el conocimiento de más de 10 años de
una amplia gama de fuentes. Puede ayudarle a automatizar o probar las mejores prácticas de
seguridad de fuentes como
NIST
NSA
Datos de OpenSCAP
Guías y recomendaciones de los proveedores (por ejemplo, Debian Gentoo, Red Hat)
NOTA IMPORTANTE 1: Dado que es relevante un buen manejo de los comandos básicos de Linux,
tanto para posteriores manejos de los datos o archivos como para usos de la información
resultante de la ejecución de los comandos, es que el comité editorial decidió que se incluya en
esta edición y en las subsiguientes un anexo de comandos Linux que son de utilidad para moverse
en este sistema operativo. Se sugiere dominarlos todos para facilitar el acceso y manipulación de
la información. En futuras ediciones se irán incorporando nociones más avanzadas sobre el uso de
estos comandos para procesamiento de archivos, procesos, y de sus usos en scripting.
7
https://cisofy.com/lynis/plugins/
Página 10 de 53
NOTA IMPORTANTE 2: Dado que un altísimo porcentaje de los equipos de usuarios y servidores
operando en un entorno Windows, el comité editorial ha decidido ir incorporando “tips” para
este entorno computacional.
Bonus Track: Ejemplos muy básicos y simples del clásico “Hello, World!” escrito en diferentes
lenguajes. El objetivo es despertar su curiosidad por estos lenguajes y ojalá se entusiasme y emprenda
la cruzada de aprenderlo en profundidad, para luego aplicarlo en su quehacer cotidiano y dentro de
lo posible comparta sus conocimientos con la comunidad.
Página 11 de 53
III. PASO A PASO
Primero debe contar con una distribución de Kali8 Linux funcionando ya sea en una máquina física o
en una máquina virtual910.
La instalación de Kali Linux (arranque único) en su computadora es un proceso sencillo. Esta guía
cubrirá la instalación básica (que se puede realizar en una máquina virtual invitada o sobre un equipo
entero), con la opción de cifrar la partición. En ocasiones, es posible que tenga datos confidenciales
que preferiría cifrar con Full Disk Encryption (FDE). Durante el proceso de instalación, puede iniciar
una instalación cifrada LVM en el disco duro o en las unidades USB.
Primero, necesitará hardware de computadora compatible. Kali Linux es compatible con plataformas
amd64 (x86_64 / 64-Bit) e i386 (x86 / 32-Bit). Siempre que sea posible, el fabricante recomienda
utilizar las imágenes amd64. Los requisitos de hardware son mínimos como se enumeran en la
8
https://www.kali.org/downloads/
9
https://my.vmware.com/en/web/vmware/downloads/info/slug/desktop_end_user_computing/vmware_w
orkstation_player/16_0
10
https://www.virtualbox.org/wiki/Downloads
Página 12 de 53
sección siguiente, aunque un mejor hardware naturalmente proporcionará un mejor rendimiento.
Debería poder usar Kali Linux en hardware más nuevo con UEFI y sistemas más antiguos con BIOS.
Las imágenes i386, de forma predeterminada, utilizan un kernel PAE, por lo que puede ejecutarlas en
sistemas con más de 4 GB de RAM.
En el ejemplo que se menciona más adelante, se instalará Kali Linux en una nueva máquina virtual
invitada, sin ningún sistema operativo existente preinstalado.
Los requisitos de instalación para Kali Linux variarán según lo que le gustaría instalar y su
configuración. Para conocer los requisitos del sistema:
En el extremo inferior, puede configurar Kali Linux como un servidor Secure Shell (SSH) básico sin
escritorio, utilizando tan solo 128 MB de RAM (se recomiendan 512 MB) y 2 GB de espacio en disco.
Cuando se utilizan aplicaciones que consumen muchos recursos, como Burp Suite, recomiendan al
menos 8 GB de RAM (¡e incluso más si se trata de una aplicación web grande!) O utilizar programas
simultáneos al mismo tiempo.
Descarge Kali Linux12 (el fabricante recomienda13 la imagen marcada como Instalador).
11
Dependiendo del tipo de instalación que seleccione, se pueden borrar todos los datos existentes en el disco
duro, así que haga una copia de seguridad de la información importante del dispositivo en un medio externo.
12
https://www.kali.org/docs/introduction/download-official-kali-linux-images/
13
https://www.kali.org/docs/introduction/what-image-to-download/#which-image-to-choose
Página 13 de 53
Grabe14 la ISO de Kali Linux en un DVD o una imagen de Kali Linux Live en una unidad
USB. (Si no puede, consulte la instalación en red15 de Kali Linux).
Realice una copia de seguridad de la información importante del dispositivo en un medio
externo.
Asegúrese de que su computadora esté configurada para arrancar desde CD / DVD / USB
en su BIOS / UEFI.
Un vez que tiene preparado todos los materiales y el entorno para comenzar la instalación siga los
pasos indicados en la sección “Kali Linux Installation Procedure” del siguiente enlace:
https://www.kali.org/docs/installation/hard-disk-install/
14
https://www.kali.org/docs/usb/live-usb-install-with-windows/
15
https://www.kali.org/docs/installation/network-pxe/
Página 14 de 53
Nombre Link Descripción
ARCHSTRIKE https://archstrike.org/ Distribución linux con foco en ciberseguridad.
BACKBOX https://www.backbox.org/ Distribución de Linux orientada a pruebas de penetración
y evaluación de seguridad que proporciona un conjunto
de herramientas de análisis de redes y sistemas.
BLACKARCH http://blackarch.org/ Herramientas para pruebas de penetración basada en
Arch Linux.
BLACKBUNTU https://archiveos.org/black Es una distribución GNU / Linux basada en Ubuntu y
buntu/ diseñada con Pentest, Seguridad y Desarrollo en mente
para la mejor experiencia.
BUGTRAQ https://archiveos.org/bugt Distribución GNU / Linux destinada a análisis forense
raq/ digital, pruebas de penetración, laboratorios de malware y
análisis forense.
CAINE http://www.caine-live.net/ CAINE (Computer Aided INvestigative Environment) es
una distribución GNU / Linux italiana creada como un
proyecto de Digital Forensics.
CYBORG HAWK https://archiveos.org/cybo Distribución de Linux basada en la plataforma Ubuntu con
LINUX rg-hawk/ el último kernel para profesionales de la seguridad
cibernética.
DEFT LINUX http://www.deftlinux.net/ DEFT es un sistema operativo Linux creado especialmente
para profesionales y expertos de seguridad que necesiten
un ecosistema para analizar datos, redes y dispositivos y
poder recopilar de ellos la mayor cantidad de información
posible.
DRACOS LINUX https://dracos-linux.org/ Dracos Linux es un sistema operativo de código abierto
que proporciona pruebas de penetración.
FEDORA https://labs.fedoraproject. Entorno de prueba seguro para trabajar en auditoría de
SECURITY LAB org/en/security/ seguridad, análisis forense, rescate de sistemas y
enseñanza de metodologías de prueba de seguridad en
universidades y otras organizaciones.
GNACK TRACK https://archiveos.org/gnac Distribución de Linux basada en Ubuntu que proporciona
LINUX ktrack/ un conjunto de pruebas de penetración.
JONDO https://anonymous-proxy- Entorno seguro y preconfigurado para navegación
servers.net/en/jondo-live- anónima.
cd.html
KALI https://www.kali.org/ Distribución de Linux de código abierto basada en Debian
orientada a diversas tareas de seguridad de la
información, como pruebas de penetración, investigación
de seguridad, informática forense e ingeniería inversa.
LIVE HACKING http://www.livehacking.co Distribución de Linux basada en Ubuntu que proporciona
DVD m/live-hacking- un conjunto de pruebas de penetración.
cd/download-live-hacking/
MATRIUX http://matriux.sourceforge Distribución de seguridad con todas las funciones que
.net/ consta de un montón de herramientas poderosas, de
código abierto y gratuitas que se pueden utilizar para
varios propósitos, incluidos, entre otros, pruebas de
penetración, piratería ética, administración de sistemas y
Página 15 de 53
redes, investigaciones forenses cibernéticas, pruebas de
seguridad, análisis de vulnerabilidades y mucho más.
MOKI https://github.com/moki- Modificación de Kali para incorporar varias herramientas
ics/moki ICS / SCADA esparcidas por Internet, para crear un Kali
Linux personalizado dirigido a profesionales de pentesting
ICS / SCADA.
NETWORK https://sourceforge.net/pr Un kit de herramientas de monitoreo y análisis de
SECURITY ojects/nst/files/ seguridad de red para distribución de Linux.
TOOLKIT (NST)
NODEZERO https://sourceforge.net/pr Linux basado en Ubuntu diseñado como un sistema
ojects/nodezero/ completo que también se puede utilizar para pruebas de
penetración.
PENTOO https://pentoo.org/ Live CD y Live USB diseñado para pruebas de penetración
y evaluación de seguridad. Basado en Gentoo Linux,
Pentoo se proporciona como livecd instalable de 32 y 64
bits.
PARROT https://www.parrotsec.org Distribución GNU / Linux basada en Debian y diseñada
SECURITY OS / pensando en la seguridad y la privacidad.
SAMURAI WEB https://www.samuraiwtf.o Linux completo para su uso en la formación de seguridad
TESTING rg/ de aplicaciones. Es gratuito y de código abierto,
FRAMEWORK distribuido como VM preconstruidas y como código
fuente. La fuente consta de un Vagrantfile, activos
estáticos y scripts de compilación. Durante el proceso de
construcción, recupera una variedad de herramientas y
objetivos de entrenamiento.
SECURITY ONION https://securityonionsoluti Distribución de Linux de código abierto y gratuito para la
2 ons.com/ búsqueda de amenazas, la supervisión de la seguridad
empresarial y la gestión de registros. ¡El asistente de
configuración fácil de usar le permite crear un ejército de
sensores distribuidos para su empresa en minutos!
Security Onion incluye Elasticsearch, Logstash, Kibana,
Suricata, Zeek (antes conocido como Bro), Wazuh,
Stenographer, TheHive, Cortex, CyberChef, NetworkMiner
y muchas otras herramientas de seguridad.
TAILS https://tails.boum.org/ Sistema operativo portátil que protege la privacidad.
QUBES OS https://www.qubes- Sistema operativo gratuito y de código abierto orientado a
os.org/ la seguridad para la informática de escritorio de un solo
usuario. Qubes OS aprovecha la virtualización basada en
Xen para permitir la creación y gestión de
compartimentos aislados llamados qubes.
WIFISLAX https://www.wifislax.com/ Linux para auditorías Wireless.
DEMONLINUX https://demonlinux.com Distribución de Debian Linux con tema de prueba de
penetración.
Página 16 de 53
PASO 2: INSTALAR EL COMANDO.
Una vez que se cuenta con este sistema operativo de manera funcional podemos instalar los
comandos; algunos ya vienen preinstalados en la distribución KALI16, pero si no fuere así puede
instalarlos con los siguientes comandos, previamente tomando privilegios de usuario “root”:
16
https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/
Página 17 de 53
PASO3: VERIFICAR SU INSTALACIÓN.
Una vez que se ha instalado podemos verificar y explorar las múltiples opciones que ofrece para su
ejecución:
En una consola de su KALI, dentro del directorio donde quedó instalada la aplicación, ejecute el
comando para que muestre la ayuda: “lynis -h”.
# lynis -h
[ Lynis 3.0.2 ]
###############################################################################
#
Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under the terms of the GNU General Public License.
See the LICENSE file for details about using this software.
Página 18 de 53
2007-2020, CISOfy - https://cisofy.com/lynis/
Enterprise support available (compliance, plugins, interface and tools)
###############################################################################
#
Command:
audit
audit system : Perform local security scan
audit system remote <host> : Remote security scan
audit dockerfile <file> : Analyze Dockerfile
show
show : Show all commands
show version : Show Lynis version
show help : Show help
update
update info : Show update details
Options:
Layout options
--no-colors : Don't use colors in output
--quiet (-q) : No output
--reverse-colors : Optimize color display for light
backgrounds
--reverse-colours : Optimize colour display for light
backgrounds
Misc options
--debug : Debug logging to screen
--no-log : Don't create a log file
--profile <profile> : Scan the system with the given profile
file
--view-manpage (--man) : View man page
--verbose : Show more details on screen
--version (-V) : Display version number and quit
--wait : Wait between a set of tests
--slow-warning <seconds> : Threshold for slow test warning in seconds
(default 10)
Página 19 de 53
Enterprise options
--plugindir <path> : Define path of available plugins
--upload : Upload data to central node
More options available. Run '/usr/sbin/lynis show options', or use the man
page.
Página 20 de 53
PASO 4: PONERLO EN MARCHA PARA VERIFICAR NUESTRA INFRAESTRUCTURA.
Probaremos el comando LYNIS con nuestro KALI en un ataque a un sitio web determinado:
EJEMPLO 1
[ Lynis 3.0.2 ]
###############################################################################
#
Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under the terms of the GNU General Public License.
See the LICENSE file for details about using this software.
---------------------------------------------------
Program version: 3.0.2
Operating system: Linux
Operating system name: Kali Linux
Operating system version: kali-rolling
Kernel version: 5.10.0
Hardware platform: x86_64
Hostname: V
---------------------------------------------------
Profiles: /etc/lynis/default.prf
Log file: /var/log/lynis.log
Report file: /var/log/lynis-report.dat
Report version: 1.0
Plugin directory: /etc/lynis/plugins
---------------------------------------------------
Auditor: [Not Specified]
Language: es
Test category: all
Test group: all
---------------------------------------------------
- Program update status... [ NO UPDATE ]
Página 21 de 53
[+] System tools
------------------------------------
- Scanning available tools...
- Checking system binaries...
- Plugin: debian
[
[+] Debian Tests
------------------------------------
- Checking for system binaries that are required by Debian Tests...
- Checking /bin... [ FOUND ]
- Checking /sbin... [ FOUND ]
- Checking /usr/bin... [ FOUND ]
- Checking /usr/sbin... [ FOUND ]
- Checking /usr/local/bin... [ FOUND ]
- Checking /usr/local/sbin... [ FOUND ]
- Authentication:
- PAM (Pluggable Authentication Modules):
Página 22 de 53
- filebeat.service: [ UNSAFE ]
- gdm.service: [ UNSAFE ]
- [email protected]: [ UNSAFE ]
- [email protected]: [ UNSAFE ]
- haveged.service: [ OK ]
- inetutils-inetd.service: [ UNSAFE ]
- kibana.service: [ UNSAFE ]
- lynis.service: [ UNSAFE ]
- opendistro-performance-analyzer.service: [ UNSAFE ]
- packagekit.service: [ UNSAFE ]
- plymouth-start.service: [ UNSAFE ]
- polkit.service: [ UNSAFE ]
- rc-local.service: [ UNSAFE ]
- rescue.service: [ UNSAFE ]
- rpc-gssd.service: [ UNSAFE ]
- rpc-svcgssd.service: [ UNSAFE ]
- rsync.service: [ EXPOSED ]
- rsyslog.service: [ UNSAFE ]
- rtkit-daemon.service: [ MEDIUM ]
- smartmontools.service: [ UNSAFE ]
- ssh.service: [ UNSAFE ]
- systemd-ask-password-console.service: [ UNSAFE ]
- systemd-ask-password-plymouth.service: [ UNSAFE ]
- systemd-ask-password-wall.service: [ UNSAFE ]
- systemd-fsckd.service: [ UNSAFE ]
- systemd-initctl.service: [ UNSAFE ]
- systemd-journald.service: [ OK ]
- systemd-logind.service: [ OK ]
- systemd-networkd.service: [ OK ]
- systemd-rfkill.service: [ UNSAFE ]
- systemd-udevd.service: [ EXPOSED ]
- thin.service: [ UNSAFE ]
- udisks2.service: [ UNSAFE ]
- upower.service: [ OK ]
- [email protected]: [ UNSAFE ]
- [email protected]: [ UNSAFE ]
- wazuh-manager.service: [ UNSAFE ]
- wpa_supplicant.service: [ UNSAFE ]
[+] Kernel
------------------------------------
- Checking default run level [ RUNLEVEL 5 ]
- Checking CPU support (NX/PAE)
CPU support: PAE and/or NoeXecute supported [ ENCONTRADO ]
- Checking kernel version and release [ HECHO ]
- Checking kernel type [ HECHO ]
- Checking loaded kernel modules [ HECHO ]
Found 138 active modules
- Checking Linux kernel configuration file [ ENCONTRADO ]
- Checking default I/O kernel scheduler [ NO ENCONTRADO ]
- Checking for available kernel update [ OK ]
- Checking core dumps configuration
- configuration in systemd conf files [ DEFAULT ]
- configuration in etc/profile [ DEFAULT ]
- 'hard' configuration in security/limits.conf [ DEFAULT ]
- 'soft' configuration in security/limits.conf [ DEFAULT ]
- Checking setuid core dumps configuration [ DESACTIVADO ]
- Check if reboot is needed [ NO ]
Página 23 de 53
[+] Memoria y Procesos
------------------------------------
- Checking /proc/meminfo [ ENCONTRADO ]
- Searching for dead/zombie processes [ NO ENCONTRADO ]
- Searching for IO waiting processes [ NO ENCONTRADO ]
- Search prelink tooling [ NO ENCONTRADO ]
[+] Shells
------------------------------------
- Checking shells from /etc/shells
Result: found 14 shells (valid shells: 14).
- Session timeout settings/tools [ NONE ]
- Checking default umask values
- Checking default umask in /etc/bash.bashrc [ NONE ]
- Checking default umask in /etc/profile [ NONE ]
Página 24 de 53
- Checking /var mount point [ SUGERENCIA ]
- Query swap partitions (fstab) [ OK ]
- Testing swap partitions [ OK ]
- Testing /proc mount (hidepid) [ SUGERENCIA ]
- Checking for old files in /tmp [ OK ]
- Checking /tmp sticky bit [ OK ]
- Checking /var/tmp sticky bit [ OK ]
- ACL support root file system [ ENABLED ]
- Mount options of / [ NON DEFAULT ]
- Mount options of /dev [ PARTIALLY HARDENED
]
- Mount options of /dev/shm [ PARTIALLY HARDENED
]
- Mount options of /run [ HARDENED ]
- Total without nodev:6 noexec:10 nosuid:4 ro or noexec (W^X): 10 of total 25
- Checking Locate database [ NO ENCONTRADO ]
- Disable kernel support of some filesystems
- Discovered kernel modules: freevxfs hfs hfsplus jffs2 squashfs udf
[+] Storage
------------------------------------
- Checking firewire ohci driver (modprobe config) [ NOT DISABLED ]
[+] NFS
------------------------------------
- Query rpc registered programs [ HECHO ]
- Query NFS versions [ HECHO ]
- Query NFS protocols [ HECHO ]
- Check running NFS daemon [ NO ENCONTRADO ]
Página 25 de 53
[+] Networking
------------------------------------
- Checking IPv6 configuration [ ENABLED ]
Configuration method [ AUTO ]
IPv6 only [ NO ]
- Checking configured nameservers
- Testing nameservers
Nameserver: 8.8.8.8 [ OK ]
- Minimal of 2 responsive nameservers [ PELIGRO ]
- DNSSEC supported (systemd-resolved) [ DESCONOCIDO ]
- Checking default gateway [ HECHO ]
- Getting listening ports (TCP/UDP) [ HECHO ]
- Checking promiscuous interfaces [ OK ]
- Checking waiting connections [ OK ]
- Checking status DHCP client
- Checking for ARP monitoring software [ NO ENCONTRADO ]
- Uncommon network protocols [ 0 ]
Página 26 de 53
- OpenSSH option: IgnoreRhosts [ OK ]
- OpenSSH option: LoginGraceTime [ OK ]
- OpenSSH option: LogLevel [ SUGERENCIA ]
- OpenSSH option: MaxAuthTries [ SUGERENCIA ]
- OpenSSH option: MaxSessions [ SUGERENCIA ]
- OpenSSH option: PermitRootLogin [ OK ]
- OpenSSH option: PermitUserEnvironment [ OK ]
- OpenSSH option: PermitTunnel [ OK ]
- OpenSSH option: Port [ SUGERENCIA ]
- OpenSSH option: PrintLastLog [ OK ]
- OpenSSH option: StrictModes [ OK ]
- OpenSSH option: TCPKeepAlive [ SUGERENCIA ]
- OpenSSH option: UseDNS [ OK ]
- OpenSSH option: X11Forwarding [ SUGERENCIA ]
- OpenSSH option: AllowAgentForwarding [ SUGERENCIA ]
- OpenSSH option: AllowUsers [ NO ENCONTRADO ]
- OpenSSH option: AllowGroups [ NO ENCONTRADO ]
[+] Databases
------------------------------------
No database engines found
[+] PHP
------------------------------------
- Checking PHP [ ENCONTRADO ]
- Checking PHP disabled functions [ ENCONTRADO ]
- Checking expose_php option [ OFF ]
- Checking enable_dl option [ OFF ]
- Checking allow_url_fopen option [ ON ]
- Checking allow_url_include option [ OFF ]
- Checking listen option [ OK ]
Página 27 de 53
[+] Insecure services
------------------------------------
- Installed inetd package [ NO ENCONTRADO ]
- Checking enabled inetd services [ OK ]
- Installed xinetd package [ OK ]
- xinetd status
- Installed rsh client package [ OK ]
- Installed rsh server package [ OK ]
- Installed telnet client package [ OK ]
- Installed telnet server package [ NO ENCONTRADO ]
- Checking NIS client installation [ OK ]
- Checking NIS server installation [ OK ]
- Checking TFTP client installation [ SUGERENCIA ]
- Checking TFTP server installation [ SUGERENCIA ]
[+] Accounting
------------------------------------
- Checking accounting information [ NO ENCONTRADO ]
- Checking sysstat accounting data [ DESACTIVADO ]
- Checking auditd [ NO ENCONTRADO ]
[+] Cryptography
------------------------------------
- Checking for expired SSL certificates [0/134] [ NONE ]
[+] Virtualization
------------------------------------
[+] Containers
------------------------------------
- Docker
- Docker daemon [ CORRIENDO ]
- Docker info output (warnings) [ 1 ]
- Containers
- Total containers [ 1 ]
Página 28 de 53
- Unused containers [ 1 ]
- File permissions [ OK ]
[+] Malware
------------------------------------
- Revisando chkrootkit [ ENCONTRADO ]
Página 29 de 53
------------------------------------
- Comparing sysctl key pairs with scan profile
- dev.tty.ldisc_autoload (exp: 0) [ DIFFERENT ]
- fs.protected_fifos (exp: 2) [ DIFFERENT ]
- fs.protected_hardlinks (exp: 1) [ OK ]
- fs.protected_regular (exp: 2) [ OK ]
- fs.protected_symlinks (exp: 1) [ OK ]
- fs.suid_dumpable (exp: 0) [ OK ]
- kernel.core_uses_pid (exp: 1) [ DIFFERENT ]
- kernel.ctrl-alt-del (exp: 0) [ OK ]
- kernel.dmesg_restrict (exp: 1) [ OK ]
- kernel.kptr_restrict (exp: 2) [ DIFFERENT ]
- kernel.modules_disabled (exp: 1) [ DIFFERENT ]
- kernel.perf_event_paranoid (exp: 3) [ OK ]
- kernel.randomize_va_space (exp: 2) [ OK ]
- kernel.sysrq (exp: 0) [ DIFFERENT ]
- kernel.unprivileged_bpf_disabled (exp: 1) [ DIFFERENT ]
- kernel.yama.ptrace_scope (exp: 1 2 3) [ DIFFERENT ]
- net.core.bpf_jit_harden (exp: 2) [ DIFFERENT ]
- net.ipv4.conf.all.accept_redirects (exp: 0) [ OK ]
- net.ipv4.conf.all.accept_source_route (exp: 0) [ OK ]
- net.ipv4.conf.all.bootp_relay (exp: 0) [ OK ]
- net.ipv4.conf.all.forwarding (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.all.log_martians (exp: 1) [ DIFFERENT ]
- net.ipv4.conf.all.mc_forwarding (exp: 0) [ OK ]
- net.ipv4.conf.all.proxy_arp (exp: 0) [ OK ]
- net.ipv4.conf.all.rp_filter (exp: 1) [ DIFFERENT ]
- net.ipv4.conf.all.send_redirects (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.default.accept_redirects (exp: 0) [ OK ]
- net.ipv4.conf.default.accept_source_route (exp: 0) [ DIFFERENT ]
- net.ipv4.conf.default.log_martians (exp: 1) [ DIFFERENT ]
- net.ipv4.icmp_echo_ignore_broadcasts (exp: 1) [ OK ]
- net.ipv4.icmp_ignore_bogus_error_responses (exp: 1) [ OK ]
- net.ipv4.tcp_syncookies (exp: 1) [ OK ]
- net.ipv4.tcp_timestamps (exp: 0 1) [ OK ]
- net.ipv6.conf.all.accept_redirects (exp: 0) [ OK ]
- net.ipv6.conf.all.accept_source_route (exp: 0) [ OK ]
- net.ipv6.conf.default.accept_redirects (exp: 0) [ OK ]
- net.ipv6.conf.default.accept_source_route (exp: 0) [ OK ]
[+] Hardening
------------------------------------
- Installed compiler(s) [ ENCONTRADO ]
- Installed malware scanner [ ENCONTRADO ]
===============================================================================
=
Warnings (2):
Página 30 de 53
----------------------------
! Can't find any security repository in /etc/apt/sources.list or sources.list.d
directory [PKGS-7388]
- Solution :
https://cisofy.com/lynis/controls/PKGS-7388/
Suggestions (61):
----------------------------
* This release is more than 4 months old. Check the website or GitHub to see
if there is an update available. [LYNIS]
- Solution :
https://cisofy.com/lynis/controls/LYNIS/
* Install libpam-tmpdir to set $TMP and $TMPDIR for PAM sessions [DEB-0280]
- Solution :
https://cisofy.com/lynis/controls/DEB-0280/
* Install debsums for the verification of installed package files against MD5
checksums. [DEB-0875]
- Solution :
https://cisofy.com/lynis/controls/DEB-0875/
Página 31 de 53
- Solution :
https://cisofy.com/lynis/controls/KRNL-5820/
* When possible set expire dates for all password protected accounts [AUTH-
9282]
- Solution :
https://cisofy.com/lynis/controls/AUTH-9282/
* To decrease the impact of a full /home file system, place /home on a separate
partition [FILE-6310]
- Solution :
https://cisofy.com/lynis/controls/FILE-6310/
* To decrease the impact of a full /tmp file system, place /tmp on a separate
partition [FILE-6310]
- Solution :
https://cisofy.com/lynis/controls/FILE-6310/
* To decrease the impact of a full /var file system, place /var on a separate
partition [FILE-6310]
- Solution :
https://cisofy.com/lynis/controls/FILE-6310/
* The database required for 'locate' could not be found. Run 'updatedb' or
'locate.updatedb' to create this file. [FILE-6410]
- Solution :
https://cisofy.com/lynis/controls/FILE-6410/
* Disable drivers like USB storage when not used, to prevent unauthorized
storage or data theft [USB-1000]
- Solution :
https://cisofy.com/lynis/controls/USB-1000/
Página 32 de 53
* Disable drivers like firewire storage when not used, to prevent unauthorized
storage or data theft [STRG-1846]
- Solution :
https://cisofy.com/lynis/controls/STRG-1846/
* Install debsums utility for the verification of packages with known good
database. [PKGS-7370]
- Solution :
https://cisofy.com/lynis/controls/PKGS-7370/
* Check your resolv.conf file and fill in a backup nameserver if possible [NETW-
2705]
- Solution :
https://cisofy.com/lynis/controls/NETW-2705/
* Check iptables rules to see which rules are currently not used [FIRE-4513]
- Solution :
https://cisofy.com/lynis/controls/FIRE-4513/
Página 33 de 53
- Details : ClientAliveCountMax (set 3 to 2)
- Solution :
https://cisofy.com/lynis/controls/SSH-7408/
* Check what deleted files are still in use and why. [LOGG-2190]
- Solution :
https://cisofy.com/lynis/controls/LOGG-2190/
Página 34 de 53
* It is recommended that TFTP be removed, unless there is a specific need for
TFTP (such as a boot server) [INSE-8318]
- Solution :
https://cisofy.com/lynis/controls/INSE-8318/
* Removing the atftpd package decreases the risk of the accidental (or
intentional) activation of tftp services [INSE-8320]
- Solution :
https://cisofy.com/lynis/controls/INSE-8320/
* Double check the permissions of home directories as some might be not strict
enough. [HOME-9304]
- Solution :
https://cisofy.com/lynis/controls/HOME-9304/
Página 35 de 53
* One or more sysctl values differ from the scan profile and could be tweaked
[KRNL-6000]
- Solution : Change sysctl value or disable test (skip-test=KRNL-
6000:<sysctl-key>)
https://cisofy.com/lynis/controls/KRNL-6000/
Follow-up:
----------------------------
- Show details of a test (lynis show details TEST-ID)
- Check the logfile for all details (less /var/log/lynis.log)
- Read security controls texts (https://cisofy.com)
- Use --upload to upload data to central system (Lynis Enterprise users)
===============================================================================
=
Components:
- Firewall [V]
- Malware scanner [V]
Scan mode:
Normal [V] Forensics [ ] Integration [ ] Pentest [ ]
Lynis modules:
- Compliance status [?]
- Security audit [V]
- Vulnerability scan [V]
Files:
- Test and debug information : /var/log/lynis.log
- Report data : /var/log/lynis-report.dat
===============================================================================
=
Lynis 3.0.2
===============================================================================
=
Página 36 de 53
La interfaz de comando muestra los hallazgos y descata con colores tipo semáforo los problemas
detectados. El analista debe tomar los resultados desde la sección “-[ Lynis 3.0.2 Results ]-“ en
adelante y estudiar la solución propuesta para aplicarla y mejorar la seguridad del servidor.
Es importante tener en consideración que la seguridad debe estar presente en TODOS los activos,
pues los ciberdelincuentes buscarán aquellos más débiles para actuar y lograr sus objetivos: exfiltrar
datos, destruir los sistemas, encriptar información para cobrar un rescate posteriormente,
interceptar información confidencial, robar propiedad intelectual o propiedad industrial, introducir
ransomware, cryptojacking17 entre otras acciones delictivas posibles.
Tenga presente que es importante que estas pruebas deben ser coordinadas con el equipo de
operaciones y en ambientes que estén bajo supervisión.
Antes de proceder a aplicar estos comandos revise sus políticas de seguridad de la información
interna, sus códigos de ética, los NDA que haya suscrito y las cláusulas de confidencialidad de su
contrato de trabajo.
17
https://www.eset.com/es/caracteristicas/cryptojacking/
Página 37 de 53
Defina horarios especiales o ambientes de “test o QA” equivalentes a los de “producción”, para
mitigar los posibles efectos perjudiciales en los dispositivos de seguridad, el sitio o el sistema web.
Use la información obtenida para visualizar sus activos desde la perspectiva de un externo e
identifique vulnerabilidades a mitigar o datos/directorios a proteger.
Estudie las múltiples opciones de los comandos ilustrados en esta ficha, entienda el significado de sus
diferentes parámetros con el objetivo de obtener resultados específicos, para diferentes escenarios
de ataques o redirigir la salida a un archivo, para su inclusión en informes posteriores.
Tenga presente que para el procesamiento y análisis de los datos es relevante que vaya
perfeccionando su manejo de LINUX y comandos PowerShell18 (si es un usuario de windows).
En próximas ediciones se irán reforzando estos aspectos para facilitar el manejo de los datos y
resultados obtenidos, logrando así una mejor comunicación con sus equipos TIC y con el CSIRT de
Gobierno.
Si encuentra algún error en el documento también es importante que nos lo comunique para
introducir las correcciones pertinentes en las versiones futuras de esta ficha.
18
https://devblogs.microsoft.com/scripting/table-of-basic-powershell-commands/
Página 38 de 53
Anexo I: Comandos Básicos de Linux
Comandos básicos
Los comandos son esencialmente los mismos que cualquier sistema UNIX. En las tablas que se
presentan a continuación se tiene la lista de comandos más frecuentes.
1. comando “pwd2
Use el comando pwd para averiguar la ruta del directorio de trabajo actual (carpeta) en la que se
encuentra. El comando devolverá una ruta absoluta (completa), que es básicamente una ruta de
todos los directorios que comienza con una barra inclinada (/). Un ejemplo de ruta absoluta es / home
/ username.
2. comando “cd”
Para navegar por los archivos y directorios de Linux, use el comando cd. Requiere la ruta completa o
el nombre del directorio, según el directorio de trabajo actual en el que se encuentre.
Otro escenario es si desea cambiar a un directorio completamente nuevo, por ejemplo, / home /
username / Movies. En este caso, debe escribir cd seguido de la ruta absoluta del directorio: cd /
home / username / Movies.
En una nota al margen, el shell de Linux distingue entre mayúsculas y minúsculas. Por lo tanto, debe
escribir el directorio del nombre exactamente como está.
3. comando “ls”
El comando ls se usa para ver el contenido de un directorio. De forma predeterminada, este comando
mostrará el contenido de su directorio de trabajo actual.
Página 39 de 53
Si desea ver el contenido de otros directorios, escriba ls y luego la ruta del directorio. Por ejemplo,
ingrese ls /home/username/Documents para ver el contenido de Documents.
4. comando de “cat”
cat (abreviatura de concatenar) es uno de los comandos más utilizados en Linux. Se utiliza para
enumerar el contenido de un archivo en la salida estándar (sdout). Para ejecutar este comando,
escriba cat seguido del nombre del archivo y su extensión. Por ejemplo: cat file.txt.
5. comando “cp”
Utilice el comando cp para copiar archivos del directorio actual a un directorio diferente. Por ejemplo,
el comando cp scenery.jpg / home / username / Pictures crearía una copia de paisaje.jpg (de su
directorio actual) en el directorio de Pictures.
6. comando “mv”
El uso principal del comando mv es mover archivos, aunque también se puede usar para cambiar el
nombre de los archivos.
Los argumentos en mv son similares al comando cp. Debe escribir mv, el nombre del archivo y el
directorio de destino. Por ejemplo: mv file.txt / home / username / Documents.
Página 40 de 53
Para cambiar el nombre de los archivos, el comando de Linux es “mv oldname.ext newname.ext”.
7. comando mkdir
Utilice el comando mkdir para crear un nuevo directorio; si escribe mkdir Music, se creará un
directorio llamado Music.
Para generar un nuevo directorio dentro de otro directorio, use este comando básico de
Linux mkdir Music/Newfile
use la opción p (padres) para crear un directorio entre dos directorios existentes. Por
ejemplo, mkdir -p Music/2020/Newfile creará el nuevo archivo “2020”.
8. comando “rmdir”
Si necesita eliminar un directorio, use el comando rmdir. Sin embargo, rmdir solo le permite eliminar
directorios vacíos.
9. comando “rm”
El comando rm se usa para eliminar directorios y su contenido. Si solo desea eliminar el directorio,
como alternativa a rmdir, use rm -r.
Nota: Tenga mucho cuidado con este comando y verifique dos veces en qué directorio se encuentra.
Esto eliminará todo y no se puede deshacer.
El comando touch le permite crear un nuevo archivo en blanco a través de la línea de comandos de
Linux. Como ejemplo, ingrese touch /home/username/Documents/Web.html para crear un archivo
HTML titulado Web en el directorio Documentos.
Página 41 de 53
Puede usar este comando para ubicar o localizar un archivo, al igual que el comando de búsqueda en
Windows. Además, el uso del argumento -i junto con este comando hará que no distinga entre
mayúsculas y minúsculas, por lo que puede buscar un archivo incluso si no recuerda su nombre
exacto.
Para buscar un archivo que contenga dos o más palabras, use un asterisco (*). Por ejemplo, el
comando “locate -i escuela*nota” buscará cualquier archivo que contenga la palabra "escuela" y
"nota", ya sea en mayúsculas o minúsculas.
Similar al comando “locate”, el uso de “find” también busca archivos y directorios. La diferencia es
que el comando “find” se usa para ubicar archivos dentro de un directorio determinado.
Como ejemplo, el comando find /home/ -name notes.txt buscará un archivo llamado notes.txt dentro
del directorio de inicio y sus subdirectorios.
Otro comando básico de Linux que sin duda es útil para el uso diario es grep. Te permite buscar en
todo el texto de un archivo determinado.
Para ilustrar, grep blue notepad.txt buscará la palabra azul en el archivo del bloc de notas. Las líneas
que contienen la palabra buscada se mostrarán completamente.
Abreviatura de " SuperUser Do ", este comando le permite realizar tareas que requieren permisos
administrativos o de root. Sin embargo, no es recomendable utilizar este comando para el uso diario
porque podría ser fácil que ocurra un error si hiciste algo mal.
Página 42 de 53
15. comando “df”
Utilice el comando df para obtener un informe sobre el uso de espacio en disco del sistema, que se
muestra en porcentaje y KB. Si desea ver el informe en megabytes, escriba df -m.
Si desea comprobar cuánto espacio ocupa un archivo o un directorio, el comando du (Uso del disco)
es la respuesta. Sin embargo, el resumen de uso del disco mostrará los números de bloque de disco
en lugar del formato de tamaño habitual. Si desea verlo en bytes, kilobytes y megabytes, agregue el
argumento -h a la línea de comando.
El comando head se usa para ver las primeras líneas de cualquier archivo de texto. De forma
predeterminada, mostrará las primeras diez líneas, pero puede cambiar este número a su gusto. Por
ejemplo, si solo desea mostrar las primeras cinco líneas, escriba head -n 5 filename.ext.
Este tiene una función similar al comando head, pero en lugar de mostrar las primeras líneas, el
comando tail mostrará las últimas diez líneas de un archivo de texto. Por ejemplo, tail -n filename.ext.
Abreviatura de diferencia, el comando diff compara el contenido de dos archivos línea por línea.
Después de analizar los archivos, generará las líneas que no coinciden. Los programadores suelen
utilizar este comando cuando necesitan realizar modificaciones en el programa en lugar de reescribir
todo el código fuente.
Página 43 de 53
El comando tar es el comando más utilizado para archivar varios archivos en un tarball, un formato
de archivo común de Linux que es similar al formato zip, con la compresión opcional.
Este comando es bastante complejo con una larga lista de funciones, como agregar nuevos archivos
a un archivo existente, enumerar el contenido de un archivo, extraer el contenido de un archivo y
muchas más. Consulte algunos ejemplos prácticos para saber más sobre otras funciones.
chmod es otro comando de Linux, que se utiliza para cambiar los permisos de lectura, escritura y
ejecución de archivos y directorios. Como este comando es bastante complicado, puede leer el
tutorial completo para ejecutarlo correctamente.
En Linux, todos los archivos pertenecen a un usuario específico. El comando chown le permite
cambiar o transferir la propiedad de un archivo al nombre de usuario especificado. Por ejemplo,
chown linuxuser2 file.ext hará que linuxuser2 sea el propietario del file.ext .
El comando jobs mostrará todos los trabajos actuales junto con sus estados. Un trabajo es
básicamente un proceso que inicia el shell.
Si tiene un programa que no responde, puede terminarlo manualmente usando el comando kill.
Enviará una cierta señal a la aplicación que no funciona correctamente y le indicará a la aplicación
que se cierre.
Hay un total de sesenta y cuatro señales que puede usar, pero las personas generalmente solo usan
dos señales:
Página 44 de 53
SIGTERM (15): solicita que un programa deje de ejecutarse y le da algo de tiempo para
guardar todo su progreso. Si no especifica la señal al ingresar el comando kill, se usará esta
señal.
SIGKILL (9): obliga a los programas a detenerse inmediatamente. El progreso no guardado se
perderá.
Además de conocer las señales, también necesita conocer el número de identificación del proceso
(PID) del programa que desea matar. Si no conoce el PID, simplemente ejecute el comando “ps ux”.
Después de saber qué señal desea usar y el PID del programa, ingrese la siguiente sintaxis:
Utilice el comando ping para verificar el estado de su conectividad a un servidor. Por ejemplo,
simplemente ingresando ping google.com, el comando verificará si puede conectarse a Google y
también medirá el tiempo de respuesta.
La línea de comandos de Linux es muy útil; incluso puede descargar archivos de Internet con la ayuda
del comando wget. Para hacerlo, simplemente escriba wget seguido del enlace de descarga.
El comando uname , abreviatura de Unix Name, imprimirá información detallada sobre su sistema
Linux, como el nombre de la máquina, el sistema operativo, el kernel, etc.
Como terminal equivalente al Administrador de tareas en Windows, el comando “top” mostrará una
lista de procesos en ejecución y cuánta CPU usa cada proceso. Es muy útil monitorear el uso de
recursos del sistema, especialmente sabiendo qué proceso debe terminarse porque consume
demasiados recursos. Busque referencias sobre “htop”.
Página 45 de 53
29. comando “history”
Cuando haya estado usando Linux durante un cierto período de tiempo, notará rápidamente que
puede ejecutar cientos de comandos todos los días. Como tal, ejecutar el comando “history” es
particularmente útil si desea revisar los comandos que ha ingresado antes.
Este comando se usa para mover algunos datos a un archivo. Por ejemplo, si desea agregar el texto
"Hola, mi nombre es Juan" en un archivo llamado nombre.txt, debe escribir “echo Hola, mi nombre
es Juan >> nombre.txt”.
Use el comando zip para comprimir sus archivos en un archivo zip y use el comando unzip para extraer
los archivos comprimidos de un archivo zip.
Si desea saber el nombre de su host / red, simplemente escriba hostname. Si agrega un -i al final, se
mostrará la dirección IP de su red.
Dado que Linux es un sistema multiusuario, esto significa que más de una persona puede interactuar
con el mismo sistema al mismo tiempo. useradd se usa para crear un nuevo usuario, mientras que
Página 46 de 53
passwd agrega una contraseña a la cuenta de ese usuario. Para agregar una nueva persona llamada
John escriba, useradd John y luego para agregar su tipo de contraseña, passwd 123456789.
Eliminar un usuario es muy similar a agregar un nuevo usuario. Para eliminar el tipo de cuenta de
usuario, userdel UserName
Notas:
Página 47 de 53
Anexo II: Comandos o aplicativos básicos para Windows: TCPView
TCPView es un programa de Windows que le mostrará listados detallados de todos los puntos finales
TCP y UDP en su sistema, incluidas las direcciones locales y remotas y el estado de las conexiones
TCP. En Windows Server 2008, Vista y XP, TCPView también informa el nombre del proceso
propietario del endpoint. TCPView proporciona un subconjunto más informativo y convenientemente
presentado del programa Netstat que se envía con Windows. La descarga de TCPView incluye
Tcpvcon, una versión de línea de comandos con la misma funcionalidad.
https://download.sysinternals.com/files/TCPView.zip
Cuando inicie TCPView, enumerará todos los puntos finales TCP y UDP activos, resolviendo todas las
direcciones IP en sus versiones de nombre de dominio. Puede utilizar un botón de la barra de
herramientas o un elemento de menú para alternar la visualización de los nombres resueltos.
Página 48 de 53
TCPView muestra el nombre del proceso que posee cada punto final, incluido el nombre del servicio
(si corresponde).
De forma predeterminada, TCPView se actualiza cada segundo, pero puede utilizar el elemento de
menú Opciones | Frecuencia de actualización para cambiar la frecuencia. Los puntos finales que
cambian de estado de una actualización a la siguiente se resaltan en amarillo; los que se eliminan se
muestran en rojo y los nuevos puntos finales se muestran en verde.
Puede cerrar las conexiones TCP / IP establecidas (aquellas etiquetadas con un estado de
ESTABLECIDO) seleccionando Archivo | Cerrar conexiones, o haciendo clic con el botón derecho en
una conexión y eligiendo Cerrar conexiones en el menú contextual resultante.
Puede guardar la ventana de salida de TCPView en un archivo usando el elemento del menú Guardar.
Con estos tips básicos buscamos incentivarlo a explorar estas herramientas y sus múltiples usos para
ciberseguridad.
Página 49 de 53
“HOLA, MUNDO” EN OTROS LENGUAJES
RUST:
fn main() {
println!("Hello World!");
}
CLOJURE
(ns clojure.examples.hello
(:gen-class))
(defn hello-world []
(println "Hello, World!"))
(hello-world)
TYPESCRIPT
ELIXIR
IO.puts("Hello, World!")
JULIA
print("Hello World!")
PYTHON:
print('Hello, world!')
DART
void main() {
print('Hello, World!');
}
Página 50 de 53
SWIFT
import UIKit
NODE JS
// server.js
'use strict';
const http = require('http');
const server = http.createServer(function (req, res) {
res.writeHead(200, {'content-type': 'text/plain'});
res.end('Hello, World!');
});
server.listen(8000);
GO
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
F#
#light
let main =
printfn "Hello, World!"
do main
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Página 51 de 53
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Console.ReadLine();
}
}
}
Kotlin
JavaScript
<!DOCTYPE HTML>
<html>
<body>
<p>Before the script...</p>
<script>
alert( 'Hello, world!' );
</script>
<p>...After the script.</p>
</body>
</html>
Crystal
Página 52 de 53
BASH
#!/bin/bash
echo "Hello World"
LISP
Página 53 de 53