Servidors aula
Visió global:
Cal instalar Ubuntu 10.04 que és LTS. En un futur serà la 12.04 que també és LTS.
El servidor serà proxy amb Squid. Aquest és el seu primer objectiu per a aconseguir un major control de Internet per part del professor, un millor rendiment de la xarxa al tindre sols una IP de cara al exterior i fer de Caché de les pàgines web.
Serà, també servidor DHCP.
La única raó de que siga en Ubuntu i no en altres distros més adequades per a ser servidor és que és ordinador del professor. Ha de tindre, per tant, un comportament similar als dels alumnes. També tindrà virtualbox per a màquines virtuals. També ha de ser servidor de arxius, a poder ser de NFS per tindre una carpeta compartida per al home dels usuaris.
En cas de que un ordinador de l’aula falle, pot actuar com a servidor de clients lleugers.
També pot ser servidor DNS, ftp, web...
Cal instal·lar un controlador del proxy com el dans-guardian o similar per a restringir les webs que els alumnes visiten. Amés d’un programa de monitorizació (zabbix) de l’activitat dels clients. [1]
Procediments
1 Instal·lació del servidor: Si té dos discs durs, es fica la /home en un i en XFS que pareix dona més rendiment en cas de compartir per NFS. El /var també és interessant que estiga en altra partició.
2 Configuració prèvia: El primer de tot és instal·lar els serveis bàsics:
wget http://mirror/scripts_clientes/sources.list #el sources list del mirror sudo cp sources.list /etc/apt/sources.list sudo apt-get update sudo apt-get upgrade
sudo apt-get install apache2 php5 mysql-server phpmyadmin vsftpd squid3 dhcp3-server nfs-kernel-server nfs-common conky openssh-server slapd ldap-utils gimp inkscape openoffice.org-base dansguardian virtualbox-ose virtualbox-ose-guest-utils frox
A continuació desinstalem el network-manager per a que la configuració de xarxa puga ser manual.
sudo apt-get remove network-manager
Anem a /etc/network/interfaces
auto lo iface lo inet loopback
auto eth1 iface eth1 inet static address 192.168.3.250 netmask 255.255.255.0
auto eth0 iface eth0 inet dhcp
Cal asegurar-se que eth0 és la que connecta amb l’exterior
3. Configuració dels serveis:
Apache, mysql i php estàn ben configurats, de moment no cal tocar-los.
Es pot configurar el vsftp en /etc/vsftpd.conf ficant, per exemple write_enable=yes per a que es puga escriure des d’un client.
Servidor DHCP:
Li fiquem el rango de 192.168.3.2 fins 192.168.3.100 ... option domain-name "2smx.org"; option domain-name-servers 8.8.8.8, 172.16.99.119; ... ... ... subnet 192.168.3.0 netmask 255.255.255.0 { range 192.168.3.2 192.168.3.100;}
Si instal·lem webmin, podem administrar el dhcp i altres coses de manera gràfica. Cal ficar una ip estàtica per dhcp als ordinadors dels alumnes per tal de monitoritzar-los millor.
Configuració del proxy
El proxy a utilitzar és squid. Servidor Squid:
Cal configurar un acl per al rango de IPs de dins de l’aula.
instal·lar squidview sarg i calamaris per monitoritzar squid.
acl interna src 192.168.3.0/24 .... http_access allow interna .... http_port 3128 transparent .... cache_dir ufs /var/spool/squid3 8000 16 256
En els clients cal configurar el proxy a la ip de dins del servidor i al port 3128. En el filezilla proxy genèric http1.0 (Configuració de clients proxy)
Proxy Transparent
Per a que siga transparent, cal fer un script de iptables com aquest:
#!/bin/sh # squid server IP SQUID_SERVER="192.168.3.250" # Interface connected to Internet INTERNET="eth0" # Interface connected to LAN LAN_IN="eth1" # Squid port SQUID_PORT="3128" # DO NOT MODIFY BELOW # Clean old firewall iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X # Load IPTABLES modules for NAT and IP conntrack support modprobe ip_conntrack modprobe ip_conntrack_ftp # For win xp ftp client #modprobe ip_nat_ftp echo 1 > /proc/sys/net/ipv4/ip_forward # Setting default filter policy iptables -P INPUT DROP iptables -P OUTPUT ACCEPT # Unlimited access to loop back iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Allow UDP, DNS and Passive FTP iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT # set this system as a router for Rest of LAN iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT # unlimited access to LAN iptables -A INPUT -i $LAN_IN -j ACCEPT iptables -A OUTPUT -o $LAN_IN -j ACCEPT # DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT # if it is same system iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT # DROP everything and Log it iptables -A INPUT -s 10.20.2.250 -p tcp --dport 10050 -j ACCEPT iptables -A INPUT -p tcp -i eth0 -m state --state NEW,ESTABLISHED,RELATED --dport 22 -j ACCEPT # El ordre es important iptables -A INPUT -j LOG iptables -A INPUT -j DROP
També es podem ficar les opcions de iptables a /etc/iptables.up.rules i ficar en /etc/network/interfaces:
$ iptables-save > /etc/iptables.up.rules (en /etc/network/interfaces) post-up iptables-restore < /etc/iptables.up.rules
Després, es pot fer que arranque al inici amb
chmod +x iptables.sh sudo cp iptables.sh /etc/init.d/ sudo update-rc.d iptables.sh start 98 2 3 4 5 . stop 02 0 1 6 .
Realment, el millor és fer el script, guardar les iptables i deixarles en iptables.up.rules. De totes maneres, la manera de vore si estàn és:
sudo iptables -t nat -L
I deuria eixir alguna cosa pareguda a açò:
Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- anywhere anywhere tcp dpt:www to:192.168.3.250:3128 REDIRECT tcp -- anywhere anywhere tcp dpt:www redir ports 3128 Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination
DansGuardian
Si volem controlar el que els alumnes poden vore, podem configurar el dansguardian.
#UNCONFIGURED – Please remove this line after configuration reportinglevel = 0 language = ‘spanish’ loglocation = ‘/var/log/dansguardian/access.log’ filterip = 172.16.1.1 #La IP de la interfaz en la que el Dansguardian escuchará filterport = 8080 #El puerto en el que trabajara Dansguardian proxyip = 172.16.1.1 proxyport = 3128 #El puerto en el que funciona Squid
Per últim, tenim que cambiar el iptables del squid per a que ara pase primer per dansguardian. (No provat de moment)
iptables -t nat -A PREROUTING -i eth0 -s 192.168.3.0/24 -d ! 192.168.3.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080
Es a dir, el script de modificació de les iptables queda així:
#!/bin/sh # squid server IP SQUID_SERVER="192.168.3.250" # Interface connected to Internet INTERNET="eth0" # Interface connected to LAN LAN_IN="eth1" # Squid port SQUID_PORT="3128" # DO NOT MODIFY BELOW # Clean old firewall iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X # Load IPTABLES modules for NAT and IP conntrack support modprobe ip_conntrack modprobe ip_conntrack_ftp # For win xp ftp client #modprobe ip_nat_ftp echo 1 > /proc/sys/net/ipv4/ip_forward # Setting default filter policy iptables -P INPUT DROP iptables -P OUTPUT ACCEPT # Unlimited access to loop back iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Allow UDP, DNS and Passive FTP iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT # set this system as a router for Rest of LAN iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT # unlimited access to LAN iptables -A INPUT -i $LAN_IN -j ACCEPT iptables -A OUTPUT -o $LAN_IN -j ACCEPT # DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy #iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j REDIRECT --to-port 8080 # if it is same system iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT # DROP everything and Log it iptables -A INPUT -s 10.20.2.250 -p tcp --dport 10050 -j ACCEPT iptables -A INPUT -p tcp -i eth0 -m state --state NEW,ESTABLISHED,RELATED --dport 22 -j ACCEPT # El ordre es important iptables -A INPUT -j LOG iptables -A INPUT -j DROP
Per últim, cal evitar que puguen configurar el proxy manualment, comentant en el squid.conf la línia que dona accés per la xarxa local i només deixar accés per localhost, es a dir, per el dansguardian. D'eixa manera, els usuaris tenen que accedir sempre pel port 80 que redirrecciona a 8080 del dansguardian.
El lliurex-guard és un bon gui per a dansguardian, però és per a lliurex, per tant, podem fer ús de webmin per administrar gràficament el que poden o no fer els alumnes.
Configurar perfils especials de Dansguardian
En els servidors de aula, està configurat el fitxer de excepcions per a permetre sempre l'accés al moodle i als ordinadors del domini del centre. Si volem fer un examen en el que no tinguen accés a la resta de internet, cal descomentar la línia #** de /etc/dansguardian/lists/bannedsitelist. Per a fer aixó més fàcil, hi ha un script anomenat dans.sh amb el següent contingut:
#!/bin/bash # script per a ficar dansguardian en mode examen echo "Què vols fer?" echo "1) Mode examen" echo "2) Mode normal" read op case $op in 1) sed -i -e 's/#\*\*$/**/' /etc/dansguardian/lists/bannedsitelist sed -i -e 's/^http_access allow interna/#http_access allow interna/' /etc/squid3/squid.conf echo Mode examen on service dansguardian stop service dansguardian start service squid3 restart echo "El mode examen sols permet l'accés al moodle del simarro i als servidors interns" ;; 2) sed -i -e 's/^\*\*/#**/' /etc/dansguardian/lists/bannedsitelist sed -i -e 's/#http_access allow interna/http_access allow interna/' /etc/squid3/squid.conf echo Mode normal on service dansguardian stop service dansguardian start service squid3 restart ;; *) exit esac
Cal desactivar el control de contingut amb weightedphrasemode = 0 dins del fitxer de configuració de Dansguardian.
Clonar servidor d'aula
El servidor d'aula es pot clonar amb clonezilla. Però hi ha certes coses a tindre en compte:
- Cal clonar el disc a /, no el de /home
- Al no clonar /home es poden perdre coses de l'usuari lliurex, per tant, es deuen recuperar a mà.
- Al clonar poden canviar el nom de les interficies de xarxa, per tant es deu modificar el /etc/network/interfaces, les iptables, el squid, el servidor dhcp i el que siga necesari. No obstant, el més recomanable és borrar el fitxer /etc/udev/rules.d/70-persistent-net.rules del orige abans de clonar per a que no guarde el nom de les tarjetes.
- Despres de clonar cal canviar el nom de l'equip en /etc/hostname
- Al servidor ftp.simarro podem trobar una imatge actualitzada de un servidor de aula per a clonar.
Preguntes freqüents
El servidor de aula deu estar sempre en marxa? Si, sempre que els alumnes tinquen que poder entrar a Internet.
El servidor de aula pot arrancar en Windows? Mai, si volem windows, el servidor és suficientment potent com per a tindre una màquina virtual.
El servidor està trencat físicament, qué puc fer? Apagar-lo i fer un pont entre el switch que té una entrada de fibra óptica i el que té les connexions de tots els alumnes. O canviar la connexió de fibra óptica al switch de tots.
El servidor está en marxa, connecta a Internet, però els alumnes no Reinicia el servici de squid i dansguardian. Torna a executar l'script de Iptables. Mira que el alumne tinga IP, puga fer ping al servidor de aula (192.168.3.250). Edita manualment la Configuració de clients proxy. Si no funciona, una mesura de emergència és la de dalt, fer el pont.