Ciérrate, Sésamo

De Wiket
Salta a la navegació Salta a la cerca

Aquesta es la wiki del projecte elaborat per Alex Suarez i Ismael Bautista, alumnes del SIS2 de la promoció 2016-2017

Memòria tècnica

Idea

La idea del nostre projecte és montar un sistema de virtualització amb diferentes xarxes en les quals es pot configurar qualsevol servei sense gaires problemes.

DIAGRAMA SOLO REDES.jpg

Amb PROXMOX podem tenir control en tot moment de les màquines que treballen dins dels nodes configurats com a clúster i, en cas de que hi hagi problemes, imposar ràpides solucions sense que el servei es vegi greument afectat.
L'entorn PROXMOX té dins un router que fa de BASTION host amb dues línies connectades a un ISP(aquest està simulat amb una màquina fora de l'entorn PROXMOX amb dues interfícies connectades al BASTION host),rere el pfSense, podriem montar qualsevol cosa però ens hem decidit per l'aplicació NextCloud .

Objectius

✏ Control sobre el tràfic a nivell de xarxa
✏ Entorn virtualitzat estable, escalable i funcional.
✏ Securització del sistema dins l'entorn.
✏ Posada a punt d'un sistema sencer per l'aplicació que vulguem.

Requeriments tècnics

Diagrama de xarxa

Cisco.jpg

Software


Sistemes operatius

Hem decidit utilitzar programari de codi obert degut a la facilitat de trobar informació i ajuda per internet a més de per la falta de llicències de sistemes operatius de codi tancat. Els sistemes operatius de codi tancat d'aquest projecte només s'han utilitzat per proves de compabilitat.

Proxmox 4.4

  ➥L'hem utilitzat com entorn de virtualització.

PfSense 2.3.4

  ➥Utilitzat com ROUTER, FIREWALL , BASTION host.

Centos 7 Gnome-Desktop

  ➥El nostre NFS server.

Ubuntu

   ✏ Ubuntu Server 16.04
      ➥Màquines client.
   ✏ Ubuntu Desktop 16.04
      ➥Servidors LDAP,MYSQL,NextCloud.

Windows (Només testeig.)

   ✏ Windows 7
   ✏ Windows XP

Aplicacions,paquets i programari

Implementades al sistema

  1. NextCloud
  2. NFS
  3. VMWare
  4. Port Knocking
  5. LDAP
  6. Latch

Paquets a linux

  1. nmap (per escanejar ports)
  2. knockd (dimoni port knocking)
  3. LAMP (Servidor WEB per NextCloud)

No funcionals

  1. SnagIT editor (Per documentació)
  2. TeamViewer (Accès remot)
  3. MobaXterm (Accès ssh des de Windows)

Hardware


➥ Clúster Lenovo ThinkCentre
  • Especificacions per cada node

     ✏ [email protected]
     ✏ 8GB de RAM

Informació extreta amb la comanda lshw -short .
➥ Portàtils de clase

    ◊ Portàtil isp

Recursos portatil.jpg

    ◊ Portàtil CentOS

Recursos centos.jpg
Discos centos.jpg
➥ Switch CISCO.

  Si volem configurar aquest switch, podem fer-ho següint aquesta guía de referència feta pels companys de VIVEMP: **

Configuracions

▪ pfSense
  • Balanceig de càrrega i FAIL OVER
Pfsense23.jpg
  • Verificació status gateways
Pfsense24.jpg
Pfsense25.jpg
  • WAN RULES
WAN1.
WAN2.
  • LAN RULES
LAN net.
  • DMZ RULES
DMZ net.
  • NATPD WAN TO DMZ
NATPD.
▪ PROXMOX
"Salud" del clúster.
Datacenter1.jpg
Característiques del clúster i gestió de recursos.
Datacenter clúster.jpg
Recursos del node 1
Recursos nodo1.jpg
Recursos del node 2:
Recursos nodo2.jpg
Configuració del adaptador de xarxa del node 1:
Network nodo1.jpg
Configuració del adaptador de xarxa del node 2:
Network nodo2.jpg
▪ LDAP
Ldap phpldapadmin.jpg
#cat ldap.ldif 
# Objeto 1: dc=naxvanbautista,dc=local
dn: dc=naxvanbautista,dc=local
dc: naxvanbautista
o: NAXVANBAUTISTA
objectclass: top
objectclass: dcObject
objectclass: organization

