0% encontró este documento útil (0 votos)
69 vistas14 páginas

Linux

El documento proporciona instrucciones para instalar y configurar CentOS en una máquina virtual usando VirtualBox. Explica cómo descargar e instalar CentOS, crear una máquina virtual, configurar la red y almacenamiento, e instalar el sistema operativo. También cubre cómo configurar la interfaz de red, establecer el nombre de host y contraseña del usuario root durante la instalación.

Cargado por

Cesar Gonzalez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
69 vistas14 páginas

Linux

El documento proporciona instrucciones para instalar y configurar CentOS en una máquina virtual usando VirtualBox. Explica cómo descargar e instalar CentOS, crear una máquina virtual, configurar la red y almacenamiento, e instalar el sistema operativo. También cubre cómo configurar la interfaz de red, establecer el nombre de host y contraseña del usuario root durante la instalación.

Cargado por

Cesar Gonzalez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

LINUX

RESUMEN DE LA CLASE
Instalación de CentOS
1. Descargar Virtual Box: https://www.virtualbox.org/
2. Descargar CentOS: http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-
DVD-1908.iso
3. Crear una nueva máquina virtual
4. En la configuración de nuestra máquina, en la sección Red cambiar de NAT a Adaptador
puente. En avanzadas, colocar en el Modo promiscuo “Permitir todo”
5. En la sección Storage seleccionamos el cd que dice “Vacío”, y en el apartado de atributos a
la derecha seleccionamos el icono del cd para buscar nuestra imagen ISO de CentOS ya
descargada anteriormente. Aceptamos los cambios
6. Iniciamos la máquina virtual
7. Instalamos el sistema operativo
8. En la configuración, en el apartado de NETWORK & HOST NAME, activar la interfaz con el
botón “on”. Cambiamos el host name a “platzi-server” y damos click en aplicar
9. En el apartado de INSTALLATION DESTINATION seleccionamos el disco de Virtual Box
10. Configuramos la hora y damos click en done
11. Hacemos click en ROOT PASSWORD y creamos una contraseña para el usuario root
12. Creamos un usuario nuevo dando click en USER CREATION y finalizamos la instalación
Manejo y monitoreo de procesos y recursos del sistema
|
|
Comandos
|
ps: Muestra los procesos corriendo. Modificadores:
1. aux: Muestra todos los procesos
jobs: Al igual que el comando anterior, muestra los procesos. A diferencia de ps, es un comando
interno de la terminal
fg: Abre un proceso que estaba pausado
nohup: Genera un archivo llamado “nohup.out” que muestra toda la información que produjo un
proceso
grep: Nos ayuda a filtrar el resultado de un comando o el contenido de un archivo dependiendo de
las palabras (o incluso expresión regular) que le indiquemos
|
|
Símbolos especiales
|
"|" Pipe: Envia el standard output de un comando al standard input de otro.
"&" Ampersand: Envia un proceso al background
"./": Ejecuta un archivo
<h1>1.7 Manejo y monitoreo de procesos y recursos del sistema</h1>

Una de las funciones importantes de los administradores de sistemas es verificar que todos los procesos
que se están ejecutando sean válidos y no sean procesos que esten haciendo cosas maliciosas.

Para ver los procesos que están corriendo en el SO:

ps aux
La información más importante que muestra este comando es que comando esta ejecuando el proceso.

Podemos buscar procesos por usuario usando el pipe y grep, ejemplo:

ps aux | greep platzi

Cuando trabajamos con algún editor de texto, a veces necesitamos enviar estos procesos a un segundo
plano.

vi {nombre} ==> abre un archivo de texto con el nombre que especificamos.

Para volver a la consola presionamos: ctrl+z ==> pasamos los procesos a background.

Para ver los procesos que se están ejecutando ==> jobs

Para volver al proceso ==> fg … foreground.

Para salir de un vi ==> ctrl+c … :wq

Iniciar un proceso sin que se pierda la consola:

./script.sh ==> ejecuta el archivo y muestra el resultado.

./script.sh & ==> ejecuta el archivo, muestra un proceso especifico y muestra el resultado.

nohup ./script.sh & ==> genera una salida con el nombre de nohup.out y en el enctramos toda la
información de lo que realiza el proceso. Esto es muy útil cuando realizamos despliegues en servidores
porque sabemos que esta realizando el proceso.

Monitoreo de recursos del sistema

Comandos

|
top: Muestra la siguiente información del sistema:

load average (carga promedio): Provee una representación en números del 1 al número de
procesadores que tenga nuestro servidor del uso de los mismos.

