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鈥檚 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鈥檚 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
鈥橣ield 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 鈥渉anks$鈥 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鈥痎鈥痚s 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鈥$鈥痚s 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 鈥榮/Hanks/Seleck/g鈥 dumpl.sql= [Comando][鈥檚鈥橾[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鈥sto 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 鈥渟erver鈥 /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