Virtualización do Ciclo ASIR do IES de Rodeira: Diferenzas entre revisións
(→Proxy) |
|||
Liña 359: | Liña 359: | ||
Esta máquina deberá tamen facilitar acceso a Internet, sempre e cando a solicitude sexa no porto 80 ou 443 e a mesma se produza dende o Proxy. |
Esta máquina deberá tamen facilitar acceso a Internet, sempre e cando a solicitude sexa no porto 80 ou 443 e a mesma se produza dende o Proxy. |
||
==== Datos Técnicos ==== |
===== Datos Técnicos ===== |
||
'''Máquina Virtual Xen en modo paravirtualizado (PVM) executando Debian Jessie''' |
'''Máquina Virtual Xen en modo paravirtualizado (PVM) executando Debian Jessie''' |
||
* 2 Cores |
* 2 Cores |
Revisión como estaba o 17 de xullo de 2014 ás 14:50
Virtualización do Ciclo ASIR do IES de Rodeira
Introducción
A virtualización hoxe en día ofrece numerosas vantaxes sobre a execución en hardware:
- Maior aproveitamento dos recursos
- Menor prezo, aforrando electricidade e hardware
- Facilidade de actualización
- Maior flexibilidade na rede e nos servizos
- Facilidade para montar estructuras de alta dispoñibilidade.
Debido a esto, e de modo experimental, se vai a diseñar unha estructura de máquinas virtuais que permita ofrecer os mesmos servizos (e nun futuro mais) que se teñen agora.
Hoxe en día, o IES de Rodeira conta con un servidor Linux que ofrece servizos de DNS, Firewall, Mail, Proxy, Escritorio, Almacenamento, Mirror Linux, Acceso remoto SSH e NX... e cun servidor Windows 2003 Server que ofrece o servizo de directorio activo e dominio aos equipos Windows das aulas. Se trata de ofrecer estos servizos a través de máquinas virtuais, o que nos permitirá unha maior flexibilidade na configuración e mantemento dos mesmos.
Planificación
Redes
A Rede do IES de Rodeira actualmente sigue o seguinte esquema:
Se trata de sustituir este esquema por outro que faga uso se servidores virtualizados aproveitando as VLAN 802.11q soportadas polos switches do departamento, modelo D-LINK DGS-1500-28 aula 3 e aula 4.
Necesitamos proveer de 4 redes ailladas: A rede do ciclo ASIR (Rede ASIR), a rede utilizada polos CICLOS (Rede CICLOS), a rede de acceso a internet (Rede XUNTA) con gateway 69.65.24.1 e a rede de acceso ás ADSL (Rede ADSL). Como os ciclos e as ADSL se atopan nun switch que non soporta 802.11q, se separarán en dúas VLAN tradicionais por portos, de xeito que os ordenadores da Rede CICLOS non podan acceder directamente a Rede ADSL, aínda que dende o punto de vista das VLAN 802.11q que imos montar será unha rede única (Rede CICLOS_ADSL).
Co motivo da posible realización de prácticas de redes e sistemas mediante máquinas virtuais, configuraremos unha VLAN espécífica para unha rede de maquinas virtuais, RedeVirtualización. Ademáis, os servicios esenciais estarán protexidos cun sistema baseado en heartbeat e drbd, para o que reservaremos tamén a VLAN DRBD.
A asignación dos Tag 802.11q será a seguinte:
- RedeASIR: default (Tag 1)
- RedeXUNTA: Tag 3
- RedeCICLOS_ADSL: Tag 4
- DRBD: Tag 5
- RedeVirtualización: Tag 100
Os servidores de virtualización poderán estar situados en calqueira punto da rede 802.11q (switches do Aula 3, Aula 4 ou Departamento), aínda que por motivos de seguridade, restrinxiremos o acceso a RedeXUNTA e RedeCiclos a portos concretos dentro de cada switch. O Aula 4 poderá aloxar únicamente máquinas virtuais na VLAN por defecto, ou na VLAN 100 (RedeVirtualización). As conexións nos switches son as seguintes:
- Departamento
O esquema 802.11q empregará: O porto 11 como Trunk para o acceso ao Aula 3, soportando as VLANS RedeXUNTA, RedeCICLOS_ADSL e DRBD, os portos 15 e 16 como Trunk para o acceso ao servidor de virtualización Barbol soportando RedeXUNTA e RedeCICLOS_ADSL, e os portos 19 e 20 como Trunk das VLAN RedeXUNTA e RedeCICLOS_ADSL para o acceso ao servidor de virtualización Gandalf . O porto 21 se utilizará para a conexión DRBD entre os servidores Gandalf e Earendil (situado no Aula 3). Todos os portos serán Trunk da VLAN de RedeVirtualización A seguinte figura indica a configuración:
- Aula 3
No Aula 3 estará situado outro servidor de virtualización (Earendil) que servirá como respaldo de Gandalf, formando un cluster de alta dispoñibilidade de dous nodos para os servicios virtuais, ademáis de poder aloxar máquinas virtuais de traballo. Polo tanto se configurará o porto 24' como Trunk para a conexión co departamento nas VLANS RedeXUNTA,RedeCICLOS_ADSL e DRBD, os portos 21 e 22 como Trunk para RedeXUNTA e RedesCICLOS_ADSL, no que irá conectado Earendil e o porto 23 se utilizará como conexión DRBD entre Earendil e Gandalf.
Servizos
Os servizos ofrecidos a cada rede serán os seguintes:
- Rede ASIR
- A rede de ASIR precisará de servicios Web, DNS, Control de acceso a Internet, Mail e escritorio remoto, ademáis de poder recibir conexións externas dende internet a estes e a futuros servizos (servicio de rutado). Se crearán as máquinas virtuais VM_PROXY (Control de Acceso a Internet e DNS interno e externo), VM_ROUTER (Rutado dende as conexións ADSL á rede interna), VM_WEB (Proporciona servicio Web LAMP á rede interna e externa, WebMail e e-mail) e VM_DESKTOP (Ofrece servizo de escritorio). VM_ROUTER permitirá que dende Internet se poda acceder ao correo (SMTP, POP, IMAP), ás páxinas web, ao DNS, VPN, e acceder mediante SSH aos hosts da rede (o que permite escritorios remotos NX/X2GO, túneis SSH e SFTP).
- Rede CICLOS_ADSL
- A rede de Ciclos únicamente precisa o control de acceso a internet e o DNS, polo que únicamente terán acceso a VM_PROXY. VM_ROUTER precisa acceder ás ADSL, polo que tamén ten que pertencer a esta rede.
- Rede XUNTA
- Esta rede únicamente se utiliza para ofrecer servizo de acceso a internet, polo que a única máquina que vai ter acceso a ela é VM_PROXY.
Por motivos de seguridade, se facilitará acceso SSH directo a través do porto 63000 ao servidor de virtualizacións Gandalf, e no porto 63001 ao servidor de virtualizacións Earendil sen necesidade de pasar a través de VM_ROUTER.
Sistemas de Virtualización
Para o sistema de virtualización pensouse en primeiro lugar en Xen, por ser un sistema de tipo 1 (bare-metal), ofrecendo un rendimento óptimo nos sistemas soportados (como Linux) mediante paravirtualización. Posteriormente, valorouse que KVM proporciona unha maior facilidade de instalación e mantemento por vir xa incluída nas distintas distribucións nos kernel estándar, e non precisar de ficheiros de configuración extra, permitindo a migración de máquinas virtuais entre calqueira host da rede local. O seu rendimento por outra banda é moi similar a Xen, sobre todo cando temos que recurrir a virtualización de sistemas non directamente soportados por Xen, como Widows.
Os servicios de importancia para o funcionamento da rede (VM_ROUTER, VM_PROXY, VM_WEB e VM_DESKTOP) se executarán preferentemente nun sistema que proporciona redundancia no procesamento e almacenamento mediante heartbeat e drbd.
Os servidores precisarán de 3 tarxetas de rede, facendo uso debonding para aumentar o ancho de banda e a fiabilidade.
A configuración da rede final e dos switches implicados será a da figura:
Configuración da Rede
Configuración da LAN
Os switches estarán configurados según o indicado no apartado anterior. As máquinas virtuais farán uso de Open vSwitch por ofrecer máis características e facilidade de configuración e mantemento que os bridge normais.
O sistema gráfico de manexo de virtualización de KVM (virt-manager) non soporta a configuración de rede mediante Open vSwitch, polo que crearemos as máquinas virtuais na rede NAT da configuración por defecto (default), e posteriormente as migraremos a Open vSwitch modificando a configuración da tarxeta de rede no XML de definición da máquina virtual. A configuración se edita mediante o comando virsh edit Nome_Máquina, e será necesario sustituir os elementos:
<interface type='network'>
<mac address='52:54:00:90:86:18'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
por elementos:
<interface type='bridge'>
<mac address='00:16:3e:51:20:02'/>
<source bridge='lan'/>
<!-- O tag vlan so si temos a tarxeta nunha VLAN 802.1q -->
<vlan>
<tag id='3'/>
</vlan>
<virtualport type='openvswitch'>
</virtualport>
<target dev='p_xunta-eth'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</interface>
As direccións MAC das tarxetas dos servidores as configuraremos tamén manualmente alterando os ficheiros de configuración. Deste xeito teremos:
- VM_PROXY (proxy.iesrodeira.com)
-
- eth0 - 172.20.2.1 (00:16:3e:51:20:01): Tarxeta que conecta con RedeASIR
- eth1 - 69.65.24.206 (00:16:3e:51:20:02) VLAN 3: Tarxeta de acceso á RedeXUNTA.
- eth2 - 172.16.2.1 (00:16:3e:51:20:03) VLAN 4: Tarxeta que conecta coa RedeCICLOS
- VM_ROUTER (router.iesrodeira.com)
-
- eth0 - 172.20.0.1 (00:16:3e:51:20:04): Tarxeta que conecta coa RedeASIR
- eth1 - 192.168.2.2 (00:16:3e:51:20:05) VLAN 4: Tarxeta que conecta coa RedeADSL (que en realidade é a mesma que a dos ciclos)
- VM_WEB (web.iesrodeira.com)
-
- eth0 - 172.20.0.2 (00:16:3e:51:20:10): Tarxeta que conecta coa RedeASIR
- VM_DESKTOP (desktop.iesrodeira.com)
-
- eth0 - 172.20.0.5 (00:16:3e:51:20:11): Tarxeta que conecta coa RedeASIR
Configuración de Servicios
Os servizos ofrecidos polas distintas máquinas virtuais son os seguintes:
- VM_ROUTER (Router)
- Firewall, DNAT para o acceso externo a servizos da rede interna. Acceso a servizos restrinxidos pola rede da xunta (como ntp).
- VM_PROXY (Proxy)
- Proxy Squid + WebSqusr (Control acceso a internet), DNS.
- VM_WEBSERVER (Servidor Web)
- Servicio Web + WebMail + Mail (exim4) + Mirror Debian, Repositorio SVN con interface Trac.
- VM_DESKTOP (Servidor de Escritorio)
- Acceso mediante x2go (ssh) a XFCE ... e ás aplicacións hospedadas.
Outros servizoa a ofrecer, xa sexa por estas máquinas ou outras serán:
- Servicio de copias de seguridade mediante un interface web.
- Servicio de descarga de software (sobre todo de msdn) mediante interface web.
- Servicio de xestión de máquinas virtuais mediante interface web.
- Servicio de Controlador de Dominio Windows para a LAN con Samba4
Configuración dos Servidores de Máquinas Virtuais
En principio calqueira máquina pode ser utilizada para ofrecer servicio de virtualización, incluso sen extensións de virtualización no procesador, no caso de uso de paravirtualización mediante Xen ou de Containers. No noso caso imos empregar en principio tres máquinas como servidores de virtualiación, coas seguintes características:
- Servidor Intel:
- -gandalf.iesrodeira.com
- -CPU Quad Core, 8Gb RAM
- -Soporte de virtualización na CPU.
- -IP: 172.20.1.1.
- -Tres tarxetas de rede, unha para replicación DRBD e dúas para un bonding coa rede.
- -Dous discos de 750GB e dous de 2TB.
- Servidor HP:
- -earendil.iesrodeira.com
- -CPU Dual Core, 8Gb RAM
- -Soporte de virtualización na CPU.
- -IP: 172.20.1.10.
- -Tres tarxetas de rede, unha para a replicación DRBD e dúas par un bonding coa rede.
- -Un disco de 500GB e dous de 2TB
- Servidor DELL:
- -barbol.iesrodeira.com
- -CPU Dual Xeon Quad Core, 32Gb de RAM
- -Soporte de virtualización na CPU.
- -IP: 172.20.1.20
- -Dúas tarxetas de rede que formarán un bonding coa rede.
- -Tres discos de 320GB en Raid 5 por Hardware
Aínda que o mellor equipo para a virtualización en canto a características é o servidor DELL (barbol), as dificultades na súa ubicación fan que sexa de momento un servidor máis 'provisional'. Os equipos earendil e gandalf formarán un cluster mediante heartbeat na que gandalf será o nodo primario, co obxecto de manter as máquinas virtuais esenciais en marcha de xeito automático no caso de fallo dun dos equipos. Para conseguir esto, utilizaremos replicacion DRBD a través dunha VLAN para o espacio de disco destiñado a eses servidores.
Nos tres equipos se instalará Debian Jessie, que en estes momentos é a rama de probas. Instalaremos nos tres equipos o seguinte software:
- Instalación de Debian Jessie.
- En gandalf.iesrodeira.com crearemos dous Raid 1, un cos discos de 750GB e outro cos discos de 2TB. Estes dous RAID (md0 e md1) formarán un Grupo de Volumes LVM chamado Gandalf coa totalidade do espacio. Crearemos os Volumes Lóxicos boot (2GB), root (10GB) e swap (4GB) nos que instalaremos o sistema.
- En earendil.iesrodeira.com particionaremos os discos de 2TB en unha partición de 500GB (sdb1 e sdc1) e outra de 1.5TB (sdb2 e sdc2). Crearemos un Raid 1 (md0) coas particións sdb2 e sdc2. Co raid md0 crearemos o Grupo de Volumes Earendil no que crearemos os Volumes Lóxicos boot (2GB) e root (10GB). Coas particións sdb1, sdc1 e o disco sda crearemos o Grupo de Volumes Disks, no que creamos o Volume Lóxico swap (4G), nos que instalaremos o sistema.
- En barbol.iesrodeira.com crearemos un grupo de volumes Barbol no que crearemos os Volumes Lóxicos root (10GB), boot (2GB) e swap (16GB), nos que instalaremos o sistema.
- Instalación de Open vSwitch:
apt-get install openvswitch-switch
- openvswitch almacena a configuración nunha base de datos persistente, que se conserva entre os reinicios da máquina. Realizamos a configuración inicial para a nosa rede de máquinas virtuais. A interface para o acceso a rede se chamará lan nas tres máquinas.
ovs-vsctl add-br lan
# En ''barbol'' o bond será entre as eth0 e eth1
ovs-vsctl add-bond lan bond0 eth1 eth2 bond_mode=balance-slb other_config:bond-detect-mode=miimon other_config:bond-miimon-interval=100
- En Debian, o script de configuración de rede (/etc/init.d/networking) execútase antes da carga do servizo openvswitch, polo que a configuración de rede no arranque será errónea ou incompleta. Para solucionar este problema podemos engadir ao nivel de servizo axeitado o reintento de configuración, ou chamalo dende /etc/rc.local engandindo service networking restart xusto antes da liña con exit 0.
- Configuramos as redes:
- /etc/resolv.conf:
domain iesrodeira.com
nameserver 172.20.2.1
nameserver 8.8.8.8
- /etc/network/interfaces:
# gandalf.iesrodeira.com
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.21.1.200
auto eth1
iface eth1 inet static
address 0.0.0.0
auto eth2
iface eth2 inet static
address 0.0.0.0
auto lan
iface lan inet static
address 172.20.1.1
netmask 255.255.0.0
gateway 172.20.2.1
broadcast 172.20.255.255
# earendil.iesrodeira.com
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.21.1.100
netmask 255.255.0.0
network 172.21.0.0
auto eth1
iface eth1 inet static
address 0.0.0.0
auto eth2
iface eth2 inet static
address 0.0.0.0
auto lan
iface lan inet static
address 172.20.1.10
netmask 255.255.0.0
network 172.20.0.0
broadcast 172.20.255.255
gateway 172.20.2.1
# barbol.iesrodeira.com
auto lo
iface lo inet loopback
# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 0.0.0.0
#netmask 255.255.0.0
#network 172.20.0.0
#broadcast 172.20.255.255
#gateway 172.20.2.1
auto eth1
iface eth1 inet static
address 0.0.0.0
auto lan
iface lan inet static
address 172.20.1.20
netmask 255.255.0.0
network 172.20.0.0
broadcast 172.20.255.255
gateway 172.20.2.1
- Instalación de KVM e libvirt:
apt-get install kvm virt-goodies virt-top virtinst libvirt-bin libvirt-sanlock
- Habilitamos [[wikipedia:Kernel_SamePage_Merging_(KSM) KSM (Kernel Samepage Merging).
echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
Configuración do clustering HA e Xestión de Espazo en Disco
earendil.iesrodeira.com
En earendil.iesrodeira.com no Grupo de Volumes Earendil creamos o Volumes Lóxicos storage de 950GB e servers de 400GB. O volume lóxico servers formará un dispositivo DRBD con gandalf.iesrodeira.com para aloxar as máquinas virtuais básicas para o sistema. O Volume Lóxico storage se empregará para o aloxamento de discos virtuais. No Grupo de Volumes Disks, que como carecerá de redundancia aloxará información fácilmente reemplazable en caso de perda, crearemos os Volumes Lóxicos sources (400GB) ( para ISOS de instalación e aplicacións) e storage(950GB) (para discos virtuais) en modo stripped.
# Si queremos crear os volumes lóxicos a mán en vez de facelo durante a instalación, mediante un Live.
# Ou facer parte a man e parte na instalación...
# - Creamos as particións sd[bc]1 (500GB) e sd[bc]2 (1.5TB)
fdisk /dev/sdb
fdisk /dev/sdc
# - RAID
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdc2
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sdb2 /dev/sdc2
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
# - Grupos de Volumes
pvcreate /dev/sda
pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvcreate /dev/md0
vgcreate Earendil /dev/md0
vgcreate Disks /dev/sda /dev/sdb1 /dev/sdc1
lvcreate -L10G -n root Earendil
lvcreate -L2G -n boot Earendil
lvcreate -L400G -n servers Earendil
lvcreate -L950G -n storage Earendil
lvcreate -i3 -I4 -L4G -n swap Disks
lvcreate -i3 -I4 -L400G -n sources Disks
lvcreate -i3 -I4 -L950G -n storage Disks
A maior parte de este espazo se compartirá a través de NFS, de modo que montaremos a seguinte estructura no raíz do sistema:
- -(drbd cos servidores do sistema) /NFS/servers, montaremos /dev/Earendil/servers
- -(isos e aplicacións para instalacións) /NFS/isos, montaremos /dev/Disks/sources
- -(discos para máquinas virtuais sen redundancia) /NFS/storage, montaremos /dev/Disks/storage. Como este almacenamento non ten redundancia, pode empregarse para discos virtuais en RAID.
- -(discos para máquinas virtuais nun RAID 1) /NFS/machines, montaremos /dev/Earendil/storage
gandalf.iesrodeira.com
En gandalf.iesrodeira.com no Grupo de Volumes Gandalf craremos un Volume Lóxico mirror (300GB) para aloxar un Mirror de Debian para as actualizacións da rede, outro VL images (300GB) para almacenar as imaxes fsarchiver de instalación das aulas, un VL servers (400GB) para os servidores do sistema en DRBD con Earendil, un VL machines (950GB) para almacenar discos virtuais e un VL datos (400GB) para backups dos sistemas. Os puntos de montaxe serían os seguintes:
- - En /NFS/servers, /dev/Gandalf/servers
- - En /NFS/mirror, /dev/Gandalf/mirror
- - En /NFS/machines, /dev/Gandalf/machines
- - En /NFS/images, /dev/Gandalf/images
- - En /NFS/datos, /dev/Gandalf/datos
barbol.iesrodeira.com
Este servidor non formará parte do cluster, pero servirá de respaldo dos discos das máquinas virtuais dos servicios mediante un VL datos (170GB). Este volume normalmente non está montado, e en caso de necesidade podería montarse en /var/lib/libvirt/servers para arrancar os servicios.
Unha vez particionados os discos e instalado o sistema, procederemos á instalación de DRBD en Earendil e Gandalf, no que Gandalf será o nodo primario. Co DRBD en funcionamento, procederemos á configuración dun servicio de alta dispoñibilidade para os servidores virtuais.
Servicio SSH
Normalmente o acceso dende o exterior á rede do centro se realizará a través da conexión ADSL, e da máquina virtual router.iesrodeira.com que se encargará de xestionar os distintos servicios e establecer as políticas de firewall indicadas. O inconvinte de esta configuración é que en caso de caida do servizo de virtualización nos quedaremos sen posibilidade de acceder remotamente para solucionar os posibles problemas, de xeito que implantaremos un acceso ssh directo dende a ADSL aos servidores de virtualización gandalf.iesrodeira.com (porto 63000), earendil.iesrodeira.com (porto 63001) e barbol.iesrodeira.com (porto 63002).
Servidor de Tempo (NTP)
Ter todos os equipos da rede sincronizados ao mesmo tempo é fundamental para servicios como Kerberos e Active Directory. gandalf.iesrodeira.com se sincronizará mediante o protocolo NTP con proveedores de sincronización de internet, e proporcionará ese mesmo servicio á rede interna. earendil.iesrodeira.com se sincronizará con gandalf e con proveedores en internet.
Servidores Kerberos
Servicios en Máquinas Virtuais (KVM)
Router
A Máquina Virtual "Router" será a encargada de redirixir a entrada aos servizos ofrecidos pola rede hacia o mundo exterior. Estes servicios fundamentalmente serán:
- Servizos de Acceso Remoto
- RDP hacia o Servidor de Dominio Windows
- NX/X2GO hacia o Servidor de Escritorio Linux
- SSH hacia os distintos servers: (Router,Proxy,Servidor Web e Servidor de Escritorio)
- Servizos de Correo
- SMTP,POP,e IMAP
- WebMail
- Servizo DNS
- SFTP (mediante o acceso SSH)
Esta máquina deberá tamen facilitar acceso a Internet, sempre e cando a solicitude sexa no porto 80 ou 443 e a mesma se produza dende o Proxy.
Datos Técnicos
Máquina Virtual Xen en modo paravirtualizado (PVM) executando Debian Jessie
* 2 Cores * 600M de RAM * 3 Ethernet: eth0 - 172.20.0.1 (untagged), acceso a rede local ASIR eth1 - 192.168.1.2 (tag 4), acceso a ADSL1 na rede CICLOS eth2 - 192.168.2.2 (tag 4), acceso a ADSL2 na rede CICLOS * 80GB HDD
Configuración
Partimos dun disco VHD cunha instalación básica de Debian Jessie.
- Creamos unha copia utilizando a imaxe como base:
vhd-util snapshot -n RodeiraRouter.vhd -p JessieBase.vhd
- Creamos a configuración da VM no ficheiro RodeiraRouter.cfg
bootloader = 'pygrub' vcpus = '2' memory = '600' disk = ['tap2:tapdisk:vhd:RodeiraRouter.vhd,xvda,w'] name = 'RodeiraRouter' vif = [ 'mac=XX:XX:XX:XX:XX:XX,bridge=xenbr0,model=e1000','mac=XX:XX:XX:XX:XX:XX,bridge=xenbr0.4,model=e1000', 'mac=XX:XX:XX:XX:XX:XX,bridge=xenbr0.4,model=e1000' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' acpi = '0' apic = '1' viridian = '0' xen_platform_pci='0' sdl = '0' vnc = '0' vnclisten = '0.0.0.0' vncpasswd = stdvga = '0' usb = '0'
- Arrancamos a VM
xm create RodeiraRouter.cfg
- Iniciamos sesión a través de ssh (usuario root e password root, a máquina iniciará con IP dinámica) ou co seguinte comando
xm console RodeiraRouter
- Configurar as ethernet editando /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # # The loopback network interface auto lo iface lo inet loopback # # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 172.20.0.1 netmask 255.255.0.0 gateway 172.20.2.1 nameserver 172.20.2.1 # auto eth1 iface eth1 inet static address 192.168.1.2 netmask 255.255.255.0 # auto eth2 iface eth2 inet static address 192.168.2.2 netmask 255.255.255.0
- Configurar hostname a RodeiraRouter
hostname "RodeiraRouter" && echo "RodeiraRouter">/etc/hostname
- Cambiar a password de root
passwd root
- Reiniciamos a máquina
shutdown -r now
- Iniciamos sesión como root por ssh
ssh root@172.20.0.1
- Instalamos software necesario
# Para protexer accesos dende internet. Ao cabo de varios intentos fallidos bloquea temporalmente ao atacante apt-get install fail2ban
- Configuramos os parámetros do sistema para poder rutar para moitas máquinas editando /etc/rc.local
# Habilitamos forwarding # A tabla de conexións debe ser grande e rápida. # Poñemos os HASHSIZE e o CONNTRACK_MAX da taboa NAT a 1048576 o que nos permitirá máis de 2000 conexións simultáneas. # Chamamos ao script encargado de configurar o firewall # Aseguramos que non nos falsifiquen os gateways nin servidores mediante envenenamento ARP # echo 1 > /proc/sys/net/ipv4/ip_forward modprobe ip_conntrack hashsize=1048576 modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ip_conntrack_sip modprobe ip_nat_sip echo 1048576 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max /root/scripts/firewall.sh arp -s 192.168.2.1 XX:XX:XX:XX:XX:XX arp -s 192.168.1.1 XX:XX:XX:XX:XX:XX arp -s 172.20.2.1 XX:XX:XX:XX:XX:XX arp -s 172.20.0.2 XX:XX:XX:XX:XX.XX arp -s 172.20.0.3 XX:XX:XX:XX:XX:XX exit 0
- Creamos unha carpeta scripts e dentro creamos as regras do firewall e NAT un ficheiro chamado firewall.sh
#!/bin/bash # Reglas iptables para firewalling e rutado # Xavi 2013 # ETH_LAN="eth0" ETH_ADSL1="eth1" ETH_ADSL2="eth2" # WEBSERVER="172.20.0.2" PROXYSERVER="172.20.2.1" DESKTOPSERVER="172.20.0.3" ADSL1="192.168.1.1" ADSL2="192.168.2.1" # echo "Parando fail2ban..." /etc/init.d/fail2ban stop # echo "Inicializando iptables..." iptables -F iptables -X iptables -Z iptables -t nat -F iptables -t mangle -F # echo "Establecendo politicas por defecto..." iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # echo "Habilitando trafico interno..." iptables -I INPUT 1 -i lo -j ACCEPT iptables -I OUTPUT 1 -o lo -j ACCEPT # echo "Habilitando acceso SSH no porto 22" iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT # echo "Habilitando saida dende maquina local..." iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # echo "Iniciando politicas de seguridade..." # 224.0.0.0/24 es solo para enlaces multicast locales. Aquí solo pueden encontrar cosas como protocolos de enrutado. # Los datagramas a estas direcciones no deberían ser reenviadas por los routers echo "Filtrando Multicast..." iptables -A FORWARD -d 224.0.0.0/8 -j DROP iptables -A INPUT -s 224.0.0.0/4 -j DROP iptables -A FORWARD -s 224.0.0.0/4 -j DROP iptables -A FORWARD -d 224.0.0.0/4 -j DROP iptables -A INPUT -s 224.0.0.0/5 -j DROP # echo "Filtrando clase A privada..." iptables -A INPUT -s 10.0.0.0/8 -j DROP iptables -A FORWARD -s 10.0.0.0/8 -j DROP # echo "Verificando conexións SYN..." iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP # echo "Filtrando fragmentos IP" iptables -A INPUT -f -j LOG --log-prefix "IP FRAG: " iptables -A INPUT -f -j DROP iptables -A FORWARD -f -j LOG --log-prefix "FORWARD IP FRAG: " iptables -A FORWARD -f -j DROP # echo "Protección ICMP..." iptables -A INPUT -m state -p icmp --state INVALID -j DROP iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP # echo "Habilitando PING..." iptables -A INPUT -p icmp -j ACCEPT # echo "Proteccion SYN FLOODING..." iptables -N SYNFLOOD_A iptables -N SYNFLOOD_B iptables -N SYNFLOOD_C iptables -A INPUT -i ${ETH_ADSL1} -p tcp --syn -j SYNFLOOD_A iptables -A INPUT -i ${ETH_ADSL2} -p tcp --syn -j SYNFLOOD_B iptables -A INPUT -i ${ETH_LAN} -p tcp --syn -j SYNFLOOD_C iptables -A SYNFLOOD_A -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A SYNFLOOD_A -j DROP iptables -A SYNFLOOD_B -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A SYNFLOOD_B -j DROP iptables -A SYNFLOOD_C -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A SYNFLOOD_C -j DROP # echo "Habilitando DNS..." iptables -t nat -A PREROUTING -p udp ! -i ${ETH_LAN} --dport 53 -j DNAT --to-destination ${PROXYSERVER} iptables -A FORWARD -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD -p udp --sport 53 -i ${ETH_LAN} -s ${PROXYSERVER} -j ACCEPT # echo "Habilitando Servidor Web..." iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 80 -j DNAT --to-destination ${PROXYSERVER} iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 443 -j DNAT --to-destination ${PROXYSERVER} iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT # echo "Habilitando SSH a Desktop..." iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 22 -j DNAT --to-destination ${DESKTOPSERVER} iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT # echo "Habilitando POP3s, SMTP..." iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 995 -j DNAT --to-destination ${WEBSERVER} iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 25 -j DNAT --to-destination ${WEBSERVER} iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset # echo "Permitindo saida a servicio web por parte do proxy e servidor web..." iptables -A FORWARD -p tcp -s ${PROXYSERVER} --dport 80 -j ACCEPT iptables -A FORWARD -p tcp -s ${PROXYSERVER} --dport 443 -j ACCEPT iptables -A FORWARD -p tcp -s ${WEBSERVER} --dport 80 -j ACCEPT iptables -A FORWARD -p tcp -s ${WEBSERVER} --dport 443 -j ACCEPT # echo "Facendo NAT..." iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source ${ADSL2} iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source ${ADSL1} # echo "Iniciando Fail2ban..." /etc/init.d/fail2ban start
Si non nos interesa ter unha imaxe copy on write dunha imaxe base podemos convertila a unha imaxe normal:
vhd-util coalesce -n RodeiraRouter.vhd -o RodeiraRouterFull.vhd -p # Xa non precisamos a copia CoW rm RodeiraRouter.vhd mv RodeiraRouterFull.vhd RodeiraRouter.vhd
E incluso, a unha imaxe raw que ofrecerá mellor rendimento. Nese caso Debemos modificar o ficheiro de configuración Xen de modo que o disco sexa disk = ['file:RodeiraRouter.vhd,xvda,w']:
#convertimos qemu-img convert RodeiraRouter.vhd -O raw RodeiraRouter.raw
Proxy
A Máquina Virtual "Proxy" será a encargada de facilitar acceso web tanto dende a rede do ciclo ASIR, como dende a rede de CICLOS a través da conexión Internet da Xunta. Ademáis fará as veces de servidor de dominio (DNS) para o dominio iesrodeira.com, tanto para as redes internas como para os accesos dende internet aos distintos servizos.
Este servidor terá un portal web que permitira regular o acceso a internet por parte das distintas aulas (WebSqusr), e ademáis recollerá as páxinas dos distintos servidores web das redes para servilas hacia internet.
A Xunta non admite o acceso aos seus servizos dende detrás dun proxy, si a solicitude se fai dende a rede interna. Polo tanto, as peticións de páxinas da xunta serán desviadas para recollelas a través das ADSL.
Datos Técnicos
Máquina Virtual Xen e modo paravirtualizado (PVM) executando Debian Jessie
* 2 Cores * 3584M de RAM * 3 Ethernet: eth0 - 172.20.2.1 (untagged), acceso a rede local ASIR eth1 - 172.16.2.1 (tag 4), acceso a rede CICLOS eth2 - 69.65.24.206 (tag 3), acceso a rede XUNTA
Configuración
Partimos dun disco VHD cunha instalación básica de Debian Jessie.
- Creamos unha copia utilizando a imaxe como base:
vhd-util snapshot -n RodeiraProxy.vhd -p JessieBase.vhd
- Creamos a configuración da VM no ficheiro RodeiraProxy.cfg
bootloader = 'pygrub' vcpus = '2' memory = '3584' disk = ['tap2:tapdisk:vhd:RodeiraProxy.vhd,xvda,w'] name = 'RodeiraProxy' vif = [ 'mac=XX:XX:XX:XX:XX:XX,bridge=xenbr0,model=e1000','mac=XX:XX:XX:XX:XX:XX,bridge=xenbr0.4,model=e1000', 'mac=XX:XX:XX:XX:XX:XX,bridge=xenbr0.3,model=e1000' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' acpi = '0' apic = '1' viridian = '0' xen_platform_pci='0' sdl = '0' vnc = '0' vnclisten = '0.0.0.0' vncpasswd = stdvga = '0' usb = '0'
- Arrancamos a VM
xm create RodeiraProxy.cfg
- Iniciamos sesión a través de ssh (usuario root e password root, a máquina iniciará con IP dinámica) ou co seguinte comando
xm console RodeiraProxy
- Configurar as ethernet editando /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # # The loopback network interface auto lo iface lo inet loopback # # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 172.20.2.1 netmask 255.255.0.0 nameserver 172.20.2.1 # auto eth1 iface eth1 inet static address 172.16.2.1 netmask 255.255.0.0 # auto eth2 iface eth2 inet static address 69.65.24.206 netmask 255.255.254.0 gateway 69.65.24.1
- Configurar hostname a RodeiraProxy
hostname "RodeiraProxy" && echo "RodeiraProxy">/etc/hostname
- Cambiar a password de root
passwd root
- Reiniciamos a máquina
shutdown -r now
- Iniciamos sesión como root por ssh
ssh root@172.20.0.1
- Instalamos o software necesario
apt-get install apache2 php5 bind9 bind9utils bind9-doc squid make
- Instalamos WebSqusr e especificamos o seguinte en /etc/squid/squid.conf:
hosts_file /etc/hosts dns_nameservers 172.20.2.1 8.8.8.8 cache_replacement_policy heap LFUDA cache_swap_low 90 cache_swap_high 95 maximum_object_size_in_memory 50 KB cache_dir aufs /var/spool/squid 40000 16 256 cache_mem 100 MB logfile_rotate 10 memory_pools off maximum_object_size 50 MB quick_abort_min 0 KB quick_abort_max 0 KB log_icp_queries off client_db off buffered_logs on half_closed_clients off
Configuración DNS (bind)
- Engadimos os seguintes ficheiros a /etc/bind/:
- 0.20.172.in-addr.arpa.zone
$TTL 86400 @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) @ IN NS dns.iesrodeira.com. 1 IN PTR router.iesrodeira.com. 2 IN PTR web.iesrodeira.com. 3 IN PTR desktop.iesrodeira.com.
- 1.20.172.in-addr.arpa.zone
$TTL 86400 @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) @ IN NS dns.iesrodeira.com. 1 IN PTR gandalf.iesrodeira.com. 2 IN PTR nas.iesrodeira.com. 10 IN PTR sauron.iesrodeira.com. 20 IN PTR earendil.iesrodeira.com. 30 IN PTR barbol.iesrodeira.com.
- 2.20.172.in-addr.arpa.zone
$TTL 86400 @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) @ IN NS dns.iesrodeira.com. 1 IN PTR proxy.iesrodeira.com.
- 2.16.172.in-addr.arpa.zone
$TTL 86400 @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) @ IN NS dns.iesrodeira.com. 1 IN PTR proxy.iesrodeira.com.
- 2.168.192.in-addr.arpa.zone
$TTL 86400 @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) @ IN NS dns.iesrodeira.com. 2 IN PTR router.iesrodeira.com.
- 1.168.192.in-addr.arpa.zone
$TTL 86400 @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) @ IN NS dns.iesrodeira.com. 2 IN PTR router.iesrodeira.com.
- 161.129.213.in-addr.arpa.zone.externa
$TTL 86400 @ IN SOA dns.iesrodeira.com. xavi.iesrodeira.com. ( 2005030302 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) IN NS dns.iesrodeira.com. IN NS esiami.tsai.es. IN NS esiami2.tsai.es. 27 IN PTR iesrodeira.com.
- 166.129.213.in-addr.arpa.zone.externa
$TTL 86400 @ IN SOA dns.iesrodeira.com. xavi.iesrodeira.com. ( 2005030302 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) IN NS dns.iesrodeira.com. IN NS esiami.tsai.es. IN NS esiami2.tsai.es. 29 IN PTR ssh.iesrodeira.com.
- iesrodeira.com.zone
$TTL 86400 @ IN SOA @ root.localhost ( 6 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl ) @ IN NS 172.20.2.1. @ IN MX 10 correo.iesrodeira.com. @ IN A 172.20.2.1 proxy IN A 172.20.2.1 correo IN A 172.20.0.2 desktop IN A 172.20.0.3 router IN A 172.20.0.1 gandalf IN A 172.20.1.1 nas IN A 172.20.1.2 sauron IN A 172.20.1.10 earendil IN A 172.20.1.20 barbol IN A 172.20.1.30 dns IN CNAME proxy.iesrodeira.com. internet IN CNAME proxy.iesrodeira.com. pop IN CNAME correo.iesrodeira.com. smtp IN CNAME correo.iesrodeira.com. pop3 IN CNAME correo.iesrodeira.com. www IN CNAME correo.iesrodeira.com. web IN CNAME www.iesrodeira.com. asir IN CNAME www.iesrodeira.com. inventario IN CNAME www.iesrodeira.com. fsala IN CNAME www.iesrodeira.com. calendario IN CNAME www.iesrodeira.com. treasure IN CNAME www.iesrodeira.com. debuxo IN CNAME www.iesrodeira.com. ssh IN CNAME desktop.iesrodeira.com.
- iesrodeira.com.zone.externa
$TTL 86400 @ IN SOA dns.iesrodeira.com. xavi.iesrodeira.com. ( 2006061602 ; Serial 7200 ; Refresh (1h) 7200 ; Retry 604800 ; Expire 86400 ) ; Negative Cache TTL IN NS dns.iesrodeira.com. IN NS esiami.tsai.es. IN NS esiami2.tsai.es. @ IN MX 10 correo.iesrodeira.com. @ IN A 213.129.161.27 correo IN A 213.129.161.27 dns IN A 213.129.161.27 ssh IN A 213.129.166.29 iesrodeira.com. IN TXT "v=spf1 a mx ~all" correo.iesrodeira.com. IN TXT "v=spf1 a -all" desktop IN CNAME ssh.iesrodeira.com. www IN CNAME iesrodeira.com. web IN CNAME iesrodeira.com. inventario IN CNAME iesrodeira.com. calendario IN CNAME iesrodeira.com. treasure IN CNAME iesrodeira.com. internet IN CNAME iesrodeira.com. fsala IN CNAME iesrodeira.com. debuxo IN CNAME iesrodeira.com. pop IN CNAME iesrodeira.com. smtp IN CNAME iesrodeira.com. pop3 IN CNAME iesrodeira.com.
- Comentamos en /etc/bind/named.conf a liña include "/etc/bind/named.conf.default-zones";
- Asi quedará /etc/bind/named.conf.local
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your organization // include "/etc/bind/zones.rfc1918"; view "internal" { match-clients { 172.20.0.0/16; 192.168.1.0/24; 172.16.0.0/16; 127.0.0.0/8; 69.65.24.206; }; recursion yes; // // prime the server with knowledge of the root servers zone "." { type hint; file "/etc/bind/db.root"; }; // // be authoritative for the localhost forward and reverse zones, and for broadcast zones as per RFC 1912 // zone "localhost" { type master; file "/etc/bind/db.local"; }; // zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; // zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; // zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; // zone "com" { type delegation-only; }; zone "net" { type delegation-only; }; // zone "0.20.172.in-addr.arpa" { type master; file "/etc/bind/0.20.172.in-addr.arpa.zone"; }; // zone "1.20.172.in-addr.arpa" { type master; file "/etc/bind/1.20.172.in-addr.arpa.zone"; }; // zone "2.20.172.in-addr.arpa" { type master; file "/etc/bind/2.20.172.in-addr.arpa.zone"; }; // zone "iesrodeira.com" { type master; file "/etc/bind/iesrodeira.com.zone"; }; };
view "external" { match-clients { any; }; recursion no; // zone "iesrodeira.com" { type master; file "/etc/bind/iesrodeira.com.zone.externa"; }; // zone "161.129.213.in-addr.arpa" { type master; file "/etc/bind/161.129.213.in-addr.arpa.zone.externa"; }; // zone "166.129.213.in-addr.arpa" { type master; file "/etc/bind/166.129.213.in-addr.arpa.zone.externa"; }; };
- E así /etc/bind/named.conf.options:
options { directory "/var/cache/bind"; // // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // // forwarders { // 0.0.0.0; // }; // //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== // dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 // forwarders { 8.8.8.8; 212.166.64.1; 212.166.64.2; }; version "iesrodeira.com 1.0"; listen-on-v6 { any; }; }; logging { channel security_file { file "/var/log/named/security.log" versions 3 size 30m; severity dynamic; print-time yes; }; category security { security_file; }; category lame-servers {null; }; category edns-disabled { null; }; };
- Creamos a carpeta e o ficheiro para o logging cos permisos axeitados
mkdir /var/log/named chown bind /var/log/named touch /var/log/named/security.log chown bind /var/log/named/security.log
- reiniciamos o servicio DNS
service bind9 restart
WebSqusr
Servidor Web
O Servidor Web ofrecerá o servizo web principal para o centro. Aloxará a páxina mediawiki do ciclo e actuará de Proxy Inverso para outras web aloxadas no centro. Ademáis ofrecerá os servizos de e-mail e webmail. Se configurarán tamén servizos de recollida de correo mediante POP3 e envío con SMTP con autorización e sobre TLS/SSL.
Outra funcionalidade de este servidor será o aloxamento de proxectos de software mediante Trac
Datos Técnicos
Máquina Virtual Xen e modo paravirtualizado (PVM) executando Debian Wheezy
* 2 Cores * 2048M de RAM * 1 Ethernet: eth0 - 172.20.0.2 (untagged), acceso a rede local ASIR
Configuración
Partimos dun disco VHD cunha instalación básica de Debian Wheezy.
- Creamos unha copia utilizando a imaxe como base:
vhd-util snapshot -n RodeiraWebServer.vhd -p WheezyBase.vhd
- Creamos a configuración da VM no ficheiro RodeiraWebServer.cfg
bootloader = 'pygrub' vcpus = '2' memory = '1024' disk = ['tap2:tapdisk:vhd:RodeiraWebServer.vhd,xvda,w'] name = 'RodeiraWebServer' vif = [ 'mac=XX:XX:XX:XX:XX:XX,bridge=xenbr0,model=e1000'] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' acpi = '0' apic = '1' viridian = '0' xen_platform_pci='0' sdl = '0' vnc = '0' vnclisten = '0.0.0.0' vncpasswd = stdvga = '0' usb = '0'
- Arrancamos a VM
xm create RodeiraWebServer.cfg
- Iniciamos sesión a través de ssh (usuario root e password root, a máquina iniciará con IP dinámica) ou co seguinte comando
xm console RodeiraWebServer
- Configurar as ethernet editando /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # # The loopback network interface auto lo iface lo inet loopback # # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 172.20.0.2 netmask 255.255.0.0 gateway 172.20.2.1 nameserver 172.20.2.1 #
- Configurar hostname a RodeiraWebServer
hostname "RodeiraWebServer" && echo "RodeiraWebServer">/etc/hostname
- Cambiar a password de root
passwd root
- Reiniciamos a máquina
shutdown -r now
- Iniciamos sesión como root por ssh
ssh root@172.20.0.1
- Instalamos software necesario
apt-get install apache2 mediawiki exim4-daemon-heavy exim4-doc-html roundcube roundcube-plugins roundcube-plugins-extra apt-get install debmirror spam-assassin courier-imap courier-imap-ssl courier-pop-ssl fail2ban
Configuramos Mediawiki
- Creamos un servidor virtual para mediawiki creando o ficheiro mediawiki en /etc/sites-available activandoo despois mediante o comando a2ensite mediawiki && service apache2 reload
<VirtualHost *:80> ServerName asir.iesrodeira.com ServerAdmin xavi@iesrodeira.com DocumentRoot /var/lib/mediawiki </VirtualHost>
- Creamos un tema para mediawiki derivando do tema Monobook no directorio /var/lib/mediawiki/skins
cp Monobook.php Rodeira.php cp Monobook.deps.php Rodeira.deps.php mkdir rodeira cp -dp monobook/* rodeira/.
Persoalizaremos o tema engadindo unha cabeceira e modificando lixeiramente o css. E importante modificar o ficheiro /var/lib/mediawiki/resources/Resource.php para engadir o novo skin á lista de skins. O código a engadir sería o seguinte:
'skins.rodeira' => array(
'styles' => array(
'common/commonElements.css' => array( 'media' => 'screen' ),
'common/commonContent.css' => array( 'media' => 'screen' ),
'common/commonInterface.css' => array( 'media' => 'screen' ),
'rodeira/main.css' => array( 'media' => 'screen' ),
),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
O plugin Collection nos permitirá obter a versión PDF dos artigos de mediawiki. A renderización a faremos localmente mediante o servidor que lanzaremos co seguinte script de /etc/init.d:
#!/bin/sh
### BEGIN INIT INFO
# Provides: pdfserver
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Mediawiki PDF service
# Description: Mediawiki export to PDF service
###END INIT INFO
# Change the next 3 lines to suit where you install your script and what you want to call it
DIR=/usr/local/bin/
DAEMON_SRV=$DIR/nserve
DAEMON_SRV_NAME=nserve
DAEMON_QUE=$DIR/mw-qserve
DAEMON_QUE_NAME=mw-qserve
DAEMON_SPOOL=$DIR/nslave
DAEMON_SPOOL_NAME=nslave
SPOOL_OPTIONS="--cachedir /var/cache/mwcache"
# This next line determines what user the script runs as.
# Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python.
DAEMON_USER=root
# The process ID of the script when it runs is stored here:
PIDFILE_SRV=/var/run/$DAEMON_SRV_NAME.pid
PIDFILE_QUE=/var/run/$DAEMON_QUE_NAME.pid
PIDFILE_SPOOL=/var/run/$DAEMON_SPOOL_NAME.pid
. /lib/lsb/init-functions
do_start () {
log_daemon_msg "Starting $DAEMON_SRV_NAME daemon"
start-stop-daemon --start --background --pidfile $PIDFILE_SRV --make-pidfile --user $DAEMON_USER --startas $DAEMON_SRV
[ $? -eq 0 ] || exit 1
log_daemon_msg "Starting $DAEMON_QUE_NAME daemon"
start-stop-daemon --start --background --pidfile $PIDFILE_QUE --make-pidfile --user $DAEMON_USER --startas $DAEMON_QUE
if ! [ $? -eq 0 ]; then
start-stop-daemon --stop --pidfile $PIDFILE_SRV --retry 10
exit 1
fi
log_daemon_msg "Starting $DAEMON_SPOOL_NAME daemon"
start-stop-daemon --start --background --pidfile $PIDFILE_SPOOL --make-pidfile --user $DAEMON_USER --startas ${DAEMON_SPOOL} -- ${SPOOL_OPTIONS}
if ! [ $? -eq 0 ]; then
start-stop-daemon --stop --pidfile $PIDFILE_SRV --retry 10
start-stop-daemon --stop --pidfile $PIDFILE_QUE --retry 10
exit 1
fi
log_end_msg $?
}
do_stop () {
log_daemon_msg "Stopping system $DAEMON_SRV_NAME daemon"
start-stop-daemon --stop --pidfile $PIDFILE_SRV --retry 10
start-stop-daemon --stop --pidfile $PIDFILE_QUE --retry 10
start-stop-daemon --stop --pidfile $PIDFILE_SPOOL --retry 10
log_end_msg $?
}
case "$1" in
start|stop)
do_${1}
;;
restart|reload|force-reload)
do_stop
do_start
;;
status)
status_of_proc "$DAEMON_SRV_NAME" "$DAEMON_SRV" && exit 0 || exit $?
;;
*)
echo "Usage: /etc/init.d/$DEAMON_NAME {start|stop|restart|status}"
exit 1
;;
esac
exit 0
Configuramos o servicio de correo exim4 com imap seguro e pop3s
- En /etc/exim4/update-exim4.conf.conf desactivar ipv6 poñendo disable_ipv6='true'
- En /etc/exim4/conf.d/auth/ poñemos:
login_saslauthd_server: driver = plaintext public_name = LOGIN server_prompts = "Username:: : Password::" # don't send system passwords over unencrypted connections server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}} server_set_id = $auth1 .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}} .endif
- En /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs engadimos o final:
MAIN_TLS_ENABLE = true
- Creamos os certificados:
/usr/share/doc/exim4-base/examples/exim-gencert --force mkimapdcert
mkimapdcert utilizará o ficheiro /etc/courier/imapd.cnf para a creación dos certificados para imap.
- O ficheiro /etc/exim4/update-exim4.conf.conf debe quedar:
disable_ipv6='true' dc_eximconfig_configtype='internet' dc_other_hostnames='correo.iesrodeira.com;iesrodeira.com' dc_local_interfaces= dc_readhost= dc_relay_domains= dc_minimaldns='false' dc_relay_nets= dc_smarthost= CFILEMODE='644' dc_use_split_config='true' dc_hide_mailname= dc_mailname_in_oh='true' dc_localdelivery='maildir_home'
- Creamos a configuración de exim4
update-exim4.conf
- Chegados a este punto, e unha vez reiniciado o servizo exim4 debería ser posible o envio de correos, o que podemos testar enviando algún e verificando a continuación a súa saída en /var/log/exim4/mainlog. Para que o servizo imap funcione correctamente, todos os usuarios deben dispoñer da carpeta Maildir que poderemos crear coa utilidade maildirmake (unha vez teñamos instalado o courier-imap).
- A utilidade swaks nos permitirá verificar o funcionamento do correo cifrado, a instalamos e testamos:
apt-get install swaks libnet-ssleay-perl $ swaks -a -tls -q HELO -s localhost -au usuario -ap '<>' === Trying localhost:25... === Connected to localhost. <- 220 RodeiraWebServer ESMTP Exim 4.50 Tue, 02 May 2006 17:56:25 -0400 -> EHLO RodeiraWebServer <- 250-RodeiraWebServer Hello localhost [127.0.0.1] <- 250-SIZE 52428800 <- 250-PIPELINING <- 250-STARTTLS <- 250 HELP -> STARTTLS <- 220 TLS go ahead === TLS started w/ cipher DHE-RSA-AES256-SHA ~> EHLO RodeiraWebServer <~ 250-RodeiraWebServer Hello localhost [127.0.0.1] <~ 250-SIZE 52428800 <~ 250-PIPELINING <~ 250 HELP ~> QUIT <~ 221 evie closing connection
- Para a autenticación dos usuarios precisamos o paquete que nos proporciona SASL:
apt-get install sasl2-bin adduser Debian-exim sasl service saslauthd restart service exim4 restart
- Podemos testar que a autenticación se realiza sin problemas mediante un usuario do sistema:
RodeiraWebServer:/etc/exim4# swaks -a -tls -q AUTH -s localhost -au usuario Password: passwd === Trying localhost:25... === Connected to localhost. <- 220 RodeiraWebServer ESMTP Exim 4.50 Fri, 05 May 2006 18:10:18 -0400 -> EHLO RodeiraWebServer <- 250-RodeiraWebServer Hello localhost [127.0.0.1] <- 250-SIZE 52428800 <- 250-PIPELINING <- 250-STARTTLS <- 250 HELP -> STARTTLS <- 220 TLS go ahead === TLS started w/ cipher DHE-RSA-AES256-SHA ~> EHLO RodeiraWebServer <~ 250-RodeiraWebServer Hello localhost [127.0.0.1] <~ 250-SIZE 52428800 <~ 250-PIPELINING <~ 250-AUTH PLAIN <~ 250 HELP ~> AUTH PLAIN AGphc28uygBOaGVxMHc= <~ 235 Authentication succeeded ~> QUIT <~ 221 RodeiraWebServer closing connection
A instalación de pop3s e moi simple. En primeiro lugar debemos parar e desactivar o servizo pop3, e asegurarnos que en /etc/inetd.conf non se ten o servizo pop3 nin pop3s. Unha vez feito esto podemos comprobar o funcionamento iniciando unha conexión e realizando un diálogo pop3 no terminal:
openssl s_client -connect correo.iesrodeira.com:995
Configuramos o WebMail.
- Eliminamos a configuración por defecto de roundcube
rm /etc/apache2/conf.d/roundcube
- Creamos un host virtual para roundcube, e o activamos. Creamos /etc/apache2/sites-available/roundcube
<VirtualHost *:80> ServerAdmin xavi@iesrodeira.com ServerName correo.iesrodeira.com ServerAlias correo.* mail.* webmail.* DocumentRoot /var/lib/roundcube Alias /program/js/tiny_mce/ /usr/share/tinymce/www/ <Directory /var/lib/roundcube/> Options +FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> <Directory /var/lib/roundcube/config> Options -FollowSymLinks AllowOverride None </Directory> <Directory /var/lib/roundcube/temp> Options -FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> <Directory /var/lib/roundcube/logs> Options -FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> <Directory /usr/share/tinymce/www/> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost>
- Activamos o sitio
a2ensite roundcube service apache2restart
(Sería unha boa idea crear uns certificados para o uso co Mail dende roundcube).
- en /etc/roundcube/main.inc.php debemos ter as opcions que siguen:
$rcmail_config['imap_auth_type'] = ' '; $rcmail_config['mail_domain'] = 'iesrodeira.com'; $rcmail_config['default_host'] = 'tls://localhost';' $rcmail_config['smtp_server'] = 'tls://smtp.iesrodeira.com';
- O WebMail estará accesible en https://correo.iesrodeira.com
Filtro de spam SpamAssasin
Instalaremos un filtro que marcará os correos que probablemente sexan spam.
apt-get install spamassassin sa-exim
Debemos alimentar as regras bayes coa utilidade sa-learn. Para que os correos marcados como spam non sexan rexeitados, se non simplemente marcados, podemos agregar a /etc/exim4/conf.d/acl/40_exim4_config_check_data
#@@ accept condition = ${if >={$message_size}{500k}{yes}{no}} warn message = X-SA-Score: $spam_score spam = nobody:true warn message = X-SA-Report: $spam_report spam = nobody:true condition = ${if >{$spam_score_int}{0}{true}{false}} warn message = X-SA-Status: Yes spam = nobody:true condition = ${if >{$spam_score_int}{50}{true}{false}}
E posteriormente executar update-exim4.conf && service exim4 restart
Instalación de Trac
Trac é unha Wiki e un sistema de seguimento de incidencias (bugs) para proxectos de desenvolvemento de software mediante unha interface web simple. Proporciona interfaces a sistemas de control de versions como Subversion ou Git, unha Wiki integrada e utilidades de notificación.
Seguiremos os seguintes pasos:
- a) Instalación
apt-get update && apt-get install trac
Servidor de Escritorio
172.20.0.3
Outros Servizos
Kerberos e LDAP
Instalaremos o servidor Kerberos e LDAP para as montaxes NFS e para a autenticación dos usuarios. Se instalará un controlador primario krbldap-pdc e un secundario krbldap-bdc. Estos servidores serán tamén servidores de tempo ntp, que servirá tanto para sincronizar os tickets de kerberos como para manter os equipos da rede en hora.
apt-get install ntp
- Editamos /etc/ntp.conf e engadimos os seguintes servidores:
hora.roa.es iburst server 0.es.pool.ntp.org server 1.es.pool.ntp.org server 2.es.pool.ntp.org server 3.es.pool.ntp.org
e configuramos o servidor para dar servizo a nosa rede
broadcast 172.20.255.255
- Paramos o servizo e sincronizamos con ntpdate-debian
service ntp stop ntpdate-debian service ntp start