Bases del sistema operativo

1

Aviso de renovación del curso

2

Lo que aprenderás sobre la administración de servidores linux

3

Distribuciones más utilizadas de Linux

4

Instalación de Ubuntu Server

5

Instrucciones para instalar CentOS

6

Gestión del árbol de directorios

7

Diferencias entre LESS, CAT, HEAD y TAIL para lectura de archivos

8

Interacción con archivos y permisos

9

Conociendo las terminales en linux

10

Manejo y monitoreo de procesos y recursos del sistema

11

Monitoreo de recursos del sistema

Instalación y manejo de software en Linux

12

Análisis de los parámetros de red

13

Administración de paquetes acorde a la distribución

14

Manejo de paquetes en sistemas basados en Debian

15

Administración de software con YUM y RPM para CentOS

16

Nagios: Desempaquetado, descompresión, compilación e instalación de paquetes

Administración de usuarios

17

Los usuarios, una tarea vital en el proceso de administración del sistema operativo

18

Creando y manejando cuentas de usuario en el sistema operativo

19

Entendiendo la membresía de los grupos

20

Usando PAM para el control de acceso de usuarios

Servicios en el sistema operativo

21

Autenticación de clientes y servidores sobre SSH

22

Configurando DNS con bind

23

Arranque, detención y recarga de servicios

24

NGINX y Apache en Ubuntu server

25

Instalación y configuración de NGINX

26

¿Qué es NGINX Amplify?

27

NGINX Amplify: Instalación y configuración de un servidor para producción

28

Monitoreo de MySQL con Nagios

29

Configuración de Nagios

30

Los logs, nuestros mejores amigos

31

Otros servicios de logs

Bash scripting

32

Las bases de bash

33

Las variables y su entorno de ejecución

34

Automatizando tareas desde la terminal

35

Automatizando la copia de seguridad

36

Crontab

Asegurando tu servidor

37

Entendiendo la gestión de vulnerabilidades

38

¿Qué es una superficie de ataque? Principio del menor privilegio

39

El firewall y sus reglas

40

Escaneo de puertos con NMAP y NIKTO desde Kali Linux

41

Lynis: Herramientas de auditoria de seguridad en Linux

Proyecto

42

Configuración de Node.js en un ambiente productivo

43

Configuración de NGINX para la aplicación de Node.js

Bonus: Linux en Azure

44

Aprende sobre Linux en Azure

45

Despliegue de una aplicación web MEAN

46

Crea una máquina virtual en la nube de Azure

Conclusiones

47

Lo que aprendiste sobre servidores linux

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Los logs, nuestros mejores amigos

30/47
Recursos

FIND

Nos ayuda a buscar archivos y/o carpetas en el sistema operativo. Podemos filtrar por tipo de archivo con -type, por nombre con -name, sin hacer diferencia entre mayúsculas y minúsculas con -i, por fecha de modificación con -mtime, entre otros.

Por ejemplo:

  • find /etc -type f
  • sudo find /etc -mtime 10
  • find /var/log -name "*.log" -type f
  • find /var/log -iname "*.LOG" -type f

GREP

Nos ayuda a filtrar el resultado de un comando o archivo dependiendo de las palabras de cada línea.

Por ejemplo:

  • grep "server" /etc/nginx/sites-available/default
  • ps aux | grep platzi

AWK

Es un lenguaje de scripting que nos ayuda a procesar información usando patrones para filtrar, reorganizar y darle formato a nuestros datos.

Por ejemplo:

  • awk '{print $1}' /var/log/nginx/access.log
  • awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

Aportes 36

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

RESUMEN DE LA CLASE
|
Los logs, nuestros mejores amigos
|
|
Comandos
|
find [ruta]: Buscar algo en el sistema operativo.
Modificadores:

  • -type: Indica que tipo estamos buscando; archivos, directorios y enlaces
  • -name: Indica el nombre de lo que estamos buscando
  • -iname: Indica el nombre de lo que estamos buscando, pero sin tener en cuenta mayúsculas y minúsculas
  • !: Niega la expresión que buscamos (es decir, busca lo contrario)
  • -mtime: Muestra archivos con cambios en los últimos n minutos

grep [string] [archivo]: Busca una cadena de caracteres o expresión regular en un archivo determinado. Si ejecutamos por ejemplo algo como comando | grep [string] vamos a filtrar el resultado de un comando por la cadena o regex que especifiquemos
awk: Es un lenguaje que nos ayuda a filtrar patrones en un archivo, organizarlos y darles formato
|
|
Comandos útiles
|
find /var/log/ -iname "*.log" -type f: Muestra los archivos de log que tenemos en el sistema
sudo find /etc/ -mtime 10 2: Muestra los archivos de configuración que tuvieron salidas de error en los últimos diez minutos
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr: Muestra las IP’s que se conectaron con nuestro servidor nginx
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr: Muestra los errores que surgieron en nuestro servidor nginx

