Administración de servicios mediante servidores Linux

Curso Avanzado de GNU/Linux

Creado por: Arturo Martín Romero / amartinromero@gmail.com

Si lo deseas cambia el Tipo de Transición y/o Plantilla:
Default - None - Simple - Fade y Beige - Slide y Serif - Concave y Beige - Zoom y Serif - Zoom y Night - Solarized - Fade y Sky - Serif - Moon

[Imprimir en PDF]

Questiones Previas:

Para el conseguir el máximo aprovechamiento del curso es aconsejable estar familiarizado con algún entorno GNU/Linux


  1. ¿Cuántos de vosotros trabajáis habitualmente bajo algún Entorno GNU/Linux?
  2. ¿Cuántos trabajais normalmente en vuestra casa con GNU/Linux?

Contenidos del Curso:

  • Primera Parte ( lunes, 16 Nov 2015 ):

    1. Breve Personalización del Entorno Gnome Shell (Gnome3)
    2. Niveles de Arranque en Linux (RunLevels). Configuración de servicios
    3. Uso de Claves asimétricas PGP. Cifrado de la información y Firma de documentos
    4. Copias de seguridad (backups) almacenadas en remoto y cifradas

Entorno Gnome Shell - Gnome3

A la hora de personalizar el entorno Gnome Shell podemos empezar por los siguientes aspectos:

  1. Instalar Gnome-Shell: apt-get install gnome-shell
  2. Instalar tweak-tool: apt-get install tweak-tool
  3. Instalar extensiones desde mozilla
  4. Instalar un Dock (Dockly, Cairo, etc.)
  5. Instalar evolution (calendario)
  6. Configurar accesos Rápidos (teclado)
  7. Varios Escritorios, ...

Modos de Arranque - Runlevels

Los sistemas GNU/Linux pueden iniciarse en diferentes modos de arranque configurables. En función del modo de arranque podemos iniciar unos servicios u otros [runlevels]


$ runlevel
$ more /etc/init/rc-sysinit.conf | grep 'env DEFAULT_RUNLEVEL'
        

Mediante el comando update-rc.d podemos decidir que servicios se inician en cada modo de arranque [man update-rc.d]. Otra alternativa es usar sysv-rc-conf

Modos de Arranque - Runlevels

El uso del comando update-rc.d es muy sencillo, aunque puede hacerse manualmente mediante la creación o eliminación de enlaces simbólicos:


# update-rc.d nombre-servicio enable|disable|start|stop|defaults opciones
        

# update-rc.d apache2 enable|disable 2
# update-rc.d ssh start 20 2 3 4 5 . stop 20 0 1 6 .
# update-rc.d ssh defaults
# update-rc.d -f apache2 remove
        

# apt-get install sysv-rc-conf
# sysv-rc-conf
        
Para ver que servicios se inician al arrancar [+] podemos ejecutar el comando service --status-all [man service]

Modos de Arranque - Runlevels

Clasicamente se usaba chkconfig para la gestión de los servicios:


# chkconfig --level niveles nombre-servicio off|on

# chkconfig -l
# chkconfig --list | grep apache2
# chkconfig --level 2345 apache2 off

Modos de Arranque - Runlevels - Ej. I

Ej. “Crea un script que se ejecute al arrancar el equipo de tal forma que audite en un archivo el momento en que se ha iniciado ”

        [1] nano /etc/init.d/auditar-arranque
        

[2] #!/bin/bash
    date +"%Y-%m-%d %H:%M Servidor Iniciado" >> /root/auditar-arranque.txt
        

        [3] chmod +x /etc/init.d/auditar-arranque
        

        [4] ln -s /etc/init.d/auditar-arranque /etc/rc2.d/S99auditar-arranque
        

Modos de Arranque - Runlevels - Ej. I (Cont)

Ej. “Con la finalidad de completar el ejercicio anterior, mediante la ayuda de la clase PHP phpmailer envía un email al destinatario que tu elijas informando del arranque del servidor”

[1] apt-get install php5
    nano /etc/init.d/auditar-arranque
        

[2] #!/bin/bash
    date +"%Y-%m-%d %H:%M Servidor Iniciado" >> /root/auditar-arranque.txt
    php /home/arturo/mandar-correo/mandar-correo.php
        
Para descargarse phpmailer: PHPMailer

Modos de Arranque - Runlevels - Ej. I (Cont)

