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/[Link]
subnet [Link] netmask [Link] {
range [Link] [Link];
#rango
option domain-name-servers [Link] [Link];
#dns
option routers [Link];
#puerta de enlace
option broadcast-address [Link];
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 [Link]/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/[Link]
#pomemos una confuguracin por defecto
option domain-name-servers [Link];
option routers [Link];
option broadcast-address [Link];
default-lease-time 600;
max-lease-time 7200;
#creamos la subred
subnet [Link] netmask [Link] {
range [Link] [Link];
#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 [Link]
host impresora{
hardware ethernet 00:00:00:00:00:00
fixed-address [Link]
Paso 3-Asignamos una ip la interfaz que va a ofrecer el servicio DHCP y
reiniciamos el servicio.
server# ifconfig eth0 [Link]
server# service isc-dhcp-server restart
Podemos comprobar las concesiones en /var/lib/dhcp
server# cat /var/lib/dhcp/[Link]
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/[Link]
authoritative;
ddns-update-style none;
failover peer dhcp-failover {
primary; #servidor primario (Maestro)
address [Link]; #IP del servidor primario
port 646; #Puerto de escucha
peer address [Link] #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/[Link]
authoritative;
ddns-update-style none;
failover peer dhcp-failover {
secundry; #servidor secundario (Esclavo)
address [Link]; #IP del servidor primario
port 647; #Puerto de escucha del esclavo
peer address [Link] #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 [Link] netmask [Link]
option subnet-mask [Link];
option broadcast-address [Link];
option routers [Link];
option domain-server [Link];
range [Link] [Link];
pool{
failover peer dhcp-failover;
max-lease-time 1800;
range [Link]-[Link];
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
[Link];
subnet [Link] netmask [Link]
#parametros para la subnet;
range [Link] [Link];
subnet [Link] netmask [Link]
range [Link] [Link];
Ejemplo:
shared-network 20-30
subnet [Link] netmask [Link]
default-lease-time 259200;
max-lease-time 259200;
option routers [Link];
option subnet-mask [Link];
option broadcast-address [Link];
option domain-name-servers [Link], [Link];
pool {
range [Link] [Link];
subnet [Link] netmask [Link]
default-lease-time 259200;
max-lease-time 259200;
option routers [Link];
option subnet-mask [Link];
option broadcast-address [Link];
option domain-name-servers [Link], [Link];
pool {
range [Link] [Link];
Configuramos dos ip usando la misma tarjeta:
auto eth0:1
iface eth0:1 inet static
address [Link]
netmask [Link]
network [Link]
auto eth0:2
iface eth0:2 inet static
address [Link]
netmask [Link]
network [Link]
5-Crear un dominio bsico
Paso 1-Instalamos bind9
server#apt-get install bind9
Paso 2-Editamos/etc/[Link]
server# nano /etc/[Link]
nameserver [Link]
Paso 3-Creamos una zona nueva en [Link]
server# nano /etc/bind/[Link]
zone [Link]
type master;
file /etc/bind/[Link];
};
Paso 4-Copiamos [Link] a [Link] y lo editamos sustituyendo localhost
por [Link]
server#nano /etc/bind/[Link]
@ IN A [Link]
www A
pc6
[Link]
A [Link]
Paso 5-Reiniciamos el servicio y comprobamos que funciona bien
server#service bind9 restart
server#nslookup [Link]
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 [Link]
server#nano /var/www/html/[Link]
<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/[Link]
nameserver [Link] #apuntamos al equipo local
Paso 4-Abrimos todas las zonas y copiamos el ejemplo de zona bsica
server#nano /etc/bind/[Link]-zones
Paso 5-Vamos al archivo /etc/bind/[Link]
server# nano /etc/bind/[Link]
zone [Link]{
type master;
file /etc/bind/[Link]:
Paso 6-Abrimos [Link] y lo copiamos a [Link]. Cambiamos localhost
por el nombre del dominio respetando los ..
server# nano /etc/bind/[Link]
()
0 IN SOA [Link]. [Link].{
(...)
@ IN NS [Link].
@ IN A [Link] #ip donde est el dominio [Link]
almi A [Link]
talmay A [Link]
Paso 7-Reiniciamos el servicio y resolvemos
server#service bind9 restart
server# nslookup [Link]
Ejercicio resuelto:
server_pedroc# nano/etc/bind/[Link]
zone "[Link]"{
type master;
file "/etc/bind/[Link]";
};
zone "[Link]"{
type master;
file "/etc/bind/[Link]";
};
server_pedroc# nano /etc/bind/[Link]
; BIND data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
604800
86400
2419200
604800 )
; Serial
; Refresh
; Retry
; Expire
; Negative Cache TTL
IN
NS [Link].
IN
A [Link]
www
A [Link]
allow-transfer {[Link];};
server_pedroc# nano /etc/bind/[Link]
; BIND data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
604800
86400
2419200
604800 )
; Serial
; Refresh
; Retry
; Expire
; Negative Cache TTL
IN
NS [Link].
IN
A [Link]
ander
unai
pedroc
A [Link]
A [Link]
A [Link]
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/[Link]
fowarders{
[Link] # 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/[Link]
zone [Link]{
type master;
file /etc/bind/[Link];
allow-transfer{[Link];};
allow-query{any;};
Paso 2-Configuramos el esclavo
esclavo# nano/etc/bind/[Link]
zone [Link]{
type slave;
file /etc/bind/[Link];
allow-query{any;};
masters{[Link];};
Paso 3-Configuramos /etc/bind/[Link]
IN
NS [Link].
IN
NS [Link].
ns1
IN
A [Link]
ns2 IN
A [Link]
Paso 4-Tenemos que dar permisos al archivo /etc/bind/[Link] y
[Link] del maestro
maestro# chown root:bind /etc/bind/[Link]
maestro# chmod 640 /etc/bind/[Link]
maestro# chmod g+ws /etc/bind/[Link]
Para comprobar errores, usamos
server# named -g
Modificamos el archivo /etc/[Link] para que apunte a s mismo como
servidor DNS.
server# nano /etc/[Link]
nameserver [Link]
Escenario con 2 esclavos
En el maestro crearamos la acl esclavos y le aadiramos el alow-transfer
a los esclavos.
maestro# nano/etc/bind/[Link]
(...)
allow-transer{esclavos;};
acl esclavos{
[Link];
[Link];
};
(...)
maestro# nano/etc/bind/[Link]
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/[Link]. Resolvemos nosotros
server# nano /etc/[Link]
nameserver [Link]
Paso 2-Editamos /etc/bind9/[Link]. Nos fijamos en nuestra zona.
En nuestro caso, tenemos que ver la configuracin en [Link]
server# nano /etc/bind/[Link]
zone "[Link]"{
type master;
file "/etc/bind/[Link]";
};
Paso 3-Editamos [Link] y nos fijamos en el ltimo octeto de nuestra
IP
server# nano /etc/bind/[Link]
; BIND data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
604800
86400
2419200
604800 )
; Serial
; Refresh
; Retry
; Expire
; Negative Cache TTL
IN
NS [Link].
IN
A [Link]
www
A [Link]
almi
A [Link]
ander
A [Link]
Paso 4-Aprovechamos el inverso default para hacer copiarlo y editarlo
server# cp db.127 [Link]
server# nano [Link]
; BIND reverse data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
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/[Link]
server# nano/etc/bind/[Link]
zone "[Link]"{
type master;
file "/etc/bind/[Link]";
};
zone [Link]{
type master;
file /etc/bind/[Link];
};
10-Configuracin de subdominios DNS
Paso 1-Editamos /etc/bind/[Link]
server# nano /etc/bind/[Link]
zone 1.168.192 [Link]{
type master;
file /etc/bind/[Link];
};
zone [Link]{
type slave;
file /etc/bind/[Link];
masters{
[Link];
};
};
Paso 2-Copiamos [Link] a [Link] y lo editamos
server# cp /etc/bind/[Link] /etc/bind/[Link]
server# nano [Link]
; BIND data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
; Serial
604800
86400
2419200
604800 )
; Refresh
; Retry
; Expire
; Negative Cache TTL
IN
NS [Link].
IN
A [Link]
hostx
A [Link]
hosty
A [Link]
Paso 3-Comprobamos que resuelve
server# nslookup [Link]
server# nslookup [Link]
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/[Link]
<?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 [Link]
(...)
</Directory>
server# service apache2 restart
Para evitar el warning de apache DNS
server# nano /etc/apache2/[Link]
ServerName [Link]
Para mostrar los errores en PHP
Todas las variables de PHP se encuentran en la ruta
/etc/php5/apache2/[Link]. La variable display_errors es la que muestra o
no los errores.
server# nano /etc/php5/apache2/[Link]
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 [Link]
server# tar -xvzf wordpress-4.0es_ES-[Link]
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
[Link]
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 [Link]
server# tar zxvf [Link]
server# cd drupal
Paso 2-Copiamos el archivo de configuracin y damos permisos
server# cp sites/default/[Link] sites/default/[Link]
server# chmod a+w sites/default/[Link]
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
[Link]=> fichero de configuracin por defecto
[Link]=> Configuracin de usuario
mod-availables=>Mdulos disponibles
mods-enables=>Mdulos habilitados
[Link]=>Configuracin de puertos
sites-available=>configuracin de sitios
sites-enables=>Sitios habilitados
Ejercicio 1- Configuracin sitio [Link] apunte a joomla
Configurar un DNS de forma que [Link]=>[Link]
[Link]=> [Link]
/var/www/html/joomla
server# nano /etc/apache2/[Link]
nameVirtualhost *:80
listen 80
Creamos un sitio
server# cd /etc/apache2/sites-available
server# nano [Link]
<Virtualhost *:80>
ServerAdmin aaa@[Link] # Correo admin (opcional)
ServerName
[Link]
DocumentRoot /var/www/html/joomla
<Directory /var/www/html/joomla/>
DirectoryIndex [Link]
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
</Virtualhost>
Para habilitar un sitio
server# a2ensites [Link]
Para deshabilitar un sitio
server# a2disites [Link]
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/[Link]
<h1>Estas en el puerto 80 </h1>
server# mkdir /var/www/html/pedroc8043
server# nano /var/www/html/pedroc/8043/[Link]
<h1>Estas en el puerto 8043 </h1>
Paso2-Primero aadimos el puerto de escucha 8043
server# nano /etc/[Link]
listen 8043
Paso 3-Creamos el sistios [Link] y los virtualhost correspondientes
server# nano /etc/apache2/sites-available/[Link]
<Virtualhost *:80>
ServerName [Link]
DocumentRoot /var/www/html/pedroc80
<Directory /var/www/html/pedroc80/>
DirectoryIndex [Link]
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
</Virtualhost>
<Virtualhost *:8043>
ServerName [Link]
DocumentRoot /var/www/html/pedroc8043
<Directory /var/www/html/pedroc8043/>
DirectoryIndex [Link]
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
</Virtualhost>
Paso 4-Habilitamos [Link]
server#a2ensite [Link]
server# service apache2 restart
Paso 5-Probamos que funciona
server# wget [Link]
server# wget [Link]
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
[Link]
14-HTTP seguro con SSL
Habilitar SSL
server# a2enmod ssl
Certificado autofirmado en /etc/apache2/certificados/[Link]
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/[Link]
/etc/apache2/certificados/[Link]
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/[Link] -keyout
/etc/apache2/certificados/[Link]
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/[Link]
Habilitamos el SSL
server# a2enmod ssl
Reiniciamos el servicio
server# service apache2 restart
Editamos el fichero /etc/apache2/ports/conf
server# nano /etc/apache2/[Link]
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/[Link]. Comprobamos los
contenedores y activamos las opciones correspondientes SSL. Comenzamos
con el sitio SSL
server# nano /etc/apache2/sites-available/[Link]
<VirtualHost *:443>
ServerName miweb
DocumentRoot /var/www/[Link]/htdocs
DirectoryIndex [Link]
SSLEngine on
SSLCertificateFile /etc/apache2/certificados/[Link]
<Directory /var/www/[Link]/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/[Link]
Por ultimo nos falta habilitar el nuevo sitio que hemos hecho
server# a2ensite [Link]
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 [Link] que contendr hola ssl1, dentro de la
carpeta ssl2 creamos [Link] que contendr hola ssl2.
Si escribo la direccin [Link] aparece hola SSL1
Si escribo la direccin [Link] aparece hola SSL2
15-Modulo Proxy Apache
Partimos del siguiente escenario:
[Link]=>Joomla
[Link]=>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 [Link]
ProxyPass / [Link]
ProxyPassReverse / [Link]
</VirtualHost>
Paso 3-Editamos el archivo host
server# nano /etc/hosts
[Link] [Link]
[Link] [Link]
Paso 4-Crear en bind un dominio llamado [Link], con dos host joomla que
apuntara a [Link] y wordpress que apunte a [Link]
Ejercicio 4-Redireccin ProxyPass
La mquina de Pedro recibir peticiones a [Link] y [Link].
Sin embargo, localmente resolver [Link] y redirigir a la mquina de
Ander [Link].
INTERNET
[Link]
[Link]
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/[Link]
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/[Link]
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/[Link] #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
[Link]. Al escribir en la URL [Link], el
document root de ste host virtual apuntar a /var/www/html/worpress y al
escribir en la URL [Link] 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 [Link]
Mquina Sergio
IP:[Link]
Usuario: smr2
Contrasea: Almi123
Paso 1-Creamos una zona directa y otra inversa en /etc/bind/[Link]
server# nano /etc/bind/[Link]
zone "[Link]" {
type master;
file "/etc/bind/[Link]";
};
zone [Link]{
type master;
file /etc/bind/[Link];
};
Paso 2-Creamos la configuracin correspondiente
server# nano /etc/bind/[Link]
; BIND data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
604800
86400
2419200
; Serial
; Refresh
; Retry
; Expire
604800 )
; Negative Cache TTL
IN
NS
[Link].
IN
MX
10 [Link].
IN
[Link]
[Link]
mail
Para comprobar:
nslookup
server [Link]
set q=MX
[Link]
Server:
Address:
[Link]
[Link]#53
[Link] mail exchanger = 10 [Link].
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: [Link]
Paso 4-Editamos /etc/postfix/[Link]
server# nano /etc/postfix/[Link]
mydestination = [Link] #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>
[Link] >
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
[Link]
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@[Link]
postmaster@[Link]
Paso 1-Editamos /etc/hostname
server# nano /etc/hostname
[Link]
Paso 2-Editamos /etc/hosts
server# nano /etc/hosts
[Link] localhost
[Link] [Link] mail
Paso 3-Editamos /etc/bind/[Link] y aadimos los registros DNS
nuevos
IN
TXT
"v=spf1 ip4:[Link] a mx -all"
IN
SPF
"v=spf1 ip4:[Link] 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/[Link]
server# nano /etc/[Link]
Domain
KeyFile
Selector
[Link]
/etc/postfix/[Link]
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/[Link]
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 [Link] y [Link]
server# opendkim-genkey -t -s mail -d [Link]
Paso 9-Movemos [Link] a /etc/postfix/[Link]
server# cp [Link] /etc/postfix/[Link]
Paso 10-Copiamos el contenido de [Link] en [Link]
server# cat [Link]
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 [Link]
Otra forma
server# cat [Link] >> /etc/bind/[Link]
Paso 11-Reiniciamos los servicios
server# service opendkim start
server# service postfix restart
Paso 12-Comprobamos que funciona
server# dig mail._domainkey.[Link] 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/[Link]
[Link] IN TXT v=DMARC1; p=none;
rua=[Link] ruf=[Link] adkim=r;
aspf=r
_domainkey.[Link] IN TXT o=
Alternativa Sergio (paso a paso)
server# mkdir /etc/opendkim
server# mkdir /etc/opendkim/[Link]
server# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim
-c OpenDKIM opendkim
server# chown opendkim:opendkim -R [Link]
server# nano /etc/[Link]
syslog
yes
#UMask
domain
[Link]
keyfile
/etc/opendkim/[Link]/[Link]
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 [Link] donde sta la entrada DNS
creada
server# cd /etc/opendkim/[Link]
server# cat [Link] >> /etc/bind/[Link]
[Link]. IN TXT o=~; r=pedroc@[Link]
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 [Link]
[Link] IN TXT v=DMARC1; p=none;
rua=[Link] ruf=[Link] adkim=r;
aspf=r
Comprobamos que funciona
server# dig mail._domainkey.[Link] TXT +short
Comprobamos que la clave funciona correctamente
server# cd /etc/opendkim/[Link]
server# opendkim-testkey -d [Link] -s mail -k [Link] -vvv
Registro de listas negras MxtoolBox ([Link])
[Link]
19-Instalacin de Zimbra
Paso 1-Instalamos bind9
server# apt-get install bind9
Paso 2-Editamos /etc/hostname
server# nano /etc/hostname
[Link]
Paso 3-Editamos /etc/hosts
server# nano /etc/hosts
[Link] localhost
[Link] [Link] mail
Paso 4-Creamos una zona en /etc/bind/[Link]
server# nano /etc/bind/[Link]
zone "[Link]" {
type master;
file "/etc/bind/[Link]";
};
zone [Link]{
type master;
file /etc/bind/[Link];
};
Paso 5-Creamos la configuracin correspondiente
server# nano /etc/bind/[Link]
; BIND data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
604800
86400
2419200
604800 )
; Serial
; Refresh
; Retry
; Expire
; Negative Cache TTL
IN
NS
[Link].
IN
MX
10 [Link].
IN
[Link]
[Link]
mail
Y su inversa
server# nano /etc/bind/db.192.168.1
; BIND reverse data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
; Serial
604800
86400
2419200
604800 )
; Refresh
; Retry
; Expire
; Negative Cache TTL
IN
210
NS
PTR
localhost.
mail.
Para comprobar:
nslookup
server [Link]
set q=MX
[Link]
Server:
Address:
[Link]
[Link]#53
[Link] mail exchanger = 10 [Link].
server# nano /etc/bind/db.192
; BIND reverse data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
; 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
[Link]
server# wget [Link]
La del manual es:
server# wget [Link]
Paso 8-Descomprimimos el archivo
server# tar -xzvf zcs-8.5.1_GA_3056.UBUNTU12_64.[Link]
La del manual es:
server# tar -xzvf zcs-8.0.3_GA_5664.UBUNTU12_64.[Link]
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# ./[Link]
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 [Link]
Paso 11-Para acceder al panel de control usamos conexin HTTPS y el
puerto 7071
[Link]
Paso 12-Para acceder al webmail con los correos creados en el administrador
[Link]
[Link]
Script solucin Zimbra
Para solucionar el error de servicios al iniciar el admin de Zimbra, tenemos
que usar el siguiente script ([Link]) y aadirlo al inicio.
chown -R zimbra:zimbra /opt/zimbra/zimbramon/crontabs
su zimbra
cat crontab >> [Link]
cat [Link] >> [Link]
cat [Link] >> [Link]
cat [Link] >> [Link]
cat [Link] >> [Link]
crontab [Link]
[Link]
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 [Link]/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
[Link]/24
[Link]/24
[Link]/24
[Link]/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 [Link]/24 -p tcp dport 80 ACCEPT
server# iptables -A FORWARD -s [Link]/24 -p tcp dport 443 ACCEPT
Para permitir DNS
server# iptables -A FORWARD -s [Link]/24 -p tcp dport 53 ACCEPT
server# iptables -A FORWARD -s [Link]/24 -p udp dport 53 ACCEPT
Para capar a la ip [Link]
server# iptables -A FORWARD -s [Link] -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 [Link]/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 [Link]/24 acceso a Internet transparente en la
interfaz eth2 (DHCP).
server# iptables -A FORWARD -j ACCEPT
server# iptables -t nat -A POSTROUTING -s [Link]/24 -o eth2 -j
MASQUERADE
server# echo 1 > /proc/sys/ipv4/ip_forward
Para redireccionar todo por el puerto 80 enviarlo a la IP [Link]
server# iptables -t nat -A PREROUTING -s [Link]/24 -p tcp dport 80 -j
DNAT todestination [Link]
Ejercicio 2-Iptables
Ander har de servidor y Pedro ser el cliente que intentar conectarse a
Internet.
Internet eth0
Ander
eth1
LAN [Link]
eth0
En el server de Ander configuramos la segunda tarjeta de red eth1 en la
subred [Link]/24
server_ander# nano /etc/network/interfaces
auto eth1
address [Link]
netmask [Link]
server_ander# iptables -t nat -A POSTROUTING -s [Link]/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 [Link]/24 a travs de la interfaz
eth1 de Ander
server_pedroc# nano /etc/network/interfaces
auto eth0
address [Link]
netmask [Link]
gateway [Link]
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
[Link]
Aula1
Aula2
[Link]
Todas las aulas en la misma subred.
server# apt-get install squid
server# service squid3 start
Control de acceso (ACL)
[Link]
El archivo de configuracin se almacena en /etc/squid3/[Link]
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 [Link]/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 [Link] 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
[Link]/24
[Link]/24
A continuacin editamos el [Link] y aadimos acl aulas_prohibidas src
/etc/squid/aulas_prohibidas.txt
server# nano /etc/squid3/[Link]
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
[Link]
[Link]
Para
ello
creamos
el
fichero
Editamos el archivo /etc/squid3/[Link]
server# /etc/squid3/[Link]
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/[Link] registra la
fecha, hora y url de acceso a Internet.
server# cat /var/log/squid/[Link]
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
#[Link]
#--Script--
#!/bin/sh
# IP del servidor SQUID
SQUID_SERVER="[Link]"
# 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
[Link]
[Link]
Paso 3-Creamos un fichero para los equipos permitidos
server# nano /etc/squid3/mis_equipos.txt
[Link]
[Link]
Paso 4-Configuramos [Link]
server# nano /etc/squid3/[Link]
http_port [Link]: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 [Link]
server#wget [Link]
server#wget
[Link]
server#wget
[Link]
server#wget
[Link]
server# wget [Link]
server# wget [Link]
server#wget
[Link]
server#wget
[Link]
server# wget [Link]
Paso 18-Comenzamos a compilar sox
server# cd /usr/src
server#tar -xvf ~/asterisk/[Link]
server# cd sox-12.17.9
server#./configure
server#make
server#make install
Paso 19-Seguimos con lame
server#tar -xvf ~/asterisk/[Link]
server# cd lame-3.96.1/
server#./configure
server#make
server#make install
Paso 20-Seguimos con asterisk-perl
server#tar -xvf ~/asterisk/[Link]
server# cd asterisk-perl-0.08/
server#perl [Link]
server#make all
server#make install
Paso 21-Seguimos con freepbx
server#tar -xvf ~/asterisk/[Link]
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/[Link]
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/[Link]
Imagen 4
Paso 28-Descomprimimos los ficheros que faltan
server# cd /usr/src
server# tar -xzvf ~/asterisk/[Link]
server#tar -xzvf ~/asterisk/[Link]
server#tar -xzvf ~/asterisk/[Link]
server#tar -xzvf ~/asterisk/[Link]
server#tar -xzvf ~/asterisk/[Link]
Paso 29-Compilamos libpri
server# cd libpri-1.4.14
server# make & make install
Paso 30-Compilamos zaptel
server# cd zaptel-[Link]/
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-[Link]
./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/[Link]
nameserver [Link]
Paso 3-Editamos el archivo /etc/bind/[Link] y creamos a zona
[Link]. En cada dominio creamos 4 host owncloud,wordpress,
joomla, rouncube.
server# nano /etc/bind/[Link]
zone [Link]{
type master;
file /etc/bind/[Link];
};
Paso 4-Creamos el archivo /etc/bind/[Link] al que hemos hecho
referencia en el punto 2 y creamos los host.
; BIND data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
; Serial
604800
; Refresh
86400
; Retry
2419200
604800 )
; Expire
; Negative Cache TTL
IN
NS
IN
[Link].
[Link]
www
IN
[Link]
joomla
IN
[Link]
wordpress IN
[Link]
owncloud
IN
[Link]
roundcube IN
[Link]
Cada uno se resuelve a si mismo y reenva al de al lado
Paso 5-Editamos el archivo /etc/bind/[Link] y aadimos los
forwarders. Podemos descomentar el ejemplo.
forwarders {
[Link];
};
DNS inversos de los dominios creados
Paso 6-Para crear una entrada inversa, vamos a /etc/bind9/[Link]
server# nano /etc/bind/[Link]
zone [Link]{
type master;
file /etc/bind/[Link];
};
Paso 7-Creamos /etc/bind/[Link]
server# nano /etc/bind/[Link]
; BIND reverse data file for local loopback interface
$TTL
604800
IN
SOA
[Link]. [Link]. (
; Serial
604800
86400
; Refresh
; Retry
2419200
604800 )
; Expire
; Negative Cache TTL
NS
[Link].
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 [Link]
server# nslookup [Link]
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'@'[Link]'
identified by 'Almi123' WITH MAX_CONNECTIONS_PER_HOUR 2;
Paso 10-Habilitamos el acceso al servidor MySQL desde el exterior editando
/etc/mysql/[Link] y poniendo la IP del servidor en bind-address.
server# nano /etc/mysql/[Link]
bind-address=[Link]
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 [Link]. 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'@'[Link]'
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 [Link]
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/[Link].
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/[Link]
/etc/apache2/certificados/[Link]
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/[Link]
Editamos el fichero /etc/apache2/ports/conf y aadimos los servidores
virtuales y el puerto de escucha SSL.
server# nano /etc/apache2/[Link]
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/[Link]. Comprobamos
los contenedores y activamos las opciones correspondientes SSL. Comenzamos
con el sitio SSL
server# nano /etc/apache2/sites-available/[Link]
<Virtualhost *:80>
ServerName [Link]
DocumentRoot /var/www/pedroc/owncloud
<Directory /var/www/pedroc/owncloud/>
DirectoryIndex [Link]
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</Virtualhost>
<VirtualHost *:443>
ServerName [Link]
DocumentRoot /var/www/pedroc/owncloud
DirectoryIndex [Link]
SSLEngine on
SSLCertificateFile /etc/apache2/certificados/[Link]
<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 [Link] el mdulo rewrite y
reiniciamos apache.
server#a2ensite [Link]
server# a2enmod rewrite
server# service apache2 restart
Paso 14-Nos descargamos owncloud en /var/www/pedroc/owncloud y
descomprimimos.
server# wget [Link]
server# tar -xvf [Link].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
[Link] para que muestre un mensaje mientras no haya sido instalado.
server# nano /var/www/pedroc/joomla/[Link]
<h1>Pgina en obras. A la espera de que Sergio instale Joomla</h1>
server# nano /etc/apache2/sites-available/[Link]
<Virtualhost *:80>
ServerName [Link]
DocumentRoot /var/www/pedroc/joomla
<Directory /var/www/pedroc/joomla/>
DirectoryIndex [Link] [Link] [Link]
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 [Link] [Link] [Link]
Habilitamos el host en Apache
server# a2ensite [Link]
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
[Link] para que muestre un mensaje mientras no haya sido instalado.
server# nano /var/www/pedroc/wordpress/[Link]
<h1>Pgina en obras. A la espera de que Sergio instale Wordpress</h1>
server# nano /etc/apache2/sites-available/[Link]
<Virtualhost *:80>
ServerName [Link]
DocumentRoot /var/www/pedroc/wordpress
<Directory /var/www/pedroc/wordpress/>
DirectoryIndex [Link] [Link] [Link]
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 [Link] [Link] [Link]
Habilitamos el host en Apache
server# a2ensite [Link]
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/[Link]
server# nano /var/lib/roundcube/config/[Link]
$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/[Link]
<Virtualhost *:80>
ServerName [Link]
DocumentRoot /var/www/pedroc/roundcube
<Directory /var/www/pedroc/roundcube/>
DirectoryIndex [Link] [Link]
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</Virtualhost>
[Link]
[Link]
[Link]
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/[Link]
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/[Link] #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 [Link]. De forma que se puedan
descargar archivos desde mi pc. Cuenta sergio/Almi123
El document root ser /var/www/dani
El host virtual [Link] mostrar la pantalla de entrada.
[Link] mostrar Hola estoy en el examen de Pedroc y se llamar
[Link]
server# nano /etc/apache2/sites-avaialable/default
Agregamos la lnea DirectoyIndex [Link]
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
[Link]
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
[Link]
/var/lib/phpmyadmin/[Link]
/usr/share/phpmyadmin/[Link]
/usr/share/phpmyadmin/setup/frames/[Link]
/etc/phpmyadmin/[Link]
$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
[Link](1,5 y 2)
[Link](1 punto)
Grupo1 examen Sergio
Examen Sergio
En el proxy:
Capar
Capar
Capar
Capar
Capar
youtube
forocoches
marca
elcorreo
mundodeportivo
Servidor de Voip [Link]
3 extensiones
Llamar entre alumnos 2,5 puntos
Solucin ownloud trusted domain
server# nano /var/www/owncloud/config/[Link]
'trusted_domains'=>
array(
0 => '[Link]',
1 => '[Link]',
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 [Link]/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
.[Link]
.[Link]
.[Link]
.[Link]
.[Link]
.[Link]
Paso 4-Creamos las ACLs a partir de este archivo en el archivo de
configuracin de squid [Link]. Creamos uno nuevo, haciendo una copia
del original.
server# cp /etc/squid3/[Link] /etc/squid3/squid_BACK.conf
server# rm /etc/squid3/[Link]
server# nano /etc/squid3/[Link]
http_port 3128 transparent
acl permitir src [Link]/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="../../[Link]">
<title>Login grupo5</title>
<!-- Bootstrap core CSS -->
<link href="bootstrap-3.3.2-dist/css/[Link]" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="[Link]" 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/[Link]"></script><![endif]-->
<script src="bootstrap-3.3.2-dist/assets/js/[Link]"></script>
<!-- HTML5 shim and [Link] for IE8 support of HTML5 elements and
media queries -->
<!--[if lt IE 9]>
<script
src="[Link]
<script
src="[Link]
<![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/[Link]"></script>
</body>
</html>
Imagen 3
Paso 2-Creamos el archivo login_post.php que recoge las variables usuario,
password y opciones de [Link]. 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() {
[Link][0].js_autodetect_results.value = '1';
for (i = 0; i < [Link][0].[Link]; i++) {
if ([Link][0].elements[i].type == "text" ||
[Link][0].elements[i].type == "password") {
[Link][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='[Link]
<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='[Link]
<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/[Link] 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/[Link]
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@[Link]). Ya
podremos llamar.
Imagen 11
BBDD
Punto 1
Copia de seguridad de la BBDD todos los das a las 07:30 en /bd/[Link] (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/[Link]
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 [Link]
[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@[Link] IDENTIFIED BY 'Almi123';
Paso 4-Configurar [Link]
[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='[Link]',
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
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
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/[Link]
Aadir una lnea
server# echo >> linea archivo
DNS
named_conf_local=> base_n_c_l.txt (dominio, direccion_ip)
[Link]=> base_dir(dominio,direccion_ip)
[Link]=> 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 [Link]
FTP
Con sed modifico el archivo /etc/vsftpd/[Link] y pongo
Creo [Link]
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/[Link]
Cambiar passwd a usuarios
echo -e "new_password\nnew_password" | (passwd --stdin $USER)