Bases del sistema operativo

1

Lo que aprender谩s sobre la administraci贸n de servidores linux

2

Distribuciones m谩s utilizadas de Linux

3

Instalaci贸n de Ubuntu Server

4

Instrucciones para instalar CentOS

5

Gesti贸n del 谩rbol de directorios

6

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

7

Interacci贸n con archivos y permisos

8

Conociendo las terminales en linux

9

Manejo y monitoreo de procesos y recursos del sistema

10

Monitoreo de recursos del sistema

Instalaci贸n y manejo de software en Linux

11

An谩lisis de los par谩metros de red

12

Administraci贸n de paquetes acorde a la distribuci贸n

13

Manejo de paquetes en sistemas basados en Debian

14

Administraci贸n de software con YUM y RPM para CentOS

15

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

Administraci贸n de usuarios

16

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

17

Creando y manejando cuentas de usuario en el sistema operativo

18

Entendiendo la membres铆a de los grupos

19

Usando PAM para el control de acceso de usuarios

Servicios en el sistema operativo

20

Autenticaci贸n de clientes y servidores sobre SSH

21

Configurando DNS con bind

22

Arranque, detenci贸n y recarga de servicios

23

NGINX y Apache en Ubuntu server

24

Instalaci贸n y configuraci贸n de NGINX

25

驴Qu茅 es NGINX Amplify?

26

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

27

Monitoreo de MySQL con Nagios

28

Configuraci贸n de Nagios

29

Los logs, nuestros mejores amigos

30

Otros servicios de logs

Bash scripting

31

Las bases de bash

32

Las variables y su entorno de ejecuci贸n

33

Automatizando tareas desde la terminal

34

Automatizando la copia de seguridad

35

Crontab

Asegurando tu servidor

36

Entendiendo la gesti贸n de vulnerabilidades

37

驴Qu茅 es una superficie de ataque? Principio del menor privilegio

38

El firewall y sus reglas

39

Escaneo de puertos con NMAP y NIKTO desde Kali Linux

40

Lynis: Herramientas de auditoria de seguridad en Linux

Proyecto

41

Configuraci贸n de Node.js en un ambiente productivo

42

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

Bonus: Linux en Azure

43

Aprende sobre Linux en Azure

44

Despliegue de una aplicaci贸n web MEAN

45

Crea una m谩quina virtual en la nube de Azure

Conclusiones

46

Lo que aprendiste sobre servidores linux

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Los logs, nuestros mejores amigos

29/46
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 35

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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.

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

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

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

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

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

No veo el enlace a la lectura recomendada.

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

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;```

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

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

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

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