Uso de la memoria

Cantidad de usuarios

Uso del CPU

Procesos

Etc

free: Me muestra información sobre la memoria de mi sistema. Con el modificador -h la información es


más legible para un humano

du: Muestra información sobre el disco duro. Con el modificador -hsc y un directorio especificado
muestra el tamaño de ese directorio

htop: Funciona como top pero funciona de forma más intuitiva

Comandos útiles

cat /proc/cpuinfo | grep "processor": Muestra información sobre el CPU

sudo ps auxf | sort -nr -k 3 | head -5: Muestra los 5 procesos que más uso hacen del CPU

sudo ps auxf | sort -nr -k 4 | head -5: Muestra los 5 procesos que más uso hacen de la memoria RAM

Arranque, detención y recarga de servicios

Comandos

sudo systemctl status servicio: Estado de un servicio

sudo systemctl enable servicio: Habilita un servicio

sudo systemctl disable servicio: Deshabilita un servicio

sudo systemctl start servicio: Enciende un servicio


sudo systemctl stop servicio: Apaga un servicio

sudo systemctl restart servicio: Reinicia un servicio

sudo systemctl list-units -t service --all: Lista los servicios del sistema

sudo journalctl -fu servicio: Muestra el log de un servicio

sudo journalctl --disk-usage: Muestra cuanto pesan los logs en el sistema operativo

sudo journalctl --list-boots: Muestra los booteos de la computadora

sudo journalctl -p critic|notice|info|warning|error: Muestra mensajes de determinada categoría de


nuestros logs

sudo journalctl -o json: Muestra los logs en formato json

Proceso de instalación.

Apache

Ejecuta el siguiente comando

sudo apt install apache2

NGINX

Ejecuta el siguiente comando

sudo apt install nginx nginx-extras

Para verificar si los servicios está corriendon se debe ejecutar los siguientes
comandos:
systemctl status apache2
systemctl status nginx

Si se siguió el orden de instalación, NGINX no debe estar ejecutándose, pues


por defecto intentará levantarse en el puerto 80, el cual ya se encuentra
ocupado por Apache, para ello cambiaremos el puerto de Apache al puerto
alterno http 8080.

sudo nano /etc/apache2/ports.conf


A continuación tenemos que cambiar el puerto al 8080, para esto se debe
cambiar la instrucción Listen 8080 dentro del documento ports.conf.

Después abrimos nuestro archivo de configuración de Apache sudo


nano /etc/apache2/sites-available/000-default.conf y
cambiamos el virtualhost a 8080 <VirtualHost *:8080>

Después realizamos el proceso de detener apache2 y volverlo a encender,


con los siguientes comandos
sudo systemctl restart apache2.
systemctl status apache2
systemctl status nginx.
Ambos sitios deberían estar activos y en ejecución.
Paso siguiente, dirígete al archivo de configuración de NGINX donde te
asegurarás que exista una directiva en el location llamada proxy_pass que
contenga lo siguiente:

proxy_pass http://127.0.0.1:8080;

Si por alguna razón el servidor Apache no se encuentra en la misma


máquina, debemos cambiar la dirección IP y el puerto respectivo.

Apache tiene un comando para activar sitios que es a2ensite que recibe


como parámetro el archivo de configuración definido
en /etc/apache2/sites-available. NGINX no cuenta con este
comando, motivo por el cual se tiene un enlace blando, es decir, cuando
creemos un archivo de configuración en /etc/nginx/sites-
available debemos ejecutar sudo ln -s /etc/nginx/sites-
available/configuracion_nginx /etc/nginx/sites-enabled/

Apache también me permite deshabilitar sitios y agregar módulos

sudo a2dissite 000-default

sudo a2enmod rewrite headers env dir mime

Si queremos activar letsecrypt en NGINX, debemos agregar una línea


en el .htaccess en la
ruta /var/www/html/nombre_host/.htaccess. La linea es SetEnvIf
X-Forwarded-Proto https

Conclusión

Antes de realizar la elección de uno de los dos, deberías mirar el tipo de


proyecto en el que estás trabajando y que se acople mejor a tus necesidades,
es un proceso de evaluación y prueba en cada uno de los aspectos que
esperamos como administradores de sistemas.
Existen múltiples diferencias entre ambos proyectos, que tienen impacto real
en el rendimiento y tiempo de configuración para lograr que el servicio quede
funcionando perfectamente. Algunos prefieren NGINX por la sintaxis de
configuración, otros eligen basado en las estadísticas presentadas y otros por
simple experiencia con trabajos anteriores. Yo te recomiendo probar ambos y
elegir según el proyecto, o quizás puedes usarlos ambos y sacar lo mejor de
cada uno.
NGINX Amplify: Instalación y configuración de un servidor para producción
|
|
Proceso de instalación
|
 Instalar Python 2.7
