Está en la página 1de 143

S

ERVICIOS

1-Configurar un servidor DHCP bsico


Paso 1-Instalamos el paquete isc-dhcp-server.
server# apt-get install isc-dhcp-server
Paso 2-Para iniciar/parar los servicios.
server# /etc/init.d/isc-dhcp server stop
server# service isc-dhcp server restart
Paso 3-Comprobamos qu tarjeta est conectada (eth0, eth1, etc).
server# ifconfig

Paso 4-Accedemos al archivo de configuracin e incluimos la interfaz


conectada a la red local y que ofrecer la IP. La ip del servidor deber ser
esttica.
server# cd /etc/default
server# nano isc-dhcp-server

INTERFACES=eth1

Paso 5-Editamos el archivo de configuracin dhcp para configurar la subred.

server# gedit /etc/dhcp/dhcp.conf

subnet 192.168.2.0 netmask 255.255.255.0 {

range 192.168.2.2 192.168.2.20;

#rango

option domain-name-servers 192.168.2.1 8.8.8.8;

#dns

option routers 192.168.2.1;

#puerta de enlace

option broadcast-address 192.168.2.255;

default-lease-time 600;

max-lease-time 7200;}
Para que los clientes dispongan de conexin a Internet, necesitamos activar el
enrrutamiento e iptables.
server# echo 1 > /proc/sys/net/ipv4/ip_forward
server# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
server# iptables -A INPUT -s 192.168.2.0/24 -i eth1 -j ACCEPT

2-Configurar un servidor DHCP con asignacin por


MAC
Paso 1-Identificamos la interfaz de red y modificamos en isc-dchp-server
server# cd /etc/default
server# nano isc-dhcp-server

INTERFACES=eth1

Paso 2-Editamos el archivo de configuracin


server# gedit /etc/dhcp/dhcp.conf

#pomemos una confuguracin por defecto

option domain-name-servers 192.168.1.1;

option routers 192.168.1.1;

option broadcast-address 192.168.1.255;

default-lease-time 600;

max-lease-time 7200;

#creamos la subred

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.2 192.168.1.25;

#Asignamos las IP por MAC (Importante sacar las IP fijas fuera del rango)

