Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 3 del 19/10/2013 11.29.00

Nascondi questo messaggio

RoadHouse - Progetto

Ho effettuato alcune configurazioni sul nuovo server RoadHouse. Vertono principalmente su due punti: creazione di container per l'installazione di servizi in ambienti isolati e frontend caching proxy per smistare il traffico web ai vari container.

Struttura

  • RoadHouse.png

I vari container comunicano in una loro rete interna abbinata all'interfaccia lxcbr0. Il server Varnish riceve le richieste dall'esterno e fa da proxy verso i vari container. I container non sono accessibili direttamente dall'esterno (hanno un ip privato interno)

LXC

LXC (Linux Containers http://lxc.sourceforge.net/ ) è un progetto che permette, utilizzando chroot e le funzionalità del kernel denominate cgroups, di creare degli ambienti di esecuzione totalmente isolati dal resto del sistema. Nel nostro progetto l'idea è di dedicare ad ogni singolo servizio un container separato, in modo da poter procedere in modo indipendente ad aggiornamenti, patch ecc ecc senza impattare sugli altri servizi.

Rete

E' stata creata un interfaccia lxcbr0, un bridge interno alla macchina alla cui rete si collegheranno tutti i container, partecipando alla rete 10.78.88.0/24.

I container hanno accesso all'esterno, attraverso NAT effettuato dal firewall di RoadHouse.

Accesso

L'accesso ai container creati si ha prima collegandosi a RoadHouse e poi effettuando ssh verso l'ip privato del container (TODO: nattare le porte ssh verso l'esterno per evitare questo salto?)

Tools

Le macchine sono create con lo script lxc-debootstrap che a partire da un semplice file di configurazione, crea la macchina a partire da una root creata con debootstrap ed effettuando alcune modifiche per girare in lxc.

Il tool deve essere eseguito da root. Per maggiori informazioni si rimanda al README abbinato.

L'avvio e lo stop delle macchine virtual può essere fatto da root con i comandi che trovate nella guida ufficiale di LXC nel wiki di ubuntu (o qualsiasi altra guida).

Varnish

Varnish è un caching proxy frontend server. Il suo scopo nel progetto sarà di ricevere dall'esterno le connessioni degli utenti e passare le richieste al container appropriato. Inoltre effettuerà caching dei, riducendo quindi la quantità di risorse necessarie specialmente per la riesecuzione di pagine dinamiche (es. php o python) che non sono nel frattempo variate.

Isolamento degli utenti

Gli utenti che dovranno connettersi ai container dovranno prima di tutto collegarsi a roadhouse, poi da li fare ssh verso l'host a cui sono autorizzati. Per evitare di dare un ambiente troppo aperto sulla macchina roadhouse gli utenti saranno isolati in un ambiente ristretto con shel rbash (restricted bash).

L'utente viene creato in questo modo

useradd --comment "Restricted shell user" --shell /bin/rbash --create-home --home-dir /home/newuser newuser

e poi ne viene impostata la password as usual con passwd

Nella home verranno poi cancellati tutti i file contenuti (anche quelli nascosti) e creato una cartella bin e un file .profile.

.profile:

export PATH=$HOME/bin
export PS1="[\u@\h \W]$ "

La cartella bin invece deve essere fatta in questo modo:

mkdir bin
ln -s /usr/bin/ssh bin/ssh
ln -s /usr/bin/ssh-keygen bin/ssh-keygen
ln -s /usr/local/bin/take-my-key bin/take-my-key

In questo modo i comandi ammessi saranno solo ssh, ssh-keygen e take-my-key