bloquear el acceso a url con Nginx

En esta entrada veremos como restringir el acceso a unas determinadas ip’s a una URL mediante NGINX:

 

En esta ocasión veremos como bloquear las siguientes entradas de JBOSS para denegar el acceso a todas las redes excepto: 192.168.1.0/24

location ~ ^/(admin-console|jbossws|jmx-console) {
allow 192.168.1.0/24;
deny all;
proxy_pass http://backend_servers;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

 

Ejemplo:

 

upstream backend_servers {
least_conn;
server 192.168.1.33;

}

server {
listen 80;

server_name  red-orbita.com;

location / {

add_header Front-End-Https on;
add_header Cache-Control «public, must-revalidate»;
add_header Strict-Transport-Security «max-age=2592000; includeSubdomains»;
proxy_pass http://backend_servers;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log /var/log/nginx/proxy.access.log;
error_log /var/log/nginx/proxy.error.log;

}

}

server {
listen 443 ssl;
server_name red-orbita.com;
access_log /var/log/nginx/red-orbita.access.log;
error_log /var/log/nginx/red-orbita.error.log;

ssl on;
ssl_certificate /etc/nginx/ssl/red-orbita.com-cert.pem;
ssl_certificate_key /etc/nginx/ssl/red-orbita.com-privatekey.key;
keepalive_timeout 60;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_protocols SSLv3 TLSv1;
ssl_prefer_server_ciphers on;
ssl_verify_client off;

proxy_buffers 16 64k;
proxy_buffer_size 128k;

location / {

add_header Front-End-Https on;
add_header Cache-Control «public, must-revalidate»;
add_header Strict-Transport-Security «max-age=2592000; includeSubdomains»;
proxy_pass http://backend_servers_mrg;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location ~ ^/(admin-console|jbossws|jmx-console) {
allow 192.168.1.0/24;
deny all;
proxy_pass http://backend_servers;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

 

:wq!

 

 

302 Redireccionamiento de SSL – Reverse Proxy Apache.

En ocasiones nos podemos encontrar un sitio con con SSL en el cual tenemos un reverse proxy que actua como terminador SSL. Detrás de ese  reverse proxy , tienes un servidor web.

 

Dentro de la aplicación emplea una redirección 302 para anunciar nuevas URL’s. Dado que el servidor web no sabe que las URL’s tienen que anunciarse mediante https el encabezado respuesta es incorrecto.

Para solventar este problema tenemos que configurar la siguiente linea:

Header edit Location «^http:(.*)$» «https:$1»

 

A continuación poneos un ejemplo el cual realiza un reverse proxy hacia un servidor tomcat y la aplicación utiliza redirecciones 302 para anunciar las nuevas URL’s:

 

<VirtualHost _default_:443>

ServerAdmin rokitoh@red.orbita.com
DocumentRoot «/var/www/html/»
ServerName red.orbita.com
ServerAlias red.orbita.com
ErrorLog «/var/log/httpd/red.orbita.com-ssl-error_log»
CustomLog «/var/log/httpd/red.orbita.com-ssl-access_log» combined

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

Header edit Location «^http:(.*)$» «https:$1»

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS

SSLEngine on
SSLProxyEngine on

SSLCertificateFile /etc/httpd/certs/red.orbita.com.pem
SSLCertificateKeyFile /etc/httpd/certs/red.orbita.com.key

</VirtualHost>

 

:wq!

lvextend – Insufficient suitable allocatable extents for logical volume lv_mysql: 1024 more required

Al intentar extender el volumen nos muestra el siguiente error:

lvextend -l+100%FREE /dev/mapper/vg_mysql-lv_mysql
Using stripesize of last segment 64.00 KiB
Extending logical volume LV_oracle_T03_sapdata1 to 288.99 GiB
Insufficient suitable allocatable extents for logical volume lv_mysql: 1024 more required

En este momento no se puede extender el volumen lógico entrelazado al tamaño total del grupo de volúmenes porque se necesitan dos dispositivos subyacentes para enlazar los datos.

Tenemos dos formas de resolver este problema, agregar otro volumen físico y después extender el volumen lógico o utilizar los mismos parámetros de enlace usados en el último segmento del volumen lógico existente.

lvextend -i1 -l+100%FREE /dev/mapper/vg_mysql-lv_mysql

 

Una extendido el volumen lógico redimensionamos.

resize2fs /dev/mapper/vg_mysql-lv_mysql

 

Un saludo

:wq!

 

Auditando y explotando vulnerabilidades con JexBoss

JexBoss es una herramienta escrita en python que nos sirve para auditar y explotar vulnerabilidades en JBoss Application Server y otras plataformas Java, Frameworks, Aplicaciones, etc.

Vectores de explotación:

  • /admin-console
    • tested and working in JBoss versions 5 and 6
  • /jmx-console
    • tested and working in JBoss versions 4, 5 and 6
  • /web-console/Invoker
    • tested and working in JBoss versions 4, 5 and 6
  • /invoker/JMXInvokerServlet
    • tested and working in JBoss versions 4, 5 and 6
  • Application Deserialization
    • tested and working against multiple java applications, platforms, etc, via HTTP POST Parameters
  • Servlet Deserialization
    • tested and working against multiple java applications, platforms, etc, via servlets that process serialized objets (e.g. when you see an «Invoker» in a link)
  • Apache Struts2 CVE-2017-5638
    • tested in Apache Struts 2 applications
  • Others

Leer más

Configurar un Reverse Proxy de alta disponibilidad con NGINX y keepalive

¿Que es un proxy inverso?

Un Proxy inverso es un intermediario entre una red pública y un conjunto de servidores privados; el cual se encarga de administrar las solicitudes de servicios por parte de uno o varios computadores externos. Estos funcionan manipulando los requerimientos HTTP que son enviados por varios computadores; en un proceso en cual se atienden las solicitudes y al mismo tiempo manipulan la presentación de estos servicios para evitar comprometer información crítica del grupo de servidores privados a donde se solicitan.

¿Que es Keepalived?
Keepalived nos ofrece una solución de alta disponibilidad mediante el uso del protocolo VRRP . Este protocolo, ideado para la L3 de la capa OSI, simula la presencia de un router «virtual» contra el que van dirigidas las peticiones, enrutando las peticiones sobre uno de los routers físicos que prestan servicio de manera totalmente transparente para el usuario. En caso de caida del router físico, se negocia el paso del servicio a otro router físico sin que se aprecie perdida de servicio.

Leer más