URL: https://linuxfr.org/forums/linux-general/posts/protection-d-une-application-par-nat-interne-authentification-kerberos
Title: Protection d'une application par NAT interne + Authentification Kerberos
Authors: Guillaume_Sky
Date: 2015年03月31日T11:37:16+02:00
License: CC By-SA
Tags: apache, nat, linux, sécurité, iptables, jobscheduler et apache2
Score: 0
Bonjour tout le monde ! :)
Dans le cadre d'un projet durant mes études,
Je rencontre beaucoup de difficultés car je ne maîtrise pas suffisamment IPTables et Apache pour savoir d'où provient mon problème.
J'ai mis en place une application, dont l'interface est généré par **Jetty**, et accessible via navigateur sur le port **44440**.
Il m'a été demandé de mettre en place une authentification avec **Kerberos**, afin de permettre une authentification qui sera basée sur l'**AD** de l'entreprise.
Le problème est que cette application ne possède rien pour faire ça.
Je suis donc parti sur l'idée suivante:
- Autoriser dans l'application la connexion uniquement depuis **localhost**.
- Configurer **IPTables** pour que les connexions arrivant sur le port 80 soit ensuite perçu comme de source "localhost" et qu'elles soient redirigés vers Apache (j'ai pris le port 44441, un peu au hasard je l'avoue).
- Configurer **Apache** pour qu'il fasse l'authentification Kerberos, et que si l'authentification est validée il redirige vers le port 44440 (mon application).
J'ai réalisé un schéma pour mieux illustrer ce que je veux faire :

Mon problème, c'est que ça ne fonctionne pas et que j'arrive pas à identifier d'où proviennent les erreurs de fonctionnement. :(
### Voici donc ma configuration **IPTables**: ###
```iptables
# Generated by iptables-save v1.4.7 on Tue Mar 31 10:37:56 2015
*nat
-A PREROUTING -d IP_Serveur_LAN/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:44441
-A POSTROUTING -d 127.0.0.1/32 -o lo -p tcp -m tcp --dport 44441 -j SNAT --to-source 127.0.0.1
COMMIT
*filter
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 44441 -j Cid2023X8611.0
-A INPUT -i eth0 -p tcp -m tcp --dport 59999 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s IP_Serveur_LAN/32 -i lo -j Cid2083X8611.0
-A INPUT -s 127.0.0.1/32 -i lo -j Cid2083X8611.0
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -s IP_Serveur_LAN/32 -o lo -j Cid2083X8611.1
-A OUTPUT -s 127.0.0.1/32 -o lo -j Cid2083X8611.1
-A OUTPUT -j ACCEPT
-A Cid2023X8611.0 -s IP_Serveur_LAN/32 -j Cid2023X8611.1
-A Cid2023X8611.0 -s 127.0.0.1/32 -j Cid2023X8611.1
-A Cid2023X8611.1 -d IP_Serveur_LAN/32 -j ACCEPT
-A Cid2023X8611.1 -d 127.0.0.1/32 -j ACCEPT
-A Cid2083X8611.0 -d IP_Serveur_LAN/32 -j ACCEPT
-A Cid2083X8611.0 -d 127.0.0.1/32 -j ACCEPT
-A Cid2083X8611.1 -d IP_Serveur_LAN/32 -j ACCEPT
-A Cid2083X8611.1 -d 127.0.0.1/32 -j ACCEPT
COMMIT
```
_Etant donné que je n'avais pas l'impression d'y arriver avec IPTables, j'ai voulu utiliser fwbuilder, ça m'a donc généré Cid2023X8611.0 et Cid2023X8611.1, qui je suppose sont eth0 et lo._

### Pour la configuration Apache2 (juste les parties concernant ma demande d'aide): ###
```Apache2
Listen 44441
ServerName IP_Serveur_LAN:44441