sudo apt install python2.7
 Movernos a la carpeta de Nginx
cd /etc/nginx
 Modificar el archivo conf.d de la siguiente manera
sudo cat > conf.d/stub_status.conf
server{
listen 127.0.0.1:80;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
}
 Matar el proceso de Nginx
sudo kill -HUP `cat /var/run/nginx.pid`
 Reiniciar y habilitar Nginx
sudo systemctl restart nginx && systemctl enable nginx
 Logearnos en el sitio web de Nginx Amplify y seguir las instrucciones de
instalación: https://amplify.nginx.com
 Iniciar el servicio de Nginx Amplify
service amplify-agent start
 Reiniciar Nginx
sudo systemctl restart nginx

ESUMEN DE LA CLASE
|
Monitoreo de MySQL con Nagios
|
|
Instrucciones
|
 Instalar MySQL Server
sudo apt install mysql-server

 Obtener el password de MySQL

sudo vim /etc/mysql/debian.cnf

 Iniciar sesión en MySQL

mysql -u debian-sys-maint -p

 Asegurar el server de la base de datos

sudo mysql_secure_installation

 Verificar que Apache esté funcionando


systemctl status apache2
 Activar módulos rewrite y cgi

sudo a2enmod rewrite cgi

 Reiniciar Apache

sudo systemctl restart apache2

 Crear un usuario para Nagios


sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
 Entrar a Nagios en nuestro navegador web, escribiendo como dirección:

direccion_ip_del_servidor:8080/nagios

Es muy importante notar que estamos ingresando en el puerto 8080, ya que ahí es donde está
funcionando Apache
 Instalar las siguientes dependencias:

sudo apt install -y libmcrypt-dev make libssl-dev bc gawk dc build-


essential snmp libnet-snmp-perl gettext

 Si no instalaste los plugins en las clases anteriores, debes hacer lo siguiente: en primer
lugar, posicionado en tu home, descargarlos

wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz -0
plugins.tar.gz -O plugins.tar.gz

 Desempaquetar y descomprimir el archivo de plugins

tar xzvf plugins.tar.gz

 Ya en la carpeta de plugins que se creo con el paso anterior, configurar los mismos

sudo ./config

 Verificar que no existan errores ni warnings


sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
 Reiniciar Nagios

sudo systemctl restart nagios

 En nuestro home, descargar el plugin de MySQL

wget https://labs.consol.de/assets/downloads/nagios/check_mysql_health-
2.2.2.tar.gz -O mysqlplugin.tar.gz

 Desempaquetar y descomprimir el archivo del plugin


tar xzvf mysqlplugin.tar.gz

ESUMEN DE LA CLASE
|
Configuración de Nagios
|
|
Instrucciones
|
 Ya en la consola de MySQL, crear un usuario
GRANT SELECT ON *.* TO 'nagios'@'localhost' IDENTIFIED BY 'nagiosplatziS14*';
FLUSH PRIVILEGES;
 Configurar Nagios
sudo vim /usr/local/nagios/etc/nagios.cfg

#Ya dentro del archivo, agregar la siguiente linea:

cfg_file=/usr/local/nagios/etc/objects/mysqlmonitoring.cfg
 Crear comandos para hacer uso de Nagios

sudo vim /usr/local/nagios/etc/objects/commands.cfg

#Ya dentro del archivo, agregar las siguientes líneas:

define command {
command_name check_mysql_health
command_line $USER1$/check_mysql_health -H $ARG4$ --username
$ARG1$ --password $ARG2$ --port $ARG5$ --mode $ARG3$
}
 Crear el archivo que nombrarmos en la configuración en el archivo nagios.cfg

sudo vim /usr/local/nagios/etc/objects/mysqlmonitoring.cfg

#Ya en el archivo, agregar las siguientes líneas


define service {

use local-service

host_name localhost

service_description MySQL connection-time

check_command check_mysql_health!nagios!nagiosplatziS14*!
connection-time!127.0.0.1!3306!
}
OJO! En la clase hay un pequeño typo, como puede verse arriba, la directiva correcta
es host_name y no hostname, les va a dar error si lo ponen de esta última forma
 Reiniciar nagios
Entendiendo la gestión de vulnerabilidades++

l construir aplicaciones debemos enfrentarnos a la comodidad de los usuarios al crear