El contenido del archivo mandar-correo.php podrá ser el siguiente (lo más básico):


Mailer = "smtp";
$mail->Host = "ssl://smtp.gmail.com";
$mail->Port="465";
$mail->SMTPAuth = true;
$mail->Timeout=30;
// Indicamos la cuenta de gmail desde la que se envía el email
$usuario_gmail = "alumnoiestm@gmail.com";
$alias_remitente_email = "Aviso Arranque Servidor - Email ".$fecha[0];
$pass_usuario_gmail = "alumno1234";
$mail->From = $usuario_gmail;
$mail->FromName = $alias_remitente_email;
$mail->Username = $usuario_gmail;
$mail->Password = $pass_usuario_gmail;
$numEmails = 1;
$email = array ("amartinromero@gmail.com");
for ($i=0; $i<$numEmails; $i++){
$mail->AddAddress($email[$i]);
}
// Indicamos el asunto y el cuerpo del mensaje (se puede usar lenguaje HTML)
$asunto = "Aviso Arranque Servidor ".$fecha[0];
$cuerpoMail = "

Se ha Arrancado el Servidor
".$fecha2[0]."

Mensaje de aviso ...

Arturo Martín Romero
"; $mail->Subject = $asunto; $mail->Body = $cuerpoMail; $mail->AltBody = $cuerpoMail; // Finalmente enviamos el email echo "Se va a enviar el email con todos los informes adjuntos!!"; $resultado = $mail->Send(); ?>

Aplicaciones al Inicio

A parte de los servicios iniciados en /etc/rc2.d, podemos personalizar el comportamiento de nuestro equipo al iniciar la sesión gráfica mediante Aplicaciones al Inicio


Claves Asímetricas GPG - Cifrado y Firma Digital

Actualmente se hace uso de claves asímetricas tanto para la garantizar tres aspectos básicos en las comunicaciones seguras: autenticiad, integridad, confidencialidad y no repudio.


¿Cómo Cifrar un documento mediante claves asimétricas?

Para asegurar la confidencialidad entre dos usuarios será necesario intercambiarse las claves públicas. Concretamente, si queremos mandar un archivo de manera cifrada a otra persona, y queremos asegurarnos de que sólo lo va a leer esa persona, necesitaremos que esa persona nos haya enviado previamente su clave pública y hayamos hecho uso de ella para el cifrado.


¿Cómo Cifrar un documento mediante claves asimétricas?


Para consultar solución: Libro Seguridad

¿Cómo Firmar un documento mediante claves asimétricas?

Para asegurar la autenticidad, integridad y no repudio entre dos usuarios será necesario intercambiarse las claves públicas. Concretamente, si queremos mandar un archivo firmado a otra persona será necesario firmarlo mediante la clave privada que se tenga, y posteriormente el receptor deberá verificarlo mediante la correspondiente clave pública.


¿Cómo Firmar un documento mediante claves asimétricas?


Para consultar solución: Libro Seguridad

¿Cómo Firmar un documento mediante claves asimétricas?


Para consultar solución: Libro Seguridad

¿Cómo Firmar un documento mediante claves asimétricas?


Para consultar solución: Libro Seguridad

Uso de Claves Asimétricas en SSH/SCP/SFTP

SSH también hace uso de claves asimétricas para la comunicación


    apt-get install openssh-server
    

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub arturo@192.168.1.100
    

Creación de Copias de seguridad Cifradas en Remoto

Duplicity es una fabulosa herramienta que nos va a permitir crear copias de seguridad incrementales o totales de los archivos que deseemos, permitiendonos simultáneamente cifrar y enviar a un servidor de almacenamiento remoto.


apt-get install software-properties-common python-software-properties
add-apt-repository ppa:duplicity-team/ppa
apt-get update
apt-get install duplicity python-paramiko
    

apt-cache policy python-paramiko
sudo apt-get install python-pip
pip freeze | grep paramiko (1.10)
sudo pip install paramiko --upgrade
pip freeze | grep paramiko (>1.10)
    

Creación de Copias de seguridad Cifradas en Remoto

Creación de Copias de seguridad Cifradas en Remoto

La realización de backups con duplicity puede hacerse de tipo full o incremental, pudiendose indicar como parámetro en la llamada: ./script-backup.sh full|incremental


