# Limitación de acceso por host dinámico - Apache y Nginx

# Introducción
Muchas veces necesitamos usar mecanismos de seguridad para el acceso a determinadas areas, más cuando nos encontramos con software que ya ha tenido más de una incidencia de seguridad o conocemos la baja calidad de su software como WHMCS.

Uno de los mejores mecanismos es la aplicación de seguridad mediante al acceso a la zona que queremos proteger, mediante el uso de [Host dinámicos](https://wiki.castris.com/books/seguridad-1XC/page/host-dinamicos)

## Apache
Con apache usaremos *.htaccess* para cerrar todas las conexiones a la zona web que queremos proteger.

### Requerimientos
- authz_host_module, generalmante forma parte del binario de nuestro sistema o esta cargado como módulo. [Apache Module mod_authz_host](https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#:~:text=When%20Require%20forward%2Ddns%20host,client%20if%20its%20IP%20matches.)

### Implementación
```
Require forward-dns mi.hostdinamico.tld
```

También si tenemos IP fija podemos usarla (aunque en nueysro tip anterior indico mi preferencia por los host dinámicos)
```
Require forward-dns 00.00.00.00 
```
## Nginx
** pendiente de testing **
Nginx tiene otros mecanismos, y lo describe en [HTTP rDNS](https://www.nginx.com/resources/wiki/modules/rdns/)

### Requerimientos
- módulo ngx_http_rdns_module

```
server {
	resolver 127.0.0.1; # Si tienes activado dns localhost, sino pon tu resolver preferido
    
    rdns_allow mi\.hostname\.tld;
	
    location /path {
    	echo_exec $protegido
    }
    
    location
}
```

### Compilación

En mi blog tengo una entrada sobre [LEMP](https://castris.com/cpanel-no-gracias-lemp-sin-panel-de-control/#Instalacion_Nginx) en la que hago compilación de modulos como este.

Para compilar ete modulo de forma dinámica:

```bash
$ cd ~/soft/
$ git clone git@github.com:flant/nginx-http-rdns.git
## $version ya estaba declarada en la compilacion sino, poner la que corresponda. Ten en cuenta que este post
## entiende que se esta siguiente el modelo del enalce de más arriba
$ cd ninx-$version/
$ /configure --with-compat --add-dynamic-module=../nginx-http-rdns
$ make
$ make modules
$ sudo mv objs/ngx_http_rdns_module.so /usr/lib/nginx/modules/
```

Añadir la carga del módulo a nginx en /etc/nginx/modules-enabled/51-mod-http_rdns.conf
```
load_module modules/ngx_http_rdns_module.so;
```

Configurar en los sitios que se requiera segun su [configuración](https://github.com/flant/nginx-http-rdns).



$sudo nginx -t # Para verificar que todo esta correcto


##### Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. 
También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad.
El contenido el contenido se entrega, tal y como esta, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18).