Buscar algo en el sistema operativo

$ find RUTA type TIPO (Tipo de archivo - f para files)

// ejemplo
$ find /etc f

Buscar logs

// En la ruta de logs busque todos los logs y que sean archivos
$ find /var/log/ -name "*.log" -type f

Para que no distinga de mayúsculas y minúsculas

$ find /var/log/ -iname "*.LOG" -type f

Todos los archivos que no tengan extensión .log

$ find /var/log/ ! -iname "*.LOG" -type f

Archivos modificados en el último tiempo (10 minutos)

$ sudo find /etc/ -mtime 10

Para hacer una redirección

$ sudo find /etc/ -mtime 10 2> /dev/null (el número 2 es la salida de error, a continuación se muestran las salidas de errores que existen)

0 -> Archivos de Entrada

1 -> Archivos de Salida

2 -> Archivos de Error

Buscar una palabra especifica sobre un archivo

$ grep "server" /etc/nginx/sites-available/default

Ver los logs de nginx, para saber cuales son las IP’s que se conectan a mi sitio

$ awk '{print $1}' /var/log/nginx/access.log

El anterior caso pero organizado y únicamente de la salida anterior (es como si las agrupara)

$ awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c

El anterior caso que las redirija por el número de veces que han accedido.

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

Ver errores en el servidor

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

La respuesta del anterior comando es

6 200
5 404
1 304

El número depende de la respuesta del servidor, el 200 esta ok y el 404 es no encontrado.

0 -> Archivos de Entrada
1 -> Archivos de Salida
2 -> Archivos de Error

Entendido, los enlaces que hablan en los videos casi nunca los colocan.

find /etc -type f
ls -l /etc
find /var/log/ -name "*.log" -type f
find /var/log/ -iname "*.LOG" -type f
find /var/log/ ! -iname "*.LOG" -type f
sudo find /etc/ -mtime 10
find /etc/ -mtime 10000 2> /dev/null
grep "server" /etc/nginx/sites-available/default
awk '{print $1}' /var/log/ngnix/access.log
awk '{print $1}' /var/log/ngnix/access.log | sort | uniq -c
awk '{print $1}' /var/log/ngnix/access.log | sort | uniq -c | sort -nr
awk '{print $9}' /var/log/ngnix/access.log | sort | uniq -c | sort -nr
cat  /var/log/ngnix/access.log

en que me meti
JSJSJS está bueno el contenido pero los que no sabemos nada de este mundillo nos perdemos muy fácil

Para ver los usuarios de /etc/passwd usamos
awk '$3 >= 500 {print $1 $5 $7 }' FS=":" /etc/passwd
’Field Separator’

AWK
Es un lenguaje de scripting que nos ayuda a procesar información usando patrones para filtrar, reorganizar y darle formato a nuestros datos.

Por ejemplo:

awk ‘{print $1}’ /var/log/nginx/access.log
awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -nr

No veo el enlace a la lectura recomendada.

Vale, estaría bien profundizar en los temas de las salidas de Linux, porque es un tema interesante también

Un pequeño ejemplo

sudo touch reporte-logs
sudo chown -R $USER:$USER ~/Reports/reporte-logs 
sudo find /var/log -name "*.log" -type f >> ~/Reports/reporte-logs
cat reporte-logs 

Este es un tema de otra clase de Platzi, pero es muy útil.

Buscar cadenas de caracteres

GREP: nos ayuda a encontrar cadenas de caracteres dentro de todos los archivos de la ruta que le demos, con expresiones regulares.
Ejemplo: grep -i “hanks$” dumpl.sql

Parámetros:
• -r: que sea recursivo
• -n: número de línea donde se encuentra la palabra en el archivo
• -e: expresión regular
• -i: no importa si es mayúscula o minúscula

Los Caracteres Regex Básicos
. Cualquier carácter individual
[ ] Cualquier carácter especificado
[^ ] No el carácter especificado

  • Cero o más de los caracteres previos
    ^ Si ^ es el primer carácter en el patrón, entonces el patrón debe estar al principio de la línea que debe coincidir, de lo contrario solo un literal ^.
    $ Si $ es el último carácter en el patrón, entonces el patrón debe estar al final de la línea que debe coincidir, de lo contrario solo un literal $.

Los Carácteres Regex Extendidos

  • Uno o más de los patrones previos
    ? El patrón anterior es opcional
    { } Especificar las coincidencias mínimas, máximas o exactas del patrón anterior
    | Alternancia - una «o» lógica
    ( ) Permite crear grupos

