Introduzione

In questo articolo illustrerò come configurare su un sistema Debian 5.0 l’accesso ad un applicazione web sviluppata in java con l’utilizzo di apache tomcat servlet container, apache web server ed istruendo il firewall (netfilter) tramite iptables.

Informazioni sul sistema

OS: Gnu/Linux Debian 5.0 x86_64
Kernel:  2.6.26-2-amd64
Apache: 2.2.9
Mod JK Version: 1.2.28

Modulo interessato

Per far gestire tocmat all’interno del contesto apache web server abbiamo bisogno di un del modulo JK , che installeremo con il seguente comando:

apt-get install libapache2-mod-jk

Installazione

procediamo ala creazione del file workers.properties in /etc/apache2/workers.properties:

nano /etc/apache2/workers.properties

all’interno inseriremo le seguenti righe:

workers.tomcat_home=/usr/local/tomcat6
workers.java_home=/usr/local/java
ps=/
worker.list=worker1

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

ed eseguiamo:

chmod 400 workers.properties

configuriamo adesso il file /etc/apache2/apache2.conf , in modo da poter utilizzare il file precedentemente creato, e aggiungiamo alla fine del file queste righe:

#Worker properties file
JkWorkersFile /etc/apache2/workers.properties

#Logging
JkLogFile /var/log/apache2/mod_jk.log

#Set the jk log level [debug/error/info]
JkLogLevel info

editare il file /etc/apache2/site-avaible/default aggiungendo queste righe al VirtualHost inetressato:

JkMount /Application1 worker1
JkMount /Application1/* worker1

JkMount /Application2  worker1
JkMount /Application2/* worker1

andiamo ora a disabilitare la porta 8080 sul quale tomcat usualmente si mette in ascolto visto che abbiamo affidato le nostra applicazioni all’ apache web server, commentiamo il seguente blocco all’interno del file conf/server.xml, racchiudendolo nel commento <!- – (blocco) – ->

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

ripassiamo di nuovo alla configurazione di apache e disabilitiamo il browsing delle directory editando /etc/apache2/site-avaible/default all’interno del blocco <Directory /var/www/> :

alla voce "allow from all" cambiarla con "deny from all"

un altra cosa interessante che ci potrebbe venire in mente di fare è quella di abilitare il modulo SSL in apache in modo sa abiltiare al le connessioni sicure su protocollo https. e quindi abiltiamo il modulo:

a2enmod ssl

abilitiamo il default-ssl site in questo modo:

a2ensite default-ssl
/etc/init.d/apache2 reload

Configurazione netfilter tramite iptables

Andremo ora ad istruire iptables in modo da permettere solo il traffico per le connessioni
che verranno stabilite sulla porta 80 per il protocolo http.

Salviamo la nostra vecchia configurazione che è sempre cosa buona e giusta:

iptables-save > /etc/iptables_rules_old

creiamo un file chiamamo iptables_rules:

nano /etc/iptables_rules

all’interno ci isneriamo il seguente contenuto:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT

salviamo il file ed usciamo, andiamo adesso ad utilizzare questo file per istruire il nostro firewall:

iptables-restore < /etc/iptables_rules

Test

Per testare che tutto sia andato a buon fine, aprire un internet browser e digitare nella barra degli indirizzi:

http://ip_server/Application1

oppure

https://ip_server/Application1

Abbiamo terminato la nostra configurazione per un server web funzionante, come sempre questo è uno dei modi , una delle configurazioni che si possono avere in questo ampio contesto.
Non sono stato li a spiegare ogni minimo passaggio cosa che a mio avviso stimola la curiosità cosa che risulta essere sempre positiva.