Virtualización do Ciclo ASIR do IES de Rodeira
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,Almacenamento, Mirror Linux, Acceso remoto SSH e x2Go... e servicios de dominio Samba 4 que ofrece o servizo de directorio activo 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 de bonding 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
- Poderemos observar os bondings mediante os seguintes comandos
ovs-vsctl list port bond0
ovs-appctl bond/list
ovs-appctl bond/show bond0
- 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 KSM (Kernel Samepage Merging).
echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
Estas dúas liñas deben agregarse a /etc/rc.local de xeito que se active KSM en cada reinicio.
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 (500GB) ( para ISOS de instalación e aplicacións) e storage(500GB) (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 -L500G -n sources Disks
lvcreate -i3 -I4 -L500G -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). Necesitaremos fixar as táboas de rutado para que este acceso funcione, aproveitando ademáis para desviar o tráfico NTP pola ADSL, xa que a rede da Xunta o restrinxe.
En primeiro lugar precisamos unha ethernet na VLAN 4 (rede ADSL):
#!/bin/bash
vconfig add lan 4
ifconfig lan.4 192.168.2.3
E logo fixar a taboa de rutado:
#!/bin/bash
GW_ADSL=192.168.2.1
IP_ADSL=192.168.2.3
NET_ADSL=192.168.2.0/24
ETH_ADSL=lan.4
ip rule del from ${IP_ADSL} table sos_ssh
ip rule del table sos_ssh
ip rule del fwmark 1 table sos_ssh
ip route flush table sos_ssh
ip route flush cache
ip route add ${NET_ADSL} dev ${ETH_ADSL} src ${IP_ADSL} table sos_ssh
ip route add default via ${GW_ADSL} table sos_ssh
ip route add 127.0.0.0/8 dev lo table sos_ssh
ip route add 172.20.0.0/16 dev lan table sos_ssh
ip route add 172.21.0.0/16 dev eth0 src 172.21.1.200 table sos_ssh
iptables -t mangle -A OUTPUT ! -d 172.20.0.0/16 -p tcp -m tcp --sport 22 -j MARK --set-mark 1
ip rule add from ${IP_ADSL} table sos_ssh
ip rule add fwmark 1 table sos_ssh
ip route flush cache
# NTP
iptables -I OUTPUT 1 -t mangle -p udp --sport 123 -j MARK --set-mark 1
iptables -I OUTPUT 1 -t mangle -p udp --dport 123 -j MARK --set-mark 1
iptables -I INPUT 1 -t mangle -p udp --sport 123 -j MARK --set-mark 1
iptables -I INPUT 1 -t mangle -p udp --sport 123 -j MARK --set-mark 1
iptables -I PREROUTING 1 -t mangle -p tcp --dport 123 -j MARK --set-mark 1
iptables -I PREROUTING 1 -t mangle -p udp --sport 123 -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -o lan.4 -p udp --dport 123 -j SNAT --to-source ${IP_ADSL}
Para posibilitar a migración das máquinas virtuais entre os distintos servidores, e moi convinte o acceso automático entre eles mediante o uso de chave pública.
#Xeneramos a nosa chave pública (unha única vez)
ssh-keygen
#Copiamos a chave pública xerada aos servidores que queiramos
ssh-copy-id -i .ssh/id_rsa.pub usuario@servidor
A migración se realizará sempre mediante un túnel ssh, e pode ser con almacenamento compartido:
qemu-img migrate <MaquinaVirtual> qemu+ssh://<Servidor>/system
Ou transferindo tamén o almacenamento, o que levará moito máis tempo e recursos de rede:
qemu-img migrate --copy-storage-all <MaquinaVirtual> qemu+ssh://<Servidor>/system
# si xa temos o almacenamento no destiño....
qemu-img migrate --copy-storage-inc <MaquinaVirtual> qemu+ssh://<Servidor>/system
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.
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
#
# Esta liña so en earendil.iesrodeira.com
server gandalf.iesrodeira.com iburst
#
#Estas liñas so en barbol.iesrodeira.com
server gandalf.iesrodeira.com iburst
server earendil.iesrodeira.com iburst
#
server 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
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
restrict 172.20.0.0 mask 255.255.0.0 nomodify notrap
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
broadcast 172.20.255.255
Servidores Kerberos
Co obxecto de poder securizar os accesos ás comparticións NFS, montaremos un servidor Kerberos sin LDAP. gandalf.iesrodeira.com actuará como PDC, e earendil.iesrodeira.com como BDC no Realm IESRODEIRA.COM.
Servicio NFS
Configuraremos as comparticións NFS e prepararemos os keytab de Kerberos para o acceso seguro entre os servidores de virtualización. barbol.iesrodeira.com únicamente será cliente NFS, mentras que tanto gandalf.iesrodeira.com como earendil.iesrodeira.com seran tanto clientes como servidores. O share servers será ofrecido a través da IP virtual nfs.iesrodeira.com de xeito que os clientes continúen funcionando aínda que caiga un dos servidores.
# Instalamos NFS
apt-get install nfs-kernel-server nfs-common
#
# Creamos o principal e Keytab para Kerberos (supoñemos que o admin é root)
kadmin -p root
# En earendil engadimos: addprinc -randkey host/earendil.iesrodeira.com
# addprinc -randkey nfs/nfs.iesrodeira.com
# ktadd host/earendil.iesrodeira.com
# ktadd nfs/nfs.iesrodeira.com
# En gandalf engadimos: addprinc -randkey host/gandalf.iesrodeira.com
# ktadd host/gandalf.iesrodeira.com
#copiamos o keytab de earendil a /tmp en gandalf
scp earendil:/etc/krb5.keytab gandalf:/tmp/earendil.keytab
# En gandalf Mediante ktutil cargamos krb5.keytab, engadimos /tmp/earendil.keytab e eliminamos
# as entradas correspondentes a host/earendil.iesrodeira.com. Gardamos o resultado en /tmp/krb5.keytab
# rkt, delent, wkt
ktutil
#
# Copiamos o keytab
cp /tmp/krb5.keytab /etc/krb5.keytab
As comparticións serán as seguintes:
- gandalf.iesrodeira.com
- /NFS/templates estará no DRBD igual que /NFS/templates, de xeito que se atopa duplicado en earendil.iesrodeira.com
/NFS -sec=sys:krb5,ro,fsid=0,no_subtree_check 172.20.0.0/16
# Imaxes de restauración.
/NFS/images -sec=sys,acl,fsid=1,ro,no_subtree_check 172.20.0.0/16
# Mirror de Debian
/NFS/mirror -sec=sys,acl,ro,fsid=5,ro,no_subtree_check web.iesrodeira.com
# Discos de Máquinas Virtuais
/NFS/machines -sec=sys,acl,rw,fsid=4,no_subtree_check,all_squash,anongid=65534,anonuid=65534 172.20.0.0/16
# Backups
/NFS/datos -sec=krb5,acl,rw,fsid=7,no_subtree_check 172.20.0.0/16
# Servidores do Sistema
/NFS/servers -sec=sys,acl,rw,fsid=6,no_subtree_check,all_squash,anongid=65534,anonuid=65534 gandalf earendil barbol
# Plantillas de Instalación de Sistemas
/NFS/templates -sec=sys,acl,fsid=60,ro,no_subtree_check 172.20.0.0/16
- earendil.iesrodeira.com
/NFS -sec=sys:krb5,ro,fsid=0,no_subtree_check 172.20.0.0/16
# ISOS de instalación e aplicacións para instalar
/NFS/isos gandalf(sec=sys,rw,acl,fsid=1,no_subtree_check) 172.20.0.0/16(sec=sys,ro,acl,fsid=1,no_subtree_check)
# Espacio para discos virtuais (Sen RAID, Stripped de 3 discos)
/NFS/storage -sec=sys,acl,rw,fsid=2,no_subtree_check,all_squash,anongid=65534,anonuid=65534 172.20.0.0/16
# Espacio para discos virtuais (Con RAID 1)
/NFS/machines -sec=sys,acl,rw,fsid=3,no_subtree_check,all_squash,anongid=65534,anonuid=65534 gandalf earendil barbol
# Servidores do sistema (DRBD)
/NFS/servers -sec=sys,acl,rw,fsid=6,no_subtree_check,all_squash,anongid=65534,anonuid=65534 gandalf earendil barbol
# Plantillas de instalación (DRBD)
/NFS/templates -sec=sys,acl,fsid=60,ro,no_subtree_check 172.20.0.0/16
Espello (Mirror) de Debian
En gandalf.iesrodeira.com, todos os días mediante un crontab realizará unha actualización do mirror Debian en /NFS/mirror, mediante o paquete debmirror e un script instalado en /root/scripts:
instalación de debmirror:
apt-get install debmirror deb-multimedia-keyring debian-keyring
gpg --keyring /usr/share/keyrings/debian-archive-keyring.gpg --export|gpg --no-default-keyring --keyring trustedkeys.gpg --import
script para crear o espello:
#!/bin/bash
# Crea un espejo de Debian a medida.
echo -e "Inicio de la actualización:\n`date`\n"
# # # # # # # # # # # # # # # # # # # #
# Definición do espello
# # # # # # # # # # # # # # # # # # # #
#
#
#proxy="--proxy=http://Xavi:avixa@172.20.2.1:3128/"
proxy=""
mirror="/home/mirror/Debian"
host='--host=ftp.es.debian.org'
method='--method=http'
root='--root=/debian'
dist='-d wheezy,jessie,wheezy-updates,wheezy-proposed-updates,jessie-proposed-updates,wheezy-backports,jessie-updates'
arch="--arch=i386,amd64"
section="--section=main,contrib,non-free"
source="--nosource"
modif='--ignore-small-errors --ignore-release-gpg --ignore-missing-release \
-v -p --postcleanup --i18n'
function do_mirror
{
eval "debmirror $mirror $host $method $root $dist $arch $section $source $modif $proxy"
}
#
#
# Presenta por orden de tamaño los 100 archivos más grandes del espejo.
#
#
function see_sizes
{
echo -e "\nLos cien archivos más grandes del espejo:\n"
( eval " echo 'Bloques de 1024 bytes|Nombre del paquete'; ls -R1s $mirror/pool/ \
| grep '\.deb' | sed -e 's/^ *//g' | sort -t ' ' -k 1 -g -r | head -100 | \
sed -e 's/ /|/g' " ) | column -t -s"|"
mirate=`du -sh "$mirror"`
echo -e "\nOcupación del espejo en $mirror:\n$mirate"
[ "$total" = "" ]&&total="$mirate"||total="$total \n$mirate"
echo -e "\n = = = = = = = = = = = = = = = = = = = = =\n"
}
# # # # # # # # # # # # # # # # # # #
# Xeración do espello
# # # # # # # # # # # # # # # # # # #
#
#
do_mirror&&see_sizes
# # # # # # # # # # # # # # # # # # #
# Definición espello de SECURITY
# # # # # # # # # # # # # # # # # # #
#
#
mirror='/home/mirror/Security'
host='--host=security.debian.org'
#root='--root=/debian-security'
root='-root=/'
dist='-d wheezy/updates,jessie/updates'
method='--method=http'
# # # # # # # # # # # # # # # # # # #
# Xeración espello para SECURITY
# # # # # # # # # # # # # # # # # # #
#
#
do_mirror&see_sizes
# # # # # # # # # # # # # # # # # # #
# Definición espello MULTIMEDIA
# # # # # # # # # # # # # # # # # # #
#
#
mirror='/home/mirror/Multimedia'
host='--host=www.deb-multimedia.org'
root='--root=/'
dist='-d wheezy,jessie'
method='--method=http'
section='--section=main,non-free'
do_mirror&see_sizes
echo -e "Espacio ocupado polos repositorios:\n$total\n\n"
observa=`df -h /dev/mapper/System-Mirror`
echo -e "Estado do disco:\n${observa}\n\n"
echo -e "Fin da actualización:`date`\n\n"
# FIN
Servicios en Máquinas Virtuais (KVM)
Para axilizar a instalación das máquinas virtuais, o máis práctico é facer unha instalación limpia de Debian Jessie da que se irán facendo copias dos discos para as distintas máquinas virtuais. A primeira tarefa debería ser reconfigurar o nome do host. Deberíamos:
#editar /etc/hostname
vim /etc/hostname
#editar /etc/hosts
vim /etc/hosts
#configurar hostname
hostname nomehost
#Copia de seguridade LVM co novo hostname
vgcfbackup
#Correo electrónico
vim /etc/mailname
vim /etc/exim4/update-exim4.conf.conf
update.exim4.conf
O correo electrónico xerado localmente en todos os servidores debería chegar ao administrador. Si non o facemos na instalación deberíamos:
#reconfigurar exim4
dpkg-reconfigure exim4-config
# Elexiremos
# - mail sent by smarthost; received via SMTP or fetchmail
# - System mail name localhost
# - IP para conexións SMTP 127.0.0.1
# - Vacios outros destiños e relay
# - IP del el outgouing smarthost: correo.iesrodeira.com
# - NO ocultar local mail name
# - DNS-querys minimal: NO
# - format: mbox en /var/mail
# - split configuration: NO
# Editamos os alias e poñemos como alias root: usuario_administrador_da_rede@correo.iesrodeira.com
vim /etc/aliases
newaliases
/etc/init.d/exim4 restart
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 (ssh) hacia o Servidor de Escritorio Linux
- Servizos de Correo
- SMTP,POP,e IMAP hacia o Servidor Web
- WebMail (no servidor Web)
- Servizo DNS hacia o Proxy
Esta máquina deberá tamen facilitar acceso a Internet a rede local, sempre e cando a solicitude sexa no porto 80 ou 443 e a mesma se produza dende o Proxy, de xeito que sexa posible no proxy habilitar o acceso a internet á toda a rede en caso de fallo do servicio da Xunta.
Datos Técnicos
Máquina Virtual KVM executando Debian Jessie
* hostname: router
* domain: iesrodeira.com
* 1 CPU
* 512MB de RAM
* 2 Ethernet:
'''eth0''' - 172.20.0.1 (untagged), acceso a rede local ASIR - MAC: 00:16:3e:51:20:04
'''eth1''' - 192.168.1.2 (tag 4), acceso a ADSL na rede CICLOS - MAC: 00:16:3e:51:20:05
* 80GB HDD
Configuración
Faremos unha instalación básica de Debian Jessie sen entorno gráfico. Poderíamos copiar o disco comentado ao principio e facer os cambios apropiados.
- 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
#
LOCAL_SSHPORT="23"
ETH_LAN="eth0"
ETH_ADSL="eth1"
#
WEBSERVER="172.20.0.2"
PROXYSERVER="172.20.2.1"
DESKTOPSERVER="172.20.0.5"
RDPSERVER="172.20.2.2"
ADSL="192.168.2.2"
LAN="172.20.0.1"
VPNRANGE="172.20.80.0/24"
#
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 "Protecci\ufffdn 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 trafico interno..."
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -I OUTPUT 1 -o lo -j ACCEPT
#
echo "Habilitando acceso SSH"
iptables -I INPUT 1 -p tcp --dport ${LOCAL_SSHPORT} -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\ufffd solo pueden encontrar cosas como protocolos de enrutado.
# Los datagramas a estas direcciones no deber\ufffdan 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
iptables -A FORWARD -s 224.0.0.0/5 -j DROP
iptables -A FORWARD -d 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\ufffdns 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 "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_ADSL} -p tcp --syn -j SYNFLOOD_A
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 "Permitindo acceso a VPN IPSec IKEv2"
iptables -I INPUT 1 -p udp --dport 68 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 500 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 4500 -j ACCEPT
#
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 ${WEBSERVER}
iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 443 -j DNAT --to-destination ${WEBSERVER}
iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#
echo "Habilitando OCSP Server..."
iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 8888 -j DNAT --to-destination ${WEBSERVER}
iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 8888 -m state --state NEW,ESTABLISHED -j ACCEPT
echo "Habilitando Servidor RDP..."
echo "Habilitando servicio RDP SAURON..."
iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 3389 -j DNAT --to-destination ${RDPSERVER}
iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 3389 -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 "Acceso SSH para servidor subversion"
iptables -t nat -A PREROUTING -p tcp ! -i ${ETH_LAN} --dport 2200 -j DNAT --to-destination ${WEBSERVER}:22
iptables -A FORWARD -p tcp ! -i ${ETH_LAN} --dport 2200 -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
# WEBSERVER
iptables -A FORWARD -s 172.20.0.2 -m mac --mac-source 00:16:3E:51:20:10 -j ACCEPT
#KRBLDAP-PDC
iptables -A FORWARD -s 172.20.0.3 -m mac --mac-source 00:16:3E:51:20:07 -j ACCEPT
#KRBLDAP-BDC
iptables -A FORWARD -s 172.20.0.4 -m mac --mac-source 00:16:3E:51:20:08 -j ACCEPT
iptables -A FORWARD -s 172.20.0.0/24 -p icmp -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 ${ETH_ADSL} -j SNAT --to-source ${ADSL}
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source ${LAN}
#
echo "Eliminando SNAT e DNAT para a VLAN"
iptables -t nat -I POSTROUTING 1 -s ${VPNRANGE} -j RETURN
iptables -t nat -I PREROUTING 1 -s ${VPNRANGE} -i eth1 -j RETURN
iptables -I FORWARD 1 -i eth1 -s ${VPNRANGE} -j ACCEPT
iptables -I FORWARD 1 -i eth0 -d ${VPNRANGE} -j ACCEPT
#
echo "Iniciando Fail2ban..."
/etc/init.d/fail2ban start
- Reconfiguramos o porto SSH, xa que o 22 será redirixido a desktop.iesrodeira.com.
# Poñemos: Port 23
vim /etc/ssh/sshd_config
# Reconfiguramos fail2ban para o porto ssh 23 na sección [ssh]
vim /etc/fail2ban/jail.conf
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.
Datos Técnicos
Máquina Virtual KVM executando Debian Jessie
hostname: proxy
domain: iesrodeira.com
* 2 Cores
* 3584M de RAM
* 3 Ethernet:
'''eth0''' - 172.20.2.1 (untagged), acceso a rede local ASIR - MAC: 00:16:3e:51:20:01
'''eth1''' - 172.16.2.1 (tag 4), acceso a rede CICLOS - MAC: 00:16:3e:51:20:02
'''eth2''' - 69.65.24.206 (tag 3), acceso a rede XUNTA - MAC: 00:16:3e:51:20:03
Configuración
Partimos dunha copia do disco "orixinal" como explicamos anteriormente e persoalizamos o hostname e configuramos a rede e o correo do xeito indicado con anterioridade.
- Instalamos o software necesrio
apt-get install apache2 php5 bind9 bind9utils bind9-doc squid make
- Instalamos WebSqusr e especificamos o seguinte en /etc/squid/squid.conf nos sitios axeitados:
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
- configuramos o DNS (bind) engadindo 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 krbldap-pdc.iesrodeira.com. ; Kerberos+LDAP Domain controller (PDC)
4 IN PTR krbldap-bdc.iesrodeira.com ; Kerberos+LDAP Domain controller (BDC)
5 IN PTR desktop.iesrodeira.com.
6 IN PTR saruman.iesrodeira.com. ; Windows 2012 Server
7 IN PTR radagast.iesrodeira.com. ;Samba4 Active Directory Domain Controller
8 IN PTR nazgul.iesrodeira.com. ; Windows 8.1 Pro Desktop
- -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 nfs.iesrodeira.com.
10 IN PTR earendil.iesrodeira.com.
20 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 IN PTR sauron.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 IN PTR sauron.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.
3 IN PTR gandalf.iesrodeira.com.
4 IN PTR earendil.iesrodeira.com.
5 IN PTR barbol.iesrodeira.com.
- -124.4.212.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.
1 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.5
router IN A 172.20.0.1
gandalf IN A 172.20.1.1
nfs IN A 172.20.1.2
sauron IN A 172.20.2.2
earendil IN A 172.20.1.10
barbol IN A 172.20.1.20
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.
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 212.4.124.1
correo IN A 212.4.124.1
dns IN A 212.4.124.1
ssh IN A 212.4.124.1
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.
pop IN CNAME iesrodeira.com.
smtp IN CNAME iesrodeira.com.
pop3 IN CNAME iesrodeira.com.
internet 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
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;
zone "." {
type hint;
file "/etc/bind/db.root";
};
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 "124.4.212.in-addr.arpa" {
type master;
file "/etc/bind/124.4.212.in-addr.arpa.zone.externa";
};
};
- /etc/bind/named.conf.options:
options {
directory "/var/cache/bind";
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 e reiniciamos o servizo
mkdir /var/log/named
chown bind /var/log/named
touch /var/log/named/security.log
chown bind /var/log/named/security.log
service bind9 restart
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, webmail e servidor de certificación X.509 mediante unha infraestructura PKI. 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 KVM executando Debian Wheezy
hostname: web
domain: iesrodeira.com
* 2 Cores
* 1500M de RAM
* 1 Ethernet:
'''eth0''' - 172.20.0.2 (untagged), acceso a rede local ASIR - MAC: 00:16:3e:51:20:10
Configuración
- Instalamos software necesario
apt-get install apache2 mediawiki exim4-daemon-heavy exim4-doc-html
apt-get install roundcube roundcube-plugins roundcube-plugins-extra
apt-get install spam-assassin courier-imap courier-imap-ssl courier-pop-ssl
apt-get install fail2ban openssl
- Crearemos unha estructura PKI, que nos servirá para a emisión de certificados. Precisaremos un certificado para imap outro para pop e outro para o roundcube.
- Creamos un servidor virtual para mediawiki creando o ficheiro mediawiki en /etc/sites-available activando o site mediante o comando a2ensite mediawiki && service apache2 reload
<VirtualHost *:80>
ServerName asir.iesrodeira.com
ServerAdmin xavi@iesrodeira.co
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. É 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 desactivamos ipv6 poñendo disable_ipv6='true' e 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
- Normalmente crearíamos os certificados. mkimapdcert utilizará o ficheiro /etc/courier/imapd.cnf para a creación dos certificados para imap, que deberíamos persoalizar en primeiro lugar. Pero nos non precisamos imap sobre SSL xa que será de uso local para roundcube, de xeito que o desactivamos en /etc/courier/imapd-ssl, e para pop3s que xeneraremos o noso propios certificados mediante a PKI, e a cadea de verificación concatenando os certificados ca.pem e o certificado creado para pop3s.
/usr/share/doc/exim4-base/examples/exim-gencert --force
mkimapdcert
- 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
- A execución do comando producirá unha saida similar a esta:
$ 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:
web:/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>
<source>
* Activamos o sitio.
<source lang='bash'>
a2ensite roundcube
service apache2restart
- 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, para o que crearemos mediante a nosa PKI un certificado para 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. Utilizaremos subversion como xestor de repositorios. Procederemos á Instalación dun sistema Trac con Subversion
Servidor de Escritorio
O Servidor de escritorio proporcionará un escritorio ao que se poderá acceder de xeito remoto para poder configurar calqueira equipo da rede con maior facilidade. O acceso ao escritorio se fará mediante X2Go, que proporciona un áxil acceso gráfico con pouco uso de ancho de banda. Como dispoñemos dunha conexión lenta (o ADSL) e outra rápida (a ADSL da Xunta), se pode acelerar moito o acceso (en particular cando queremos acceder posteriormente a escritorios Windows 8.1 ou Windows 2012 mediante RDP) establecendo un túnel SSH inverso dende este equipo ata o ordenador dende o que realizaremos o acceso.
user@desktop# ssh -R 9999:localhost:22 ordenador_remoto
Logo bastaría configurar unha sesión X2Go cliente hacia localhost:9999 no ordenador_remoto para acceder mediante X2Go ao servidor de escritorio a través da rede da Xunta.
Datos Técnicos
Máquina Virtual KVM executando Debian Jessie
hostname: desktop
domain: iesrodeira.com
* 2 Cores
* 2048M de RAM
* 1 Ethernet:
'''eth0''' - 172.20.0.5 (untagged), acceso a rede local ASIR - MAC: 00:16:3e:51:20:11
Configuración
- Instalamos software necesario
En primeiro lugar necesitaremos engadir aos nosos repositorios X2Go. Editamos o ficheiro sources.list e engadimos:
deb http://packages.x2go.org/debian testing main
A continuación instalamos o software. virt-manager pode ser útil para manexar de xeito máis cómodo as nosas máquinas virtuais.
apt-get update
apt-get install x2go-keyring x2go xfce4 virt-manager
Servizos de Dominio e Active Directory
Outro dos servizos virtualizados será o de Controlador de Dominio de Active Directory. Utilizaremos samba 4 sobre Debian Jessie para proporcionar este servicio.
Datos Técnicos
Máquina Virtual KVM executando Debian Jessie
hostname: radagast
domain: iesrodeira.com
Dominio AD: asir.iesrodeira.com
Nome Completo AD: radagast.asir.iesrodeira.com
* 2 Cores
* 2048M de RAM
* 1 Ethernet:
'''eth0''' - 172.20.0.5 (untagged), acceso a rede local ASIR - MAC: 00:16:3e:51:20:11
Procederemos á instalación dun Controlador de Dominio de Active Directory mediante Samba4
Mantemento
Manipulación dos discos virtuais
Si precisamos modificar puntualmente a información de algunha máquina virtual, poderemos montar o disco dende o host:
# Creamos os dispositivos para as particions
kpartx -a -v ficheiro.raw
# Si non temos LVM, as particións estáran en /dev/mapper/loopXpY
# Si temos LVM, temos que 'buscar' os VG
vgscan
# Accedemos
vgchange -a n <vg> <vg>
kpartx -d -v ficheiro.raw
# si é necesario
dmsetup remove /dev/mapper/loopXpY
Para os discos en formato qcow2 precisamos a utilidade qemu-nbd:
modprobe nbd
qemu-nbd -c /dev/nbd0 imaxe.qcow
# Aquí podemos acceder mediante /dev/nbd0
qemu-nbd -d /dev/nbd0
rmmod nbd
Correo Electrónico
E convinte que as incidencias nos distintos servidores se reporten vía correo electrónico. Para elo, configuraremos vía dpkg-reconfigure exim4-config o correo en cada un dos servidores virtuais, así como en gandalf, earendil e barbol. O correo será expedido a través da máquina virtual web.iesrodeira.com xa configurada para xestionar o mail. Unha vez configurado, o ficheiro /etc/exim4/update-exim4.conf.conf quedará do seguinte xeito:
# /etc/exim4/update-exim4.conf.conf
#
# Edit this file and /etc/mailname by hand and execute update-exim4.conf
# yourself or use 'dpkg-reconfigure exim4-config'
#
# Please note that this is _not_ a dpkg-conffile and that automatic changes
# to this file might happen. The code handling this will honor your local
# changes, so this is usually fine, but will break local schemes that mess
# around with multiple versions of the file.
#
# update-exim4.conf uses this file to determine variable values to generate
# exim configuration macros for the configuration file.
#
# Most settings found in here do have corresponding questions in the
# Debconf configuration, but not all of them.
#
# This is a Debian specific file
dc_eximconfig_configtype='smarthost'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost='<dominio completo da máquina>'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='correo.iesrodeira.com'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
Unha vez feito esto, necesitaremos engadir o alias a /etc/aliases para que o correo se redirixa hacia a conta en web.iesrodeira.com:
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: xavi@correo.iesrodeira.com
e por último, activar a configuracion
newaliases
/etc/init.d/exim4 restart
Copias de Seguridade
Actualizacións
Acceso Remoto mediante GUI
O Equipo virtualizado desktop.iesrodeira.com está configurado como servidor x2go para proporcionar escritorio remoto. Aínda que o uso de ancho de banda e mínimo, a conexión ADSL ten unha subida moi escasa. Para mitigar este problema, podemos establecer previamente un túnel SSH inverso ao noso equipo remoto a través de rede da xunta e acceder a través do mesmo:
#dende desktop.iesrodeira.com, ou un equipo da rede
ssh -R 9999:desktop:22 equipo_dende_o_que_queremos_acceder
Si en un momento determiñado precisamos un acceso directo a un equipo virtualizado temos o problema que estos so ofrecen a consola a través de VNC ao seu anfitrión. A solución pasa outra vez por un túnel SSH. Por exemplo, para acceder a unha máquina virtual que se executa en gandalf e que está a utilizar o porto VNC 5900 dende desktop:
ssh -L 5900:localhost:5900 gandalf
Accederiamos ao VNC no porto 5900 local.
Si precisamos acceso a outro equipo da rede local, normalmente inaccesible, podemos utilizar como ponte un equipo accesible mediante un túnel ssh:
ssh -L porto_local:equipo_aoque_queremos_acceder:porto_aoque_queremos_chegar equipo_accesible