SED: Screen Editor, tratamiento de flujos de caracteres. Este comando nos permite reemplazar una expresión por otra. El comando sed de Linux no actualiza tus datos. Solo envía el texto modificado a STDOUT. El archivo aun estará sin modificar. Si necesitas sobrescribir el contenido existente, Para más información de SED, ver AQUI
Ejemplo 1: sed ‘s/Hanks/Seleck/g’ dumpl.sql= [Comando][’s’][archivo]
Ejemplo 2: sed ‘$d’ nuevasPelis.csv = [Comando][’$sub-comando’][archivo]
Algunos parámetros:
• s: string
• g: global
• d: delete
• p: print

AWK: tratamiento de texto delimitado, útil para trabajar textos estructurados, separados por (comas (,)) (pipes (|)), (tabs ( )), etc.
Ejemplo 1: awk -F ‘;’ ‘{ print $1}’ nuevasPelis.csv

Algunos parámetros:
• -F: especifica el delimitador (‘;’)
• {}: ejecuta una función
• print: o printf es la función de imprimir
• $1: define el peso ($) de que line se realizará la función, para este ejemplo se imprimirá la columna 1 del archivo nuevasPelis.csv

Ejemplo 2: awk -F"::" ‘{printf("%s\n", $3)}’ movies.dat
• -F: especifica el delimitador (‘::’)
• {}: ejecuta una función
• print: o printf es la función de imprimir
• %s\n: toma el valor literal del string y luego imprime una nueva línea (\n)
• $3: define el peso ($) de que line se realizará la función, para este ejemplo se imprimirá las 3 primeras columnas del archivo movies.dat

FIND
Nos ayuda a buscar archivos y/o carpetas en el sistema operativo. Podemos filtrar por tipo de archivo con -type, por nombre con -name, sin hacer diferencia entre mayúsculas y minúsculas con -i, por fecha de modificación con -mtime, entre otros.

Por ejemplo:

find /etc -type f
sudo find /etc -mtime 10
find /var/log -name “.log" -type f
find /var/log -iname "
.LOG” -type f

el mismo resultado de grep se obtiene con este:

