Ограничить внешний доступ Tomcat Webapp по IP

Я успешно могу получить доступ к своему веб-приложению, используя внешний IP-адрес для моего сервера. Однако сейчас я хотел бы ограничить доступ к серверу по IP.

Я добавил следующее в conf/server.xml:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt" 

               pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="true"/>

        <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
        allow="127\\.0\\.0\\.1|192\\.*\\.*\\.*|0\\.*\\.*\\.*|<my external machine ip>" deny=""/>

Однако я все еще не могу получить доступ к веб-приложению от моего. Если я удаляю блок RemoveAddrValue, я могу получить доступ к веб-приложению с внешнего компьютера.

Я использую apache-tomcat-7.0.47

Как я могу ограничить внешний доступ через IP. Это правильный подход?

3 ответа

Envite прав, подход с брандмауэром намного проще:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s $SOME_IP1 --dport 8080 -j ACCEPT
iptables -A INPUT -s $SOME_IP2 --dport 8080 -j ACCEPT
iptables -A INPUT --dport 8080 -j DROP

Весьма вероятно, что вы неправильно настроили брандмауэр, или перед тем, как вы вставили, существует другое правило, разрешающее трафик на этот порт / хост

Я бы использовал другой подход. Либо используйте брандмауэр (это лучший метод, если вам не нужен доступ к веб-серверу, но не требуется доступ к серверу приложений), либо используйте собственные элементы управления Apache Allow и Deny.

Вы изучили журналы котов? Это должно быть первое место, где вы будете искать для устранения таких проблем. Этот файл обычно называется catalina.out. Воспроизведите проблему и обновите свой вопрос соответствующими записями журнала.

Тем не менее, несколько вещей выделяются:

Попробуйте заменить двойной \\ с одним \, Например, это в контейнерах Engine, Host или Context позволит получить доступ из 127.0.0.1 а также 11.22.33.44 (из фильтра удаленных адресов):

 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="127\.\d+\.\d+\.\d+|11\.22\.33\.44"/>

Вы также можете попробовать сбросить deny="",

Другие вопросы по тегам