Diferencia entre revisiones de «Control Aula»
Línea 144: | Línea 144: | ||
root@gw:~# ssh root@192.168.9.252 wondershaper eth0 600 200 | root@gw:~# ssh root@192.168.9.252 wondershaper eth0 600 200 | ||
root@gw:~# ssh root@192.168.9.252 wondershaper clear eth0 | root@gw:~# ssh root@192.168.9.252 wondershaper clear eth0 | ||
</pre> | |||
* També podem fer que els clients usen la eth2 i ralentitzar aquesta | |||
<pre class="code"> | |||
root@gw:~# ssh root@192.168.9.252 wondershaper eth2 600 200 | |||
root@gw:~# ssh root@192.168.9.252 wondershaper clear eth2 | |||
</pre> | </pre> | ||
Al tindre velocitats baixes però suficients, les webs sense videos funcionaran raonablement. El moodle funciona a la màxima velocitat. Si dos o més alumnes tenen videos ralentiran a la resta de la classe, però no a l'institut. | Al tindre velocitats baixes però suficients, les webs sense videos funcionaran raonablement. El moodle funciona a la màxima velocitat. Si dos o més alumnes tenen videos ralentiran a la resta de la classe, però no a l'institut. |
Revisión del 17:49 7 dic 2016
Visió General
El servidor soluciona les següents qüestions:
- Aïllar l’aula per evitar problemes de configuració durant les pràctiques i evitar atacs.
- Fer de proxy i limitar el tràfic de xarxa.
- Limitar el nombre de IPs que ha de donar el zentyal central.
- Poder tallar l’accés a Internet per IP o a tota l’aula.
- Donar IPs estàtiques a les màquines de l’aula.
- Monitoritzar millor els ordinadors clients i l’aula en general.
El Server proporciona IPs internes en el rang 192.168.<n rack>.0/24
El gw dona servei de DHCP, DNS, port d'enllaç i administració de la xarxa. Aquest reeenvia a gwlent les peticions dels alumnes que no siguen per al moodle i altres. El professor, per un altra banda, va per el gwrapid.
Pas per pas
- Instal·lar Ubuntu server
# apt update && apt upgrade
- El servidor té 3 targetes de xarxa. Cal configurar la de dins de l'aula com a 192.168.aula.250
- La targeta externa serà assignada per Zentyal encara que no és precís que siga una fixa.
- Crear el container LXD que fa de gw.
# lxd init # lxc profile create xarxa # lxc profile edit xarxa name: xarxa config: {} description: "" devices: eth0: name: eth0 nictype: macvlan parent: enp0s3 type: nic eth1: name: eth1 nictype: macvlan parent: enp0s8 type: nic eth2: name: eth2 nictype: macvlan parent: enp0s3 type: nic # lxc launch ubuntu:16.04 gw --profile=xarxa
- Entrar dins i fer-lo porta d'enllaç. Aquest container servirà com a plantilla per als altres dos. Per tant, cal fer-lo porta d'enllaç abans de fer-lo servidor dhcp i la resta de coses.
- La seua IP de eth1: 192.168.aula.254. La de fora serà per Zentyal, pot ser fixa o no.
- Actualitzar.
- Descomentar en /etc/sysctrl.conf el ipv4 forward.
- Aplicar les IPtables:
root@gw:~# iptables -A INPUT --match conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT root@gw:~# iptables -A FORWARD --in-interface eth0 --out-interface eth1 -j ACCEPT root@gw:~# iptables -A FORWARD --in-interface eth1 --out-interface eth0 -j ACCEPT root@gw:~# iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE root@gw:~# iptables-save > /etc/iptables/rules.v4 root@gw:~# apt install iptables-persistent
- Buidar la cau apt
root@gw:~# apt clean && apt autoclean
- Clonar el container per crear el ràpid i el lent, els deixem ahí per tornar després:
lliurex@srv:~$ lxc copy gw gwpreferent lliurex@srv:~$ lxc copy gw gwlent
- Tornar a entrar al gw principal per instal·lar la resta de serveis:
root@gw:~# apt install isc-dhcp-server ddns-update-style none; option domain-name "aula.net"; option domain-name-servers 10.20.0.1; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.9.0 netmask 255.255.255.0 { range 192.168.9.150 192.168.9.199; option subnet-mask 255.255.255.0; option routers 192.168.9.254; } root@gw:~# nano /etc/default/isc-dhcp-server # recordar indicar eth1 en interfaces root@gw:~# wget -O- https://raw.github.com/ajenti/ajenti/1.x/scripts/install-ubuntu.sh | sudo sh Now start Ajenti with 'service ajenti restart' Ajenti will listen on HTTPS port 8000 by default Default username : root Default password : admin # Cal canviar el passwd.
- Registre de clients
root@gw:~# apt install nmap
Cal executar aquest script
El resultat és la configuració de IPs fixes als clients i de la porta d'enllaç ràpida per al professor si li donem la IP acabada en 100.
Fer que arranquen a l'inici del sistema:
lliurex@srv:~$ lxc config set gw boot.autostart 1 lliurex@srv:~$ lxc config set gwlent boot.autostart 1 lliurex@srv:~$ lxc config set gwpreferent boot.autostart 1
Fer que els gwlent i rapid confien en el gw servidor (fer prèviament la key en ssh-keygen):
lxc exec gw -- cat /root/.ssh/id_rsa.pub > authorized_keys lxc file push authorized_keys /root/.ssh/ lxc exec gwlent -- chown root:root /root/.ssh/authorized_keys
Control de la velocitat
Per evitar que carreguen la xarxa sols amb youtube podem utilitzar wondershaper. Aquest són els pasos:
- En el DHCP s'indica que el professor té com a router el gw preferent. Això és la configuració prèvia feta en l'script anterior.
- En el DHCP s'indica que el router de la resta és el .254
- Aquest ha de tindre como a porta per defecte la ip interna del gw lent.
El comandament per defecte pot ser:
ip route change default via 192.168.9.252
per a que es quede encara que reiniciem, en /etc/network/interfaces:
auto eth0 iface eth0 inet dhcp post-up ip route change default via 192.168.9.252
- Per a la xarxa local, moodle i altres, tindrà com a porta d'enllaç el preferent o el del centre.
- La gw lenta es configura en wondershaper per tindre una velocitat determinada. Aquesta ha d'estar definida en funció de necessitats.
root@gw:~# ssh root@192.168.9.252 wondershaper eth0 600 200 root@gw:~# ssh root@192.168.9.252 wondershaper clear eth0
- També podem fer que els clients usen la eth2 i ralentitzar aquesta
root@gw:~# ssh root@192.168.9.252 wondershaper eth2 600 200 root@gw:~# ssh root@192.168.9.252 wondershaper clear eth2
Al tindre velocitats baixes però suficients, les webs sense videos funcionaran raonablement. El moodle funciona a la màxima velocitat. Si dos o més alumnes tenen videos ralentiran a la resta de la classe, però no a l'institut.
Centralitzar la configuració dels clients
Per a fer això, podem utilitzar Ansible.
root@gw:~# apt install ansible root@gw:~# ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:QUwfjcjUkaFnd8CihW0ANtZwb+7DkUsmXP0hJVtfhlI root@gw The key's randomart image is: +---[RSA 2048]----+ | *O**+Bo.E.o| | o +*+Oo+*.o.| | o+B.=.o .| | ..B o + . | | S * . | | * o | | = | | . | | | +----[SHA256]-----+ root@gw:~# ssh-copy-id lliurex@192.168.9.101 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.9.101 (192.168.9.101)' can't be established. ECDSA key fingerprint is SHA256:yJB1AmXpfIN/Zpaem8pa+5QaO44iYwzPejp+a9h3AQI. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys lliurex@192.168.9.101's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'lliurex@192.168.9.101'" and check to make sure that only the key(s) you wanted were added. root@gw:~# ssh-agent bash root@gw:~# ssh-add ~/.ssh/id_rsa Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
- Editar el fitxer de /etc/ansible/hosts per tindre tota la llista de hosts administrats.
[alumnes] 192.168.9.101 192.168.9.102 ...
Aquesta és la prova de que funciona:
root@gw:~# ansible all -u lliurex -m ping 192.168.9.101 | SUCCESS => { "changed": false, "ping": "pong" } ...
Comandaments ad-hoc
Podem, per exemple, canviar la contrasenya a Lliurex:
root@gw:~# apt install whois root@gw:~# mkpasswd --method=sha-512 Password: $6$APDy29HR$5lgjvaeU6yaEXhC8tni0f0PzVnQfb2Z1lSJ0IG85YE43cFz42UB65vGZGuhLi1uz1v0PZ6ntI0xNrLJjVWWdT1 root@gw:~# ansible all -u lliurex -m user -a 'name=lliurex password=$6$APDy29HR$5lgjvaeU6yaEXhC8tni0f0PzVnQfb2Z1lSJ0IG85YE43cFz42UB65vGZGuhLi1uz1v0PZ6ntI0xNrLJjVWWdT1' --sudo --ask-become-pass SUDO password: 192.168.9.101 | SUCCESS => { "append": false, "changed": true, "comment": "lliurex,,,", "group": 1000, "home": "/home/lliurex", "move_home": false, "name": "lliurex", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/bash", "state": "present", "uid": 1000 } ...
Asegurar-nos de que tenen un programa instal·lat:
root@gw:~# ansible all -u lliurex --sudo --ask-become-pass -m apt -a "name=dia state=present"
Actualitzar el sistema:
ansible all -u lliurex --sudo --ask-become-pass -m apt -a "upgrade=dist"
Enllaços
https://wiki.archlinux.org/index.php/simple_stateful_firewall
https://albertomolina.wordpress.com/2009/01/09/nat-con-iptables/