#!/bin/bash
export PASSPHRASE="1234"
if duplicity $1 --encrypt-key "E8DAE5E7" --sign-key "E8DAE5E7" \
	--include /home/dga/Documentos \
	--include /home/dga/Informes \
	--include /home/dga/Confidencial \
	--exclude '**' \
	/home/dga scp://dga@192.168.56.102/curso11 | tee /home/dga/auditoria.log
then
	php /home/dga/mandar-correo/mandar-email-exito.php
else
	php /home/dga/mandar-correo/mandar-email-error.php
fi
unset PASSPHRASE
    

Verificación de Cambios en un Backup

Duplicity nos permite verificar si ha habido cambios entre el último backup realizado y el sistema archivos sobre el cuasl se hace el backup:


#!/bin/bash
export PASSPHRASE="1234"
duplicity $1 --encrypt-key "E8DAE5E7" --sign-key "E8DAE5E7" \
	verify \
	scp://dga@192.168.56.102/curso11 /home/dga | tee /home/dga/auditoria-verify.log
unset PASSPHRASE

Automatizar la Creación de Copias de seguridad

Para que la realización de las copias de seguridad se haga de manera desatendida habrá que hacer lo siguiene:

  • Garantizar que el equipo cliente es un equipo de confianza para el servidor. Para ello será necesario agregar en el servidor la clave pública SSH mediante ssh-copy-id

ssh-copy-id -i clave-pública usuario-remoto@equipo-servidor
    
  • Configurar el servicio de automatización de tareas CRON

crontab -e
    

# min hora diames mes dia-semana [usuario] comando
30 12 * * * /home/dga/script-backup.sh incremental|full
    

Restauración Parcial de Copias de seguridad Cifradas en Remoto

Para restaurar un backup realizado con duplicity existen diferentes alternativas: archivo, directorio o total

  • Restauración parcial de parte del Backup: un archivo

export PASSPHRASE="1234"
if duplicity $1 --encrypt-key "E8DAE5E7" --sign-key "E8DAE5E7" \
	--file-to-restore Documentos/doc3.txt \
	scp://dga@192.168.56.102/curso11 /home/dga/Documentos/doc3.txt
then
	php /home/dga/mandar-correo/mandar-email-exito.php
	echo "exito ..."
else
	php /home/dga/mandar-correo/mandar-email-error.php
	echo "error ..."
fi
unset PASSPHRASE
    

Restauración Parcial de Copias de seguridad Cifradas en Remoto

Para restaurar un backup realizado con duplicity existen diferentes alternativas: archivo, directorio o total

  • Restauración parcial de parte del Backup: un directorio

export PASSPHRASE="1234"
if duplicity $1 --encrypt-key "E8DAE5E7" --sign-key "E8DAE5E7" \
	--file-to-restore Documentos \
	scp://dga@192.168.56.102/curso11 /home/dga/Documentos
then
	php /home/dga/mandar-correo/mandar-email-exito.php
	echo "exito ..."
else
	php /home/dga/mandar-correo/mandar-email-error.php
	echo "error ..."
fi
unset PASSPHRASE
    

Alternatvas a Duplicity

En el caso de que Duplicity no se ajuste a tus necesidades existen otras alternativas para la realización de copias de seguridad, entre los cuales podrían destacarse dos:

  • rsync (debe estar instalado tanto en el cliente como en el servidor)
  • bacula (arquitectura cliente servidor multiplataforma)

Configuración de Red

GNU/Linux Ubuntu

  • En sistemas sin Interfaz Gráfica el servicio Networking se encarga de configurar la red. Para ello hace uso del archivo de configuración "/etc/network/interfaces"
  • En sistemas con Interfaz Gráfica el servicio Network-Manager se encarga de configurar la red
  • En el caso de que queramos gestionar la red con nuestros propios scripts deberemos parar los servicios anteriores

Scripts Configuración Red

El archivo "/etc/network/interfaces" es consultado por el servicio "networking" para configurar la red (man interfaces)


auto eth0 eth0:1 eth0:2 eth0:3 ... eth1 ...
iface eth0 inet static
address 192.168.124.253
netmask 255.255.255.0
gateway 192.168.124.254
dns-nameservers 8.8.8.8
pre-up |  up | post-up script
pre-down | down | post-down script

iface eth0:1 inet static
address 192.168.121.254
netmask 255.255.255.0
pre-up |  up | post-up script
pre-down | down | post-down script

iface eth0:2 inet static
address 192.168.120.250
netmask 255.255.255.0
...

Scripts Configuración Red