sus contraseñas y la seguridad que necesitamos para que los atacantes informáticos
no consigan acceso a nuestra información.
Existen algunos comandos que no debemos utilizar, ya que son vulnerables por
defecto, así como telnet o comandos r*. En vez de estos comandos podemos usar
protocolos seguros como SSH.
Debemos tener presente cuáles son los servicios y puertos abiertos de nuestro sistema
operativo. También debemos ser muy cuidadosos con los permisos de los usuarios.
Para verificar las actualizaciones de seguridad e instalarlas en nuestra máquina
podemos usar los siguientes comandos:

Malas prácticas

No desactivar el usuario root

Realizar un login con usuario y password (sin ssh)

No validar la versión de software usada

Utilizar comandos r* o telnet

No identificar los servicios y puertos abiertos en el S.O

No gestionar correctamente los permisos de los usuarios

|
|

Buenas prácticas

Verificar las actualizaciones de seguridad y realizar la instalación de las mismas.

En CentOS:

yum check-update --security

yum update security

En Ubuntu:

apt update

apt upgrade

RESUMEN DE LA CLASE

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

Una superficie de ataque es el conjunto de datos conocidos o vulnerabilidades que pueden ser
explotados por un atacante informático.

Software útil para la gestión de vulnerabilidades

Lynis: Analiza nuestro servidor y nos da recomendaciones

Manuales y frameworks útiles para la seguridad de nuestro servidor

|
SCAP: El Security Content Automation Protocol es un conjunto de reglas sobre la expresión y
manipulación de información relacionada con configuraciones y fallos.

OWASP: El Open Web Application Security Project es un proyecto de código abierto destinado a pelear
contra la inseguridad informática

El firewall y sus reglas


|
|
Comandos
|
 sudo ufw status: Muestra el estado (activo/inactivo) y las reglas del firewall. Con el
modificador numbered me muestra las reglas numeradas
 sudo ufw allow puerto: Habilita un puerto
 sudo ufw enable: Enciende el firewall
 sudo ufw delete numero_de_regla: Borra una regla
 sudo ufw allow from direccion_ip proto protocolo to any port puerto: Restringe las
direcciones ip que pueden conectarse a cierto puerto. Recordar que SSH trabaja con el
protocolo TCP
 sudo ufw reset: Elimina todas las reglas
|
|
Recomendación
|
Abrir al público únicamente el puerto 80 (http), 443 (https). Para un conjunto de IP’s específicas,
habilitar el puerto 22 (ssh)

scaneo de puertos con NMAP y NIKTO desde Kali Linux

Comandos

nmap -sV -sC -0 -oA nombre_de_archivo dirección_ip_del_servidor: Realiza un mapeo de la red

nikto -h ip_del_host -o nombre_de_archivo: Escanea vulnerabilidades en un servidor

Lynis: Herramientas de auditoria de seguridad en Linux

|
Comandos

Instalación de Lynis:
sudo apt install lynis

sudo lynis audit system: Realiza un escaneo del sistema operativo, mostrándonos sugerencias y el
estado de peligro de ciertos detalles en nuestra distribución

ESUMEN DE LA CLASE
|
Configuración de Node.js en un ambiente productivo
|
|
Instrucciones
|
 Clonar el repositorio necesario para realizar la clase
git clone https://github.com/edisoncast/linux-platzi
 Instalar Node.js y npm

sudo apt install nodejs npm

 Posicionados en el home, descargar Node 10


curl -sL https://deb.nodesource.com/setup_10.x -o node_setup.sh
 Instalar Node 10

sudo bash node_setup.sh

 Instalar gcc, g++ y make

sudo apt install gcc g++ make

 Finalizar el proceso de instalación de la versión 10 de Node

sudo apt install -y nodejs

 Agregar el usuario nodejs si todavía no lo creaste

sudo adduser nodejs

 En la carpeta de linux-platzi, ejecutar el archivo server.js

node server.js

 Crear un archivo de configuración para el servicio de Node


sudo vim /lib/systemd/system/[email protected]

# Una vez creado el archivo, llenarlo con la siguiente información

[Unit]
Description=Balanceo de carga para Platzi
Documentation=https://github.com/edisoncast/linux-platzi
After=network.target

[Service]
Enviroment=PORT=%i
Type=simple
User=nodejs
WorkingDirectory=/home/nodejs/linux-platzi
ExecStart=/usr/bin/node /home/nodejs/linux-platzi/server.js
Restart-on=failure

[Install]
WantedBy=multi-user.target

También podría gustarte