group{

host oracle{

hardware ethernet 00:00:00:00:00:00

fixed-address 192.168.1.34

host impresora{

hardware ethernet 00:00:00:00:00:00

fixed-address 192.168.1.45

Paso 3-Asignamos una ip la interfaz que va a ofrecer el servicio DHCP y


reiniciamos el servicio.
server# ifconfig eth0 192.168.1.20
server# service isc-dhcp-server restart
Podemos comprobar las concesiones en /var/lib/dhcp
server# cat /var/lib/dhcp/dhcp.leases
El formato es: IP/fecha_inicio/

3-Configurar un servidor DHCP con sistema


failover

Paso 1-Partimos de cualquiera de las configuraciones anteriores DHCP, slo


que en este caso, contamos con un servidor de respaldo para los casos en los
que el servidor se cae.
Paso 2-Aadimos la siguiente configuracin a servidor maestro.
server-master# gedit /etc/dhcp/dhcp.conf

authoritative;

ddns-update-style none;

failover peer dhcp-failover {

primary; #servidor primario (Maestro)

address 192.168.2.1; #IP del servidor primario

port 646; #Puerto de escucha

peer address 192.168.2.2 #IP del servidor secundario

peer port 647; #Puerto de escucha en el secundario

max-response-delay 30; #Si no responde en 30s

max-unacked-updates 10;

load balance max seconds 3;

mclt 1800;

split 128;

Paso 3-Configuracin en el servidor esclavo


server-slave# gedit /etc/dhcp/dhcp.conf

authoritative;

ddns-update-style none;

failover peer dhcp-failover {

secundry; #servidor secundario (Esclavo)

address 192.168.2.2; #IP del servidor primario

port 647; #Puerto de escucha del esclavo

peer address 192.168.2.1 #IP del servidor esclavo

peer port 646; #Puerto del primario

max-response-delay 30; #Si no responde en 30s

max-unacked-updates 10;

load balance max seconds 3;

mclt 1800;

#No lleva split

Nota: Es imprescindible arrancar primero el maestro para que sincronice luego


el esclavo
Ahora aadimos una subnet:

subnet 192.168.200.0 netmask 255.255.255.0

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.200.255;

option routers 192.168.200.1;

option domain-server 192.168.200.1;

range 192.168.200.2 192.168.200.40;

pool{

failover peer dhcp-failover;

max-lease-time 1800;

range 192.168.200.100-192.168.200.160;

Denegacin por MAC


Para denegar la conexin a un equipo por su MAC, podemos aplicar la
denegacin a equipos concretos o bien crear una clase que incluira varios
equipos.

host denegado{

hardware ethernet 00:00:00:00:00:00;

deny booting;

4-Configurar un servidor DHCP con sistema


failover y redes compartidas
Consiste en asignar IP de diferentes redes desde la misma interfaz.

Shared-network {

option domain-name <ip>;

option routers

192.168.1.1;

subnet 192.168.1.0 netmask 255.255.255.0

#parametros para la subnet;

range 192.168.1.2 192.168.1.31;

subnet 10.0.0.0 netmask 255.255.255.0

range 10.0.0.3 10.0.0.4;

Ejemplo:

shared-network 20-30

subnet 192.168.30.0 netmask 255.255.255.0

default-lease-time 259200;

max-lease-time 259200;

option routers 10.0.3.1;

option subnet-mask 255.255.255.0;

option broadcast-address 10.0.3.255;

option domain-name-servers ns.almi.com, ns2.almi.com;

pool {

range 10.0.3.1 10.0.3.251;

subnet 10.0.4.0 netmask 255.255.255.0

default-lease-time 259200;

max-lease-time 259200;

option routers 10.0.4.1;

option subnet-mask 255.255.255.0;

option broadcast-address 10.0.4.255;

option domain-name-servers ns.almi.com, ns2.almi.com;

pool {

range 10.0.4.1 10.0.4.251;

Configuramos dos ip usando la misma tarjeta:

auto eth0:1

iface eth0:1 inet static

address 10.0.2.1

netmask 255.255.255.0

network 10.0.2.0

auto eth0:2

iface eth0:2 inet static

address 10.0.3.1

netmask 255.255.255.0

network 10.0.3.0

5-Crear un dominio bsico


Paso 1-Instalamos bind9
server#apt-get install bind9
Paso 2-Editamos/etc/resilv.conf
server# nano /etc/resolv.conf

nameserver 127.0.0.1

Paso 3-Creamos una zona nueva en name.conf.local


server# nano /etc/bind/named.conf.local

zone almi.com

type master;

file /etc/bind/db.almi.com;

};

Paso 4-Copiamos db.local a db.almi.com y lo editamos sustituyendo localhost


por almi.com
server#nano /etc/bind/db.almi.com

@ IN A 10.120.120.5

www A

pc6

10.120.120.6

A 10.120.120.7

Paso 5-Reiniciamos el servicio y comprobamos que funciona bien


server#service bind9 restart
server#nslookup almi.com

6-Configuracin servicio DNS con zonas


Paso 1-Comn en todos los equipos
server# sudo -s
server# apt-get update
server# apt-get install apache2
Paso 2-Editamos el index.html
server#nano /var/www/html/index.html

<h1> Hola soy Nombre Alumno </h1>

Paso 3- Creamos los subdominios correspondientes al nombre de cada alumno


y grupo al que pertenece.
server# nano /etc/resolv.conf

nameserver 127.0.0.1 #apuntamos al equipo local

Paso 4-Abrimos todas las zonas y copiamos el ejemplo de zona bsica


server#nano /etc/bind/named.conf.default-zones
Paso 5-Vamos al archivo /etc/bind/named.conf.local
server# nano /etc/bind/named.conf.local

zone sergio.com{

type master;

file /etc/bind/db.sergio.com:

Paso 6-Abrimos db.local y lo copiamos a db.sergio.com. Cambiamos localhost


por el nombre del dominio respetando los ..
server# nano /etc/bind/db.sergio.com

()

0 IN SOA sergio.com. Root.sergio.com.{

(...)

@ IN NS sergio.com.

@ IN A 192.168.1.182 #ip donde est el dominio sergio.com

almi A 192.168.1.182

talmay A 192.168.1.194

Paso 7-Reiniciamos el servicio y resolvemos


server#service bind9 restart
server# nslookup almi.sergio.com

Ejercicio resuelto:
server_pedroc# nano/etc/bind/named.conf.local

zone "pedroc.com"{

type master;

file "/etc/bind/db.pedroc.com";

};

zone "grupo4.com"{

type master;

file "/etc/bind/db.grupo4.com";

};

server_pedroc# nano /etc/bind/db.pedroc.com

; BIND data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

604800

86400

2419200

604800 )

; Serial

; Refresh

; Retry

; Expire

; Negative Cache TTL

IN

NS pedroc.com.

IN

A 192.168.1.89

www

A 192.168.1.89

allow-transfer {192.168.0.3;};
server_pedroc# nano /etc/bind/db.grupo4.com

; BIND data file for local loopback interface

$TTL

604800

IN

SOA

grupo4.com. root.grupo4.com. (

604800

86400

2419200

604800 )

; Serial

; Refresh

; Retry

; Expire

; Negative Cache TTL

IN

NS grupo4.com.

IN

A 192.168.1.89

ander

unai

pedroc

A 192.168.1.79

A 192.168.1.50

A 192.168.1.89

7-Configuracin

servicio DNS con reenviadores

Aplicamos un dominio y consultamos en cadena. Alumino1 pregunta a


Alumno2 y Alumno2 pregunta a Alumno3. ste ltimo vuelve a preguntar
a Alumno1.
Nota: Es importante que si tenemos las zonas del resto de equipos, sean
eliminadas.

server_alumno1# nano /etc/bind/named.conf.options

fowarders{

192.168.1.51 # maquina 2

8-Configuracin

servicio DNS maestro-esclavo

En nuestra configuracin el maestro se va a encargar de procesar todas las


peticiones y cuando falle, el esclavo se encargar de asumir la funcin de
servidor DNS. El maestro replicar las zonas al esclavo.

Paso 1-Configuramos el maestro


maestro# nano/etc/bind/named.conf.local

zone asir2.com{

type master;

file /etc/bind/db.asir2.com;

allow-transfer{192.168.1.15;};

allow-query{any;};

Paso 2-Configuramos el esclavo


esclavo# nano/etc/bind/named.conf.local

zone asir2.com{

type slave;

file /etc/bind/db.asir2.com;

allow-query{any;};

masters{192.168.1.18;};

Paso 3-Configuramos /etc/bind/db.asir2.com

IN

NS ns1.asir2.com.

IN

NS ns2.asir2.com.

ns1

IN

A 192.168.1.18

ns2 IN

A 192.168.1.15

Paso 4-Tenemos que dar permisos al archivo /etc/bind/rndc.key y


db.asir2.com del maestro
maestro# chown root:bind /etc/bind/rndc.key
maestro# chmod 640 /etc/bind/rndc.key
maestro# chmod g+ws /etc/bind/db.asir2.com
Para comprobar errores, usamos
server# named -g
Modificamos el archivo /etc/resolv.conf para que apunte a s mismo como
servidor DNS.
server# nano /etc/resolv.conf

nameserver 127.0.0.1

Escenario con 2 esclavos


En el maestro crearamos la acl esclavos y le aadiramos el alow-transfer
a los esclavos.
maestro# nano/etc/bind/named.conf.local

(...)

allow-transer{esclavos;};

acl esclavos{

192.168.1.89;

192.168.1.50;

};

(...)

maestro# nano/etc/bind/named.conf.option
allow-query{esclavos;};
allow-recursion{esclavos;};

9-Configuracin servicio DNS inverso


Consiste en que podamos traducir las IP a nombres y los nombres a IP
Paso1-Editamos /etc/resolv.conf. Resolvemos nosotros
server# nano /etc/resolv.conf

nameserver 127.0.0.1

Paso 2-Editamos /etc/bind9/named.conf.local. Nos fijamos en nuestra zona.


En nuestro caso, tenemos que ver la configuracin en db.pedroc.com
server# nano /etc/bind/named.conf.local

zone "pedroc.com"{

type master;

file "/etc/bind/db.pedroc.com";

};

Paso 3-Editamos db.pedroc.com y nos fijamos en el ltimo octeto de nuestra


IP
server# nano /etc/bind/db.pedroc.com

; BIND data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

604800

86400

2419200

604800 )

; Serial

; Refresh

; Retry

; Expire

; Negative Cache TTL

IN

NS pedroc.com.

IN

A 192.168.1.89

www

A 192.168.1.89

almi

A 192.168.1.89

ander

A 192.168.1.79

Paso 4-Aprovechamos el inverso default para hacer copiarlo y editarlo


server# cp db.127 inverso.db.pedroc.com
server# nano inverso.db.pedroc.com

; BIND reverse data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

604800

86400

2419200

; Serial

; Refresh

; Retry

; Expire

604800 )

; Negative Cache TTL

IN

NS

localhost.

89

PTR

www.

89

PTR

almi.

79

PTR

ander.

Paso 3-Editamos /etc/bind/named.conf.local


server# nano/etc/bind/named.conf.local

zone "pedroc.com"{

type master;

file "/etc/bind/db.pedroc.com";

};

zone 1.168.192.in-addr.arpa{

type master;

file /etc/bind/inverso.db.pedroc.com;

};

10-Configuracin de subdominios DNS


Paso 1-Editamos /etc/bind/named.conf.local
server# nano /etc/bind/named.conf.local

zone 1.168.192 in-addr.arpa{

type master;

file /etc/bind/inverso.db.pedroc.com;

};

zone subdominio.pedroc.com{

type slave;

file /etc/bind/sub.db.pedro.com;

masters{

192.168.1.89;

};

};

Paso 2-Copiamos db.pedroc.com a sub.db.pedroc.com y lo editamos


server# cp /etc/bind/db.pedroc.com /etc/bind/sub.db.pedroc.com
server# nano sub.db.pedroc.com

; BIND data file for local loopback interface

$TTL

604800

IN

SOA

subdominio.pedroc.com. root.subdominio.pedroc.com. (

; Serial

604800

86400

2419200

604800 )

; Refresh

; Retry

; Expire

; Negative Cache TTL

IN

NS subdominio.pedroc.com.

IN

A 192.168.1.89

hostx

A 192.168.1.89

hosty

A 192.168.1.90

Paso 3-Comprobamos que resuelve


server# nslookup pedroc.com
server# nslookup subdominio.pedroc.com

Ejercicio DNS

1.1-Reenviadores

alumno1, alumno2, alumno3 =>Host directo e inverso


alumno 1=>primario
alumno2=>subdominio
alumno3=>esclavo

Nota: Para un inverso, tan slo es necesario un fichero por subred

11-Instalacin Apache
Actualizamos todos los servicios
server#apt-get
server#apt-get
server#apt-get
server#apt-get

update
install apache2
install mysql-server mysql-client
install php5

server#apt-get install phpmyadmin


Optimizacin de Apache para programadores PHP
server# nano /var/www/info.php

<?php

phpinfo();

?>

Ruta de configuracin de Apache


server# cd /etc/apache2
Archivo por defecto del servidor. Se habilitan todos los hots virtuales que
vamos a tener.
server# cd sites-enabled
server# nano 000-default

<Directory /var/www/>

DirectoryIndex info.php

(...)

</Directory>

server# service apache2 restart

Para evitar el warning de apache DNS


server# nano /etc/apache2/httpd.conf

ServerName 127.0.0.1

Para mostrar los errores en PHP


Todas las variables de PHP se encuentran en la ruta
/etc/php5/apache2/php.ini. La variable display_errors es la que muestra o
no los errores.
server# nano /etc/php5/apache2/php.ini

display_errors = On

server# service apache2 restart


Para aumentar el mximo de tamao de archivo

upload_max_filesize = 200M

Cambiar la ruta por defecto de apache a html


server# mkdir /var/www/html
server# nano /etc/apache2/sites-enabled/000-default

DocumentRoot /var/www/html

(...)

Instalar un mdulo
server# apt-get install php5-curl

Instalacin de Wordpress
Paso 1-Creamos una carpeta donde instalaremos Wordpres
server#cd html
server# mkdir wordpress
Paso 2-Descargamos Wordpress
server# wget https://es.wordpress.org/wordpress-4.0-es_ES.tar.gz
server# tar -xvzf wordpress-4.0es_ES-tar.gz
Paso 3-Otorgamos usuario y grupo
server# chown -R ww-data:www-data wordpress
Paso 4-Otorgamos permisos 755a
server# chmod -R 755 wordpreess
Paso 5-Creamos la base de datos desde el navegador y creamos la base de
datos wordpres

localhost/phpmyadmin

Imagen 1
Paso 6-Accedemos a wordpress desde el navegador y segumos los pasos.

locahost/wordpress

Paso 7-Accedemos al panel de configuracin de Wordpress desde el


navegador

localhost/wordpress/wp-admin

Instalacin de Joomla
Paso 1-Creamos el directorio joomla y descargamos el paquete
server# mkdir joomla
server# wget
http://joomlacode.org/gf/download/frsrelease/19601/159594/Joomla_3.3.1Spanish-Pack_Completo.zip
server# unzip joomla
Paso 2-Asignamos el grupo y damos permisos
server# chown -R www-data:www-data joomla
server# chmod 755 -R joomla
Paso 3-Creamos la base de datos joomla
Ejercicio 1-Instalar Drupal, Moodle, Diaspora
Drupal
Paso 1-Descargamos la ltima versin
server# wget http://ftp.drupal.org/files/projects/drupal-7.15.tar.gz
server# tar zxvf drupal-7.15.tar.gz
server# cd drupal

Paso 2-Copiamos el archivo de configuracin y damos permisos


server# cp sites/default/default.settings.php sites/default/settings.php
server# chmod a+w sites/default/settings.php
server# chmod a+w sites/default
Paso 3-Cremos la base de datos con su respectivos privilegios
server# mysql -u root -p
mysql> CREATE DATABASE drupal;
mysql> CREATE USER druser@localhost;
mysql> SET PASSWORD FOR druser@localhost= PASSWORD("Almi123");
mysql> GRANT ALL PRIVILEGES ON drupal.* TO druser@localhost IDENTIFIED
BY 'Almi123';
mysql>FLUSH PRIVILEGES;
mysql>exit
Paso 4-Instalamos el paquete php-gd
server# sudo apt-get install php5-gd
Paso 5-Ya podemos acceder al navegador y seguir los pasos de la instalacin

localhost/drupal

Moodle
Pendiente

12-Configuracin de Apache
12.1-Fichero de configuracin
apache2.conf=> fichero de configuracin por defecto
httpd.conf=> Configuracin de usuario
mod-availables=>Mdulos disponibles
mods-enables=>Mdulos habilitados
port.conf=>Configuracin de puertos
sites-available=>configuracin de sitios
sites-enables=>Sitios habilitados

Ejercicio 1- Configuracin sitio joomla.ejemplo.com apunte a joomla

Configurar un DNS de forma que joomla.ejemplo.con=>127.0.0.1


ejemplo.com=> 127.0.0.1
/var/www/html/joomla
server# nano /etc/apache2/ports.conf

nameVirtualhost *:80

listen 80

Creamos un sitio
server# cd /etc/apache2/sites-available
server# nano joomla.ejemplo.com

<Virtualhost *:80>

ServerAdmin aaa@gmail.com # Correo admin (opcional)

ServerName

joomla.ejemplo.com

DocumentRoot /var/www/html/joomla

<Directory /var/www/html/joomla/>

DirectoryIndex index.php

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order Allow,Deny

Allow from all

</Directory>

</Virtualhost>

Para habilitar un sitio


server# a2ensites joomla.ejemplo.com
Para deshabilitar un sitio
server# a2disites joomla.ejemplo.com
Opciones de Apache
Options

None: No establece ninguna opcin

All: Establece todas las opciones

Indexes: Permite visualizar pginas existentes en el directorio

FollowSymlinks: Permite seguir los enlaces simblicos del directorio

ExecCGI: Admite la ejecucin de scripts CGI

AllowOverride

None: El servidor no leer los archivos htaccess

All: Permite usar las directivas httaccess

FileInfo: Muestra informacin de los archivos del directorio

Order

Allow, Deny: Primero aplica los permisos allow y luego deny

Deny, allow: Primero aplica los permisos denyt y luego allow

Allow

from all: admite cualquier acceso al directorio

from ip: admite cualquier acceso aldirectorio proveniente de la direccin IP


indicada

from dominio: admite cualquier acceso al directorio

Deny

from all: deniega cualquier acceso al directorio

from ip: deniega cualquier acceso aldirectorio proveniente de la direccin IP


indicada

from dominio: deniega

Ejercicio 2-Escuchar diferentes puertos y que redirija a un host


concreto en funcin del puerto de escucha
Paso 1-Creamos las carpetas con los index correspondientes

server# mkdir /var/www/html/pedroc80


server# nano /var/www/html/pedroc/80/index.html

<h1>Estas en el puerto 80 </h1>

server# mkdir /var/www/html/pedroc8043


server# nano /var/www/html/pedroc/8043/index.html

<h1>Estas en el puerto 8043 </h1>

Paso2-Primero aadimos el puerto de escucha 8043


server# nano /etc/ports.conf

listen 8043

Paso 3-Creamos el sistios pedroc.com y los virtualhost correspondientes


server# nano /etc/apache2/sites-available/pedroc.com

<Virtualhost *:80>

ServerName pedroc.com

DocumentRoot /var/www/html/pedroc80

<Directory /var/www/html/pedroc80/>

DirectoryIndex index.html

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order Allow,Deny

Allow from all

</Directory>

</Virtualhost>

<Virtualhost *:8043>

ServerName pedroc.com

DocumentRoot /var/www/html/pedroc8043

<Directory /var/www/html/pedroc8043/>

DirectoryIndex index.html

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order Allow,Deny

Allow from all

</Directory>

</Virtualhost>

Paso 4-Habilitamos pedroc.com


server#a2ensite pedroc.com
server# service apache2 restart
Paso 5-Probamos que funciona
server# wget pedroc.com
server# wget pedroc.com:8043

Imagen 2

13-Configuracin de httaccess para proteger Apache


Es necesaro tener habilitado el mdulo auth_basic
Paso 1-Creamos el fichero .htaccess en el directorio a proteger
server# nano .httaccess

AuthName Acceso Restringido a este recurso

AuthType Basic

AuthUserFile /user/local/apache2/etc/.htpasswd

Requiere valid-user

Requere user nombre_usuario # Para permitir a un usuario concreto

Paso 2-Creamos el fichero de contraseas y lo ponemos fuera de la raz para


ms seguridad
server# mkdir -p /var/local/apache2/etc
Paso 3-Creamos el fichero de contraseas (oculyo y con usuario admin). Nos
perdir la contrasea y pulsamos intro.
server#htpasswd -c /usr/local/apache2/etc/.htpasswd admin

Paso 4-Podemos aadir ms usuario al fichero de contraseas (por ejemplo


antonio)
server#htpasswd -c /usr/local/apache2/etc/.htpasswd antonio
Paso 5-Editamos el directorio virtual en el fichero de configuracin de apache2
a proteger.
server# nano /etc/apache2/sistes-available/default
Paso 6-Activamos la opcin AllowOverrie All

<Directory /var/www/>

Options Indexes FollowSysLinks Multiviews

AlowOverride All

Order allow,deny

allow from all

</Directory>

Paso 7-Reiniciamos apache


server# service apache2 restart
http://serverfault.com/questions/487335/allow-access-to-phpmyadmin-only-ona-specified-virtualhost

14-HTTP seguro con SSL


Habilitar SSL
server# a2enmod ssl
Certificado autofirmado en /etc/apache2/certificados/certificado1.pem

Creamos el acceso directo donde almacenamos los certificados


server# mkdir -p /etc/apache2/certificados
Generamos el fichero .pem que contendr el certificado con esta instruccin:
server# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf
/etc/apache2/certificados/miweb.local.pem
Tambin se puede hacer con openssl aunque es preferible con make-ssl-cert
server# openssl req $@ -new -x509 -days 365 -nodes -out
/etc/apache2/certificados/miweb.local.pem -keyout
/etc/apache2/certificados/miweb.local.pem
Respondemos a las preguntas que nos hacen en la generacin del certificado y
damos permisos de lectura al certificado1
server# chmod 600 /etc/apache2/certificados/miweb.local.pem
Habilitamos el SSL
server# a2enmod ssl
Reiniciamos el servicio
server# service apache2 restart
Editamos el fichero /etc/apache2/ports/conf
server# nano /etc/apache2/ports.conf
Aadimos los servidores virtuales

listen 80

listen 443 # Asegurarnos de que esta lnea no est activada ms abajo

NameVirtualHost *.80

NameVirtualHost *.443

Editamos el fichero /etc/apache2/sites-available/miweb.local. Comprobamos los


contenedores y activamos las opciones correspondientes SSL. Comenzamos
con el sitio SSL
server# nano /etc/apache2/sites-available/miweb.local

<VirtualHost *:443>

ServerName miweb

DocumentRoot /var/www/miweb.local/htdocs

DirectoryIndex index.html

SSLEngine on

SSLCertificateFile /etc/apache2/certificados/miweb.local.pem

<Directory /var/www/miweb.local/htdocs>

Options Indexes FollowSymLinks Multiviews

AllowOverride none

Order allow,deny

Allow from all

SSLRequireSSL

</Directory>

</VirtualHost>

Si tenemos un sitio default-ssl y lo habilitamos, revisaremos en ese fichero. Las


rutas del certificado y activamos estas opciones.
SSLOptions+FakeBasicAuth + ExportCertData + StrictRequire
SSLCertificateFile /etc/ssl/certs/server.key
Por ultimo nos falta habilitar el nuevo sitio que hemos hecho
server# a2ensite miweb.local
Reiniciamos el servidor apache para aplicar los cambios
server# serviche apache2 restart
Nota: Los certificados de apache ya estn generados. Los que creamos
nosotros son especficos para nuestro sitio.
Ejercicio 3-Aplicacin SSL
Creamos dos carpetas ss1 y ssl2.
Dentro de ssl1 creamos alumno.html que contendr hola ssl1, dentro de la
carpeta ssl2 creamos bien.html que contendr hola ssl2.
Si escribo la direccin https://alumno1.com aparece hola SSL1
Si escribo la direccin https://alumno2.com aparece hola SSL2

15-Modulo Proxy Apache


Partimos del siguiente escenario:
192.168.1.2=>Joomla
192.168.1.3=>Wordpress

Paso 1-Habilitamos el mdulo proxypass


server# a2enmod proxy proxy-http proxy-connect
Paso 2-Creamos dos host virtuales. Uno para Joomla y otro para Wordpress

<VirtualHost *:80>

ServerName joomla.asir.com

ProxyPass / http://joomla.asir.com/

ProxyPassReverse / http://joomla.asir.com/

</VirtualHost>

Paso 3-Editamos el archivo host


server# nano /etc/hosts

192.168.1.2 joomla.asir.com

102.168.1.3 wordpress.asir.com

Paso 4-Crear en bind un dominio llamado asir.com, con dos host joomla que
apuntara a 192.168.1.3 y wordpress que apunte a 192.168.1.3
Ejercicio 4-Redireccin ProxyPass
La mquina de Pedro recibir peticiones a pedroc.com y wordpress.pedroc.com.
Sin embargo, localmente resolver pedroc.com y redirigir a la mquina de
Ander wordpress.pedroc.com.
INTERNET

pedro.com
wordpress.pedroc.com
192.168.1.X

192.168.2.X

16-Servicio FTP
16.1 Usuario sin enjaular
Paso 1-Instalamos el servicios
server# apt-get install vsftpd
Paso 2-Editamos el fichero de configuracin
server# nano /etc/vsftpd.conf

listen=yes

anonymous_enable #Usuarios annimos no

local_enable=yes # Usuarios locales si

write-enable=yes # Permisos de escritura

anon_upload_enable=no # Los annimos no pueden subir archivos

anon_mkdir_write_enable=no # Los annimos pueden crear carpetas

Paso 3-Reiniciamos el servicios

server# service vsftpd restart


El usuario podr subir, borrar y modificar archivos. El usuario no estar
enjaulado.

16.2 Usuario enjaulado


Paso 1-Editamos el archivo /etc/vsftpd.conf

listen=yes

anonymous_enable=no

local_enable=yes

write_enable=yes

local_umask=022

anon_upload_enable=No

anon_mkdir_write_enable=no

dirmessage_enable=yes

use_localtime=yes

xferlog_enable=yes

connect_from_port_20=yes

chroot_local_user=yes

chroot_list_enable=yes

chroot_listfile=/etc/vsftpd.chroot.list #creamos este fichero y lo dejamos vaco


Paso 2-Creamos el grupo ftp y una shell fantasma
server# groupadd ftp
server# mkdir /bin/ftp
Paso 3-Aadimos la shell fantasma
server# nano /etc/shells

/bin/ftp

Paso 4-Creamos la carpeta /home/ftp/asir


server#mkdir /home/ftp/asir
server# chmod 755 -R /home/ftp/
server# chmod 777 -R /home/ftp/asir
Paso 5-Aadimos el usuario al grupo ftp y la shell fantasma
server# useradd -g ftp -d /home/ftp/asir -c user asir asir
Paso 6-Creamos contrasea para el usuario
server# passwd asir
Paso 7-Editamos el archivo /etc/passwd y ponemos la shell /bin/ftp al
usuarios asir
server# nano /etc/passwd

asir:x:1001:1001:,,,:/home/ftp/asir:/bin/ftp

Ejercicio 1-Ejercicio ftp


Realizar la configuracin necesaria para que un usuario llamado ejercicio
instale
Wordpress
desde
un
host
remoto
con
la
direccin
wordpress.ejercicio.com. Al escribir en la URL wordpress.ejercicio.com, el
document root de ste host virtual apuntar a /var/www/html/worpress y al
escribir en la URL ftp://wordpress.ejercicio.com introduciremos el usuario
ejercicio y se nos abrir de manera enjaulada la carpeta var/www/html.
El ejercicio estar completo cuando el usuario ejercicio sea de capaz de
instalar wordpress desde un host remoto.
Para que no de problemas, agregamos el usuario ejercicio al grupo www-data
server# usermod -a -G www-data ejercicio
server# chown www-data. /var/www/html/wordpress -R
server# chmod g+rw /var/www/html/wordpress -R

17-Servicio de correo en local


Creamos una configuracin bsica para configurar servidores de correo
Cada equipo tendr un dominio
El servidor DNS ser el de Sergio
Creamos la zona pedroc.com
Mquina Sergio
IP:192.168.1.144
Usuario: smr2
Contrasea: Almi123
Paso 1-Creamos una zona directa y otra inversa en /etc/bind/named.conf.local
server# nano /etc/bind/named.conf.local

zone "pedroc.com" {

type master;

file "/etc/bind/db.pedroc.com";

};

zone 1.168.192.in-addr.arpa{

type master;

file /etc/bind/inverso.db.pedroc.com;

};

Paso 2-Creamos la configuracin correspondiente


server# nano /etc/bind/db.pedroc.com

; BIND data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

604800

86400

2419200

; Serial

; Refresh

; Retry

; Expire

604800 )

; Negative Cache TTL

IN

NS

pedroc.com.

IN

MX

10 mail.pedroc.com.

IN

192.168.1.63

192.168.1.63

mail

Para comprobar:
nslookup
server 192.168.1.144
set q=MX
pedroc.com
Server:

Address:

192.168.1.144

192.168.1.144#53

pedroc.com mail exchanger = 10 mail.pedroc.com.

Paso 3-Es necesario tener instalado apache2 y php5 (gestor de correo web)
server# apt-get install postfix
(abrir puerto 25 (protocolo de envo))
Marcamos sitio de Internet
Nombre del sistema de correo: pedroc.com

Paso 4-Editamos /etc/postfix/main.cf


server# nano /etc/postfix/main.cf
mydestination = pedroc.com #Destinatario es el destino de correo
home_mailbox = Maildir/ # Maildir es el nombre del buzn
Paso 5-Reiniciamos el servicio
server# service postfix restart
Nosotros vamos a usar IMAP por diferentes razones que el POP3 no permite

Trabaja online
Gran nmero de transacciones a la vez
Permite bsquedas
Permite carpetas

Paso 6-Instalamos IMAP (puerto 143). Decimos que no .


server# apt-get install courier-imap
Paso 7-Instalamos la herramienta para crear buzones y envar emails
server# apt-get install mailutils
Paso 8-Instalamos el entorno web para el cliente. Creamos un enlace
simblico a la carpeta sendmail /var/www
server# apt-get install squirrelmail
server# cd /var/www/html
server# ln -s /usr/share/squirrelmail webmail
Paso 9-Creamos un perfil.
server# useradd webmail
server# passwd webmail
Paso 10-Creamos el buzn. Para ello creamos una carpeta con el mismo
nombre de usuario.
server# cd /home

server# mkdir webmail


server#cd webmail
server# maildirmake Maildir/
server# chown webmail:webmail Maildir/
server# chmod -R 755 Maildir/
Paso 11-Configuramos el gestor WEB de correo
server# squirrelmail-configure

2>

1>

pedroc.com >

r> #Volvemos al men principal

d>

courier> #Indicamos que el protocolo de entrada es courier-imap

>

s>

>

q>

server#service postfix restart


server# service courier-imap restart
server# service apache2 restart
Tareas

1-Pasarlo a castellano
2-Cambiar la ardilla por otro dibujo
3-Customizarlo

18-Servicio de correo completo (Firma, Antivirus,


AntiSPAM)
Requerimientos bsicos
Ficheros

hostname = nombre del equipo en el dominios

host=> debe apuntar al dominio y nombre del equipo

DNS
https://rtcamp.com/tutorials/mail/dkim-postfix-ubuntu/

inverso

registro mx

registro spf

registro txt

registro dmar

registro domoinkey

refistro domainkey selector

dns

Formar sms => Configurar dkim y postfix (dh-filfer ni mirar)

Contra spam => spamasassin

DNS Inverso obligatorio

Esto no entra pero debemos conocer

Darnos de alta en mx-toolbox

Crear direcciones obligatorias

abuse@dominio.com
postmaster@dominio.com
Paso 1-Editamos /etc/hostname
server# nano /etc/hostname

mail.pedroc.com

Paso 2-Editamos /etc/hosts


server# nano /etc/hosts

127.0.0.1 localhost

192.168.1.63 mail.pedroc.com mail

Paso 3-Editamos /etc/bind/db.pedroc.com y aadimos los registros DNS


nuevos

IN

TXT

"v=spf1 ip4:192.168.1.63 a mx -all"

IN

SPF

"v=spf1 ip4:192.168.1.63 a mx -all"

Paso 4-Instalamos DKIM


server# apt-get install opendkim opendkim-tools #Debian
server# apt-get install opendkim opendkim/precise-backports #Ubuntu
server# apt-get install opendkim opendkim opendkim-tools #Ubuntu
Paso 5-Editamos /etc/opendkim.conf
server# nano /etc/opendkim.conf

Domain

KeyFile

Selector

pedroc.com

/etc/postfix/dkim.key

mail

inet:8891@localhost

Paso 6-Editamos /etc/default/opendkim


server# nano /etc/default/opendkim

SOCKET="inet:8891@localhost"

Paso 7-Editamos el archivo de configuracin POSTFIX


server# nano /etc/postfix/main.cf

milter_default_action = accept

milter_protocol = 2

smtpd_milters = inet:localhost:8891

non_smtpd_milters = inet:localhost:8891

Paso 8-Generamos la clave DKIM. Con eso creamos mail.private y mail.ext


server# opendkim-genkey -t -s mail -d pedroc.com
Paso 9-Movemos mail.private a /etc/postfix/dkim.het
server# cp mail.private /etc/postfix/dkim.key
Paso 10-Copiamos el contenido de mail.txt en db.pedroc.com
server# cat mail.txt

mail._domainkey IN TXT "v=DKIM1; k=rsa; t=y;


p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+lUhuGcNQm74lcArg53
9yiMtZFR2yQ4ierHUGhIYhaIEeUhoYwf8kvNxWaAkCJ2c/oEkELKePbgv1d54gsxZW
v+DLgfa3780CUsl/sX5e8UwaFbmvhT5it2oAa0S5WguzcUjhBD4EmpW9FFm2EN
xOOC84KZnF7SG+T/rjn+KlzQIDAQAB" ; ----- DKIM key mail for pedroc.com

Otra forma
server# cat mail.txt >> /etc/bind/db.pedroc.com
Paso 11-Reiniciamos los servicios
server# service opendkim start
server# service postfix restart
Paso 12-Comprobamos que funciona
server# dig mail._domainkey.pedroc.com TXT +short
Salida:

"v=DKIM1\; k=rsa\; t=y\;


p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+lUhuGcNQm74lcArg53
9yiMtZFR2yQ4ierHUGhIYhaIEeUhoYwf8kvNxWaAkCJ2c/oEkELKePbgv1d54gsxZW

v+DLgfa3780CUsl/sX5e8UwaFbmvhT5it2oAa0S5WguzcUjhBD4EmpW9FFm2EN
xOOC84KZnF7SG+T/rjn+KlzQIDAQAB"

Paso 13-Aadimos la entrada dmarc


server# nano /etc/bind/db.pedroc.com

dmarc.pedroc.com IN TXT v=DMARC1; p=none;


rua=mailto:pedroc@pedroc.com; ruf=mailto:pedroc@pedroc.com; adkim=r;
aspf=r

_domainkey.dominio.com IN TXT o=

Alternativa Sergio (paso a paso)


server# mkdir /etc/opendkim
server# mkdir /etc/opendkim/pedroc.com
server# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim
-c OpenDKIM opendkim
server# chown opendkim:opendkim -R pedroc.com
server# nano /etc/opendkim.conf

syslog

yes

#UMask

domain

pedroc.com

keyfile

/etc/opendkim/pedroc.com/mail.private

Selector

mail

AutoRestart

yes

Background

Canonicalization

yes

relaxed/relaxed

DNSTimeout

Mode

sv

SignatureAlgorithm

rsa-sha256

SubDomains

no

#UseASPDiscard

no

#Version

rfc4871

X-Header

no

Statistics

/var/log/dkim-filter/dkim-stats

server# service opendkim restart


Configuramos el DNS. Vamos al archivo mail.txt donde sta la entrada DNS
creada
server# cd /etc/opendkim/pedroc.com
server# cat mail.txt >> /etc/bind/db.pedroc.com

domainkey.pedro.com. IN TXT o=~; r=pedroc@pedroc.com

mail._domainkey IN TXT ( "v=DKIM1; k=rsa; t=y;


p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+lUhuGcNQm74lcArg53

9yiMtZFR2yQ4ierHUGhIYhaIEeUhoYwf8kvNxWaAkCJ2c/oEkELKePbgv1d54gsxZW
v+DLgfa3780CUsl/sX5e8UwaFbmvhT5it2oAa0S5WguzcUjhBD4EmpW9FFm2EN
xOOC84KZnF7SG+T/rjn+KlzQIDAQAB" ) ; ----- DKIM key mail for pedroc.com

dmarc.pedroc.com IN TXT v=DMARC1; p=none;


rua=mailto:pedroc@pedroc.com; ruf=mailto:pedroc@pedroc.com; adkim=r;
aspf=r

Comprobamos que funciona


server# dig mail._domainkey.pedroc.com TXT +short

Comprobamos que la clave funciona correctamente


server# cd /etc/opendkim/pedroc.com
server# opendkim-testkey -d pedroc.com -s mail -k mail.private -vvv
Registro de listas negras MxtoolBox (mxtoolbox.com)
http://mjesussuarez.blogspot.com.es/2013/08/configuracion-de-zarafa.html

19-Instalacin de Zimbra
Paso 1-Instalamos bind9
server# apt-get install bind9
Paso 2-Editamos /etc/hostname
server# nano /etc/hostname

mail.pedroc.com

Paso 3-Editamos /etc/hosts


server# nano /etc/hosts

127.0.0.1 localhost

192.168.1.210 mail.pedroc.com mail

Paso 4-Creamos una zona en /etc/bind/named.conf.local


server# nano /etc/bind/named.conf.local

zone "pedroc.com" {

type master;

file "/etc/bind/db.pedroc.com";

};

zone 1.168.192.in-addr.arpa{

type master;

file /etc/bind/inverso.db.pedroc.com;

};

Paso 5-Creamos la configuracin correspondiente


server# nano /etc/bind/db.pedroc.com

; BIND data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

604800

86400

2419200

604800 )

; Serial

; Refresh

; Retry

; Expire

; Negative Cache TTL

IN

NS

pedroc.com.

IN

MX

10 mail.pedroc.com.

IN

192.168.1.210

192.168.1.210

mail

Y su inversa
server# nano /etc/bind/db.192.168.1

; BIND reverse data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

; Serial

604800

86400

2419200

604800 )

; Refresh

; Retry

; Expire

; Negative Cache TTL

IN

210

NS

PTR

localhost.

mail.

Para comprobar:
nslookup
server 192.168.1.144
set q=MX
pedroc.com
Server:

Address:

192.168.1.144

192.168.1.144#53

pedroc.com mail exchanger = 10 mail.pedroc.com.

server# nano /etc/bind/db.192

; BIND reverse data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

; Serial

604800

86400

2419200

604800 )

210

IN

NS

localhost.

PTR

mail.

; Refresh

; Retry

; Expire

; Negative Cache TTL

Paso 6-Instalamos los paquetes necesarios


server# apt-get install sqlite3 libperl5.14 libpcre3 libgmp3c2 lib32gmp3-dev
libgmp3-dev sysstat libexpat1 libidn11 perl-modules wget lzma
Paso 7-Descargamos la ltima versin de Zimbra del centro de descargas
http://www.zimbra.com/downloads/zimbra-collaboration-open-source
server# wget http://files2.zimbra.com/downloads/8.5.1_GA/zcs8.5.1_GA_3056.UBUNTU12_64.20141103151510.tgz
La del manual es:
server# wget http://files2.zimbra.com/downloads/8.0.3_GA/zcs8.0.3_GA_5664.UBUNTU12_64.20130305090204.tgz
Paso 8-Descomprimimos el archivo
server# tar -xzvf zcs-8.5.1_GA_3056.UBUNTU12_64.20141103151510.tgz
La del manual es:
server# tar -xzvf zcs-8.0.3_GA_5664.UBUNTU12_64.20130305090204.tgz
Paso 9-Entramos en el directorio e instalamos
En Ubuntu 12.04 falla la instalacin por causa de algunos paquetes. Por lo
tanto, previamente, instalamos
apt-get install pax
apt-get install libaio1
apt-get install unzip
server# cd zcs-8.5.1_GA_3056.UBUNTU12_64.20141103151510
server# ./install.sh
La del manual es:
server# cd zcs-8.0.3_GA_5664.UBUNTU12_64.20130305090204
Paso 10-Finalizados los pasos de la gua (nos fallar el registro MX) la interfaz
web nos permite aadir un dominio sobre el que configurar correos. Agregados
los correos, podemos probar a enviar a un correo creado por el compaero.

Si no funciona, debemos probar que el DNS del compaero nos devuelve la IP


de si servidor.
server# nslookup mail.ander.com
Paso 11-Para acceder al panel de control usamos conexin HTTPS y el
puerto 7071

https://192.168.1.210:7071

Paso 12-Para acceder al webmail con los correos creados en el administrador

https://192.168.1.210

http://ubuntuforums.org/showthread.php?t=956654

Script solucin Zimbra


Para solucionar el error de servicios al iniciar el admin de Zimbra, tenemos
que usar el siguiente script (zimbra.sh) y aadirlo al inicio.

chown -R zimbra:zimbra /opt/zimbra/zimbramon/crontabs

su zimbra

cat crontab >> crontab.zimbra

cat crontab.ldap >> crontab.zimbra

cat crontab.logger >> crontab.zimbra

cat crontab.mta >> crontab.zimbra

cat crontab.store >> crontab.zimbra

crontab crontab.zimbra

http://www.zarafa.com/wiki/index.php/Installing_Zarafa_from_packages

20-Instalacin de Zentyal
Activar correo

21-Proxy Squid
21.1-Iptables
Router

X
Internet

Para crear las reglas de iptables hay que tener en cuenta los siguientes
aspectos:
INPUT=>Paquetes que llegan a nuestra mquina
OUTPUT=> Paquetes que salen de nuestra mquina

FORWARD=>Paquetes que salen de nuestra mquina


Interfaces (Entrada y salida)
-i (input)
-o (output)
-s (Source)=> Ip del origen de los maquetes
-d (Destination)=> Ip de destino de los paquetes
-p (protocolo) => TCP, UDP, ICMP...
-j (permitir o denegar)=> ACCEPT, DROP,
NAT
Consiste en modificar la IP de origen y destino para conectar una red a otra red
o a Internet.
Filtrar antes de enrutar=>PREROUTING
Filtrar despus de enrutar=>POSTROUTING
Borrado de todas las reglas
server#
server#
server#
server#

iptables
iptables
iptables
iptables

-F
-X
-Z
-t nat -F

Ejemplo de uso (aceptar todo por defecto)


Definimos que polticas por defecto sea aceptar
server#
server#
server#
server#
server#

iptables
iptables
iptables
iptables
iptables

-p INPUT ACCEPT
-p OUTPUT ACCEPT
-p FORWARD ACCEPT
-t nat -p PREROUTING ACCEPT
-t nat -p POSTROUTING ACCEPT

Nota: Para evitar errores debemos aceptar todas las comunicaciones localhost

server# iptables -A INPUT -i lo -j ACCEPT

Para denegar todo el aula 1


server# iptables -A INPUT -s 192.168.1.0/24 -j DROP
Para aceptar smtp, pop3 y ftp del aula 1
server#
server#
server#
server#

iptables
iptables
iptables
iptables

-A
-A
-A
-A

FORWARD
FORWARD
FORWARD
FORWARD

-s
-s
-s
-s

192.168.1.0/24
192.168.1.0/24
192.168.1.0/24
192.168.1.0/24

-p
-p
-p
-p

tcp
tcp
tcp
tcp

dport
dport
dport
dport

20 -j ACCEPT
21 -j ACCEPT
110 -j ACCEPT
25 -j ACCEPT

Para permitir https y https


server# iptables -A FORWARD -s 192.168.1.0/24 -p tcp dport 80 ACCEPT
server# iptables -A FORWARD -s 192.168.1.0/24 -p tcp dport 443 ACCEPT

Para permitir DNS


server# iptables -A FORWARD -s 192.168.1.0/24 -p tcp dport 53 ACCEPT
server# iptables -A FORWARD -s 192.168.1.0/24 -p udp dport 53 ACCEPT
Para capar a la ip 192.168.1.50
server# iptables -A FORWARD -s 192.168.1.5 -j DROP
Filtrar despus de enrutar los que vengan del aula 1 y la salida sea eth0
INTERNET eth0

eth1 LAN

server# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j


MASQUERADE
Para que el envo sea transparente:
server# echo 1 /proc/sys/net/ipv4/ip_forward

Para comprobar las reglas


server# iptables -L -n
Para redirigir puerto 80 al puerto 1000 (Proxy transparente)
server# iptables -t nat -A POSTROUTING -i eth1 -j REDIRECT -p tcp dport 80
--to-ports 1000
Para permitir a la suberd 192.168.5.0/24 acceso a Internet transparente en la
interfaz eth2 (DHCP).
server# iptables -A FORWARD -j ACCEPT
server# iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o eth2 -j
MASQUERADE
server# echo 1 > /proc/sys/ipv4/ip_forward
Para redireccionar todo por el puerto 80 enviarlo a la IP 62.99.77.74
server# iptables -t nat -A PREROUTING -s 192.168.6.0/24 -p tcp dport 80 -j
DNAT todestination 62.44.77.74
Ejercicio 2-Iptables
Ander har de servidor y Pedro ser el cliente que intentar conectarse a
Internet.

Internet eth0

Ander

eth1

LAN 192.168.5.0

eth0

En el server de Ander configuramos la segunda tarjeta de red eth1 en la


subred 192.168.5.0/24
server_ander# nano /etc/network/interfaces

auto eth1

address 192.168.5.1

netmask 255.255.255.0

server_ander# iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o eth0 -j


MASQUERADE
server_ander# echo 1 > /proc/sys/net/ipv4/ip_forward
Para impedir la navegacin
server_ander# iptables -A FORWARD -i eth1 -p tcp dport 80
En el equipo de Pedroc (cliente) tan slo cambiamos la configuracin de red
para que se conecte a travs de la red 192.168.5.0/24 a travs de la interfaz
eth1 de Ander
server_pedroc# nano /etc/network/interfaces

auto eth0

address 192.168.5.2

netmask 255.255.255.0

gateway 192.168.5.1

21.2-Proxy Squid
Un proxy es un PC que hace de intermediario entre los Pcs de la red y el router
Ventajas

Los PC de los usuarios no tienen acceso al router

Las pginas se cachean en la memoria virtuales de proxy lo


cul acelera las descargas.

Es fcil crear urls de urls prohibidas

Permite crear listas de palabras prohibidas

Se puede permitir o denegar subredes

Guarda informes de todas las conexiones

Los Pcs de nuestra red estn ms seguros ante ataques

externos
Inconvenientes

Es necesario configurar el acceso a cada aplicacin (ftp, http,

smtp...)

Si el proxy falta nos quedamos sin Internet

El proxy requiere mantenimiento

Diseos
Diseo 1

Diseo 2

10.120.120.1
Aula1
Aula2
10.120.120.2

Todas las aulas en la misma subred.


server# apt-get install squid
server# service squid3 start
Control de acceso (ACL)

10.120.120.3

El archivo de configuracin se almacena en /etc/squid3/squid.conf


Se utiliza poniendo la palabra seguida del nombre
ACL nombre

src (ip)

dst/ ip)

port (purto)

proto (protocolo)

Ejemplo1
Paso 1-Creamos una ACL para la subredes

acl asir2 src 192.168.1.0/24

Paso 2-Permitimos o denegamos la ACL. Para ello utilizamos http_access

http_access allow asir2 #Permite la subred asir2

http_access deny asir2 #Deniega la subred asir2

Opciones de RED (puerto por el que escucha el proxy)


Para configurar squid en el puero 3128 en modo transparente

http_port 3128 transparent

Para redirigir las peticiones del puerto 80 hacia el puerto 3128 (eth0 es la red
interna)
server# iptables -t nat -A PREROUTING -i eth0 -p tcp dport 80 -j REDIRECT
to-port 3128
El problema es que no redirigimos el puerto 443. Habra que aadir otros
puertos.
Tamao de la cache del proxy
Es importante asignarle un 35% de la RAM del PC (Ej. 198 MB para 512 MB de
RAM)

cache_mem 198 MB

Tamao de disco duro que asignamos a la cache del squid


50% del disco duro

cache_dir ufs /var/lib/pool 80000 32 512

# ufs => tipo de archivo1

#/var/lib/pool => ruta donde guardamos

# 80000 es la cache (50% del HD)

# 32 Directorio de primer nivel

# 512 Directorios de segundo nivel

Si usamos otra ruta o la creamos a mano, tendremos que aadir al usuario


squid a eesa carpeta.
Configuracin del cliente (Firefox)

Vamos a herramientas-Opciones-Avanzado-Red

Imagen 1

Imagen 2
Ejercicio 1

Instalar un proxy squid que deniegue el acceso a una subred (la del cliente)
Aadiendo reglas desde ficheros externos
Para no tocar el archivo squid.conf es mejor cargar las acls desde un archivo
externo.
Ejemplo 1
Creamos un fichero llamado aulas_prohibidas.txt en /etc/squid3
server# nano /etc/squid3/aulas_prohibidas.txt

192.168.1.0/24

192.168.2.0/24

A continuacin editamos el squid.conf y aadimos acl aulas_prohibidas src


/etc/squid/aulas_prohibidas.txt
server# nano /etc/squid3/squid.conf

http_access deny aulas_prohibidas

Recargamos squid
server# service squid reload
Ejemplo 2
En este ejemplo
url_prohibidas.txt

prohibimos

urls.

server# nano /etc/squid3/url_prohibidas.txt

www.sexo.com

www.marca.com

Para

ello

creamos

el

fichero

Editamos el archivo /etc/squid3/squid.conf


server# /etc/squid3/squid.conf

acl url_prohibidas dst /etc/squid3/url_prohibidas.txt

http_access deny url_prohibidas

Recargamos squid
server# service squid3 reload
Una de las funcionalidades ms importantes que nos ofrece squid es registrar
todos los accesos a Intermet. El archivo /var/log/squid/access.log registra la
fecha, hora y url de acceso a Internet.
server# cat /var/log/squid/access.log

Nota: Primero es necesario bloquear y luego permitir

Ejercicio 2
Realizar la configuracin necesaria para que el alumno 1 acceda a internet slo
por https. Adems slo podr acceder al gmail y todas las dems web sern
bloqueadas. Es decir, este alumno slo podr utilizar el correo.
Realizar la configuracin necesaria para que el usuario 2 slo pueda acceder de
20:00 a 20:25 a cualquier pgina.
Nota (Existe la acl time que nos permiten accder a internet por tiempo)
Para ello crearamos dos ACL
tiempo=>permite int (13:00 15:00)
pedro => permite int (Pedro)

http_access allow tiempo pedro

Paso 1-Configuramos script y ejecutamos


iptables -t nat -A PREROUTING -i eth0 -p tcp dport 443 -j REDIRECT to-port
3128

#http://www.javiercarrasco.es/2013/08/01/proxy-transparente-con-squid-dhcpen-#ubuntu-13-04-32-bits/

#--Script--

#!/bin/sh

# IP del servidor SQUID

SQUID_SERVER="192.168.12.1"

# Interface conectada a Internet

INTERNET="eth1"

# Interface interna

LAN_IN="eth0"

# Puerto Squid

SQUID_PORT="3128"

# Limpia las reglas anteriores

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t mangle -F

iptables -t mangle -X

# Carga los modulos IPTABLES para NAT e IP con soporte conntrack

modprobe ip_conntrack

modprobe ip_conntrack_ftp

echo 1 > /proc/sys/net/ipv4/ip_forward

# Politica de filtro por defecto

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

# Acceso ilimitado a loop back

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

# Permite UDP, DNS y FTP pasivo

iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j


ACCEPT

# Establece el servidor como router para la red

iptables --table nat --append POSTROUTING --out-interface $INTERNET -j


MASQUERADE

iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT

# acceso ilimiato a la LAN

iptables -A INPUT -i $LAN_IN -j ACCEPT

iptables -A OUTPUT -o $LAN_IN -j ACCEPT

# Redirige las peticiones de la red interna hacia el proxy

iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to


$SQUID_SERVER:$SQUID_PORT

# Redirige la entrada al proxy

iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --toport $SQUID_PORT

# Registrar todo

iptables -A INPUT -j LOG

iptables -A INPUT -j DROP

Paso 2-Creamos un fichero con las url aceptadas


server#nano /etc/squid3/url_aceptadas.txt

www.gmail.com

accounts.google.com

Paso 3-Creamos un fichero para los equipos permitidos


server# nano /etc/squid3/mis_equipos.txt

192.168.12.10

192.168.12.11

Paso 4-Configuramos squid.conf


server# nano /etc/squid3/squid.conf

http_port 192.168.65.1:3128 transparent

acl url_aceptadas dst /etc/squid3/url_aceptadas.txt

acl permitir time 18:00-20:25

acl mis_equipos src /etc/squid3/mis_equipos.txt

http_access allow url_aceptadas permitir mis_equipos

22-Voz IP en Ubuntu Server


Paso 1-Instalamos ssh
server# apt-get install openssl libssl-dev ssh
Paso 2-Instalamos los paquetes necesarios para compilar
server# apt-get install gcc make g++
Paso 3-Instalamos nmap lynx y emacs
server# apt-get install nmap lynx emacs23
Paso 4-Instalamos nmap lynx y emacs
server# apt-get install festival festival-dev
Paso 5-Instalamos nmap lynx y emacs
server# apt-get install ncurses-base ncurses-bin ncurses-term libncurses5
Paso 6-Instalamos zlib1g
server# apt-get install zlib1g zlib1g-dev
Paso 7-Instalamos libxm12 libxm12-dev
server# apt-get install libxml2 libxml2-dev
Paso 8-Instalamos libreras para servidor web libxm12 libxm12-dev
server# apt-get install libtiff4 libtiff4-dev

Paso 9-Instalamos las libreras de sonido


server#apt-get install libsoundgen0 libgsm1 libltdl7 libpq5 libspeex1 libsqlite0
libtonezone2.0 libaudiofile1 libaudiofile-dev
Paso 10-Instalamos drivers de sonido
server#apt-get install flex
Paso 11-Instalamos subversin
server#apt-get install subversion curl doxygen
Paso 12-Instalamos dependencias de perl
server#apt-get install libnet-telnet-perl
libmime-types-perl libproc-waitstat-perl

mime-construct

libipc-signal-perl

Paso 13-Instalamos apache2


server#apt-get install apache2
Paso 14-Instalamos php5
server#apt-get install php5 php5-cli php5-mysql php5-curl php5-gd php-db
Paso 15-Instalamos mysql
server#apt-get install mysql-server mysql-client
Paso 16-Instalamos phpmyadmin
server#apt-get install phpmyadmin
Paso 17-Creamos
necesarios.

la

server#cd
server#mkdir asterisk
server#cd asterisk

carpeta

Asterisk

descargamos

los

paquetes

server#wget http://asterisk.gnuinter.net/files/asterisk-perl-0.08.tar.gz
server#wget http://mirror.freepbx.org/freepbx-2.11.0.42.tar.gz
server#wget
http://downloads.asterisk.org/pub/telephony/zaptel/zaptel1.4.12.1.tar.gz
server#wget
http://downloads.asterisk.org/pub/telephony/libpri/libpri1.4.14.tar.gz
server#wget
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk12.0.0.tar.gz
server# wget http://sourceforge.net/projects/sox/files/sox/12.17.9/sox12.17.9.tar.gz/
server# wget http://sourceforge.net/projects/lame/files/lame/3.96.1/lame3.96.1.tar.gz
server#wget
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-sounds1.2.1.tar.gz
server#wget
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons1.6.2.4.tar.gz
server# wget http://pkgs.fedoraproject.org/repo/pkgs/sox/sox12.17.9.tar.gz/a463ef9ff2ec00007a3a42ced9572b03/sox-12.17.9.tar.gz

Paso 18-Comenzamos a compilar sox


server# cd /usr/src
server#tar -xvf ~/asterisk/sox-12.17.9.tar.gz
server# cd sox-12.17.9
server#./configure
server#make
server#make install

Paso 19-Seguimos con lame


server#tar -xvf ~/asterisk/lame-3.96.1.tar.gz
server# cd lame-3.96.1/
server#./configure
server#make
server#make install
Paso 20-Seguimos con asterisk-perl
server#tar -xvf ~/asterisk/asterisk-perl-0.08.tar.gz
server# cd asterisk-perl-0.08/
server#perl Makefile.PL
server#make all
server#make install

Paso 21-Seguimos con freepbx


server#tar -xvf ~/asterisk/freepbx-2.11.0.42.tgz
serrver# cd freepbx/

Paso 22-Damos privilegios a al usuario asterisk


root#mysql -u root -p
mysql>grant all privileges on *.* to asterisk@localhost
Almi123;

identified by

Paso 23-Creamos las bases de datos asterisk y asteriskcdrdb


En la base de datos asteriskcdrdb importamos el archivo
/usr/src/freepbx/SQL/cdr_mysql_table.sql
En
la
base
de
datos
/usr/src/freepbx/SQL/newinstall.sql

asterisk

importamos

el

archivo

mysql>grant all privileges on asteriskcdrdb.* to asterisk@localhost identified


by 'Almi123';
mysql>grant all privileges on asterisk.* to asterisk@localhost identified by
'Almi123';

Paso 23-Creamos
correspondientes.

los

grupos

asterisk

asignamos

los

permisos

server#groupadd asterisk
server# mkdir /var/lib/asterisk/
server# useradd asterisk -c PBX Asterisk -d /var/lib/asterisk/ -g asterisk
server# mkdir /var/run/asterisk
server# chown asterisk:asterisk /var/run/asterisk

Paso 24-Aadimos www-data al grupo asterisk


server# nano /etc/group

www-data:x:33:asterisk

Paso 25-Cambiamos las variables de entorno de apache APACHE_RUN y


APACHE_RUN_GROUP cambiando el usuario www-data a asterisk.
server# nano /etc/apache2/envvars

export APACHE_RUN_USER=asterisk

export APACHE_RUN_GROUP=asterisk

Imagen 3
Paso 26-Cambiamos los permisos de php5
server#chown -R asterisk /var/lib/php5
Paso 27-Cambiamos el tamao mximo de subida de un ficheros
server# nano /etc/php5/apache2/php.ini

Imagen 4
Paso 28-Descomprimimos los ficheros que faltan
server# cd /usr/src
server# tar -xzvf ~/asterisk/libpri-1.4.14.tar.gz
server#tar -xzvf ~/asterisk/zaptel-1.4.12.1.tar.gz
server#tar -xzvf ~/asterisk/asterisk-12.0.0.tar.gz
server#tar -xzvf ~/asterisk/asterisk-addons-1.6.2.4.tar.gz
server#tar -xzvf ~/asterisk/asterisk-sounds-1.2.1.tar.gz

Paso 29-Compilamos libpri


server# cd libpri-1.4.14
server# make & make install

Paso 30-Compilamos zaptel


server# cd zaptel-1.4.12.1/
server# make clean
server# make install
Paso 31-Instalamos libossp-uuid-dev
server# apt-get install libossp-uuid-dev
server# apt-get install uuid-dev
server# apt-get install libblkid-dev
server# apt-get install libjansson-doc
server# apt-get install libjansson-dev
server# apt-get install libjansson4
server# apt-get install sqlite3
server# apt-get install libdbd-sqlite3
server#apt-get install sqlite3*
Paso 32-Compilamos asterisk
server#cd asterisk-12.0.0/
server#./configure
server#make
server#make install
server# make progdocs
server# make samples
server# make progdocs
Paso 33-Compilamos asterisk-sounds
server#cd asterisk/asterisk-sounds-1.2.1
server#make install
Paso 34-Compilamos asterisk-addons
server#
server#
server#
server#

cd asterisk-addons-1.6.2.4
./configure
make
make install (da fallo=

Paso 35-Asignamos a asterisk la capeta /var/lock/apache2


server#cd
server# chown -R asterisk /var/lock/apache2
server# service apache2 restart

server#chown -R asterisk:asterisk /var/run/asterisk


server#mkdir /var/www/cgi
server#chown -R asterisk:asterisk /var/www/cgi
server#cd /usr/src/

Prctica final servicios-BBDD


DNS
Cada uno tendremos nuestro dominio
Paso 1-Instalamos bind9
server# apt-get install bind9

Paso 2-Identificamos a nuestro servidor como servidor DNS


server#nano /etc/resolv.conf

nameserver 192.168.1.210

Paso 3-Editamos el archivo /etc/bind/named.conf.local y creamos a zona


pedroc.com. En cada dominio creamos 4 host owncloud,wordpress,
joomla, rouncube.
server# nano /etc/bind/named.conf.local

zone pedroc.com{

type master;

file /etc/bind/db.pedroc.com;

};

Paso 4-Creamos el archivo /etc/bind/db.pedroc.com al que hemos hecho


referencia en el punto 2 y creamos los host.

; BIND data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

; Serial

604800

; Refresh

86400

; Retry

2419200

604800 )

; Expire

; Negative Cache TTL

IN

NS

IN

pedroc.com.

192.168.1.63

www

IN

192.168.1.63

joomla

IN

192.168.1.63

wordpress IN

192.168.1.63

owncloud

IN

192.168.1.63

roundcube IN

192.168.1.63

Cada uno se resuelve a si mismo y reenva al de al lado


Paso 5-Editamos el archivo /etc/bind/named.conf.options y aadimos los
forwarders. Podemos descomentar el ejemplo.

forwarders {

192.168.1.45;

};

DNS inversos de los dominios creados


Paso 6-Para crear una entrada inversa, vamos a /etc/bind9/named.conf.local
server# nano /etc/bind/named.conf.local

zone 1.168.192.in-addr.arpa{

type master;

file /etc/bind/inverso.db.pedroc.com;

};

Paso 7-Creamos /etc/bind/inverso.db.pedroc.com


server# nano /etc/bind/inverso.db.pedroc.com

; BIND reverse data file for local loopback interface

$TTL

604800

IN

SOA

pedroc.com. root.pedroc.com. (

; Serial

604800

86400

; Refresh

; Retry

2419200

604800 )

; Expire

; Negative Cache TTL

NS

pedroc.com.

106

PTR

roundcube.

106

PTR

joomla.

106

PTR

wordpress.

106

PTR

owncloud .

IN

Paso 8-Comprobamos que resuelve tanto el directo como el inverso


server# nslookup pedroc.com
server# nslookup 192.168.1.106

BBDD
Adems la base de datos tambin la deber crear yo, mediante el
phpmyadmin (Importante: No puede ver mas que mis db). De forma
que yo instalar los gestores mediante un ftp y el usuario Instalador|
Almi123. Desde mi ordenador podr acceder con mysql-client

mediante Sergio|Almi123 y solo podr consultar los valores usuarios


del phpmyadmin y dos veces por hora.
Tanto Joomla como Wordpess lo deber instalar yo desde mi equipo
(sergio) con el usuario instalador@Almi123.
***Pasos phpmyadmin***
Paso 9-Aadimos el usuario Sergio/Almi123. Para que Sergio slo tenga
permisos en las bases de datos creadas por l, damos permisos en el
wildcard correspondiente. Vamos a aprovechar para permitir el acceso desde
la IP de Sergio y con slo dos conexiones por hora.
server# mysql -u root -p
mysql>GRANT ALL PRIVILEGES ON `Sergio\_%`.* TO 'Sergio'@'192.168.1.200'
identified by 'Almi123' WITH MAX_CONNECTIONS_PER_HOUR 2;
Paso 10-Habilitamos el acceso al servidor MySQL desde el exterior editando
/etc/mysql/my.cnf y poniendo la IP del servidor en bind-address.
server# nano /etc/mysql/my.cnf

bind-address=192.168.1.210

Paso 11-Creamos las bases de datos que va a usar Sergio tanto para instalar
Owncloud. . Como Sergio slo puede crear bases de datos bajo el prefijo
Sergio, todas las bases de datos tendrn el nombre en formato
Sergio_nombreDDBB.
server# mysql -u Sergio -p
mysql>create database Sergio_owncloud;
Paso 12-Como Wordpress y Joomla se instalaran con el usuario
Instalador/Almi123, creamos el usuario Instalador en MySQL y creamos las
bases correspondientes.

Servicios WEB
Crearemos un host virtual https para owncloud.alumno.com. De forma
que se puedan descargar archivos desde mi pc. Cuenta
Sergio/Almi123. El document root ser /var/www/alumno.

Adems si el Joomla o el Wordpres no est instalado, deber aparecer


sitio en construccin.
Paso 9-Creamos el document root del usuario y para cada una de los gestores
de contenido a instalar.
server# mkdir /var/www/pedroc
server# mkdir /var/www/pedroc/owncloud
server# mkdir /var/www/pedroc/joomla
server# mkdir /var/www/pedroc/wordpress
server# mkdir /var/www/pedroc/roundcube
GRANT ALL PRIVILEGES ON `Sergio\_%`.* TO 'Sergio'@'192.168.1.200'
identified by 'mypasswd' WITH MAX_CONNECTIONS_PER_HOUR 2;
Paso 10-Modificamos el documentroot a var/www/pedroc. Como tambin
vamos a usar SSL, modificamos el document root del certificado por defecto.
server# nano /etc/apache2/sites-enabled/000-default

DocumentRoot /var/www/pedroc

DirectoryIndex examen.htm

server# nano /etc/apache2/sites-available/default-ssl

DocumentRoot /var/www/pedroc

Paso 11-Generamos los certificados SSL


Habilitamos SSL
server# a2enmod ssl
Crearemos el certificado autofirmado en /etc/apache2/certificados/pedroc.pem.
Este certificado puede ser usado para varios sitios.
server# mkdir -p /etc/apache2/certificados
Generamos el fichero .pem que contendr el certificado con esta instruccin:

server# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf


/etc/apache2/certificados/pedroc.pem
Respondemos a las preguntas que nos hacen en la generacin del certificado y
damos permisos de lectura al certificado1
server# chmod 600 /etc/apache2/certificados/pedroc.pem
Editamos el fichero /etc/apache2/ports/conf y aadimos los servidores
virtuales y el puerto de escucha SSL.
server# nano /etc/apache2/ports.conf

listen 80

listen 443 # Asegurarnos de que esta lnea no est activada ms abajo

NameVirtualHost *.80

NameVirtualHost *.443

Reiniciamos el servicio apache


server# service apache2 restart
Owncloud
Paso 12-Generamos el sitio para owncloud. Habilitamos el host virtual
escuchando en tanto en el puerto 80 como el 443. De sta forma, hacemos la
instalacin mediante el puerto 80 y luego habilitamos el puerto 443. Editamos
el fichero /etc/apache2/sites-available/owncloud.pedroc.com. Comprobamos
los contenedores y activamos las opciones correspondientes SSL. Comenzamos
con el sitio SSL
server# nano /etc/apache2/sites-available/owncloud.pedroc.com

<Virtualhost *:80>

ServerName owncloud.pedroc.com

DocumentRoot /var/www/pedroc/owncloud

<Directory /var/www/pedroc/owncloud/>

DirectoryIndex index.html

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order Allow,Deny

Allow from all

</Directory>

</Virtualhost>

<VirtualHost *:443>

ServerName owncloud.pedroc.com

DocumentRoot /var/www/pedroc/owncloud

DirectoryIndex index.html

SSLEngine on

SSLCertificateFile /etc/apache2/certificados/pedroc.pem

<Directory /var/www/pedroc/owncloud>

Options Indexes FollowSymLinks Multiviews

AllowOverride All

Order allow,deny

Allow from all

SSLRequireSSL

</Directory>

</VirtualHost>

Paso 13-Habilitamos el sitio owncloud.pedroc.com el mdulo rewrite y


reiniciamos apache.
server#a2ensite owncloud.pedroc.com
server# a2enmod rewrite
server# service apache2 restart
Paso 14-Nos descargamos owncloud en /var/www/pedroc/owncloud y
descomprimimos.
server# wget https://download.owncloud.org/community/owncloud7.0.2.tar.bz2

server# tar -xvf owncloud-7.0.2.tar.bz2


server# mv owncloud /var/www
Paso 15-Le damos permisos al usuario de apache en el directorio owncloud
server# chown -R www-data:www-data /var/www/pedroc/owncloud
server# service apache2 restart
Paso 16-Instalamos owncloud
Como usuario administrador elegirmos pedroc/Almi123
La BBDD ser owncloud con usuario root/Almi123
Creamos el usuario owncloud Sergio/Almi123
Joomla
Paso 17-Creamos el host virtual y especificamos como pgina por defecto la
obras.html para que muestre un mensaje mientras no haya sido instalado.
server# nano /var/www/pedroc/joomla/obras.html

<h1>Pgina en obras. A la espera de que Sergio instale Joomla</h1>

server# nano /etc/apache2/sites-available/joomla.pedroc.com

<Virtualhost *:80>

ServerName joomla.pedroc.com

DocumentRoot /var/www/pedroc/joomla

<Directory /var/www/pedroc/joomla/>

DirectoryIndex obras.html index.php index.html

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order Allow,Deny

Allow from all

</Directory>

</Virtualhost>

Para forzar el DirectoryIndex podemos crear un archivo .htaccess dentro de


joomla.
server# nano .htaccess

DirectoryIndex obras.html index.php index.html

Habilitamos el host en Apache


server# a2ensite joomla.pedroc.com
server# service apache2 restart
Asignamos Joomla a www-data
server# chown -R www-data:www-data /var/www/pedroc/joomla
La base de datos ya est creada en el apartado BBDD
Wordpress
Paso 18-Creamos el host virtual y especificamos como pgina por defecto la
obras.html para que muestre un mensaje mientras no haya sido instalado.
server# nano /var/www/pedroc/wordpress/obras.html

<h1>Pgina en obras. A la espera de que Sergio instale Wordpress</h1>

server# nano /etc/apache2/sites-available/wordpress.pedroc.com

<Virtualhost *:80>

ServerName wordpress.pedroc.com

DocumentRoot /var/www/pedroc/wordpress

<Directory /var/www/pedroc/wordpress/>

DirectoryIndex obras.html index.php index.html

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order Allow,Deny

Allow from all

</Directory>

</Virtualhost>

Para forzar el DirectoryIndex podemos crear un archivo .htaccess dentro de


wordpress.
server# nano /var/www/pedroc/wordpress/.htaccess

DirectoryIndex obras.html index.php index.html

Habilitamos el host en Apache


server# a2ensite wordpress.pedroc.com
server# service apache2 restart
Asignamos Wordpress a www-data
server# chown -R www-data:www-data /var/www/pedroc/wordpress

Roundcube
Paso 19-Instalamos rouncube
Paso 20-Editamos el archivo /var/lib/roundcube/config/main.inc.php
server# nano /var/lib/roundcube/config/main.inc.php

$rcmail_config['default_host'] = 'localhost';

Paso 21-Como tenemos el document root en /var/www/pedroc creamos un


enlace simblico para roundcube.
server# ln -s /var/lib/roundcube /var/www/pedroc/roundcube
Paso 22-Creamos el host virtual
server# nano /etc/apache2/sites-available/roundcube.pedroc.com

<Virtualhost *:80>

ServerName roundcube.pedroc.com

DocumentRoot /var/www/pedroc/roundcube

<Directory /var/www/pedroc/roundcube/>

DirectoryIndex index.php index.html

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order Allow,Deny

Allow from all

</Directory>

</Virtualhost>

https://help.ubuntu.com/community/Roundcube
https://www.exratione.com/2013/07/installing-roundcube-on-ubuntu-1204/
http://www.upubuntu.com/2012/02/how-to-install-roundcube-webmail-071on.html
FTP
Mediante el ftp con el usuario datos|Almi123 acceder a una carpeta para
poder subir archivos, nunca superiores a 10 mb (TODOS los usuarios ftp
enjaulados).
Instalaremos
Paso 23-Instalamos vsftpd
server# apt-get install vsftpd
Paso 24-Editamos el archivo /etc/vsftpd.conf

listen=yes

anonymous_enable=no

local_enable=yes

write_enable=yes

local_umask=022

anon_upload_enable=No

anon_mkdir_write_enable=no

dirmessage_enable=yes

use_localtime=yes

xferlog_enable=yes

connect_from_port_20=yes

chroot_local_user=yes

chroot_list_enable=yes

chroot_listfile=/etc/vsftpd.chroot.list #creamos este fichero y lo dejamos vaco

Paso 25-Creamos el grupo ftp y una shell fantasma


server# groupadd ftp
server# mkdir /bin/ftp
Paso 26-Aadimos la shell fantasma
server# nano /etc/shells

/bin/ftp

Paso 27-Damos permisos 755 a la carpeta pedroc donde el usuario quedar


enjaulado. Por su parte, las carpetas interiores tendrn permisos 777
server# chmod 777 -R /var/www/pedroc
server# chmod 755 /var/www/pedroc/
Paso 28-Aadimos el usuario al grupo ftp y la shell fantasma
server# useradd -g ftp -d /var/www/pedroc -c user instalador instalador
Paso 29-Creamos contrasea para el usuario
server# passwd instalador
Paso 30-Editamos el archivo /etc/passwd y ponemos la shell /bin/ftp al
usuarios asir
server# nano /etc/passwd

datos:x:1001:1001:,,,:/var/www/pedroc:/bin/ftp

Cada uno tendremos nuestro dominio


Cada uno se resuelve a si mismo y reenva al de al lado.
En cada dominio creamos 4 host owncloud,wordpress, joomla,
rouncube
DNS inversos
WEB
host virtual de https para owncloud.dani.com. De forma que se puedan
descargar archivos desde mi pc. Cuenta sergio/Almi123
El document root ser /var/www/dani

El host virtual rouncube.pedroc.com mostrar la pantalla de entrada.


Pedroc.com mostrar Hola estoy en el examen de Pedroc y se llamar
examen.htm
server# nano /etc/apache2/sites-avaialable/default
Agregamos la lnea DirectoyIndex examen.htm
Tanto Joomla como Wordpess lo deber instalar yo desde mi equipo (sergio)
con el usuario instalador@Almi123. Adems si el Joomla o el Wordpres no
est instalado, deber aparecer sitio en construccin. Adems la base de datos
tambin la deber crear yo, mediante el phpmyadmin (Importante: No puede
ver mas que mis db). De forma que yo instalar los gestores mediante un ftp
y el usuario Instalador|Almi123 Adems desde
Paso 1-Editamos /etc/hostname
server# nano /etc/hostname

mail.pedroc.com

Paso 2-Editamos /etc/hosts


server# nano /etc/hosts mi ordenador podr acceder con mysql-client
mediante Sergio|Almi123 y solo podr consultar los valores usuarios del
phpmyadmin y dos veces por hora. Mediante el ftp con el usuario datos|
Almi123 acceder a una carpeta para poder subir archivos
(TODOS los usuarios ftp enjaulados)
8 puntos servicios; 4 puntos ABD; 1 punto script servicios; 1 punto script ADB

10.120.120.102
/var/lib/phpmyadmin/config.inc.php
/usr/share/phpmyadmin/config.inc.php
/usr/share/phpmyadmin/setup/frames/config.inc.php
/etc/phpmyadmin/config.inc.php
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'Almi123';
$cfg['Servers'][$i]['hide_db'] = 'information_schema';
$cfg['AllowUserDropDatabase'] = true;
REVOKE ALL ON BD.* from USER@localhost

Prctica final Servicios-BBDD


Realizar un proxy. Configurar el equipo en nuestro ordenador.

Proxy
Servidor de correo 8,5
Webmail
Squirrelmail
Courier-IMAP
post-fix

mail.grupo1.com(1,5 y 2)
owncloud.grupo1.com(1 punto)
Grupo1 examen Sergio
Examen Sergio

En el proxy:
Capar
Capar
Capar
Capar
Capar

youtube
forocoches
marca
elcorreo
mundodeportivo

Servidor de Voip 192.168.1.220


3 extensiones
Llamar entre alumnos 2,5 puntos
Solucin ownloud trusted domain
server# nano /var/www/owncloud/config/config.php

'trusted_domains'=>

array(

0 => '192.168.1.210',

1 => 'owncloud.grupo5.com',

Squid
Paso 1-Habilitamos el enrutamiento y enmascaramos el trfico desde la LAN a
la interfaz de Internet (eth0)

server# echo "1" >> /proc/sys/net/ipv4/ip_forward


server# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j
MASQUERADE
Paso 2-Redirigimos el trfico (HTTP y HTTPS) que provenga desde la LAN
(eth1) y al puerto de squid (3128)
server# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
server# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT
--to-port 3128
Paso 3-Creamos un archivo con las urls denegadas
server# nano /etc/squid3/url_prohibidas.txt

.marca.com

.elcorreo.com

.forocoches.com

.youtube.com

.mundodeportivo.com

.live.com

Paso 4-Creamos las ACLs a partir de este archivo en el archivo de


configuracin de squid squid.conf. Creamos uno nuevo, haciendo una copia
del original.
server# cp /etc/squid3/squid.conf /etc/squid3/squid_BACK.conf
server# rm /etc/squid3/squid.conf
server# nano /etc/squid3/squid.conf

http_port 3128 transparent

acl permitir src 192.168.20.0/24

acl url_prohibidas dstdomain "/etc/squid3/url_prohibidas.txt"

http_access deny url_prohibidas

http_access allow permitir

Login en squirrelmail y owncloud


Paso 1-Creamos un login sencillo en HTML que recoja usuario y passord. En
nuestro caso, ponemos un select que permite elegir entre loguear en owncloud
o loguear en squirrelmail. El formulario har un post con esas 3 opciones
usuario, password y opciones.

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<meta name="description" content="">

<meta name="author" content="">

<link rel="icon" href="../../favicon.ico">

<title>Login grupo5</title>

<!-- Bootstrap core CSS -->

<link href="bootstrap-3.3.2-dist/css/bootstrap.min.css" rel="stylesheet">

<!-- Custom styles for this template -->

<link href="signin.css" rel="stylesheet">

<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->

<!--[if lt IE 9]><script src="bootstrap-3.3.2-dist/assets/js/ie8-responsive-filewarning.js"></script><![endif]-->

<script src="bootstrap-3.3.2-dist/assets/js/ie-emulation-modeswarning.js"></script>

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and
media queries -->

<!--[if lt IE 9]>

<script
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>

<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>

<![endif]-->

</head>

<body>

<div class="container">

<form class="form-signin" action="login_post.php" method="POST"


enctype="multipart/form-data" >

<h2 class="form-signin-heading">Grupo 5 login mltiple</h2>

<label for="inputEmail" class="sr-only">Usuario</label>

<input type="text" id="usuario" name="usuario" class="form-control"


placeholder="Usuario" required autofocus>

<label for="inputPassword" class="sr-only">Password</label>

<input type="password" id="password" name="password" class="formcontrol" placeholder="Password" required>

<br>

<div class="radio">

<label>

<input type="radio" name="opciones" id="opciones_1" value="opcion_1"


checked>

Ir a Squirrel

</label>

</div>

<div class="radio">

<label>

<input type="radio" name="opciones" id="opciones_2" value="opcion_2">

Ir a Owncloud

</label>

</div>

<br>

<button class="btn btn-lg btn-primary btn-block"


type="submit">Entrar</button>

</form>

</div> <!-- /container -->

<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->

<script src="bootstrap-3.3.2-dist/assets/js/ie10-viewport-bugworkaround.js"></script>

</body>

</html>

Imagen 3

Paso 2-Creamos el archivo login_post.php que recoge las variables usuario,


password y opciones de index.php. A continuacin analiza la opcin
elegida, login en squirrelmail o bien login en owncloud. Para cada una de
ellas se genera un formulario oculto con el login personalizado para cada uno
de ellos y se pregunta por continuar.

<!DOCTYPE html>

<head>

<title>Login multiple</title>

<meta charset="utf-8">

<script language="JavaScript" type="text/javascript">

<!--

function squirrelmail_loginpage_onload() {

document.forms[0].js_autodetect_results.value = '1';

for (i = 0; i < document.forms[0].elements.length; i++) {

if (document.forms[0].elements[i].type == "text" ||
document.forms[0].elements[i].type == "password") {

document.forms[0].elements[i].focus();

break;

// -->

</script>

</head>

<body>

<?php

$usuario=$_POST['usuario'];

$password=$_POST['password'];

$login_seleccionado=$_POST['opciones'];

if($login_seleccionado=="opcion_1")

echo " Has elegido loguearte en Squirrelmail. Es correcto?

<div id='webmail' onload='squirrelmail_loginpage_onload()'>

<form method='post'
action='http://192.168.0.210/webmail/src/redirect.php'>

<input type='hidden' name='js_autodetect_results' value='0'>

<input type='hidden' name='just_logged_in' value='1'>

<input type='hidden' name='login_username' value='$usuario'


size='10'>

<input type='hidden' name='secretkey' value='$password'


size='10'>

<input type='submit' value='Continuar'>

</form>

</div>

";

}else

echo "Has elegido loguearte en Owncloud. Es correcto?

<form method='post' name='login'


action='http://owncloud.grupo5.com/index.php'>

<fieldset>

<p class='infield grouptop'>

<input type='hidden' name='user' id='user' placeholder=''


value='$usuario' autofocus autocomplete='on' required/>

</p>

<p class='infield groupbottom'>

<input type='hidden' name='password' id='password'


value='$password' placeholder='' required />

</p>

<input type='hidden' name='remember_login' value='1'


id='remember_login' checked />

<input type='hidden' name='timezone-offset' id='timezoneoffset'/><!--

<input original-title='' name='requesttoken'


value='41114975e3606a612e33' type='hidden'>-->

<input type='submit' id='submitbt' class='login primary'


value='Continuar'/>

</fieldset>

</form>

";

?>

</body>

</html>

Imagen 4
Paso 3-Ahora ya podemos realizar el login. Sin embargo, el acceso a owncloud
no funciona. El problema, es que el sistema de logueo en Owncloud es ms
complejo y usa tokens. Para solucionarlo, manipulamos una de las funciones de
Owncloud para que no tenga en cuenta los tokens. Para ello editamos el
archivo owncloud/lib/private/appframework/http/request.php y editamos la
funcin passesCSRFCheck() cambiando a true todos los valores puestos a
false. Lo que estamos haciendo, consiste en eliminar la traba de seguridad
que ofrece esta funcin, que comprueba si se ha creado un token.
server# nano owncloud/lib/private/appframework/http/request.php

public function passesCSRFCheck() {

if($this->items['requesttoken'] === false) {

return true; #Aqu

if (isset($this->items['get']['requesttoken'])) {

$token = $this->items['get']['requesttoken'];

} elseif (isset($this->items['post']['requesttoken'])) {

$token = $this->items['post']['requesttoken'];

} elseif (isset($this->items['server']['HTTP_REQUESTTOKEN'])) {

$token = $this->items['server']['HTTP_REQUESTTOKEN'];

} else {

//no token found.

return true; #Aqu

// Check if the token is valid

if($token !== $this->items['requesttoken']) {

return true; #Aqu

if (isset($this->items['get']['requesttoken'])) {

$token = $this->items['get']['requesttoken'];

} elseif (isset($this->items['post']['requesttoken'])) {

$token = $this->items['post']['requesttoken'];

} elseif (isset($this->items['server']['HTTP_REQUESTTOKEN'])) {

$token = $this->items['server']['HTTP_REQUESTTOKEN'];

} else {

//no token found.

return true; #Aqu

// Check if the token is valid

if($token !== $this->items['requesttoken']) {

// Not valid

return true; #Aqu

} else {

// Valid token

return true; #Aqu

}}

Voz IP
Paso 1-En un navegador introducimos la IP del Asterisk y pinchamos en el
Administrador.

Imagen 5

Paso 2-Vamos a Applications-Extensions y elegimos un dispositivo SIP


genrico para aadir la extensin.

Imagen 6
Paso 3-Creamos una extensin en las y le ponemos una contrasea.

Imagen 7

Imagen 8
Paso 4-Instalamos Ekiga
server#apt-get install ekiga
Paso 5-Damos de alta una de las extensiones que hemos probado. Para ello,
podemos saltar el configurador de Ekiga y vamos a Cuentas y Aadir una
cuenta SIP.

Imagen 9

Imagen 10
Paso 6-Vamos al teclado y podemos llamar a otro usuario que se haya
registrado con otr extensin (por ejmplo sip:2000@192.168.1.222). Ya
podremos llamar.

Imagen 11

BBDD
Punto 1
Copia de seguridad de la BBDD todos los das a las 07:30 en /bd/backup.sql (2
puntos)
Paso 1-Creamos la BBDD usuarios y la tabla correspondiente
server# mysql -u root -p
mysql>create database usuarios;
mysql> use usuarios;
mysql> create table usuarios(id_usu int not null auto_increment, usuario
varchar(35), nombre varchar(35), passwd varchar(255), primary key(cod_usu));
Paso 2-Creamos un script que haga la copia

if [ -d /bd/ ]; then

mkdir bd

mysqldump -u root -p usuarios > /bd/backup.sql

fi

Paso 3-Creamos la orden crontab


server# crontab -e

30 19 * * *^/usr/local/bin/bdbackup

Punto 2
El equipo del squid un MYSQL esclavo y del correo maestro y hacer replicacin
de datos de la BBDD de usuarios que hace login en nuestro PHP (3 puntos).
En el maestro
1-En el Maestro

Paso 1-Crear usuario para replicacin


mysql> GRANT REPLICATION SLAVE,
'esclavo'@'%' IDENTIFIED BY 'Almi123';

REPLICATION

CLIENT

ON

*.*

TO

Paso 2-Configurar my.cnf

[mysqld]

log_bin

server-id=1

Binlog_Do_DB=nombreBBDD

Guardar y reiniciar
2-En el Esclavo
Paso 3-Crear usuario para la replicacin
mysql>GRANT REPLICATION SLAVE,REPLICATION
replicante@192.168.1.210 IDENTIFIED BY 'Almi123';
Paso 4-Configurar my.cnf

[mysqld]

log_bin

server-id=2

Binlog_Do_DB=nombreBBDD

Guardar y reiniciar

CLIENT

ON

*.*

TO

3-En el Maestro
Paso 5-Copiamos la BBDD a esclavos (Sincronizar)
mysql>FLUSH TABLES WITH READ LOCK;
server# SYSTEM mysqldump -u root -p opt tabla
server# mysql -h ip_esclavo -u root -p tabla;
mysql>SHOW MASTER STATUS;
mysql>UNLOCK TABLES;
Paso 6-Iniciar la replicacin
mysql>CHANGE MASTERT TO MASTER_HOST='maestro.dominio.com',
MASTER_USER='esclavo', MASTER_PASSWORD=''Password',
MASTER_LOG_FILE='maestro_bin_001', MASTER_LOG_POS=76;
mysql>START SLAVE;
mysql>SHOW SLAVE STATUS\G
Punto 3
Un trigger que al insertar un usuario me lo guarde en una tabla Insertados (2
puntos)
Un trigger que al borrar un usuario me lo guarde en una tabla de borrados (2
puntos)
Para postgress crear una table space

Referencias
http://www.hospedagem-anual.com.br/login-personalizado-de-acesso-aowebmail/
http://squirrelmail.org/wiki/EmbeddedSquirrelmailLogin
http://litox.entramado.net/tag/raspberry-pi/
http://ferdi.blog.unas.ac.id/artikel-bebas/squirrelmail-login-page-embeddedcustomizing/
http://forum.owncloud.org/viewtopic.php?f=26&t=21865
http://forum.owncloud.org/viewtopic.php?f=29&t=25998

Nociones de scripts
Disttribucin: lsb_release - i
Versin completa: lsb_release -d
Directorio actual $PWD
menu_principal()
gestion_usuarios(A,B)
DNS(A,B,E) DirectoDom, sub, host, Inverso
Apache(A,B,E) A_mod, D_mod
FTP(A,B,E) a carpeta concreta y luego subcarpetas
Un usuario FTP por web apache o un usuario varios sitios?
1 por todos y otro por sitio
Un usuario phpmyadmin=> Varias BBDD
Sustituir las palabras abc que encuentre en archivo1 por xyz y escribir el
resultado en archivo2.
server# sed s/ abc / xyz /g archivo1 > archivo2
Sustituir comas por puntos
server# sed s/,/./g precioscoma > preciospunto
Sustituir variables entre documentos
server# sed "s|$var1|$var2|" archivo1 > archivo2
Sustituir una cadena por otra
server# sed -i "s/casa/camion/g" /home/pedroc/Escritorio/pruebas.txt
Aadir una lnea
server# echo >> linea archivo
DNS

named_conf_local=> base_n_c_l.txt (dominio, direccion_ip)


db.dominio.com=> base_dir(dominio,direccion_ip)
inverso.db.dominio.com=> base_inv.txt (dominio, host, octeto)

APACHE2
host_http=> index_principal (lleva DirectoryIndex y el ndice), dominio,ruta
host_https=> index_principal (lleva DirectoryIndex y el ndice), dominio,ruta,
ruta_certificado
host_doble => index_principal (lleva DirectoryIndex y el ndice), dominio,ruta
Aadir listen 443 en ports.conf
FTP
Con sed modifico el archivo /etc/vsftpd/vsftpd.conf y pongo
Creo vsftpd.chroot.list

listen=yes

anonymous_enable=no

local_enable=yes

write_enable=yes

local_umask=022

anon_upload_enable=No

anon_mkdir_write_enable=no

dirmessage_enable=yes

use_localtime=yes

xferlog_enable=yes

connect_from_port_20=yes

chroot_local_user=yes

chroot_list_enable=yes

chroot_listfile=/etc/vsftpd.chroot.list

Cambiar passwd a usuarios


echo -e "new_password\nnew_password" | (passwd --stdin $USER)