Ej. Configura varias direcciones IP por interfaz en alguna de las máquinas virtuales (X será el número de equipo)
Interfaz IP/Máscara Gateway DNS
eth0 192.168.123.100+X/24 192.168.123.254 8.8.8.8
eth0:1 172.30.1.X/24 - -
eth0:2 172.30.2.X/24 - -
eth1 172.30.100.X/24 - -

Scripts Personalizados Conf. Red

Mediante la ayuda de los comandos iptables y route podemos crear nuestros propios scripts de configuración de red de manera personalizada:


#!/bin/bash
/etc/init.d/networking stop
ifconfig eth0 down
ifconfig eth0 192.168.1.6
if ping -c 1 192.168.1.1
then
	route add default gw 192.168.1.1
else
	ifconfig eth0 192.168.123.100
	route add default gw 192.168.123.254
fi
ifconfig eth0:alias1 192.168.2.100
ifconfig eth0:alias2 12.0.0.100
ifconfig eth0:alias3 12.0.0.150
ifconfig eth0:alias4 172.30.1.100
ifconfig eth1 ...
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -s 192.168.2.0/24 -p tcp --dport 80 \
-j DNAT --to 192.168.2.100:80
...

Contenidos del Curso:

  • Segunda Parte ( Lunes, 23 Nov 2015 ):

    1. Instalación y configuración de un servidor y cliente Migasfree
    2. Ej. práctico: Instalación en máquinas virtuales de un servidor y cliente Migasfree
    3. Ej. práctico: Estudio del entorno de la interfaz Django de Migasfree
    4. Creación de paquetes DEB y configuración de repositorios

Instalación del Servidor Migasfree

Para la instalación seguiremos los pasos del capítulo 5 del PDF de los creadores de Migasfree fun-with-migasfree: Probando Migasfree (pag. 29)


echo "deb http://migasfree.org/repo debian7 PKGS" > /etc/apt/sources.list.d/migasfree.list
apt-get update
apt-get install python-django=1.6.11-1
apt-mark hold python-django
apt-get install migasfree-server
    

Tras lo anterior ya podremos probar a entrar en migasfree escribiendo http://ip_servidor, y accediendo como admin:admin

Instalación del Cliente Migasfree

Para la instalación seguiremos los pasos del capítulo 5 del PDF de los creadores de Migasfree fun-with-migasfree: Probando Migasfree (pag. 29)


echo "deb http://migasfree.org/repo Ubuntu14 PKGS" > /etc/apt/sources.list.d/migasfree.list
apt-get update
apt-get install migasfree-client
nano /etc/migasfree.conf
migasfree -u
    

Tras lo anterior ya tendremos un cliente de Escritorio registrado en migasfree y un cliente Servidor (si lo hemos hecho en el servidor también). Ahora ya podremos empezar a controlar el software de los clientes migasfree desde el servidor migasfree.

Instalación del Cliente Migasfree

En el caso de que uno de los clientes migasfree sea un servidor, lo más conveniente es que se actualice periodicamente contra migasfree haciendo uso del automatizador de tareas crontab:


# nano /etc/cron.d/migasfree
00 07 * * * root su -c 'migasfree --update' --login

Configurar el software mediante paquetes DEB

La filosofía de Migasfree consiste en crear paquetes y desplegar estos para provocar modificaciones en el software de los equipos. Para crear un paquete DEB deberemos tener en cuenta una serie de custiones previas: estrutura del paquete, ficheros necesarios, etc. Para crear un paquete será necesario instalar el siguiente software:


sudo apt-get install debhelper devscripts
/usr/bin/debuild --no-tgz-check -us -uc
    

¡¡Importante!! Para consultar dudas o errores de debhelper visitar la siguiente página: debhelper.

Creación de Paquetes DEB - Ej. I

Ej. “Crea un paquete llamado curso-paquete1 que configure dentro de /etc/hosts una asociación nombre -> ip (server -> 172.30.1.220) y despliegue unos archivos sobre el sistema de archivos:
/usr/share/curso-linux/practica1/practica1.txt
/usr/share/curso-linux/practica2/practica2.txt
Para ello haz uso de los paquetes de ejemplo que hay en los materiales del curso, y modifica los archivos necesarios. Después desplegalo mediante migasfree ”. Solución: curso-paquete1.zip

