Protegendo o ambiente PZP na Web com apache

O PZP - Python/Zope/Plone, ou simplesmente Zope/Plone, possui atalhos de acesso que pode ser muitas vezes utilizados indevidamente se abertos para Web.

Para impedir a utilização indevida, pode-se recorrer a configurações em servidores cache; como o varnish ou squid; ou servidores web; como apache.

Este tutorial restringe-se a utilização do servidor web apache.


Na configuração a seguir utiliza-se apenas as diretivas do apache (LocationMatch), não necessitando de nenhum módulo extra ativo.
#Bloqueia as URLs /login_form ou /join_form
<LocationMatch "^/(login|join)_form$">
   Options -Indexes -FollowSymLinks -MultiViews
   Order deny,allow
   deny from all
   #Allow from 10.0.0.0/8 .incolume.com.br
</LocationMatch>

#Bloqueia todas URLs que possuem /(login|join)_form
#exceto para rede interna
<LocationMatch "^/(login|join)_form$">
   Order deny,allow
   deny from all
   Allow from 10.0.0.0/8 .incolume.com.br
</LocationMatch>

#Bloqueia todas URLs que possuem /join_form
#exceto para rede interna
<LocationMatch "^/join_form$">
   Order deny,allow
   deny from all
   Allow from 10.0.0.0/8 .incolume.com.br
</LocationMatch>

#todas URLs que possuem /login_form acesso
<LocationMatch "^/login_form$">
   Order deny,allow
   deny from all
   #Allow from 10.0.0.0/8 .incolume.com.br
   Allow from all
</LocationMatch>

#Bloqueia todas URLs que possuem /manage
#exceto para rede interna
<LocationMatch "manage(.*)">
   Order deny,allow
   deny from all
   Allow from 10.0.0.0/8 .incolume.com.br
</LocationMatch>

#Bloqueia todas URLs que possuem /plone_control_panel
#exceto para rede interna
<LocationMatch "/plone_control_panel">
   Order deny,allow
   deny from all
   Allow from 10.0.0.0/8 .incolume.com.br
</LocationMatch>

#Bloqueia todas URLs que possuem /member_search_results
#exceto para rede interna
<LocationMatch "/member_search_results">
   Order deny,allow
   deny from all
   Allow from 10.0.0.0/8 .incolume.com.br
</LocationMatch>

#Bloqueia todas URLs que possuem /prefs_users_overview
#exceto para rede interna
<LocationMatch "^/prefs_users_overview">
   Order deny,allow
   Allow from 10.0.0.0/8 .incolume.com.br
</LocationMatch>


Na configuração a seguir utiliza-se da diretiva do apache Rewrite, necessitando ativar o módulo mod_rewrite.
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteLogLevel 2
   RewriteRule ^/icons/ - [L]

   # Bloqueia verbos HTTP indesejados
   RewriteCond %{REQUEST_METHOD} !=GET
   RewriteCond %{REQUEST_METHOD} !=POST
   RewriteRule . / [F,L]
   # Bloqueia autenticacoes
   RewriteCond %{HTTP:Authorization} Basic [OR]
   RewriteCond %{HTTP:Cookie} _ac
   RewriteRule . /404

   #Bloqueia todas URLs que possuem /manage
   RewriteCond %{REQUEST_URI} ^/(.*)manage$
   RewriteRule . / [F,L]

   #Bloqueia todas URLs que possuem /manage
   RewriteCond %{REQUEST_URI} ^/(.*)manage_main$
   RewriteRule . / [F,L]

   #Bloqueia todas URLs que possuem /join_form
   RewriteCond %{REQUEST_URI} ^/(.*)join_form$
   RewriteRule . / [F,L]

   #Bloqueia todas URLs que possuem /login_form
   RewriteCond %{REQUEST_URI} login_form(.*)$
   RewriteRule . / [F,L]

   #Bloqueia todas URLs que possuem /plone_control_panel
   RewriteCond %{REQUEST_URI} ^/(.*)plone_control_panel$
   RewriteRule . / [F,L]

   #Bloqueia todas URLs que possuem /member_search_results
   RewriteCond %{REQUEST_URI} ^/(.*)member_search_results
   RewriteRule . / [F,L]

   #Bloqueia todas URLs que possuem /prefs_users_overview
   RewriteCond %{REQUEST_URI} ^/(.*)prefs_users_overview
   RewriteRule . / [F,L]
</IfModule>

Comentários