Auch im Tomcat ist es möglich einen Schutz auf Basis von IP Adressen für bestimmte Webseiten zu definieren. Im Apache funktioniert der IP Zugriffschutz via .htaccess Datei. Im Tomcat gibt es zwar keine .htaccess Dateien allerdings ist es über die server.xml Konfigurationsdatei sehr einfach einen IP Adressen Schutz einzubauen
Tomcat Zugriff nur von localhost erlauben:
Die Einstellung RemoteAddrValve erlaubt die Verwendung von Regular Expressions (RegEx), wodurch es ziemlich einfach ist bestimmte IP Bereiche zu verwenden. Folgender Bereich wird zB. für den localhost auf IPv4 und IPv6 Basis angewendet. Bedeutet also dass nur die localhost IP Range 127.x.x.x und die IPv6 localhost IP 0:0:0:0:0:0:0:1 zugelassen sind. (Werte werden durch | (pipe) getrennt:
[xml]<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|0:0:0:0:0:0:0:1"/>[/xml]
Tomcat Zugriff nur von bestimmten IP Adressen erlauben
Hier ist ein weiteres Beispiel damit die Verwendung der Regular Expressions (RegEx) verdeutlicht wird. Also werden jetzt zB:. nur IP Adressen aus dem Bereich 192.168.x.x und 10.x.x.x und die externe IP Adresse 8.8.8.8 zugelassen. Der Valve Wert dafür würde so aussehen:
[xml]<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="192\.186\.\d+\.\d+|10\.\d+\.\d+\.\d+|8.8.8.8"/>[/xml]
Tomcat Zugriff von bestimmten IP Adressen sperren bzw. verweigern
Natürlich ist es auch möglich bestimmte IP Adressen oder Bereiche explizit zu sperren. Dazu wird nicht der Wert „allow“ sondern „deny“ verwendet. In folgendem Beispiel wird der Zugriff vom IP Bereich 10.10.x.x und der IP 8.8.8.8 auf unseren Host verweigert:
[xml]<Valve className="org.apache.catalina.valves.RemoteAddrValve"deny="10\.10\.\d+\.\d+|8.8.8.8"/>[/xml]
Den Valve Wert in die server.xml einbauen
Dazu wird die entsprechende Tomcat Konfigurationsdatei (server.xml) editiert und an der benötigten Stelle (Engine, Host, oder Context) der valve Eintrag hinzugefügt. An meinem Beispiel füge ich den Eintrag in der Hosts Konfiguration hinzu damit die Einstellung für den gesamten Hosteintrag vhost.domain.com gilt.
[xml] <Host name="vhost.domain.com" appBase="webapps"unpackWARs="true" autoDeploy="true">
<Context path=""
docBase="/usr/local/tomcat/webapps/examples"
debug="0" reloadable="true" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>
</Host>[/xml]
Weitere Infos direkt in der Tomcat Documentation