[1] nano ./debian/changelog -> versión del paquete y descripción de cambios
[2] nano ./debian/control -> definición de dependencias y descripción del paquete
[3] nano ./debian/copyright -> tipo de licencia
[4] nano ./debian/install -> directorios a desplegar
[5] nano ./debian/postinst -> script que se ejecuta tras la instalación del paquete
[6] nano ./debian/prerm -> script que se ejecuta previo a la eliminación del paquete
[7] nano ./debian/rules -> reglas a tener en cuenta en el momento de crear el paquete con debhelper
        

Creación de Paquetes DEB - Ej. I - Changelog

Ej. “Crea un paquete llamado curso-paquete1 que configure dentro de /etc/hosts una asociación nombre -> ip (server -> 172.30.1.220) y despliegue unos archivos sobre el sistema de archivos:
/usr/share/curso-linux/practica1/practica1.txt
/usr/share/curso-linux/practica2/practica2.txt

# nano changelog
    
curso-paquete1 (1.0-1) unstable; urgency=low

  * Información de cambios en el paquete

 -- Arturo Martín   Fri, 02 Oct 2015 6:55:06 +0200
 

Creación de Paquetes DEB - Ej. I - Control

Ej. “Crea un paquete llamado curso-paquete1 ...”

# nano control
    
Source: curso-paquete1
Section: utils
Priority: extra
Maintainer: Arturo Martín 
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.3
Homepage: http://wiki.migasfree.educa.aragon.es

Package: curso-paquete1
Architecture: all
Pre-Depends: migasfree-client (>=4.5), sudo
Depends: ${misc:Depends}, python, python-gi
Description: Descripción del paquete paquete-curso-ejemplo
 Descripción más extensa del paquete paquete-curso-ejemplo
 

Creación de Paquetes DEB - Ej. I - Copyright

Ej. “Crea un paquete llamado curso-paquete1 ...”

# nano copyright
    
Format: http://dep.debian.net/deps/dep5
Upstream-Name: curso-paquete1