# Objeto 2: cn=admin,dc=naxvanbautista,dc=local
dn: cn=admin,dc=naxvanbautista,dc=local
cn: admin
description: LDAP administrator
objectclass: simpleSecurityObject
objectclass: organizationalRole
userpassword: {SSHA}axCA3aWo+nyVSkA0M8ESclFMUcjSG/80

# Objeto 3: ou=grups,dc=naxvanbautista,dc=local
dn: ou=grups,dc=naxvanbautista,dc=local
objectclass: organizationalUnit
ou: grups

# Objeto 4: cn=NextCloudAdmins,ou=grups,dc=naxvanbautista,dc=local
dn: cn=NextCloudAdmins,ou=grups,dc=naxvanbautista,dc=local
cn: NextCloudAdmins
gidnumber: 5101
memberuid: nextcloudadmin
objectclass: posixGroup
objectclass: top

# Objeto 5: cn=nextcloudusers,ou=grups,dc=naxvanbautista,dc=local
dn: cn=nextcloudusers,ou=grups,dc=naxvanbautista,dc=local
cn: nextcloudusers
gidnumber: 5001
memberuid: naxvansito
memberuid: paquito
objectclass: posixGroup

# Objeto 6: cn=visitantes,ou=grups,dc=naxvanbautista,dc=local
dn: cn=visitantes,ou=grups,dc=naxvanbautista,dc=local
cn: visitantes
gidnumber: 500
objectclass: posixGroup
objectclass: top

# Objeto 7: ou=usuaris,dc=naxvanbautista,dc=local
dn: ou=usuaris,dc=naxvanbautista,dc=local
objectclass: organizationalUnit
ou: usuaris

# Objeto 8: cn=intruso,ou=usuaris,dc=naxvanbautista,dc=local
dn: cn=intruso,ou=usuaris,dc=naxvanbautista,dc=local
cn:  intruso
gidnumber: 500
homedirectory: /home/users/intruso
loginshell: /bin/sh
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: intruso
uid: intruso
uidnumber: 1000
userpassword: {MD5}EsurHuVXJCwTtjlu8WRwHg==

# Objeto 9: uid=naxvansito,ou=usuaris,dc=naxvanbautista,dc=local
dn: uid=naxvansito,ou=usuaris,dc=naxvanbautista,dc=local
cn: uid=naxvansito
displayname: naxvansito
gecos: naxvansito
gidnumber: 5001
givenname: naxvansito
homedirectory: /home/naxvansito
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
sn: bautista
uid: naxvansito
uidnumber: 2102
userpassword: naxvansito

# Objeto 10: uid=NextcloudAdmin,ou=usuaris,dc=naxvanbautista,dc=local
dn: uid=NextcloudAdmin,ou=usuaris,dc=naxvanbautista,dc=local
cn: NextcloudAdmin
gidnumber: 5101
homedirectory: /home/users/nextcloudadmin
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: NextcloudAdmin
uid: nextcloudadmin
uidnumber: 1001
userpassword: {MD5}mHQiGCXU0xW3PWiImszLfA==

# Objeto 11: uid=paquito,ou=usuaris,dc=naxvanbautista,dc=local
dn: uid=paquito,ou=usuaris,dc=naxvanbautista,dc=local
cn: paquito
displayname: paquito
gecos: paquito
gidnumber: 5001
givenname: paquito
homedirectory: /home/paquito
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
sn: bautista
uid: paquito
uidnumber: 2100
userpassword: paquito

Incidències


  • Error de sincronització entre nodes PROXMOX.
Degut al multicast del switch al que eren connectats els nodes, el clúster no podía sincronitzar els vots necessitats per fer quorum entre ells.
➥ SOLUCIÓ: Canviar de switch per un CISCO i automàticament es va sincronitzar el clúster.

  Referències:

https://forum.proxmox.com/threads/proxmox-ve-4-0-cluster-multicast-problems.24635/
  • Error de sortida de LAN privada a internet

     ➥ SOLUCIÓ:

Incident checksum.jpg

  Referències:

Versions anteriors:
https://alpha-labs.net/wp-content/uploads/2015/12/pfsense-settings.png
Discussió al forum de pfsense:
https://forum.pfsense.org/index.php?topic=88467.0
RFC Checksum offloads DOC(anglès):
https://www.kernel.org/doc/Documentation/networking/checksum-offloads.txt
  • Port knocking
-> Conflicte amb IPTABLES
   Degut a una iptable que ve mal configurada per defecte en moltes guies de referència, la regla que necesita knock no actua perquè l'afegeix sota de les altres.
