Servidors aula

De castillowiki
Saltar a: navegación, buscar
Obsolet

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.


https://www.howtoinstall.co/es/ubuntu/xenial/wondershaper