Files: * debian/*
Copyright: 2015 Arturo Martín 
License: GPL-3.0+

License: GPL-3.0+
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 ...
 

Creación de Paquetes DEB - Ej. I - Install

Ej. “Crea un paquete llamado curso-paquete1 ...”

# nano install
    
usr/*

Creación de Paquetes DEB - Ej. I - Postinst

Ej. “Crea un paquete llamado curso-paquete1 ...”

# nano postinst
    
#!/bin/sh
# postinst script for curso-paquete1

set -e

case "$1" in
    configure) echo "server 172.30.1.220" >> /etc/hosts ;;

    abort-upgrade|abort-remove|abort-deconfigure) ;;

    *) echo "postinst called with unknown argument \`$1'" >&2
       exit 1 ;;
esac

exit 0

Creación de Paquetes DEB - Ej. I - Prerm

Ej. “Crea un paquete llamado curso-paquete1 ...”

# nano prerm
    
#!/bin/sh
# prerm script for paquete-curso-ejemplo

set -e

case "$1" in
    remove) sed -i "s/server 172.30.1.220//g" /etc/hosts ;;

    upgrade|deconfigure) ;;

    failed-upgrade) ;;

    *)  echo "prerm called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

exit 0

¿Como crear el paquete - paquetizar DEB?


# apt-get install debhelper devscripts

// Ejecutamos el siguiente comando dentro del directorio que contiene
// la estructura del paquete
$ /usr/bin/debuild --no-tgz-check -us -uc
    

$ nano ~/.bash_aliases
alias crear-paquete='/usr/bin/debuild --no-tgz-check -us -uc'

// Ejecutamos el siguiente comando dentro del directorio que contiene
// la estructura del paquete
$ crear-paquete
    
¡¡Importante!! Consultar ante dudas o errores de debhelper deberemos consultar el siguiente enlace: ¡¡debhelper!!

Formas de Instalar un paquete creado


# dpkg -i paquete.deb
# apt-get install -f
    

# gdebi paquete.deb
    

// A través de migasfree habiéndo subido el paquete: migasfree-upload -f paquete.deb
// y asignandolo al equipo en cuestión a través de un repositorio
// Después:
# migasfree -u
    

Para facilitar la subida de paquetes a migasfree:


    # nano /etc/migasfree.conf
[client] 
Server = IPSERVER
Version = VERSION
[packager] 
User     = admin 
Password = admin 
Version  = VERSION
Store    = base
    

sudo migasfree-upload -f paquete.deb -s base -m VERSION -u admin -p admin
sudo migasfree-upload -f paquete.deb
    

Creación de Paquetes DEB - Ej. II

Ej. “Crea un paquete y distribuyelo mediante Migasfree a los equipos desktop de tal forma que configure los Action Scripts de tal forma que nos permita manejar archivos PDFs. Para ello simplemente sigue el paquete que ya esta hecho y esta disponible en la carpeta de materiales del curso ”

Creación de Paquetes DEB - Ej. II - YAD

Ej. “Crea un paquete y distribuyelo mediante Migasfree a los equipos desktop de tal forma que configure los Action Scripts de tal forma que nos permita manejar archivos PDFs. Para ello simplemente sigue el paquete que ya esta hecho y esta disponible en la carpeta de materiales del curso ”

Para las ventanas que se abren con la aplicación necesitamos YAD:


sudo add-apt-repository -y ppa:webupd8team/y-ppa-manager
sudo apt-get update && sudo apt-get -y install yad
    

Contenidos del Curso:

  • Tercera Parte ( Lunes, 30 Nov 2015 ):

    1. Gestión de Servicios a través de Migasfree
    2. Ej. práctico: Configurar Apache con Migasfree
    3. Ej. práctico: Configurar Samba con Migasfree
    4. Personalización del Perfil del Usuario

Configuración Básica de Apache desde Migasfree I

Ej. “Crea un paquete y distribuyelo mediante Migasfree para que configure una página de inicio para acceso a determinados directorios de Descarga ”
mkdir -p usr/share/miswebs/alias/software-pdi
mkdir -p usr/share/miswebs/alias/software-alumnos
cd usr/share/miswebs/alias/software-pdi
touch pdi1.deb pdi2.deb pdi3.deb
cd usr/share/miswebs/alias/software-alumnos
touch doc1.pdf doc2.pdf
mkdir -p usr/share/miswebs/web1
nano usr/share/miswebs/web1/index.html

Configuración Básica de Apache desde Migasfree I

Ej. “Crea un paquete ,,, ”

mkdir -p etc/apache2/sites-available && nano etc/apache2/sites-available/misitio.conf
    
NameVirtualHost 192.168.56.101
<VirtualHost *:80>
  DocumentRoot /var/www/html/web1
  Servername www.misitioweb.es
  Alias /alias1 /var/www/software-pdi
  <Directory /var/www/software-pdi>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all
  </Directory>
  Alias /alias2 /var/www/software-alumnos
  <Directory /var/www/software-alumnos>
	Options ...
  </Directory>
</VirtualHost>
a2ensite misitio && /etc/init.d/apache2 reload
    

Configuración Básica de Apache desde Migasfree II

Ej. “Crea un paquete y distribuyelo mediante Migasfree para que configure una página de inicio para acceso a determinados directorios de Descarga ”

mkdir -p usr/share/miswebs/web1 && nano usr/share/miswebs/web1/index.html
    

DOCUMENTACION ACCESIBLE VIA WEB

Enlace 1: Enlazar
Enlace 2: Enlazar

Configuración Básica de Apache desde Migasfree III

Ej. “Crea un paquete ... ”

nano debian/postinst
    

if ! test -d /var/www/html ; then mkdir -p /var/www/html ; fi
if ! test -d /var/www/html/web1 ; then
  if test -d /usr/share/miswebs/web1 ;  then
    rsync -rhv /usr/share/miswebs/web1 /var/www/html
  fi
fi
if ! test -d /var/www/software-pdi ; then
  if test -d /usr/share/miswebs/alias/software-pdi ; then
        rsync -rhv /usr/share/miswebs/alias/software-pdi /var/www
  fi
fi
if ! test -d /var/www/software-alumnos ; then
  if test -d /usr/share/miswebs/alias/software-alumnos ; then
    rsync -rhv /usr/share/miswebs/alias/software-alumnos /var/www
  fi
fi
chown -R www-data.www-data /var/www
if test -f /etc/apache2/sites-available/misitio.conf ; then
    a2ensite misitio
fi
echo "Ahora reiniciaremos Apache ..."
/etc/init.d/apache2 reload

Configuración Básica de Apache desde Migasfree III

Ej. “Crea un paquete ... ”

nano debian/prerm
    

if test -d /var/www/html/web1 ; then
    rm -Rf /var/www/html/web1
fi
if test -d /var/www/software-pdi ; then
    rm -Rf /var/www/software-pdi
fi
if test -d /var/www/software-alumnos ; then
    rm -Rf /var/www/software-alumnos
fi
a2dissite misitio
/etc/init.d/apache2 reload

crear-paquete
migasfree-upload -f curso-paquete-apache.deb
    

Contenidos del Curso:

  • Cuarta Parte ( Miércoles, 2 Dic 2015 ):

    1. Configurar Impresoras/Fotocopiadoras en Red: CUPS
    2. 
      http://localhost:631/
      
    3. Archivos PPD: http://www.openprinting.org/drivers
    4. Impresoras: http://www.openprinting.org/printers
    5. Comando lpadmin
    6. 
      lpadmin -p Canon-2270 -E -v socket://IP-Impresora -P /destino/Canon-2270.ppd
      lpadmin -d Canon-2270
      
    7. Configuración de impresoras mediante Fallas y Repositorios Migasfree

Configuración Básica de Apache desde Migasfree II

Ej. “Crea una falla que configure un para de modelos de impresoras en red haciendo uso de archivos PPD: (1) Canon ImageRunner 2270 con IP 172.30.1.247 y (2) Konica Minolta Bizhub C450 con IP 172.30.1.248, dejando la primera de ellas como predenterminada. Para ello deberás obtener previamente los PPDs de las impresoras y dejarlos accesibles a través del servicio Web Apache del propio Migasfree mediante un alias llamado /ppds ”

cd /destino
if wget http://servidor/ppds/Canon-2270.ppd &> /dev/null
then
    if lpadmin -p Canon-2270 -E -v socket://IP-Impresora -P /destino/Canon-2270.ppd
    then
       lpadmin -d Canon-2270
    fi
fi
...

SED

Comandos Útiles GNU/Linux


$ sed -e '1,10d' /etc/squid3/squid.conf | more
$ sed -e '/^#/d' /etc/squid3/squid.conf | more
$ more /etc/samba/smb.conf | sed -e '/^#/d' -e '/^;/d' -e '/^$/d'
$ more /etc/samba/smb.conf | sed -n -e '/^[^#;]/p'
$ sed -e 's/cadena_a_sustituir/cadena_nueva/' archivo.dat (-e = --expression)
$ cat archivo.dat | sed -e 's/cadena_a_sustituir/cadena_nueva/' (primera coincidencia)
$ cat archivo.dat | sed -e 's/cadena_a_sustituir/cadena_nueva/g' (g: global)
$ cat archivo.dat | sed -e '5,8s/cadena_a_sustituir/cadena_nueva/g'
$ cat /etc/passwd | sed -e 's:/bin/sh:shell-valida:g' | grep shell-valida
$ cat archivo.dat | tail -1 | sed -e 's/[a-z]*/mi_sustitucion/g'
$ sed -e 's/<[^>]*>//g' archivo.html
$ sed -e 's/.*/FALSE:&/' /etc/passwd | cut -d":" -f1,2 | tr -s ":" " "

