Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
##############################################################################
#####################
Mapa de Distribuciones
* Distribuciones
Debian (Servidor) |Red Hat
Ubuntu (Distro mas popular) | Centos 7 (Escritorio)
Desktop (Escritorio), | RHEL (Servidor)
Kubuntu/Xubuntu, etc | CentOS (clon de RHEL)
Server (Servidor) | Oracle Linux (Clon de RHEL)
| Scientific Linux (Clon de RHEL)
Linux Mint(Escritorio) |SuSE
Basado en Ubuntu | OpenSuSE (Escritorio)
| SLES (Servidor)
|Mageia (Escritorio)
/ ----> raiz
$> ping www.google.com ---> ping a google para validar resolución DNS
Actualizar Ubuntu
=============================================================
Actualizar lista de paquetes
$> apt update
Actualizar paquetes
$> apt upgrade
auto ens18
iface ens18 inet static
address 149.56.218.X
netmask 255.255.255.224
gateway 149.56.218.222
dns-namservers 8.8.8.8
ctrl+o Enter
ctrl+x
Winbugs
usar putty
CapÃtulo 2:
Ficheros (Archivos)
--------------------
@ Planos /etc/network/interfaces
@ Binarios /usr/bin/vim
@ Enlaces /vmlinuz-->/boot/vmlinuz...
@ Especiales /dev/sda1-->partición montada en la raiz /
Consolas de Linux
############################################################
tty1
tty1
. ]
. ]--->consolas de texto
. ]
ty6 ]
ty7 --->consola de gráfica
. ]
. ]--->consolas de texto
. ]
tty6 ]
tty7 --->consola de gráfica
tty1 --> Entrar con Ctrl+Alt+F1, para tty3 (Ctrl+Alt+F3)
Volver a loguearse
Comandos básicos
----------------
Ayudas en Consola
------------------
Flecha arriba y Flecha Abajo ---> navegan por el historial de comandos
(para comandos recientes)
ir al directorio por defecto del usuario ej: pepito -> /home/pepito root ->
/root
$> cd
copiar archivo saludo con un nuevo nombre hola (dentro del mismo directorio)
$> cp saludo hola
mover el archivo actual "hola" como "holitas" dentro del mismo directoria,
(renombra el archivo)
$> mv hola holitas
$> ls
Ej:
$> less /etc/services
Flecha Arriba
Flecha Abajo
Av Pagina
Ret Pagina
/smtp
n
n
n
1G
455G
q
Secciones de Manuales
-----------------------------
Hay diferentes secciones de páginas de manual, cada tipo se diferencia por un
número, que se detallan a continuación:
cambia la raiz
$> cd /
Ejecutando fechita
$> fechita
Listando enlace
$> ls -l /usr/bin/fechita
Enlace de Directorios
$> ln -s /usr/bin /programas
$> ls -l /
Redirección y TuberÃa:
------------------------------------------------------------------------------
----------
> Redicciona la salida estándar a un archivo, sobreescribiéndolo si
existe
>> Redicciona la salida estándar a un archivo, añadiendo al final del
mismo
< Redirecciona la entrada estándar desde un archivo
| (Tuberia, concatenando comandos). permite combinar las salidas estándar
de 2 o más
comandos
------------------------------------------------------------------------------
-----------
Flujos de consola
--------------------------------------------------
0 Entrada Estandar (stdin)
1 Salida Estandar (stdout)
2 Salida de Error Estandar (stderr)
Ejercicios
----------------
$> cat /etc/passwd
Muestra el contenido de un archivo sin pausa
$> tac /etc/passwd
Muestra el contenido de un archivo sin pausa pero al reves,
lo mismo que cat pero al reves
$> wc /etc/services
Cuenta el numero de lineas palabras y caracteres del archivo
$> wc -l /etc/services
Cuenta solo numeros de lineas
$> pr /etc/services
Visualiza en formato de impresion
Expresiones Regulares:
-------------------------------------------------------------------
* --> 0 o mas coincidencias
+ --> 1 o mas coincidencias
? --> una coincidencia
{1,} --> equivalente a +
{0,} --> equivalente a *
{1} --> equivalente a ?
{2,5} --> de 2 a 5 coincidencias
^ --> que comienza
$ --> que termina
[a-z] --> solo letras minusculas
[A-Z] --> solo letras mayusculas
[a-zA-Z] --> solo letras
[a-zA-ZáéÃóúñÑÃÉÃÓÚ] --> alfabeto español
[0-9] --> solo numeros
( ) --> bloque de expresiones
(exp1 |exp2) --> coincidencia de exp1 o exp2
[^exp] --> negacion de la expresion
\ --> caracter de escape
. --> cualquier caracter
Ejercicios:
=========================================================
Crear el usuario tuxito
$> adduser tuxito
Tuxito Linuxero
$> passwd tuxito (poner clave fuerte)
$> grep tuxito /etc/passwd
Muestra todas las lineas en el fichero /etc/passwd que contengan la
expresion tuxito
3.- [0-9]\.
[0-9]{1,3}\.
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
Simplificación ([0-9]{1,3}\.){3}[0-9]{1,3}
Solucion:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
Solucion: "[a-zA-Z0-9]?[a-zA-Z0-9\-\._]+@[a-zA-Z0-9]?[a-zA-Z0-9\-\.]+[a-zA-Z]
{2,4}"
$> egrep -R "[a-zA-Z0-9]?[a-zA-Z0-9\-\._]+@[a-zA-Z0-9]?[a-zA-Z0-9\-\.]+[a-zA-
Z]{2,4}" /etc 2>/dev/null | grep -v binario
Comandos de vim
------------------------------------------------------------------------------
------------
Instalar VIM
----------------------------------------------------------
$> su -
$> apt-get update
$> apt-get install vim
Gestion de temporales
----------------------------------------------------------
$> vim poema (agregar al final)
G ----> van a la última lÃnea
o ----> modo inserción en una nueva lÃnea
Prometo alejarme del maligno windows
Borrar el temporal
$> rm -f .poema.swp
auto ens18
iface ens18 inet static
address 149.56.218.X
netmask 255.255.255.224
gateway 149.56.218.222
dns-nameservers 8.8.8.8
Verificar la configuración
$> ip addr show
$> ip route show
$> ping 8.8.8.8
$> ping www.google.com
Ubuntu 16.04
$> hostnamectl set-hostname linuxY.aulautil.com
$> exit
$> exit
Conectar al vps
$> su -
$> hostnamectl
Opcional: Cambiar la forma del prompt para root, para que muestre nombre
completo del host
$> sudo su -
$> vim ~/.bashrc (ir a la última lÃnea y agregar)
export PS1="\[\e]0;\u@\H: \w\a\]${debian_chroot:+($debian_chroot)}\u@\H:\w\$ "
$> su -
Pruebas
---------------
$> ping linuxY (SQDN)
$> ping linuxY.aulautil.com (FQDN)
$> ping www.mocosoft.com (Dominio Ficticio)
Nota:
----------------------------------------------------------------------------
Para resolver los nombre de host a nivel de red se usa un servidor DNS
Bind ó dnsmasq
Utilidad locate
----------------------------------------------------------------------
$> apt-get -y install mlocate
$> updatedb
Actualiza la base de datos de la lista de archivos y directorios
existentes en el sistema
$> whereis vi
Muestra la ruta de binarios, librerias y documentacion del comando vi
$> which vi
Muestra la ruta del binario del comando vi
$> cd /backups
$> ls -l
$> ls -l
x --> desempaqueta
$> ls -l
Archivos rar
-----------------------------------------------------------
Instalar unrar
$> apt-get install unrar
$> unrar x archivo.rar
Crear usuarios
--------------
$> id
Donde:
linuxero = nombre del usuario
x = la clave del usuario esta en /etc/shadow
1003 = uid del usuario
100 = gid del usuario
linuxero fanatico = descripción
/home/linuxero = directorio de trabajo del usuario
/bin/bash = interpretes de comandos
Donde:
users = nombre del grupo
x = la clave del grupo esta en /etc/gshadow (no es
comun)
100 = gid del grupo
pepito,tuxito,windozero = usuarios adicionales del grupo
$> grep linuxero /etc/shadow (archivo de contraseñas)
linuxero:$6$qf7G8CbU$R9wiKgiN0rVaP1qsjQnzRsYfywP3L468:15297:0:99999:7:::
Donde:
linuxero = nombre del usuario
$6$qf7G... = contraseña encriptada en un algoritmo como MD5, SSHA,
si está vacÃo no requiere contraseña, si tiene un
asterisko al inicio, la cuenta está deshabilitada
15297 = El número de dÃas desde la era Unix en que el password
fue cambiado
(01 de Enero de 1970).
0 = Número de dÃas mìnimo en que el password podrá sea
cambiado (0 indica que puede ser
cambiado en cualquier momento)
Ejemplo:
Modificamos la expiracion de contraseña del usuario linuxero a 30 dÃas
$> passwd -x 30 linuxero
Verificamos el cambio
$> grep linuxero /etc/shadow
Verificamos el cambio
$> grep linuxero /etc/shadow
Desbloqueamos el login
$> passwd -u linuxero
Modificar usuarios
------------------------------------------------------------------------------
--
$> grep tuxito /etc/passwd
Borrar usuarios
------------------------------------------------------------------------------
--
$> userdel linuxero (borra el usuario pero no su directorio de trabajo)
Crear un Grupo
------------------------------------------------------------------------------
--
$> groupadd fanaticos
$> su -
$> cd
$> ls -l saludo
$> ls -l saludo
$> ls -l saludo
$> ls -l saludo
$> ls -l saludo
$> ls -l tuxito
$> chown -R tuxito.tuxito /home/tuxito
----- ------
dueño grupo
cambia de dueño y grupo al directorio /home/tuxito incluyendo sus
subdirectorios
* Nota
-------------------------------------------------------------------------
el comando chmod lo puede ejecutar el dueño del archivo y el usuario root
el comando chown solo lo puede ejecutar root
$> su - tuxito
$> umask
Notas:
chmod = solo lo puede ejecutar el dueño del archivo y root
chown = solo lo ejecuta root
16.- Procesos:
##########################################################################
$> ps
lista procesos del usuario
$> ps ax
lista todos los procesos
$> ps axf
lista todos los procesos, jerarquÃa y ruta de los comandos
$> man ps
verifica fligs en la pagina del manual
Matar procesos:
--------------
Ejecuta un proceso que guarda en el archivo boom y lo manda a segundo plano
$> ls -l boom
$> ls -l boom
## Major bug fix updates produced after the final release of the
## distribution.
deb http://pe.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://pe.archive.ubuntu.com/ubuntu/ trusty-backports main restricted
universe multiverse
----------------------------------------------------------------------------
APT
############################################################################
$> apt ---> lista las opciones del comando apt
Buscar un paquete
-------------------------------------------------------------------
$> apt-cache search nmap
Desinstalar un paquete
--------------------------------------------------------------------
$> apt-get remove nmap
Desintalar totalmente un paquete
$> apt-get remove --purge nmap
Idioma español
###########################################################################
$> apt-get -y install language-pack-es libreoffice-l10n-es \
firefox firefox-locale-es language-pack-gnome-es libreoffice-help-es myspell-
es wspanish
Leer Dvds
##########################################################################
$> apt-get install libdvdread4
OpenJDK (java)
##########################################################################
Ubuntu 14.04
$> apt-get install openjdk-7-jre icedtea-plugin
Ubuntu 16.04
$> apt-get install openjdk-8-jre icedtea-plugin
Formatos de compresión
##############################################################################
#############
$> apt-get install rar unzip unrar unace p7zip-full p7zip-rar bzip2 lzop
sharutils mpack lhasa arj
Nvidia
Seleccionar
- fglrx para AMD (Ubuntu 14.04)
- nvidia para Nvidia
Nota:
==============================================================================
===
En Ubuntu 16.04 y posterior en AMD ATI viene el driver open source AMDGPU en
reemplazo
de fglrx y el driver Radeon para las tarjetas antiguas.
Programas adicionales
##############################################################################
#####
Google Chrome
------------------------------------------------------------
Descargar deb de 64 bits para Ubuntu desde
64 bit .deb (para Debian/Ubuntu)
https://www.google.es/chrome/browser/desktop/index.html
Instalar chrome
$> sudo dpkg -i /home/tuxito/Descargas/google-chrome-stable_current_amd64.deb
$> apt-get -f install
Chromium
------------------------------------------------------------------------------
-------
$> apt-get -y install chromium-browser
Skype
========================================================================
$> dpkg --add-architecture i386
$> add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc)
partner"
$> apt-get update
$> apt-get -y install skype
Teamviewer
========================================================================
Instalación
------------------------------------------------------------------------------
------
Como usuario tuxito Descargar teamviewer v11.0.57095 (deb 32-Bit / 64-Bit
Multiarch)
luego instalar el paquete deb
Ejecutar teamviewer
Alt+F2
$> teamviewer
Anydesk
===========================================================================
Descargar de http://anydesk.es/download
$> sudo su -
$> wget https://download.anydesk.com/linux/anydesk_2.9.3-1_amd64.deb
$> dpkg -i anydesk_2.9.3-1_amd64.deb
$> apt-get -f install
KDE
$> apt-get -y install krdc
Enchula tu desktop
##############################################################################
###############
Unity
==========================================================================
Manipular efectos gráficos
$> apt-get install compizconfig-settings-manager compiz-plugins-extra
Si falla instalacion
$> dpkg -i --force-all /var/cache/apt/archives/kde-config-telepathy-
accounts*.deb
$> reboot
Loguearse con kde
Personalizar kde
==========================================================
Abrir preferencias del sistema
Ãconos
------------------------------
entrar a www.kde-look.org
Descargar IceGlass
Instalar en
Apariencia de las aplicaciones -> Iconos -> Instalar archivo del tema
Decoracion de Ventana
------------------------------------------------------------------
Apariencia del Espacio de Trabajo -> Decoracion de ventanas-> Obtener Nuevos
esquemas y buscar Ghost
Wallpaper
-----------------------------------------------------------------------------
Click derecho en el escritorio
Preferencias del escritorio por omisión -> click en Abrir y buscar el
wallpaper
Deshabilitar/Habilitar efectos
-----------------------------------
Alt+Shift+F12
Reproductor de Música
------------------------------------------------------------
$> apt-get -y install amarok
Bittorrent
--------------------------------------------------------------------------
$> apt-get -y install ktorrent
Aplicaciones Windows
##############################################################################
#################
Servidor SSH
###################################################################
$> apt-get -y install ssh
Cliente SSH
#######################################################################
$> ssh usuario@host (se conecta al servidor host con un usuario en
un determinado puerto)
$> ssh tuxito@192.168.20.163 (cuando no hay puerto por defecto es 22)
$> su -
$> vim prueba
hola mundo
Permisos Especiales:
----------------------------------------------------------
1 ---> sticky
2 ---> sgid
3 ---> sgid+sticky
4 ---> suid
5 ---> suid+sticky
6 ---> suid+sgid
7 ---> suid+sgid+sticky
$> su -
$> mkdir /a
Dando permisos de sticky al directorio; solo root podra borrar los archivos
del directorio; aunque estos tengan permisos totales
$> ls -ld /a
se verifica el sticky del directorio
$> su - tuxito
$> su -
$> chmod 4755 /usr/bin/vim
Asignando el SUID al editor de texto vim
El usuario tuxito pudo grabar en el archivo /etc/hosts porque ejecuto vim como
si fuera root
$> su -
$> chmod 0755 /usr/bin/vim
Reestablece los permisos originales y le quita el SUID
* NOTA
Se recomienda usar una máscara 0007 para los usuarios
del grupo o mìnimo una máscara 0002
Para que un usuario pueda ejecutar sudo tiene que estar en el /etc/sudoers
su usuario o un grupo y ser parte de el
$> su -
#Habilita al grupo sudo ejecute todos los comandos con permisos de root
26: %sudo ALL= (ALL:ALL) ALL
#define el alias SERVICES para comandos de servicio
31: Cmnd_Alias SERVICES = /usr/sbin/service, /bin/systemctl
ESC:wq!
$> su -
Cambiando de grupo principal sudo al usuario alumno para que pueda ejecutar
sudo
Ejecucion de tareas:
==============================================================================
$> yes
ejecuta proceso en primer plano ctrl+c cancela la ejecucion del comando
$> jobs
lista los procesos ejecutados por el usuario
$> fg 1
vuelve a primer plano el proceso 1 de la lista anterior
$> fg 1
ctcl + c
$> exit
aunque salga de la sesion el proceso se sigue ejecutando
$> uptime
tiempo total desde el ultimo arranque de la Pc
$> uname -a
muestra la version del kernel y la arquitectura del pc
$> free
informacion de la ram disponible y usada
$> fdisk -l
muestra todas las particiones fisicas existentes (Tabla ms-dos)
$> parted -l
muestra todas las particiones fisicas existentes (Tabla GPT o ms-dos)
$> df -h
informacion de las particiones montadas y los espacios en disco usado
$> lspci
lista de todos los dispositivos PCI
$> lsusb
lista los dispositivos usb
$> lsmod
lista los modulos del kernel incluidos drives que esten cargados
activos en el sistema (si carga drivers de tarjeta aqui se carga y
lista)
$> who
muestra los usuarios locales y remotos que tienen una sesion activa
(muestra que usuarios estan en el sistema en el momento)
$> w
muestra los usuarios locales y remotos que tienen una sesion activa
y que comandos estan ejecutando
$> last
muestra el historial de sesiones abiertas en el sistema
$> ifconfig -a
muestra informacion delas interfaces de redes rps,mascara,mac address
muestra tarjeta de red y toda la informacion
$> route -n
muestra informacion de las pasarelas de red
$> netstat -r
igual al comando route -n
Instalar mc en Fedora
$> apt-get -y install mc
$> mc
$> mount
Muestra los dispoditivos montados y sus opciones de montaje
Script en php
$> vim /usr/bin/damelahora.php
#!/usr/bin/env php
<?php
echo "son las ".date("H:i")."\n";
Ejecutar script
$> damelahora.php
$> cd
$> vim hola
#!/bin/bash
echo Hola Mundo
- stdout a un fichero
- stderr a un fichero
Esto hará que la salida stderr de un programa se escriba en un fichero.
$> ls loquesea
$> ls loquesea 2> error-ls.txt
$> cat error-ls.txt
- stdout a stderr
En este caso, la parte stdout del comando se envÃa a stderr; puede observar
eso de varias maneras.
- stderr a stdout
Variables (para declarar no se usa dolar; una vez declarado se usa dolar)
-------------------------------------------------------------------------
$> vim holamundo
#!/bin/bash
CAD="¡Hola Mundo!"
echo $CAD
Variables locales
-----------------
$> vim varlocal
#!/bin/bash
HOLA=Hola
function hola {
local HOLA=Mundo
echo $HOLA
}
echo $HOLA
hola
echo $HOLA
Condicionales
---------------
$> vim condicionales
#!/bin/bash
if [ "petete" = "petete" ]; then
echo expresión evaluada como verdadera
fi
T1="petete"
T2="peteto"
if [ "$T1" = "$T2" ]; then
echo expresión evaluada como verdadera
else
echo expresión evaluada como falsa
fi
FILE=~/.basrc
if [ -f $FILE ]; then
echo el fichero $FILE existe
else
echo fichero no encontrado
fi
-eq
es igual a
if [ "$a" -eq "$b" ]
-ne
no es igual a / es distinto a
-gt
es mayor que
-ge
es mayor que o igual a
-lt
es menor que
-le
es menor que o igual a
<
es menor que (dentro de doble paréntesis)
<=
es menor que o igual a (dentro de doble paréntesis)
>
es mayor que (dentro de doble paréntesis)
>=
es mayor que o igual a (dentro de doble paréntesis)
Comparación de cadenas
=
es igual a
if [ "$a" = "$b" ]
==
es igual a
if [ "$a" == "$b" ]
!=
no es igual a / Distinto
if [ "$a" != "$b" ]
-n
cadena no está vacÃa (contiene algo)
nota: El operador -n exige que la cadena esté entre comillas entre
paréntesis. Aunque el uso son comillas puede funcionar es altamente
recomendable usar comillas.
Comparaciones lógicas
-a
Y lógico (and)
exp1 -a exp2
exp1 -o exp2
Éstos últimos operadores son similares a los operadores de Bash && (and) y
|| (or) cuando se usan con doble corchete:
echo
for planet in "Mercury 36" "Venus 67" "Earth 93" "Mars 142" "Jupiter 483"
do
set -- $planet
# divide los valores y crea parámetros posicionales ($1, $2 ...)
# "--" evita problemas si $planet empieza con guiones o es una cadena
vacÃa.
LIMITE=10
a=1
for i in $( ls ); do
echo item: $i
done
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo El contador es $CONTADOR
# let se usa para forzar que contador sea un valor numerico
let CONTADOR=CONTADOR+1
done
echo
LIMITE=10
a=1
return 0
}
function sanityCheck {
q=`ps -ef |grep $0 |grep -v "grep"|grep -v $$| wc -l`
if [ $q != "0" ]; then
echo "Another instance of $0 running..."
exit 1
fi
}
function start {
sanityCheck
echo "Starting daemon..."
main
}
function shutdown {
echo "Shutting down daemon..."
kill `ps -ef |grep $0|grep -v $$ |grep -v "grep"|awk '{print($2)}'`
}
function main {
{
while [ 1 ]; do
echo "Test..."
sleep 2
done
} &
}
case $1 in
"start")
start
;;
"shutdown")
shutdown
;;
*)
start
;;
esac
Practica Calificada
Práctica dirigida
#######################################################
0.- Loguearse como root
1.- Listar el directorio actual
2.- Lista el archivo .bashrc de cualquier usuario
3.- Crear directorios emparentados /root/manuales/linux/centos
4.- Crear archivo vacÃo /root/manuales/linux/centos/instalacion.txt
5.- Cambiar el promtp al directorio /root/manuales
6.- Crear archivo README con el siguiente contenido
"Linux es
chevere, si
practicas buen
padawan serás"
7.- Copiar archivo README como LEEME en el mismo directorio
8.- Copiar directorio /root/manuales dentro de /usr/share
9.- Crear enlace suave /usr/share/tutos apuntando al directorio
/usr/share/manuales
10.- Lista recursivamente, ordenado por fecha el directorio /usr/share
11.- Borrar directorio manuales
12.- Ver el manual de rm
buscar la palabra directory
seguir buscando
saltar a la lÃnea 313
buscar la palabra recursive desde la primera lÃnea
salir
Practica dirigida
############################################################
Practica Dirigida
##########################################################
1.- Crear un archivo manual en vim
- Ingresar el siguiente contenido:
Linux es difÃcil, solo tienes que usarlo
- Copiar la lÃnea
- Pegar 18 veces
- Buscar y reemplazar difÃcil por fácil
- Ir a la primera lÃnea
- Grabar y salir forzadamente
2.- Crear grupo hackers
crear usuario tuxdark con grupo principal hackers y grupos adicionales
audio y video
3.- Crear un usuario luser1 con grupo luser1
crear un usuario luser2 con grupo /user2
agregar al grupo hackers los usuarios luser 1 y luser2,
4.- Crear directorio /var/www/imagenes
Cambiar de dueño (alumno) y grupo (alumno) al directorio creado, en forma
recursiva
5.- Cambiar de permisos al directorio anterior, dándole accesos totales en
forma recursiva
6.- Alterar el path para agregar una ruta del directorio bin dentro de la
carpeta de cualquier usuario
ej: /home/alumno/bin
Practica Dirigida
##########################################################
1.- Crear el siguiente script nomuere con el siguiente contenido
#!/bin/bash
while [ 1 ]; do
echo date >>/tmp/hora
sleep 5
done
MODULO AVANZADO
//////////////////////////////////////////////////////////////////////////////
/////
ping a google
$> ping www.google.com
ping a 8.8.8.8
$> ping 8.8.8.8
Actualización de la distro
------------------------------------------------------------------------
$> yum -y update
Usar elinks
##############################################################################
$> elinks -eval 'set connection.ssl.cert_verify=0' https://aulautil.com/curso-
linux-avanzado
user: aulautil
pass: XXXXXX
--> adelante
<-- atras
para escribir texto "Enter" en la caja de texto
TAB para desplazarse a la otra casilla
ESC para salir de las cajas de texto
q ---> salir
Instalación a través de ISO con un repo local (util cuando no hay interneto
éste es muy lento)
##############################################################################
#######################
Descargar el ISO Everything de CentOS desde los repos oficiales
Ej.
Crear carpeta
$> mkdir /centos7
* Nota
------------------------------------------------------------------------
Si se desea hacer permanente el punto de montaje
$> reboot
Ir al modo gráfico
$> init 5
KDE en español
$> yum -y install kde-l10n-Spanish --disablerepo=base --disablerepo=updates
Nota
------------------------------
Si ya no se quiere usar el repo local
$> rm -f /etc/yum.repos.d/local.repo
* Instalar epel
#############################################################################
$> yum -y install epel-release
Firewalls en Linux
A) El firewall de host (FIREWALL BASTION HOST) solo protege a la maquina local
o servidor
B) El firewall de red (FIREWALL PERIMETRAL) protege a la maquina local y redes
que pudieran estar detras de ella
Instalación de Endian
##############################################################################
#####
1.- Primero debemos poner al servidor centOS en una red DMZ y quitarle Ip
pública
------------------------------------------------------------------------------
-----
$> ssh root@149.56.218.201
$> vi /etc/sysconfig/network-scripts/ifcfg-ens18
DEVICE=ens18
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.3.1XX
PREFIX=24
GATEWAY=192.168.3.2XX
DNS1=8.8.8.8
$> reboot
Acceder a https://192.168.3.2XX:10443/
Click e Avanzado --> Añadir excepcion
Ping a 8.8.8.8
$> ping 8.8.8.8
Ubicaremos un rpm
ftp://ftp.pbone.net/mirror/elrepo.org/elrepo/el7/x86_64/RPMS/kmod-via-rhine-
1.5.1-1.el7.elrepo.x86_64.rpm
ó
$> nmtui
ó
Verficar si las interfaces de red (ens18, eth1, etc) estan linkeando, los
nombres de las tarjetas
------------------------------------------------------------------------------
----------------
se ven con el comando anterior
$> mii-tool ens18
$> ethtool ens18
$> ip link show
Ver tarjeta con state UP
Definir una IP
----------------------------------------
$> ifconfig ens18 192.168.3.X netmask 255.255.255.0
ó
$> ip addr add 192.168.3.X/24 dev ens18
Borrar una ip
-----------------------------------------
$> ip addr del 192.168.3.X/24 dev ens18
Pruebas de configuración
#################################################
Haciendo ping a la pasarela
$> ping 192.168.3.1
Rutas estáticas
###################################################################
Para agregar mas rutas de redes (ej, ruteando un radio enlace)
---------------------------------------------------------------------
$> route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.3.1 dev ens18
ó
$> ip route add 192.168.5.0/24 via 192.168.3.1 dev ens18
* En CentOS 6
----------------------------------------
$> vim /etc/sysconfig/network
HOSTNAME=vpsX.aulautil.com
Pruebas
---------------
$> ping vpsX (SQDN)
$> ping vpsX.aulautil.com (FQDN)
$> ping www.mocosoft.com (Dominio Ficticio)
Nota:
#########################################################
Para resolver los nombre de host a nivel de red se usa un servidor DNS
Bind ó dnsmasq
0 Apagar
1 Prueba de Fallos
2 Prueba de Fallos con red
3 consola estandar
4 consola estandar
5 consola estandar + modo grafico
6 reiniciar
$> init 5
CentOS 6
$> cat /etc/inittab (ver última lÃnea)
Cambiar el modo de arranque por defecto
################################################
CentOS 7
----------------------------------------
Nivel 3 (Server)
------------------------------------------------
$> rm -f /etc/systemd/system/default.target
$> ln -s /usr/lib/systemd/system/multi-user.target
/etc/systemd/system/default.target
Nivel 5 (Escritorio)
----------------------------------------------------
$> rm -f /etc/systemd/system/default.target
$> ln -sf /lib/systemd/system/runlevel5.target
/etc/systemd/system/default.target
ó
$> ln -sf /lib/systemd/system/graphical.target
/etc/systemd/system/default.target
CentOS 6
----------------------------------------------------
$> vim /etc/inittab (modificar la última lÃnea)
id:3:initdefault:
CentOS 6
##############################################
Reiniciar el servidor
cuando salga grub presionar
ESC
cuando sale la linea CentOS presionar e
ir a la linea donde dice kernel ..... y presionar e
escribir linux 1 luego Enter
y presiona b
* Grub 2 (CentOS 7)
#####################################################
Visualizar el archivo de configuración
.
.
.
.
Generar una nueva configuración de grub con valores por defecto de los S.O.
instalados
$> grub2-mkconfig -o /boot/grub2/grub.cfg
grub2> ls
2. El resultado de una tabla de particiones DOS /dev/sda con tres particiones
deberÃa ser algo parecido a esto:
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)
3. Mientras que el resultado de una tabla de particiones gpt /dev/sda con
cuatro particiones serÃa similar a la siguiente:
ls (hd0,1)/
Esto mostrará una lista de los archivos en /dev/sda1. Si esta partición
contiene /boot, la salida mostrará el nombre completo de vmlinuz e initramfs.
grub> boot
6. Después del arranque, abra un terminal.
grub2-mkconfig -o /boot/grub2/grub.cfg
8. Ejecute el comando grub2-install para instalar grub2 en el disco duro y
hacer uso de su configuración:
* Grub 1 (CentOS 6)
#####################################################
Fichero de grub
$> /etc/grub.conf
ó
$> /boot/grub/grub.conf
ó
$> /boot/grub/menu.lst
Ej:
* Reinstalación de Grub
############################################################################
Instalando grub
$> grub-install /dev/sda
Gestión de Servicios
################################################
CentOS 6
############################################
Listar todos los servicios
$> chkconfig --list
Iniciar un servicio
$> service rpcbind start
$> /etc/init.d/rpcbind start
Detener un servicio
$> service rpcbind stop
Reiniciar un servicio
$> service rpcbind restart
Deshabilitar NFS
$> service rpcbind stop
$> chkconfig rpcbind off
$> service nfslock stop
$> chkconfig nfslock off
Deshabilitar CUPS
$> service cups stop
$> chkconfig cups off
CentOS 7
#######################################
Listar todos los procesos del arranque
$> systemctl list-units
Deshabilitar un servicio
$> systemctl disable sshd.service
Iniciar un servicio
$> systemctl start sshd.service
Detener un servicio
$> systemctl stop sshd.service
Reiniciar un servicio
$> systemctl restart sshd.service
Deshabilitamos
------------------
$> systemctl stop rpcbind.socket
$> systemctl stop rpcbind.service
$> systemctl disable rpcbind.socket
$> systemctl disable rpcbind.service
Instalar paquete
$> rpm -ihv openvpn-2.4.3-1.el7.x86_64.rpm
Nota:
----------------------------------------
se puede instalar con YUM el rpm y resuelve las depencias y las instala
Desinstalar paquete
$> rpm -e openvpn
YUM
------------------------------------------------------------------------------
--------
Lista los repositorios configurados (archivos .repo)
$> ls -l /etc/yum.repos.d
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?
release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Buscar paquetes
$> yum search nmap
Desinstalar un paquete
$> yum remove nmap
Actualizar un paquete
$> yum update alsa-utils
Colecciones de Software
##########################################################
Existe un proyecto que permite instalar versiones actuales de
programas con sus librerÃas dependientes dentro de /opt
https://www.softwarecollections.org
Host Invitado (Guest): Máquina Virtual que se crea desde el Host Anfitrion
----------------------
TecnologÃas de Virtualización
#############################################################
Virtualización Completa
---------------------------------------------
KVM -----> Desarrollado por RedHat
Xen -----> Desarrollado Citrix
VirtualBox -----> Desarrollado por Oracle
VMWare(ESX) -----> Desarrollado por VMWare
Vritualización Ligera
----------------------------------------------
OpenVZ -----> Virtualización a nivel de núcleo con uso de templates
Docker -----> Virtualización a nivel de núcleo con uso de contenedores
Actualizar la distro
##############################################################
CentOS 7
==================================================
$> yum -y update
$> reboot
Ubuntu
================================================
$> sudo apt-get -y update
$> sudo apt-get -y dist-upgrade
$> reboot
CentOS 7
==================================================================
$> yum -y install kvm virt-manager libvirt qemu-kvm qemu-kvm-tools
Ubuntu 16.04
==============================================================================
$> sudo apt-get update
$> sudo apt-get install libvirt-bin qemu-kvm virt-manager virtinst virt-viewer
Ubuntu 16.04
=====================================================================
$> sudo systemctl restart libvirt-bin
$> sudo systemctl enable libvirt-bin
CentOS 7
$> virt-manager
Adelante
Adelante
Conectado a una red FÃsica
ReenvÃo a la red fÃsica Destino:cualquier dispositivo Modo: NAT
Nombre de dominio DNS: wan
Finalizar
Nombre: Server1
Medio de Instalación Local
* Notas
###############################################################
la configuración de la VM se guarda en
/etc/libvirt/qemu/Server.xml
ping a google
$> ping www.google.com
ping a 8.8.8.8
$> ping 8.8.8.8
==============================================================================
================================================
Configuración de la Interfaz Bridge en el host anfitrión (Con red Ethernet)
##############################################################################
#
Verifcar la interfaz activa, Ej: enp6s0
$> ip link show | grep "state UP"
Reiniciar la Red
#############################################
Apagar interfaz activa actual
$> ifdown enp6s0
Esperar un minuto
$> ping 192.168.20.1
$> ping 8.8.8.8
$> ping www.google.com
* VIRSH
###################################################################
Similar a virt-manager existe la herramienta virsh que funciona
por consola
Para salir
virsh> quit
Extra
##################################################################
Instalar PCI passthroug para que una máquina Windows tenga mejor
performance gráfico
http://www.firewing1.com/howtos/fedora-20/create-gaming-virtual-machine-using-
vfio-pci-passthrough-kvm
https://www.reddit.com/r/CentOS/comments/35j086/centos_7_and_pci_passthrough_q
uestion/
https://www.pugetsystems.com/labs/articles/Multiheaded-NVIDIA-Gaming-using-
Ubuntu-14-04-KVM-585/
DOCKER
#########################################################################
Habilitar contabilidad de la memoria y el swap
$> vim /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 crashkernel=auto
vconsole.font=latarcyrheb-sun16 rhgb quiet cgroup_enable=memory swapaccount=1"
Actualizar grub
$> grub2-mkconfig -o /boot/grub2/grub.cfg
$> grub2-install /dev/sda
Reiniciar
$> reboot
Iniciar servicio
$> systemctl start docker
Descarga de imágenes
#####################################################################
Buscar imágenes de contenedores disponibles de centos, incluido tags
$> docker search centos | less
Borrar un contenedor
-------------------------------------------------------------------
Detener primero el contenedor
$> docker kill cb8f352245a5
Borrar el contenedor
$> docker rm cb8f352245a5
Buscar el id de la imagen
$> docker images
Ejemplo Opcional
Se puede usar un puerto distinto en la máquina real
$> docker run -d -p 8080:80 -l apache2 -t tuxito/httpd /run-httpd.sh
*** Natear con Endian el puerto 80 desde la Ip pública a la IP del VPS CentOS
Reiniciar docker
$> systemctl restart docker
Gestión de Storage
##############################################################################
####
Los cambios que se dan en el contenedor se destruyen cuando se detiene este;
sin embargo desde la máquina real se le puede asignar un directorio en el
cual
el contenedor podrá escribir los cambios y de esta manera mantener archivos
persistentes
Contextos de SELINUX
------------------------------------------------------------------------------
------------
Si SELINUX esta en modo enforce es necesario brindarle el contexto web al
nuevo directorio
de la máquina real para que pueda ser accedido en el contenedor
Detener el contenedor
$> docker ps
$> docker stop IDContainer
i) Nombre de la máquina:
adsserver
j) Nombre de usuario para la cuenta
tuxito
Clave
Lolcito.123
h) Terminar la Instalación
Continuar
- Reboot de la VM
- Apagar la VM
- Cambiar el driver de video a "Cirrus"
- Opciones de Arranque, Habilitar el menú de Arranque
Primero debe estar VirtIO Disco
- Iniciar la máquina virtual
a) Configuración Inicial
Continuar
b) Roles del Servidor
Domain Controller and File Sharing
Instalar
c) Paquetes a Instalar
Continuar
d) Interfaces de red
eth0: Internal
Continuar
e) Método: Static
DIrección IP: 192.168.122.10
Máscara: 255.255.255.0
Puerta de Enlace: 192.168.122.254
Servidor de Nombres primario: 8.8.8.8
Continuar
f) Usuarios y Grupos
Rol: Servidor Standalon
Dominio: aulautil.local
Finalizar
Guardar
https://IPDeServidorZentyal:8443
Grupo de Seguridad
Nombre de Grupo: sistemas
Crear un usuario
------------------------------------------------------------------------------
--------------------
Seleccionar Users y el luego dar click al sÃmbolo + en la parte inferior de la
ventana derecha
Nombre de usuario: linuxero
Nombre: Linuxero
Apellido: Hacker
Contraseña: Linuxero1.
Grupo: Sistemas
Compartición de Ficheros
#######################################################################
Usuario/Grupo
----------------
Grupo: sistemas
Permisos
----------------
De lectura y escritura
Añadir
Guardar Cambios
Cliente gráfico
--------------------------------------------------------------------------
Con dolphin se puede visualizar las carpetas de un servidor Windows o Samba
Editar la dirección
smb://192.168.122.Y
Buscar un paquete
$> apt-cache search iftop
Instalar un paquete
$> apt-get -y install iftop vim
gerente
================================================================
Ir a Proxy --> Filtro de contenido
- click en "create profile"
- Nombre del perfil: gerente
- click en "Activar escaneo Antivirus"
- Click en Filter pages (URL BlackList)
Denegar: (click en fkecha verde y que se ponga rojo)
- Hacking & Warez
- Internet Threads
- Click en "crear perfil" --> Aplicar
asistente
================================================================
Ir a Proxy --> Filtro de contenido
- click en "create profile"
- Nombre del perfil: asistente
- click en "Activar escaneo Antivirus"
- Click en Filter pages (URL BlackList)
Denegar:
Hacking & Warez, Internet Threads, Adulto, Citas, Violencia,
Web proxies, Apuestas, Drogas
- Click en "crear perfil" --> Aplicar
empleado
================================================================
Ir a Proxy --> Filtro de contenido
- click en "create profile"
- Nombre del perfil: empleado
- click en "Activar escaneo Antivirus"
- Click en Filter pages (URL BlackList)
Denegar:
Internet, PiraterÃa, Adulto, Citas, Violencia, Web proxies,
Apuestas, Audio, Chat, Drogas, Juegos, Media,
Foros->Social Network
- Click en "crear perfil" --> Aplicar
limitado
================================================================
El usuario limitado se creará en PolÃtica de Acceso no necesita Fitro de
contenido
5.- Crear una GPO en el Active Directory para configurar el Proxy de Los
usuarios
##############################################################################
########################
WINDOWS 7
==============================================================================
==================
Cerrar la sesión de linuxero en Windows 7 y loguearse como domainadmin
Crear una GPO para preconfigurar el proxy del navegador
===============================================================
Descargar e Instalar Herramientas de administración remota del servidor
para Windows 7 con Service Pack 1 (SP1)
https://www.microsoft.com/es-ES/download/details.aspx?id=7887
Ir a panel de Control ---> Programas ---> iActivar, Descativar CaracterÃ-
sticas de Windows
Activar en
Herramientas de administración de CaracterÃsticas --> Herramientas de
administración de Directivas de Grupo
WINDOWS XP
==============================================================================
===================
Cerrar la sesión de linuxero en Windows XP y loguearse como domainadmin
descargar de aulautil archivos dotnetfx.exe y gpmc.msi, instalarlos
Crear una GPO para preconfigurar el proxy del navegador
===============================================================
Ejecutar desde menu inicio
gpmc.msc
click en Forest-->Domains-->dominioX.com
click derecho en Group Policy Object
click derecho en Default Domain Policy-->edit
User Configuration --> Windows Settings --> Internet Explorer
Maintenance--> Connection
doble click en Proxy Settings
Enable Proxy settings
1.-HTTP: 192.168.122.254 Port 3128 OK
cerrar sesión y entrar como linuxero y comprobar configuración del
proxy navegando
probar los filtros también como usuario gerentazo, windozero y luser
CentOS
================================================
$> yum -y install iptables-services
Ubuntu
================================================
$> sudo apt-get remove --purge ufw
Crear el script
Ejecutar el script
$> chmod 755 firewall-perimetral.sh
$> /root/firewall-perimetral.sh
SARG
==============================================================================
=====
Sarg viene preconfigurado en endian y generará reportes automáticos al
final del
dÃa, semana y mes
Los reportes de sarg se encuentran en
Registros --> Proxy --> Informe HTTP
# ACLs personalizados
#############################################################
acl gerentes src "/etc/squid/reglas/gerentes.ips"
acl asistentes src "/etc/squid/reglas/asistentes.ips"
acl usuarios src "/etc/squid/reglas/usuarios.ips"
acl limitados src "/etc/squid/reglas/limitados.ips"
#
# Recommended minimum Access Permission configuration:
#
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
------------------------------------------------------------------------------
---------------
Explicación de parámetros
##############################################################################
##############
Definición de Acls
--------------------------------------------------------------------------
acl nombredelacl tipodeacl valor tipos de acl
-------------------------------
src direccion o red de origen
port puerto de destino
proto proceso
dst direccion o red de destino
url_regex filtro de palabras en el URL
urlpath_regex extension de archivo
dstdomain dominio de destino
proxy_auth verifica autenticaciòn
time especifica una restricciòn
horaria
# Red local
8 acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
9 acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
10 acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
11 acl localnet src fc00::/7 # RFC 4193 local private network range
12 acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged)
machines
# dominios permitidos
38 acl listablanca dstdomain "/etc/squid/reglas/listablanca"
# dominios denegados
40 acl listanegra dstdomain "/etc/squid/reglas/listanegra"
# ips permitidos
42 acl ipsblancos dst "/etc/squid/reglas/ipsblancos"
# pornos
44 acl palabrasprohibidas url_regex "/etc/squid/reglas/palabrasprohibidas"
# hora de almuerzo
50 acl almuerzo time MTWHFS 13:00-14:00
$> cd /etc/squid
$> wget --user=aulautil --password=Tuxito,123 www.aulautil.com/curso-
centos7/reglas.tgz
$> tar -zxvf reglas.tgz
$> cd reglas
$> vim gerentes.ips
192.168.20.101
$> vim asistentes.ips
192.168.20.102
$> vim usuarios.ips
192.168.20.103
192.168.20.104
$> vim limitados.ips
192.168.20.105
ec
$> vim /root/firewall-bastion
.
.
$> ./firewall-bastion
SARG
--------------------------------------------------------------------
Sarg genera reportes diarios, semanales y mensuales, automaticamente
$> yum -y install gcc gd gd-devel make perl-GD wget httpd pcre-devel
$> cd
$> wget http://garr.dl.sourceforge.net/project/sarg/sarg/sarg-2.3.7/sarg-
2.3.7.tar.gz
$> tar -xvzf sarg-2.3.7.tar.gz
$> cd sarg-2.3.7/
$> ./configure
$> make
$> make install
$> vim /usr/local/etc/sarg.conf
7: access_log /var/log/squid/access.log
120: output_dir /var/www/sarg
216: date_format e
257 overwrite_report yes
<Directory /var/www/sarg>
Options Indexes FollowSymLinks
AllowOverride All
DirectoryIndex index.html
Order deny,allow
Allow from all
</Directory>
$> ./firewall-bastion
Acceder con
http://192.168.20.X/sarg
Compilar Programas
##############################################################################
##########################
Luego compilo
$> make
Notas
------------------------------------------------------------------------------
----
* Si falla algo en la compilación, ver los errores e instalar librerÃas
dependientes
* Si deseo recompilar
make clean ---> borra los binarios y librerÃas generados por el make en el
código fuente del programa
./configure
make
make install ---> chanca archivo de la instalación anterior
$> cd /opt/postgresql9
$> su - postgres
Verificar el servicio
$> netstat -nltp | grep 5432
test=# BEGIN;
test=# create table cliente(id INT, nombre varchar(150));
test=# INSERT INTO cliente(id,nombre) VALUES (1,'pepito');
test=# COMMIT;
test=# SELECT * FROM cliente;
Nota:
-------------------------------------------------------------------------
Si por ejemplo hubiese querido instalar el módulo de python para postgresql
necesitaba primero instalar python-devel
$> yum -y install python-devel
Si el make falla (libreria dependiente, paquete fuente, etc) ; ver los errores
Comprobamos la instalación en
/opt/postgresql9
CentOS 6
------------------------------------------------------------
ó
$> tzselect
2
37
1
* Modo gráfico
$> yum -y install system-config-date
$> system-config-date
CentOS 7
---------------------------------------------------------
Ver la configuración actual de la zona horaria
$> timedatectl
Reinicia el firewall
$> firewall-cmd --reload
$> crontab -e
# Minuto Hora DiaMes Mes DiaSemana Comando
# Ejecutar tarea a las los dias domingo del mes a las 11 p.m.
0 23 * * 7 date>>/root/lafecha
$> at 23:00
at> init 0
Crtl + d
Prueba de cliente
----------------------
$> ssh root@localhost (no funciona)
$> ssh -p 666 root@localhost (no funciona)
$> ssh -p 666 tuxito@localhost (si funciona)
Ver las sesiones abiertas (locales y remotas) y que comando se esta ejecutando
$> w
Ejecucion Local
$> mkdir /backup
1era ejecución de rsync, realiza una copia completa desde /etc a /backup/etc
$> rsync -avz /etc /backup
$> rm /etc/pruebita
# empaquetado diario
cd /backupremoto
FILE=etc-$(date +%Y-%m-%d).tgz
tar -zcvf $FILE etc
Copiar la clave publica generada al servidor remoto donde queremos acceder sin
contraseña
$> ssh-copy-id -i /root/.ssh/id_rsa.pub root@149.56.218.X
$> ./backup-etc-rsync
$> crontab -e
# Programando la tarea todos los dias a las 11 p.m.
0 23 * * * /root/backup-etc-rsync
Adelante
Adelante
Conectado a una red FÃsica
ReenvÃo a la red fÃsica Destino:cualquier dispositivo Modo: NAT
Nombre de dominio DNS: wan
Finalizar
Probar conexión
ping a Endian
cmd> ping 192.168.7.X
Iniciar VPN
$> systemctl start openvpn@server.service
Pruebas
----------------------------
Generar Clave
-----------------------
$> openvpn --genkey --secret /etc/openvpn/movil1.key
* COnfiguracion de firewall
Habilitar puerto udp 1195
* Configuracion de SELINUX
Habilitar puerto 1195 para el contexto openvpn_port_t
$> yum -y install policycoreutils-python
$> semanage port -a -t openvpn_port_t -p udp 1195
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key secret.key
secret movil1.key
Ejecutar en el VPS
==============================================================================
===
Utilidades de Discos:
-------------------------
fdisk,parted,mkfs,fsck,mount,df,blkid
--------------------------------------
$> fdisk -l
Muestra todas las particiones de todos los discos incluidos los discos usb
de una tabla de partición DOS
$> parted -l
Muestra todas las particiones de todos los discos incluidos los discos usb
de una tabla de partición DOS o GPT
$> df -h
Muestra informacion de las particiones montadas y los espacios usados
$> mount
Muestra los dispoditivos montados y sus opciones de montaje
$> su -
Ver los últimos cambios en el kernel al conectar un nuevo disco externo (ej:
usb)
$> dmesg
$> fdisk -l
este comando verifica como se detecto el disco ej:/dev/vdb
$> fdisk -l
d --> borra
n --> nuevamente crea particion
p --> lista las particiones
$> fdisk -l
Instalamos epel
$> yum -y install epel-release
Desmontar el /data2
$> umount /data2
ó
$> umount /dev/vdb2
Habilito ahora todas las particiones swap, para que se lea la nueva
partición
$> swapon -a
$> swapoff -a
$> swapon -a
Ej
UUID=d6b368fd-0009-450b-90ae-88a27e467e2b /data1 ext3 defaults 0 0
UUID=151acef4-d21c-487e-8a0f-008367142bdc swap swap defaults 0 0
Ayuda de parted
(parted) help
(parted) mkpart
¿Nombre de la partición? []? data2
¿Tipo de sistema de ficheros? [ext2]?
¿Inicio? 512
¿Fin? 1024
(parted) mkpart
¿Nombre de la partición? []? data3
¿Tipo de sistema de ficheros? [ext2]?
¿Inicio? 1024
¿Fin? 2147 (se ve en el detalle del disco)
(parted) quit
$> parted -l
$> parted -l
Llenamos la particion
$> yes > /home/data
$> df -h
$> pvscan
desmontamos el home
$> umount /home
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
Reiniciar NFS
$> systemctl restart nfs-server
Caso Práctico
##################################################################
(Compartir un iso de instalacion por NFS, para instalar por red), esto se usa
con un net-install o para máquinas Virtuales.
* ISCSI Server
##############################################################################
#############################
Vamos a configurar un servidor de storage en la máquina virtual compartiendo
discos
a través de iscsi
Configuración
$> vim /etc/iscsi/iscsid.conf
------------------------------------------------------------------------
41:node.startup = automatic
57:node.session.auth.authmethod = CHAP
61:node.session.auth.username = pepito
62:node.session.auth.password = pepito
------------------------------------------------------------------------
$> parted -l
$> mkfs.xfs /dev/sdb1
$> mkdir /data
$> mount /dev/sdb1 /data
$> yes > /data/boom
$> df -h
$> mount
Firewalls en Linux
##############################################################################
###################
- El firewall de host (FIREWALL BASTION HOST) solo protege a la maquina local
o servidor
- El firewall de red (FIREWALL PERIMETRAL) protege a la maquina local y redes
que pudieran estar detras de ella
HOST HOST
Servidor Cliente
________ ________
| |<-----------------------------| |
| ssh | -A INPUT -p tcp --dport 22 | | * Restricción de origen
| tcp | -m state --state | | INPUT: -s IPoHost
| 22 | NEW,ESTABLISHED,RELATED | |
| | | |
| | | |
| |----------------------------->| |
-------- -A OUTPUT -p tcp --sport 22 ---------
-m state --state OUTPUT: -d IPoHost
ESTABLISHED,RELATED
HOST HOST
Cliente Servidor
________ ________
| |----------------------------->| |
| ssh | -A OUTPUT -p tcp --dport 22 | ssh | * Restricción de
destino
| tcp | -m state --state | tcp | OUTPUT: -d IPoHost
| 22 | NEW,ESTABLISHED,RELATED | 22 |
| | | |
| | | |
| |<-----------------------------| |
-------- -A INPUT -p tcp --sport 22 ---------
-m state --state INPUT: -s IPoHost
ESTABLISHED,RELATED
Tabla FILTER
-----------------------------------------------------------
- INPUT paquete que entra al host
- OUTPUT paquete que salen del host
- FORWARD paquetes que pasa por el host (Firewall de perÃmetro)
Tabla NAT
-----------------------------------------------------------
-PREROUTING, permite asignar NAT de Destino (DNAT)
-POSTROUTING, permite asignar NAT Fuente (SNAT)
-INPUT
-OUTPUT
Tabla MANGLE
----------------------------------------------------------
- PREROUTING
- POSTROUTING
- INPUT
- OUTPUT
- FORWARD
IPTABLES
################################################################
Opciones del comando:
-P policy (politica por defecto) DROP, ACCEPT
-i input interface
-o output interface
-p protocol (tcp,udp,icmp
-s source address (IP o red de origen)
-d destination address (IP o red de destino)
-t table (tabla: filter, nat)
-A Append (agrega una regla en una chain cadena; al final)
filter: INPUT, OUTPUT, FORDWARD
nat: PREROUTING, POSTROUTING
-I Insert (agrega una regla en una chain al inicio)
-X Borra una regla en una chain
-F Borra todas las reglas de un chain
--sport source port (puerto de origen)
--dport destination port (puerto de destino)
-m module (modulo adiccional cargado)
ejemplo
-m multiport me da opciones
--sports (multiples puertos de origen)
-j jump (indica que hacer con el paquete) (DROP, ACCEPT, REJECT,
DNAT,SNAT,LOG)
----------------------------------------------------
-L lista las reglas definidas (apesta)
-S lista las reglas definidas (formato legible)
-n no resuelve nombres de host
-N crea una nueva cadena
===============================
$> systemctl stop firewalld (detiene el firewalld de CentOS y borra todas las
reglas)
$> iptables -S
------------------------------------------------------------------------------
--------------------------
echo "permitiendo acceso al servidor iscsi (protocolo tcp, puerto 3260) desde
ip del cliente iscsi "
iptables -A INPUT -p tcp --dport 3260 -s 192.168.7.X -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3260 -d 192.168.7.X -m state --state
ESTABLISHED,RELATED -j ACCEPT
Verificar reglas
$> iptables -S
SELINUX
------------------------------------------------------------------------------
--------
Selinux nos permite establecer restricciones de acceso a archivos procesos y
puertos
con el uso de contextos y boleanos
Por Defecto Linux usa el modelo de seguridad DAC (Control de Acceso Discreto)
La principal ventaja de MAC es que maneja la seguridad en los objetos
(Archivos y Directorios) y sujetos (procesos del sistema)
Cuando un sujeto, tal como una aplicación, intenta acceder a un objeto tal
como
a un archivo, el servidor de aplicación de polÃticas verifica un caché de
vector
de acceso (AVC), donde se registran los permisos de objeto y del sujeto. Si no
se
puede tomar una decisión basado en los datos en el AVAC, la petición
continua al
servidor de seguridad, el cual busca el contexto de seguridad de la
aplicación y
del archivo en una matriz. Los permisos son entonces otorgados o negados,
con un mensaje de avc: denied detallado en /var/log/messages.
Los sujetos y objetos reciben su contexto de seguridad a partir de la polÃtica
instalada, que también proporciona información para llenar la matriz de
seguridad
del servidor.
Contextos en SELINUX
-----------------------------------------------------------------------
Los contextos se aplican a procesos y archivos; cada proceso tiene
un contexto y muchas veces los archivos tienen que coincidir
con los contextos definidos para un proceso
Los comandos ps, ls, cp, mkdir, etc soportan la opción -Z
que permite visualizar los contextos
* Deshabilitar Docker
$> systemctl stop docker
$> systemctl disable docker
Instalamos apache
--------------------------
$> yum -y install httpd
$> systemctl start httpd
$> systemctl enable httpd
$> ls -Z /var/www
-----------> dominio
|
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons
$> cd
------> usuario
|
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
|
---------> dominio
$> ls -Z /var/www/html/index.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0
/var/www/html/index.html
Esto se debe a que los contextos (usuario,rol y dominio) deben ser iguales a
los del i
directorio contenedor
<VirtualHost *:80>
ServerName www.dominio1.com
DocumentRoot "/dominio1"
<Directory "/dominio1">
Options Indexes FollowSymLinks
DirectoryIndex index.html index.php
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
$> mkdir /dominio1
$> echo "hola mundo" > /dominio1/index.html
Reiniciamos
$> systemctl restart httpd
Accedemos a www.dominio1.com
$> wget www.dominio1.com
$> ls -Z /dominio1
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 /dominio1/index.html
Necesitamos que los contextos sean similares a los del drectorio /var/www/html
$> ls -Zd /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
$> ls -Z /dominio1
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
Boleanos de SELINUX
----------------------------
Los servicios tienen unos determinados boleanos asociados; algunos de estos
bienen deshabilitados; por eso podemos habilitarlos dependiendo como los
necesitemos
Ejecuto entonces
$> setsebool -P httpd_can_network_connect on
$> setsebool -P httpd_can_sendmail on
y pruebo el script
Descargamos
$> wget http://localhost/test.html
--2012-01-05 14:15:17-- http://localhost/test.html
Resolviendo localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... conectado.
Petición HTTP enviada, esperando respuesta... 403 Forbidden
2012-01-05 14:15:17 ERROR 403: Forbidden.
Comprobar Registro
---------------------------------------------------------
Services --> My Domains
* Freenom
Services --> My Domains
click en la fila del dominio en el botón "Manage Domain"
Management Tools --> Register Glue Records
Register a NameServer Name
Namserver: NS1
IP: 149.56.218.201 Save Changes
Click en Back
y nombres de hosts en
/etc/hosts
DNS WAN: Es el servidor DNS que resuelve con Ips públicas los nombres de
nuestros dominios
Ej: ns1.telmex.net.pe
ns1.tudominio.com
DNS DMZ: Es el servidor DNS que resuelve con Ips privadas los nombres de los
servidores de la DMZ
solo se usa en DMZ, no debe ser usado en la LAN
DNS LAN: Es el servidor DNS que resuelve con Ips privadas los nombres de los
servidores de la DMZ
asà como los nombres de los equipos de la LAN; no debe ser usado en
la DMZ
Registros de DNS
------------------------------------------------------------------------
A Zona de dominio (ej: www.dominio.com)
NS Name Server (Servidores DNS del dominio)
SOA Servidor DNS principal (Server of Authorization)
MX Servidores de correo (Mail Exchange)
TXT Información adicional del dominio (ej: SFP para hotwww)
CNAME Alias de una zona de dominio (ej: web --> www.dominio.com)
PTR Resolución inversa
Ejercicios:
Registro A
-----------------------------------------------------------------------------
Verificar la zona de dominio www.sunat.gob.pe
;; ANSWER SECTION:
www.sunat.gob.pe. 5 IN A 190.102.150.200 ----->
respuesta
Registro NS
-----------------------------------------------------------------------------
Verificar los DNS Server de sunat.gob.pe
$> dig NS sunat.gob.pe
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sunat.gob.pe. IN NS
;; ANSWER SECTION:
sunat.gob.pe. 2257 IN NS ns2.telmex.net.pe.
sunat.gob.pe. 2257 IN NS ns1.telmex.net.pe.
Registro MX
-----------------------------------------------------------------------------
Verificar los servidores de correo de sunat.gob.pe
$> dig MX sunat.gob.pe
;; QUESTION SECTION:
;sunat.gob.pe. IN MX
;; ANSWER SECTION:
sunat.gob.pe. 6245 IN MX 10 mx1.sunat.gob.pe.
sunat.gob.pe. 6245 IN MX 10 mx2.sunat.gob.pe.
sunat.gob.pe. 6245 IN MX 10 mx4.sunat.gob.pe.
sunat.gob.pe. 6245 IN MX 10 mx5.sunat.gob.pe.
sunat.gob.pe. 6245 IN MX 20 mx3.sunat.gob.pe.
sunat.gob.pe. 6245 IN MX 20 mx6.sunat.gob.pe.
Alta Disponibilidad
------------------------
sunat.gob.pe. IN MX 10 ns.sunat.gob.pe.
sunat. gob.pe. IN MX 20 ns1.sunat.gob.pe.
Registro PTR
------------------------------------------------------------------------------
--
El PTR verifica que una IP tenga un nombre de hosts, normalmente se aplica a
los servidores de correo
;; ANSWER SECTION:
mx1.sunat.gob.pe. 1310 IN A 181.65.173.25
;; ANSWER SECTION:
25.173.65.181.in-addr.arpa. 3596 IN PTR mx1.sunat.gob.pe.
;; ANSWER SECTION:
sunat.gob.pe. 7199 IN TXT "v=spf1 mx
include:spf.masterbase.com ~all"
;; QUESTION SECTION:
;sunat.gob.pe. IN ANY
;; QUESTION SECTION:
;sunat.gob.pe. IN ANY
;; ANSWER SECTION:
sunat.gob.pe. 6926 IN TXT "v=spf1 mx
include:spf.masterbase.com ~all"
sunat.gob.pe. 5362 IN MX 20 mx6.sunat.gob.pe.
sunat.gob.pe. 5362 IN MX 10 mx1.sunat.gob.pe.
sunat.gob.pe. 5362 IN MX 10 mx2.sunat.gob.pe.
sunat.gob.pe. 5362 IN MX 10 mx4.sunat.gob.pe.
sunat.gob.pe. 5362 IN MX 10 mx5.sunat.gob.pe.
sunat.gob.pe. 5362 IN MX 20 mx3.sunat.gob.pe.
sunat.gob.pe. 1088 IN NS ns1.telmex.net.pe.
sunat.gob.pe. 1088 IN NS ns2.telmex.net.pe.
;; AUTHORITY SECTION:
sunat.gob.pe. 1734 IN SOA ns1.telmex.net.pe.
dnsmaster.telmex.net.pe. 2014101302 5400 600 90000 7200
Vemos que no está configurado el dominio raÃz como zona A (mala práctica)
options {
// Ips en la que el demonio named escuchará las peticiones
// 149.56.114.X es la Ip pública del servidor zimbra
listen-on port 53 { 192.168.3.X;};
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// este parametro permite establecer quienes pueden usar el servidor DNS
allow-query { localhost; any; };
// este parametro permite reenviar las consultar hacia el servidor DNS
publico;
// para aquellos dominios que no se resuelven en este servidor
forwarders { 8.8.8.8; };
forward first;
allow-transfer {"none";};
recursion no;
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside auto;
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
include "/etc/named.rfc1912.zones";
-------------------------------------------------------------------------
* Instalar firewalld
$> yum -y install firewalld
$> systemctl enable firewalld
$> systemctl start firewalld
Capitulo 18: Servidor Web (Apache + MySQL + PHP), Wordpress, FTP, PHPMyAdmin
##############################################################################
##########
Instalacion de paquetes con Webtatic (php 5.6)
-----------------------------------------------------------------------
$> rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-
7.noarch.rpm
$> rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
VirtualHost en Apache
################################################################
$> vim /etc/httpd/conf.d/vhosts.conf
-----------------------------------------------------------
<VirtualHost *:80>
ServerName aulautil.tk
ServerAlias www.aulautil.tk
DocumentRoot "/var/www/html"
DirectoryIndex index.html index.php
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>
<VirtualHost *:80>
ServerName intranet.aulautil.tk
DocumentRoot "/var/www/intranet"
DirectoryIndex index.html index.php
<Directory "/var/www/intranet">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd/intranet.aulautil.tk-error_log
CustomLog /var/log/httpd/intranet.aulautil.tk-access_log combined
</VirtualHost>
--------------------------------------------------------------------------
Proxy Reverso
################################################################
* Instalación de tomcat
$> yum -y install java-1.7.0-openjdk
$> cd /opt
$> wget http://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.79/bin/apache-
tomcat-7.0.79.tar.gz
$> tar -zxvf apache-tomcat-7.0.79.tar.gz
$> mv apache-tomcat-7.0.79 tomcat
Iniciar Tomcat
$> /opt/tomcat/bin/catalina.sh start
WORDPRESS CMS
##############################################################################
##########
Wordpress es el CMS más popular del mundo; un cuarto de webs en el mundo
estan hechos con
Wordpress; existen muchos templates para Wordpress en https://themeforest.net
y su
hermano no reconocido https://gfxnull.net :D
Proceso de Instalación
==============================================================================
=
Primero creamos una base de datos y un usuario para wordpress
-------------------------------------------------------------------
$> systemctl start mariadb
$> systemctl enable mariadb
$> mysql -u root -p
mysql> quit
Instalar wordpress
-------------------------------------------------------------------------
$> cd /var/www
$> wget https://pe.wordpress.org/wordpress-4.7.2-es_PE.tar.gz
$> tar -zxvf wordpress-4.7.2-es_PE.tar.gz
$> mv html html_old
$> mv wordpress html
$> restorecon -RFvv /var/www
$> cd html
$> cp wp-config-sample.php wp-config.php
$> vim wp-config.php
----------------------------------------------------------------------------
/** El nombre de la base de datos de WordPress */
23: define('DB_NAME', 'portal');
49:define('AUTH_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('SECURE_AUTH_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('LOGGED_IN_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('NONCE_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('AUTH_SALT', '.AKzSr6A3JaDLSDN.#T1231');
define('SECURE_AUTH_SALT', '.AKzSr6A3JaDLSDN.#T1231');
define('LOGGED_IN_SALT', '.AKzSr6A3JaDLSDN.#T1231');
define('NONCE_SALT', '.AKzSr6A3JaDLSDN.#T1231');
------------------------------------------------------------------------------
Acceder a
http://www.aulautil.tk
Continuar
Movemos la el theme
$> mv Avada Avadadw
$> mv Avadadw/Avada .
Reiniciar Vsftp
$> systemctl restart vsftpd
$> systemctl enable vsftpd
# END WordPress
----------------------------------------
##############################################################################
###########
Si quiero correr https con el certificado por defecto que viene en centos
$> yum -y install mod_ssl openssl
$> systemctl restart httpd
Entrar a https://www.aulautil.tk
Reiniciamos Apache
$> systemctl restart httpd
Administración de MySQL
##############################################################
Por consola
$> mysql -u root -p
Entrar a http://www.aulautil.tk/phpmyadmin
usuario: root
clave: Lolcito.123
Backup Y restauración
------------------------------------
Generar Backup
--------------------------
Genearar un DUMP de todas las bases de datos
$> mysqldump -u root -p --all-databases > alldata.sql
Restaurar el Backup
-----------------------
Ej:
$> mysql -u root -p
mysql> DROP DATABASE portal;
mysql> quit
Configuración y Tunning de BD
-----------------------------------
$> vim /etc/my.cnf (Archivo de configuración de MySQL)
Parámetros de Tuning
-------------------------------------
https://www.percona.com/blog/2014/01/28/10-mysql-performance-tuning-settings-
after-installation/
Capitulo 18: Servidor Web (Apache + MySQL + PHP), Wordpress, FTP, PHPMyAdmin
##############################################################################
##########
Instalacion de paquetes con Webtatic (php 5.6)
-----------------------------------------------------------------------
$> rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-
7.noarch.rpm
$> rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
VirtualHost en Apache
################################################################
$> vim /etc/httpd/conf.d/vhosts.conf
-----------------------------------------------------------
<VirtualHost *:80>
ServerName aulautil.tk
ServerAlias www.aulautil.tk
DocumentRoot "/var/www/html"
DirectoryIndex index.html index.php
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>
<VirtualHost *:80>
ServerName intranet.aulautil.tk
DocumentRoot "/var/www/intranet"
DirectoryIndex index.html index.php
<Directory "/var/www/intranet">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd/intranet.aulautil.tk-error_log
CustomLog /var/log/httpd/intranet.aulautil.tk-access_log combined
</VirtualHost>
--------------------------------------------------------------------------
* Instalación de tomcat
$> yum -y install java-1.7.0-openjdk
$> cd /opt
$> wget http://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.79/bin/apache-
tomcat-7.0.79.tar.gz
$> tar -zxvf apache-tomcat-7.0.79.tar.gz
$> mv apache-tomcat-7.0.79 tomcat
Iniciar Tomcat
$> /opt/tomcat/bin/catalina.sh start
WORDPRESS CMS
##############################################################################
##########
Wordpress es el CMS más popular del mundo; un cuarto de webs en el mundo
estan hechos con
Wordpress; existen muchos templates para Wordpress en https://themeforest.net
y su
hermano no reconocido https://gfxnull.net :D
Proceso de Instalación
==============================================================================
=
Primero creamos una base de datos y un usuario para wordpress
-------------------------------------------------------------------
$> systemctl start mariadb
$> systemctl enable mariadb
$> mysql -u root -p
mysql> quit
Instalar wordpress
-------------------------------------------------------------------------
$> cd /var/www
$> wget https://pe.wordpress.org/wordpress-4.7.2-es_PE.tar.gz
$> tar -zxvf wordpress-4.7.2-es_PE.tar.gz
$> mv html html_old
$> mv wordpress html
$> restorecon -RFvv /var/www
$> cd html
$> cp wp-config-sample.php wp-config.php
$> vim wp-config.php
----------------------------------------------------------------------------
/** El nombre de la base de datos de WordPress */
23: define('DB_NAME', 'portal');
/** Nombre de usuario de la base de datos de MySQL */
define('DB_USER', 'wptux');
49:define('AUTH_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('SECURE_AUTH_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('LOGGED_IN_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('NONCE_KEY', '.AKzSr6A3JaDLSDN.#T1231');
define('AUTH_SALT', '.AKzSr6A3JaDLSDN.#T1231');
define('SECURE_AUTH_SALT', '.AKzSr6A3JaDLSDN.#T1231');
define('LOGGED_IN_SALT', '.AKzSr6A3JaDLSDN.#T1231');
define('NONCE_SALT', '.AKzSr6A3JaDLSDN.#T1231');
------------------------------------------------------------------------------
Acceder a
http://www.aulautil.tk
Continuar
Movemos la el theme
$> mv Avada Avadadw
$> mv Avadadw/Avada .
Configurar vsftpd
$> vim /etc/vsftpd/vsftpd.conf (agregar al final)
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=64000
pasv_max_port=64321
Reiniciar Vsftp
$> systemctl restart vsftpd
$> systemctl enable vsftpd
Habilitar htaccess
==============================================================================
===============
$> vim /var/www/html/.htaccess
----------------------------------------
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
----------------------------------------
##############################################################################
###########
Si quiero correr https con el certificado por defecto que viene en centos
$> yum -y install mod_ssl openssl
$> systemctl restart httpd
Entrar a https://www.aulautil.tk
Reiniciamos Apache
$> systemctl restart httpd
Administración de MySQL
##############################################################
Por consola
$> mysql -u root -p
Entrar a http://www.aulautil.tk/phpmyadmin
usuario: root
clave: Lolcito.123
Backup Y restauración
------------------------------------
Generar Backup
--------------------------
Genearar un DUMP de todas las bases de datos
$> mysqldump -u root -p --all-databases > alldata.sql
Restaurar el Backup
-----------------------
Ej:
$> mysql -u root -p
mysql> DROP DATABASE portal;
mysql> quit
Comprobar errores
$> mysqlcheck -u root -p --all-databases
Corregir errores ( ejemplo db portal tabla users);
Configuración y Tunning de BD
-----------------------------------
$> vim /etc/my.cnf (Archivo de configuración de MySQL)
Parámetros de Tuning
-------------------------------------
https://www.percona.com/blog/2014/01/28/10-mysql-performance-tuning-settings-
after-installation/
$> exit
Volver a loguearse
Editar el localhost para que dnsmasq solo escuche en 127.0.0.1 y reenvie las
consultas a google
$> vim /etc/dnsmasq.d/localhost.conf
listen-address=127.0.0.1
port=53
server=8.8.8.8
bind-interfaces
Comprobacion
==============================================================================
===============
$> yum -y install bind-utils
instalar dependencias
$> yum install -y perl perl-core nmap sudo libidn gmp libaio libstdc++ unzip
sysstat sqlite
Deshabilitar postfix
$> systemctl stop postfix
$> systemctl disable postfix
Detener apache
$> systemctl stop httpd
OpenSource Edition
--------------------------------------------------------------
$> tar -zxvf zcs-8.6.0_GA_1153.RHEL7_64.20141215151110.tgz
$> cd zcs-8.6.0_GA_1153.RHEL7_64.20141215151110
Instalar zimbra
##############################################################################
###########
$> ./install.sh (RHEL 7)
Do you agree with the terms of the software license agreement? [N] Y
Volver a instalar
$> ./install.sh --platform-override
##############################################################################
##################
UDP
----
53
PANEL DE ADMINISTRACION
https://mail.aulautil.tk:7071
usuario: admin
clave: AulaUtil1.
WEBMAIL
https://mail.aulautil.tk
usuario: admin
clave: AulaUtil1.
Upgrade de Zimbra
##############################################################################
######
El upgrade se tiene que hacer con cuidado con un backup previo, porque puede
fallar
Deshabilitar selinux
$> setenforce 0
Configurar Nagios
$> vim /etc/nagios/nagios.cfg
34:cfg_file=/etc/nagios/objects/services.cfg
cfg_file=/etc/nagios/objects/hosts.cfg
cfg_file=/etc/nagios/objects/windows.cfg
define host{
use generic-host
host_name mail.aulautil.com
alias servidor web smtp
address 192.168.122.2
max_check_attempts 20
contacts nagiosadmin
}
define host{
use generic-host
host_name adsserver.aulautil.local
alias servidor web smtp
address 192.168.122.10
max_check_attempts 20
contacts nagiosadmin
}
-----------------------------------------------------------
$> vim /etc/nagios/objects/services.cfg
-------------------------------------------------
define service{
use generic-service
host_name mail.aulautil.com
service_description HTTP
check_command check_http
}
define service{
use generic-service
host_name mail.aulautil.com
service_description SMTP
check_command check_smtp
}
-------------------------------------------------
Iniciar Nagios
$> systemctl start nagios
$> systemctl enable nagios
Deshabilitar SELINUX
$> setenforce 0
Detener el firewall
$> /usr/libexec/iptables/iptables.init stop
Acceder a Nagios
http://192.168.122.2/nagios
user:nagiosadmin
pass:alumno
CapÃtulo 21: Sistema de Prevención de Intrusos (IPS)
###################################################################
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto br0
iface br0 inet static
address 192.168.20.150
netmask 255.255.255.0
gateway 192.168.20.1
bridge_ports eth0 eth1
bridge_stp off
bridge_fd 0
bridge_maxwait 0
-----------------------------------------------------
EJ:
Endian --> 192.168.3.201
VPS Linux --> 192.168.3.101 mask: 24 gw: 192.168.3.151
IPS --> 192.168.3.151 mask: 24 gw: 192.168.3.201
Deshabilitar el firewall
$> sudo su -
$> ufw disable
Desintalar ufw
$> apt-get remove --purge ufw
$> reboot
Deshabilitar OSSEC
$> /etc/init.d/ossec-hids-server stop
$> update-rc.d ossec-hids-server disable
Simular un ataque
$> nikto -h www.tudominio.tk
$> nikto -h intranet.tudominio.tk
FIREWALL BASTION
#!/bin/bash
# Firewall Bastion Aula Útil
# https://aulautil.com
# 2016
echo "habilitando navegacion a internet desde nuestro host hacia los puertos
NFS"
iptables -A OUTPUT -p tcp -m multiport --dports 662,875,892,2049,32803,20048
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --sports 662,875,892,2049,32803,20048 -m
state --state ESTABLISHED,RELATED -j ACCEPT
echo "habilitando las consultas DNS y acceso NFS desde nuestro host"
iptables -A OUTPUT -p udp -m multiport --dports
53,111,662,875,892,2049,32769,20048 -m state --state NEW,ESTABLISHED,RELATED
-j ACCEPT
iptables -A INPUT -p udp -m multiport --sports
53,111,662,875,892,2049,32769,20048 -m state --state ESTABLISHED,RELATED -j
ACCEPT
#!/bin/bash
# Firewall hecho por Tuxito
# https://aulautil.com es cool
# 2016
INSTALL FAIL2BAN
#!/bin/bash
# Script de instalación de fail2ban
# creado por Clever Flores para Aula Útil
# clever@aulautil.com
# clever@cloudperu.pe
# Licencia GPL v2
# Copyleft 2016
REDLOCAL=192.168.3.0/24
MAILADMIN=tuxito@tudominio.tk
function installFail2Ban {
echo instalando fail2ban
yum -y install epel-release
yum -y install fail2ban
echo "[DEFAULT]
ignoreip = 127.0.0.1 $REDLOCAL
bantime = 600
findtime = 600
maxretry = 3
backend = auto
# Default action to take: ban only
action = iptables[name=%(__name__)s, port=%(port)s]
[ssh-iptables]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
action = iptables-allports[name=SSH-iptables]
sendmail[name=SSH, dest=$MAILADMIN]
maxretry = 3
[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=Zimbra-account]
sendmail[name=FAIL2Ban, dest=$MAILADMIN]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5
[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=Zimbra-audit]
sendmail[name=Zimbra-audit, dest=$MAILADMIN]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5
[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=Zimbra-recipient]
sendmail[name=Zimbra-recipient, dest=$MAILADMIN]
logpath = /var/log/zimbra.log
#findtime = 604800
bantime = 172800
maxretry = 5
[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=Postfix, port=smtp, protocol=tcp]
sendmail[name=Postfix, dest=$MAILADMIN]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5
[sasl-iptables]
enabled = false
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, dest=$MAILADMIN]
logpath = /var/log/zimbra.log
[zimbra-webmail]
enabled = true
filter = zimbra
action = iptables[name=Zimbra-webmail, port=https, protocol=tcp]
iptables[name=Zimbra-webmail, port=http, protocol=tcp]
sendmail[name=Zimbra-webmail, dest=$MAILADMIN]
logpath = /opt/zimbra/log/audit.log
bantime = -1
maxretry = 5" > /etc/fail2ban/jail.conf
echo '[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = \[ip=<HOST>;\] account - authentication failed for .* \(no such
account\)$
\[ip=<HOST>;\] security - cmd=Auth; .* error=authentication failed
for .*, invalid password;$
;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap;
error=authentication failed for .* invalid password;$
\[oip=<HOST>;.* SoapEngine - handler exception: authentication
failed for .*, account not found$
WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security -
cmd=AdminAuth; .* error=authentication failed for .*;$
NOQUEUE: reject: RCPT from .*\[<HOST>\]: 550 5.1.1 .*: Recipient
address rejected:
# .*\[ip=<HOST>;\] .* - authentication failed for .* \(invalid password\)
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =' > /etc/fail2ban/filter.d/zimbra.conf
[Definition]
failregex = WARN [.*] [name=.*;ip=;ua=.*;] security – cmd=Auth; account=.*;
protocol=.*; error=.*, invalid password;
ignoreregex =' > /etc/fail2ban/filter.d/zimbra-webmail.conf
[INCLUDES]
before = sendmail-common.conf
[Definition]
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionban = printf %%b "Subject: [Fail2Ban] <name>: banned <ip> from `uname
-n`
Date: `LC_ALL=C date +"%%a, %%d %%h %%Y %%T %%z"`
From: <sendername> <<sender>>
To: <dest>\n
Hi,\n
The IP <ip> has just been banned by Fail2Ban after
<failures> attempts against <name>.\n
Regards,\n
Fail2Ban" | /opt/zimbra/postfix/sbin/sendmail -f <sender> <dest>
[Init]
installFail2Ban