elopez@roraima:~$ cat /etc/nginx/sites-available/default | grep server
# Default server configuration
server {
	# listen 443 ssl default_server;
	# listen [::]:443 ssl default_server;
	# Don't use them in a production server!
	server_name platzi;
	# pass PHP scripts to FastCGI server
#server {
#	server_name example.com;```

Para quien le interese conocer un poco más sobre awk, les comparto un tutorial que me pareció interesante, espero que les sirva.
https://www.tutorialspoint.com/awk/awk_basic_examples.htm
Saludos a todos!

Para los que no entienden como funciona un comando con la salida de datos de otro comando, esto es un tema de Linux muy interesante que se llama Pipes (tuberias). Los sistemas operativos normalmente comunican sus procesos a traves de pipes. Esto significa que la salida de un programa es la entrada de otro programa. El comando grep puede funcionar de esa manera. Por ejemplo, miren este comando que yo utilizo muchismo:

history | grep -i mysqldump

Esto lo que hace primero es ejecutar history y me lista todos los comandos que he ejecutado. La barra | define el pipe y esto le dire a la consola que el resultado de history lo use como entrada en el siguiente comando grep -i mysqldump. Por ultimo ejecuta el segundo comando que buscara mysqldump en todo el resultado del history.

Por supuesto, yo solo soy un aficionado amante de Linux…esto lo pueden aprender mejor en el curso de introduccion al terminal de Devars (muy bueno) y tambien el curso de terminal de Mauro Chojrin.

Salidas en la terminal:

Pueden tener mucha más información en el curso de Introducción a la Terminal.

Definitivamente esto es el pan de cada día administrando servidores. ✅✅✅

El find en compañia del | xargs rm me ha servido para eliminar cerca de 6500 archivos de un directorio con varios subfolders que no tenian una extension en especifica, gracias por el aporte

GREP
Nos ayuda a filtrar el resultado de un comando o archivo dependiendo de las palabras de cada línea.

Por ejemplo:

grep “server” /etc/nginx/sites-available/default
ps aux | grep platzi

Si bien para buscar comandos utilizados en la terminal se usa Ctrl + R, hay manera de navegar entre las coincidencias?

awk interesante herramienta

Yo no soy sysadmin pero sí que los logs son mis mejores amigos en el día a día 😄

Los logs, nuestros mejores amigos
- FIND: Nos ayuda a filtrar archivos o directorios en el OS
* Podemos filtrar por tipo de archivo con -type,
* por nombre con -name,
* sin hacer diferencia entre mayúsculas y minúsculas con -i,
* por fecha de modificación con -mtime, entre otros.

$ find /etc -type f	= Encontrar archivos en la ruta /etc
$ find /var/log -name "*.log" -type f	= Encontrar archivos que terminen .log en la ruta /etc/log
$ find /var/log -iname "*.LOG" -type f	= Sin distinción de mayúsculas
$ find /var/log ! -iname "*.LOG" -type f = Indiferentes a archivos .log
$ sudo find /etc/ -mtime 10	= Archivos modificados en los últimos 10 minutos
$ sudo find /etc/ -mtime 10 2> /dev/null	= (2> /etc/null) Si hay error enviarlos al vacío para que no los muestre

- GREP: Nos ayuda a filtrar palabras dentro de un archivo

		$ grep "server" /etc/nginx/sites-available/default
		$ ps aux | grep platzi
AWK: Es un lenguaje de scripting que nos ayuda a procesar información usando patrones para filtrar, reorganizar y darle formato a nuestros datos
	- Mostrar las direcciones IP que han accedido a este archivo
			$ awk '{print $1}' /var/log/nginx/access.log
	- Mostrar las direcciones IP que han accedido a este archivo contadas todas las veces y ordenadas

			$ awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
		('{print $9}' para errores de acceso)

- Imprimir junto IP, FECHA, METODO y ERROR de ACCESO

	$ awk '{print $1, $4, $6, $9}' /var/log/nginx/access.log
	- Ver el número de la columna a consultar en el archivo de log
$ cat /var/log/nginx/access.log

Los logs, nuestros mejores amigos
- FIND: Nos ayuda a filtrar archivos o directorios en el OS
* Podemos filtrar por tipo de archivo con **-type, **
* por nombre con -name,
* sin hacer diferencia entre mayúsculas y minúsculas con -i,
* por fecha de modificación con -mtime, entre otros.

**$ find /etc -type f**	= Encontrar archivos en la ruta **/etc**
**$ find /var/log -name "*.log" -type f**	= Encontrar archivos que terminen .log en la ruta **/etc/log**
**$ find /var/log -iname "*.LOG" -type f**	= Sin distinción de mayúsculas
**$ find /var/log ! -iname "*.LOG" -type f** = Indiferentes a archivos .log
**$ sudo find /etc/ -mtime 10**	= Archivos modificados en los últimos 10 minutos
**$ sudo find /etc/ -mtime 10 2> /dev/null**	= (2> /etc/null) Si hay error enviarlos al vacío para que no los muestre

- **GREP**: Nos ayuda a filtrar palabras dentro de un archivo
	**$ grep "server" /etc/nginx/sites-available/default
	$ ps aux | grep platz**i

**AWK**: Es un lenguaje de scripting que nos ayuda a procesar información usando patrones para filtrar, reorganizar y darle formato a nuestros datos
	- Mostrar las direcciones IP que han accedido a este archivo
		**$ awk '{print $1}' /var/log/nginx/access.log**
	- Mostrar las direcciones IP que han accedido a este archivo contadas todas las veces y ordenadas
		**$ awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr**
		**('{print $4}' para fechas de acceso)**
		**('{print $6}' para método de acceso)**
		**('{print $9}' para errores de acceso)**

_- **Imprimir junto IP, FECHA, METODO y ERROR de ACCESO**_
**$ awk '{print $1, $4, $6, $9}' /var/log/nginx/access.log**
	

	- Ver el número de la columna a consultar en el archivo de log
	**$ cat /var/log/nginx/access.log**

RESUMEN CLASE 29

FIND
Nos ayuda a buscar archivos y/o carpetas en el sistema operativo.
-type para filtrar por tipo de archivo,
-name por nombre,
-i sin hacer diferencia entre mayúsculas y minúsculas,
-mtime por fecha de modificación.

$ find /etc -type f

$ sudo find /etc -mtime 10

$ find /var/log -name "*.log" -type f

$ find /var/log -iname "*.LOG" -type f

GREP
Nos ayuda a filtrar el resultado de un comando o archivo dependiendo de las palabras de cada línea.

$ grep "server" /etc/nginx/sites-available/default

AWK

Es un lenguaje de scripting que nos ayuda a procesar información usando patrones para filtrar,
reorganizar y darle formato a nuestros datos.

$ awk '{print $1}' /var/log/nginx/access.log

$ awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

Me encantó ver al profesor utilizando sus conocimientos en comandos para realizar búsquedas, ordenar y filtrar documentos y datos.

Con redirigir la salida del comando sort una vez es suficiente.

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c

buena búsqueda de archivos

Grep tambien puede ser recursivo para enviarlo a buscar a un directorio y los archivos que contiene:

grep -r path/

Excelente, buenos comandos para ver los LOGS,
|
Seria interesante una practica para enviarlos y traficarlos con un sistema ELK, Elasticsearch.

excelente clase !

buenos comandos de búsqueda 😃

Interesante

definitivamente el manual de awk es extenso y tiene muchas opciones

Excelente!

find: Buscar el nombre de los archivos
grep: Buscar en el contenido de los archivos