Zabezpieczenie po IP
Czasem trzeba się zabezpieczyć przed dostępem do niektórych zasobów Tomcat-a. Wprawdzie ta metoda nie jest zbyt skuteczna, ale na początek można ją spróbować.Przykładowa definicja:
<Context> ... <Valve className="org.apache.catalina.valves.RemoteHostValve" allow=".*\.mycompany\.com|www\.yourcompany\.com"/> <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192\.168\.1\.\d+"/> ... </Context>Można powiedzieć że jest w tym przykładzie zdefiniowany łańcuch 2 obiektów Value.
Jak tylko dojdzie do RemoteHostValve to na pewno go wykona jak, nie wywali w tym czasie błędu 403 to wykona również RemoteAddrValve. Wiec to oznacza że do RemoteAddrValve może nie wejść.
Podczas badania jak działa RequestFilterValve wyszły mi następujące wnioski:
Dane do sprawdzania
- request.getRemoteAddr() - adres IP z requesta
- request.getRemoteHost() - nazwa hosta
Kolejność sprawdzania
- denies jak przejdzie idzie dalej
- allows jak przejdzie idzie dalej
- jak doszło do tego miejsca i jest ustawione denies i nie ustawione allows to idzie dalej
- wywala 403
Scenariusz testów
Dodaje definicję w/w value do tomcat/conf/server.xml w sekcji Host tak jak access log
Moja maszyna ma IP 192.168.1.10
Mój Tomcat ma connector https na porcie 443.
Odpalam Tomcat-a
Z przeglądarki pytam https://192.168.1.10/manager/html/ - powinno mnie wpuścić
Z przeglądarki pytam https://127.0.0.1/manager/html/ - powinno dać komunikat 403
Definicję value przenoszę do tomcat/conf/context.xml - spawdzam działanie
Definicję value przenoszę do tomcat/conf/Catalina/localhost/ap-xxxx.xml - spawdzam działanie
Definicję value przenoszę do tomcat/conf/context.xml - spawdzam działanie
Definicję value przenoszę do tomcat/conf/Catalina/localhost/ap-xxxx.xml - spawdzam działanie
Wnioski:
- przy ustawionych denies i allows - definicja denies powinna być bardziej szczegółowa niż allows, dlatego że inaczej nie wejdzie do sprawdzenia allow
- prawdopodobnie lepiej jest zdefiniować kilka value z pojedynczymi definicjami denies albo allows
- można dla definicji denies i allows podać dowolne wyrażenie regularne przyklady z ip oczywiście są sensowne, ale może to być cokolwiek. Warto zwrócić uwagę na znaki \
- dla definicji denies i allows można podać kilka wartości oddzielonych znakiem "," Zostaną one zamienione na tablicę Pattern[]
Źródła:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html#Request_Filtershttp://fossies.org/dox/apache-tomcat-6.0.37-src/RequestFilterValve_8java_source.html
Brak komentarzy:
Prześlij komentarz