User authentication tramite Nginx per Splunk free edition

Postato il Aggiornato il

Visto le numerose richieste, ho deciso di dedicare un intero post  sull’utilizzo di Nginx con funzione di reverse proxy server e user autentication per la versione gratuita di Splunk che è priva appunto della funzione di access control.
Parto dai miei precedenti articoli su Splunk e su Nginx come base per questo post che prende in considerazione, inutile dirlo, una macchina linux (ubuntu), con i 2 applicativi già installati e funzionanti.
Splunk risponde sulla porta web 8000 che andrà bloccata da accessi esterni ma dovrà essere disponibile per Nginx solo a livello di localhost.
Sarà solo Nginx che risponderà alle richieste  di acceso a splunk  via web sulla porta 80 proxando il traffico localmente verso la porta 8000.
Per prima cosa occorre, tramite il comando iptables,  bloccare il traffico in entrata via rete verso la porta 8000 in modo tale che nessuno possa collegarsi direttamente a Splunk ma solo tramite local host:

iptables -I INPUT -s 127.0.0.1 -p tcp -m tcp –dport 8000 -j ACCEPT

Questo comando permette solo all’indirizzo di localhost 127.0.0.1 di accedere alla porta tcp 80.

iptables -I INPUT -p tcp -m tcp –dport 8000 -j DROP

Questo comando blocca qualsiasi comunicazione a livello di protocollo tcp verso la porta 8000.
Salvare il tutto con il comando:

iptables-save

Per i meno smaliziati di cli potete installare un gestore grafico di iptables come firestarter e configurarlo come da figura sotto dove sono aperte solo la porta tcp 80 per Nginx e la porta udp 514 per la raccolta dei log.


Per assicurarsi che le regole inserite con iptables siano state applicate correttamente collegarsi a splunk via rete sulla porta 8000 di default.
Se tutto è ok non si dovrebbe aver risposta ottenendo dal browser una pagina di errore di connessione.
Adesso occorre configurare Nginx editando il file di configurazione /etc/nginx/nginx.conf utilizzando come esempio l’indirizzo 192.168.1.200 come ip della nostra macchina linux su cui girano sia nginx che splunk:

server {
listen 192.168.1.200:80;
server_name 192.168.1.200;
location /{
auth_basic      “Restricted”;
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass                 http://localhost:8000;
}

Come si vede Nginx ascolta sulla porta 80 via rete e proxa il traffico internamente a livello di localhost verso la porta 8000 di Splunk dopo ovviamente aver chiesto username e password.
IZ

5 pensieri riguardo “User authentication tramite Nginx per Splunk free edition

    Giovanni ha detto:
    28/07/2010 alle 11:49

    Ciao ho letto l’articolo che è molto interessante e vorrei chiederti un chiarimento:

    Il post vale solo per l’accesso locale.
    Io devo accedere a spunk da remoto, da una qualsiasi macchina, e devo disabilitare la porta 8000 di splunk e accedere tramite la porta 80 utilizzando le credenziali di accesso.
    Il problema è che disabilitando la porta 8000 non riesco ad accedere da remoto tramite la porta 80. Per spiegarmi meglio è come se la porta 80 faccesse riferimento alla porta 8000 per accedere…mentre al contrario se la porta 8000 è aperta riesco ad accedere tramite la porta 80. Io devo dire tramite iptables che deve sbloccare la porta 8000 per tutte le richieste che arrivano dalla porta 80. Puoi aiutarmi?
    Grazie mille anticipatamente..

      Ivan Zini ha risposto:
      29/07/2010 alle 11:28

      Ciao Giovanni
      il post spiega come bloccare via rete l’accesso alla porta 8000 tramite iptables o firewall grafico.
      Questo lo fai localmente sulla macchina che ospita sia Splunk che Nginx.
      E’ Nginx che forwarda, a livello di localhost, le richieste che arrivano via rete alla porta 80 verso la 8000 e questo lo imposti nel il suo file di configurazione.
      IZ

    max ha detto:
    29/04/2011 alle 16:37

    Ciao Ivan,

    complimenti per il blog!!!

    Vorrie chiederti se hai mai configurato nginx su windows!
    Potresti darmi qualche aiuto in merito.
    Grazie mille

    Adalberto ha detto:
    09/08/2011 alle 19:00

    Mi succede da un po di tempo che entrando in Google per una qualsiasi ricerca mi compare una pagina bianca con la scritta:

    404 Not Found nginx.

    cosa vuol dire e come si fa a ripristinare la pagina di ricerca di Google?

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...