$ more /etc/passwd | \
cut -d":" -f1,6,7 | \
sed -e 's/\(.*\):\(.*\):\(.*\)/Nombre: \1 \nSu Home es: \2 \ncon Shell: \3\n/'
    

SED

Comandos Útiles GNU/Linux

netstat

Comandos Útiles GNU/Linux

Entre las opciones de éste útil comando destacar [netstat (network statistics)]:

  1. -l, para filtrar los servicios que están a la escucha
  2. -t | -u, para indicar que en el resultado del escáner solo muestre información sobre los servicios TCP o UDP
  3. -p, para poder identificar el PID del proceso que da dicho servicio
  4. -n, para informar mediante direcciones IP en lugar de nombres de dominio asociados
# netstat -a
# netstat -l -u -p -n
# netstat -r (route -n)

tcpdump

Comandos Útiles GNU/Linux

Pensado para el ánalisis del tráfico de red desde la consola [tcpdump]:

# tcpdump udp and dst port 53
# tcpdump dst port 22
# tcpdump tcp and \(port 80 or port 443\)
# tcpdump ip proto \\icmp

ntpdate

Comandos Útiles GNU/Linux

Nos permite actualizar la hora del sistema a través de un servidor NTP [ntpdate]:

# ntpdate 2.es.pool.ntp.org

Fin Curso

Para esta presentación se ha hecho uso del framework "reveal.js", mediante la ayuda del editor "Brackets" y la personalización de una extensión del mismo para las diapositivas.