Configuració errónea.
   '➥SOLUCIÓ: Hem de canviar l'atribut append -A per l'atribut input -I a la iptable de opertura.
Configuració vàlida.

Línies futures

  • Clúster amb 3 nodes(SUPER HIGH AVAILIVILITY)
  • Integració aplicació registre a NextCloud i LDAP
  • IDS: SNORT
  • pfSense com a Proxy
  • Sistema de replicació de LDAP.

Manual d'instal·lació

Instal·lació d'entorn de virtualització PROXMOX

  1. Podem trobar la guía d'instal·lació d'un node a PROXMOX
  2. Combinem dos nodes amb el següent tutorial: Clúster amb PROXMOX
  3. Sistema de Backups a PROXMOX

Instal·lació de NFS Server

PROXMOX#.E2.9E.A5_NFS

Instalació de PfSense

Com no tenim dues línies de ISP pròpies, utilitzarem la connexió a internet de l'institut i les separarem en dos cables diferents per simular dos línies d'internet diferents.

Simulació de ISP

➤ Requisits
  • Màquina Ubuntu Física o Virtual amb 3 interfícies.
  • En el nostre cas, tenim una màquina virtual UBUNTU configurada com un router.
➤ Configuració
Configuració de xarxa del nostre ISP.


  • IPTABLES
iptables per accedir a internet
  • Activem IP Forwarding
Activem l'ip forwarding permanentment a /etc/sysctl.conf.

Instal·lació

  • Seguim aquesta guía de referència: PfSense

Instalació d'aplicatiu de compartició d'arxius NEXTCLOUD

Instal·lació de servidor LDAP

Autenticació de NEXTCLOUD amb LDAP

Assegurant el nostre servei

Port Knocking

LATCH

Manual d'administrador

Com utilitzar LATCH per tancar el pestell del meu compte

  • Com sincronitzar LATCH amb el teu dispositiu
Latch#Com_sincronitzar_latch_amb_el_teu_dispositiu_m.C3.B2vil
  • Com utilitzar-ho
Latch#Com_utilitzar_LATCH

NextCloud

Gestió d'usuaris

  • Gestió d'usuaris NextCloud:
Nextcloud_a_Ubuntu_16.04#.E2.9E.A4_Gestionar_Usuaris
  • Gestió d'usuaris amb LDAP:
NextCloud_amb_LDAP#Configuraci.C3.B3

Com instal·lar una aplicació

Nextcloud_a_Ubuntu_16.04#.E2.9E.A4_Instal.C2.B7lar_aplicacions

Configurar el correu

Nextcloud_a_Ubuntu_16.04#.E2.9E.A4_Configurar_e-mail

Com pico a la porta? (Port Knocking)

  • Linux

       ▪Port_Knocking_a_Ubuntu_16.04#Comprovaci.C3.B3_des_d.27un_client_ubuntu

  • Windows

Administració bàsica de PROXMOX

☆ On són els logs.

Proxmox logs.jpg

☆ Com mantenir l'entorn actualitzat.

  • Fer un update
Proxmox update.jpg
  • Fer un upgrade
Quan fem click a upgrade, se'ns obre un terminal per acceptar la instal·lació.

☆ Restablir màquines corruptes.
☆ Afegir imatges a PROXMOX

  • Des de els repositoris de PROXMOX
Fem click al disc local de qualsevol node, seguidament content i fem click a Templates.
Podem descarregar qualsevol d'aquestes imatges fent click a sobre i premem Download. Sen's afegirà al disc local.
  • Amb una imatge descarregada externament
Fem click al disc local de qualsevol node, anem a content i fem click a upload.
Fem click a Upload i un cop acabi de pujar-se ens sortirà al disc local.

Com migrar màquines a PROXMOX

Podeu trobar el manual a PROXMOX#.E2.9E.A5Migraci.C3.B3_de_m.C3.A0quines

Com utilitzar pfSense

☆ Firewall

  • Definir regles

Per definir una nova regla al firewall hem d'anar a Firewall > Rules.

Pfsense rules1.jpg

Clickem add per afegir una nova regla...

Pfsense rules2.jpg
1- Triem que fer amb el paquet, la interfície, el protocol i si volem que aparegui deshabilitada o no.
2- Configuració del paquet origen.
3- Configuració del paquet destí.
Afegim una descripció i fem click a Guardar.
Si no apliquem els canvis la regla no s'afegirà!
Un cop aplicades,el canvi es immediat.
  • Actualitzar regles

