Apache2.4 требует, чтобы IP-адрес не работал должным образом

Я хочу ограничить доступ к странице администратора на моем сервере Apache. Вот мое решение. Я установил сервер openvpn на том же сервере. Я подключаюсь к серверу с помощью openvpn от своего клиента. Страница состояния сервера работает должным образом. Однако расположение для страницы / admin дает 403 запрещено, даже когда я подключен к vpn. Я проверил свой внешний и внутренний ip клиента. Внешний ip - это в точности ip сервера, внутренний ip - 10.8.0.0/24. Почему я получаю 403 при работе server-status? Что мне не хватает?

Версии:

Apache : httpd-2.4.6-67.el7.centos.6.x86_64

Os : CentOS Linux, выпуск 7.4.1708 (Core)

Openvpn : openvpn-2.4.4-1.el7.x86_64

Вот файлы конфигурации.

Openvpn server.conf

# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
server 10.8.0.0 255.255.255.0

/etc/httpd/conf.d/project.tld.conf

<VirtualHost 10.8.0.1:8081>
  ServerName aaa.bbb.ccc.ddd # server's external ip
  ServerAdmin admin@project.tld 

  <Location /server-status>
    SetHandler server-status
    Require ip 10.8.0.0/24
  </Location>
 </VirtualHost>

<VirtualHost 10.8.0.1 aaa.bbb.ccc.ddd:80>
  ServerName aaa.bbb.ccc.ddd
  ServerAdmin admin@project.tld
  Redirect permanent / https://aaa.bbb.ccc.ddd
</VirtualHost>

<VirtualHost 10.8.0.1 aaa.bbb.ccc.ddd:443>
  ServerName aaa.bbb.ccc.ddd
  ServerAdmin admin@project.tld

  Header always set Strict-Transport-Security "max-age=31536000;"
  Header always set X-XSS-Protection "1; mode=block"
  Header always set X-Content-Type-Options nosniff

  LoadModule wsgi_module modules/mod_wsgi.so

  # Here is the problem
  <Location /admin>
    Require ip 10.8.0.0/24
    Require ip aaa.bbb.ccc.ddd/32
  </Location>

  # Aliases
  Alias /robots.txt /home/user/www/project.tld/statics/robots.txt
  Alias /statics /home/user/www/project.tld/statics
  <Directory /home/user/www/project.tld/statics>
    Require all granted
  </Directory>

  <Directory /home/user/www/project.tld/project>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>

  WSGIDaemonProcess project.tld python-path=/home/user/www/project.tld/venv/bin:/home/user/www/project.tld/venv/lib64/python3.6/site-packages
  WSGIProcessGroup project.tld
  WSGIScriptAlias / /home/user/www/project.tld/project/wsgi.py

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/self_signed.crt
  SSLCertificateKeyFile /etc/ssl/private/self_signed.key

  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/json
</VirtualHost>

/etc/httpd/conf/httpd.conf

Listen 80
Listen 8081

ServerName aaa.bbb.ccc.ddd # server’s external ip
ServerSignature Off
ServerTokens Prod

DocumentRoot "/var/www/html"

Записи журнала:

От / var / log / httpd / access_log

10.8.0.6 - - [11/Jan/2018:14:49:08 +0200] "GET /server-status HTTP/1.1" 200 4800 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

Из / var / log / httpd / error_log IP-адрес клиента - это мой внешний IP-адрес, предоставленный интернет-провайдером

[Thu Jan 11 14:49:15.085377 2018] [authz_core:error] [pid 28161] [client aaa.bbb.ccc.xxx:59536] AH01630: client denied by server configuration: /home/user/www/project.tld/project/wsgi.py
-1
задан 11 January 2018 в 19:05
1 ответ

Позвольте мне ответить на свой вопрос, кто-то с аналогичной конфигурацией также может решить свою проблему. Согласно моим исследованиям; если серверы apache и открытые VPN находятся на одной машине. Клиент подключается к VPN и пытается получить доступ к веб-серверу, используя общедоступный IP-адрес сервера, тогда трафик не отправляется через VPN, поэтому я видел общедоступный IP-адрес своего интернет-провайдера в файлах журнала. Чтобы получить доступ к веб-серверу через туннель VPN, он должен быть доступен по внутреннему IP-адресу сервера. Чтобы решить свою проблему, я просто выделил второй виртуальный хост, который перенаправлял http-трафик на https через общедоступный IP-адрес, и проблема исчезла.

0
ответ дан 5 December 2019 в 20:22

Теги

Похожие вопросы