☆ Donar accés a internet a una xarxa interna

Des del menu principal de pfSense declararem que la interfície serà la de WAN1 (en aquest cas le0). Encara que per defecte ens afegeixi l'adreçament IP per DHCP, el canviarem per una :adreça estàtica. Introduïm la opció 2 de consola per assignar IPs i triem la interfície a la que volem afegir-la.
Introduïm no per no utilitzar DHCP.
Assignem IP i màscara.
Afegim una gateway per accedir a internet, en el nostre cas posarem la IP del router.
Ens demana adreçament ipv6 però nosaltres no l'afegirem.
Introduïm y i premem Enter.
  • Definirem una LAN per accedir al panell d'administració de PFsense degut a que no es pot accedir per defecte per WAN.
Afegim una ip i una màscara com el pas anterior amb la diferència de que no afegirem gateway(ja que aquesta serà la gateway de la xarxa LAN.
No configurem ipv6 i aquest cop si que configurem DHCP.
  • Panell d'administració
Afegim una màquina en el rang ip de la LAN que hem definit i accedim via:
http://ip_pfSense amb l'usuari admin/pfSense
Es recomana encaridament canviar la password per defecte.
Per defecte las direccions privades no poden accedir als serveis de un altre xarxa privada, com a l'institut treballem amb classes privades hem de desbloquejarles al panell d'administració de pfSense
Com al tutorial que hem seguit tenim 2 WAN, hem de configurar ambdues.
Ens desplacem fins la part inferior, desmarquem ambdues opcions i premem "Save".
Pfsense net14.jpg
Pfsense net15.jpg
En cas de voler accedir desde WAN hauriem d'afegir una regla que permeti el tràfic des de la ip de xarxa de la LAN cap a la interfície WAN pel port 80.
Pfsense net16.jpg
La regla tindrà la següent configuració:
1.- Deixem passar el tràfic.
2.- Interfície per on actua la regla.
3.- Protocol a "matchejjar".
4.- Origen al que deixem que arribi el tràfic.
5- Destí al que permetem al tràfic arribar.
6.- Descripció.


Un cop definida, guardada i aplicada les màquiens dins la LAN ja podrien accedir a internet.

☆ Copies de seguretat.

Fer un backup
Per a fer un backup anirem al mòdul Diagnostics > Backup & Restore
Pfsense backup1.jpg
Un cop dins obrim el desplegable a Backup area i marquem ALL per a salvar-ho tot.
Podem especificar el que volem salvar seleccionant-ho al desplegable.
Podem encriptar el fitxer si volem pero al ser un backup de prova ho descarregarem sense encriptació.
Premem "Download configuration as XML" per descarregar l'arxiu.
Dades sanes i estàlvies.
Carregar un backup
Per a carregar un backup anirem al mòdul Diagnostics > Backup & Restore
El primer pas es igual que a la secció anterior.
Seleccionem ALL al desplegable de Restore Area i seleccionem el fitxer de backup que volem carregar.
Podem especificar el que volem salvar seleccionant-ho al desplegable
Un cop hem acabat fem click a Restore Configuration
Pfsense backup7.jpg
Confirmem que volem carregar la configuració.
Si tot ha sortit bé haurien d'haverse carregat la configuració que hi havia a l'arxiu XML.
El nostre fitxer de backup es un dels que hem utilitzat pel projecte Ciérrate, Sésamo
Restablir la configuració de fàbrica

Des de la terminal de pfSense, triem la opció 4 i rere la confirmació començarà el restabliment de fàbrica.

Pfsense backup10.jpg
Rere un o dos reinicis automàtics, tornem a tenir la configuració.

☆ Com canviar la password de pfSense

Accedim a pfSEnse via http://ip_pfSense amb l'usuari admin/pfSense

Es recomana encaridament canviar la password per defecte.
Un cop hem entrat, anem a System > User Manager
A la secció System podem trobar més paràmetres de configuració com el DNS a utilitzar o el hostname.
Editem l'usuari fent click al botó amb forma de llapis a Actions
Si tinguéssim més usuaris també apareixerien aquí.
Afegim i confirmem la password.
Com podem apreciar, també podem afegir una data de expiració i gestionar els grups de l'usuari.
Guardem i ja hem canviat la password.
✌✌

Alta Disponibilitat

Referències i Agraïments