Cómo proteger el servidor IPAM de Netbox con Let's Encrypt SSL |
Una Organización bien comentada y organizada debe tener una infraestructura bien documentada para las operaciones del Equipo. Esto facilita la capacitación del nuevo personal con el mapa mental de los dispositivos en el centro de datos. Netbox es la mejor opción para este propósito.
Netbox es una herramienta gratuita y de código abierto escrita en Django, que gestiona y documenta redes informáticas a través de la web. Esto mejora enormemente la tarea de crear implementaciones virtuales de dispositivos en un centro de datos que se realizaba dibujando en papel.
Netbox tiene las siguientes características:
- Elevación del estante
- Base de datos única convergente
- Gestión de proveedores de circuitos
- Multisitio (inquilino)
- Gestión de VRF
- Gestión de VLAN
- IPAM – Gestión de direcciones IP
- Encabezado de personalización para logotipos, etc.
- Gestión de conexión: interfaces/consola/alimentación
- Alerta de informe
- DCIM – Gestión de infraestructura del centro de datos
Esta guía demuestra cómo proteger el servidor Netbox IPAM con Let's Encrypt SSL.
Empezando
En esta guía, necesitará lo siguiente:
- Un usuario con acceso sudo.
-
Netbox IPAM Server instalado en su sistema usando las siguientes guías:
En contenedores:
- Cómo ejecutar la herramienta Netbox IPAM en contenedores Docker
- En CentOS|Rocky Linux 8|Alma Linux 8
- Instale NetBox IPAM en Rocky Linux 8|CentOS 8
- En Ubuntu 20.04|18.04
- Instale la herramienta NetBox IPAM y DCIM en Ubuntu 20.04
- Cómo instalar NetBox en Ubuntu 18.04 LTS
- En Debian 11|10|9
- Cómo instalar NetBox IPAM en Debian
Una vez instalado Netbox IPAM en su sistema Linux, procederá como se indica a continuación.
Servidor Netbox IPAM seguro con certificados confiables.
En esta guía, ilustraré dos formas de instalar certificados confiables en su sistema. El principal objetivo de este proceso es poder acceder a la página web de Netbox IPAM vía HTTPS.
- Usando Vamos a cifrar (IP públicas/FQDN)
- Usando un Certificado autofirmado(IP privadas)
¡Así que vamos a sumergirnos!
Servidor IPAM Netbox seguro con Let's Encrypt SSL.
Let's Encrypt se utiliza para generar certificados confiables para cualquier FQDN de forma gratuita. Para que este método funcione, necesita tener una dirección IP pública o un FQDN.
Nuevamente, demostraré cómo proteger el servidor Netbox con Let's Encrypt SSL para servidores web Apache y Nginx.
1. Crea un archivo VirtualHost
Para Apache servidor web
Supongo que ya tiene el siguiente archivo de configuración para Apache con las líneas siguientes.
Listen 8085
ProxyPreserveHost On
ServerName netbox.example.com
Alias /static /opt/netbox/netbox/static
<Directory /opt/netbox/netbox/static>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
<Location /static>
ProxyPass !
</Location>
ProxyPass / http://127.0.0.1:8001/
ProxyPassReverse / http://127.0.0.1:8001/
Además, se le pedirá que realice los siguientes ajustes en su instalación de Netbox.
sudo vi /opt/netbox/netbox/netbox/configuration.py
En el archivo, edite su host permitido a su FQDN
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['netbox.example.com']
Reinicie Apache y el supervisor
sudo systemctl restart supervisord
sudo systemctl restart httpd
Confirme que el servicio esté escuchando en el puerto 8085 como se muestra a continuación.
$ ss -tunelp | grep 8085
tcp LISTEN 0 128 *:8085 *:* ino:118544 sk:e v6only:0 <->
Ahora instale Certbot en su sistema como se muestra a continuación.
##On RHEL 8/CentOS/Rocky Linux 8/Fedora
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install certbot python3-certbot-apache mod_ssl
##On Debian/Ubuntu
sudo apt install certbot python3-certbot-apache
Para Nginx
Para el servidor web Nginx, también necesita un archivo de host virtual para Netbox con líneas similares a las que se muestran a continuación.
server {
listen 80;
server_name netbox.example.com;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://localhost:8001;
}
}
Ahora proceda e instale Certbot en su sistema.
##On RHEL 8/CentOS/Rocky Linux 8/Fedora
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install certbot python3-certbot-nginx
##On Debian/Ubuntu
sudo apt install certbot python3-certbot-nginx
Servidor IPAM Netbox seguro con Let's Encrypt SSL para Apache|Nginx
Ahora continúe e instale certificados SSL para su FQDN como se indica en su archivo de host virtual para Apache|Nginx arriba (netbox.example.com)
##For Apache
sudo certbot --apache -d netbox.example.com
##For Nginx
sudo certbot --nginx
Ahora proceda como se muestra a continuación.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): Enter a valid Email address here
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Account registered.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: netbox.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for netbox.example.com
Performing the following challenges:
http-01 challenge for netbox.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/netbox.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/netbox.conf
Successfully received certificate.
Certificate is saved at: a2enmod ssl
/etc/letsencrypt/live/netbox.example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/netbox.example.com/privkey.pem
This certificate expires on 2022-01-09.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Para apache, proceda como se indica arriba pero elija instalar los certificados en la configuración SSL como se muestra a continuación
Which virtual host would you like to choose?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: ssl.conf | | HTTPS | Enabled
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press 1 [enter] to confirm the selection (press 'c' to cancel): 1
¡Eso es! Se agregarán los certificados SSL a su archivo de configuración como se muestra a continuación.
Para Apache. (lo siguiente se agregará en el archivo ssl.conf en la parte inferior)
.............
CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ServerName netbox.example.com
SSLCertificateFile /etc/letsencrypt/live/netbox.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/netbox.example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
Para Nginx. (En la configuración de Nginx)
server {
server_name netbox.example.com;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/netbox.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/netbox.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = netbox.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name netbox.example.com;
return 404; # managed by Certbot
}
Ahora puede continuar y acceder a su página web Netbox IPAM a través de HTTPS.
Servidor Netbox IPAM seguro con certificados autofirmados
Esta es una forma alternativa de proteger su sitio Netbox IPAM en caso de que no tenga un nombre de dominio completo. En este método, usaremos OpenSSL para generar certificados autofirmados. Asegúrese de tener OpenSSL instalado en su sistema.
##For RHEL 8/CentOS/Rocky Linux 8/Alma Linux 8
sudo yum install openssl
##For Debian/Ubuntu
sudo apt install openssl
Ahora con el archivo de host virtual para Nginx, continúe y genere certificados autofirmados como se muestra a continuación.
Cree un archivo de configuración para los certificados como se muestra a continuación.
vim netbox_ssl.conf
En el archivo, agregue las siguientes líneas reemplazándolas adecuadamente.
[req]
default_bits = 2048
default_keyfile = netbox_ssl.key
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = KE
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Nairobi
localityName = Locality Name (eg, city)
localityName_default = Nairobi
organizationName = Organization Name (eg, company)
organizationName_default = Netbox
organizationalUnitName = organizationalunit
organizationalUnitName_default = Development
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = Your_IP-Address
commonName_max = 64
[req_ext]
subjectAltName = @alt_names
[v3_ca]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = Your_IP-Address
Reemplace “Su_dirección_IP ” con la dirección IP de su sistema y proceda a generar los certificados.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout netbox_ssl.key -out netbox_ssl.crt -config netbox_ssl.conf
Presiona “Entrar” hasta el final y tendrás tus certificados generados. Ahora cópielos en el directorio /etc/ssl/certs como se muestra a continuación.
sudo cp netbox_ssl.crt /etc/ssl/certs/netbox_ssl.crt
sudo mkdir -p /etc/ssl/private/
sudo cp netbox_ssl.key /etc/ssl/private/netbox_ssl.key
Ahora agregue los certificados a su archivo de host virtual como se muestra a continuación.
Para Nginx, su archivo conf debería aparecer como se muestra a continuación.
server {
listen 80;
server_name 192.168.205.2;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
}
listen 443 ssl;
ssl_certificate /etc/ssl/certs/netbox_ssl.crt;
ssl_certificate_key /etc/ssl/private/netbox_ssl.key;
}
En el archivo anterior agregue apropiadamente las rutas para sus certificados generados.
Acceda a la interfaz web de Netbox IPAM a través de HTTPS.
En este punto, podemos acceder a la interfaz web de Netbox IPAM a través de HTTPS independientemente del método utilizado para protegerla. Debe permitir HTTPS a través del firewall.
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
Por ufw.
sudo ufw allow http
sudo ufw allow https
Ahora reinicie Apache/Nginx y proceda a acceder a la interfaz de usuario web a través de la URL https://netbox.example.com o https://IP_address.com.
Debería ver la página segura como se muestra a continuación.
¡Eso es! Espero que usted también haya aprendido mucho de esta guía sobre cómo proteger el servidor Netbox IPAM con Let's Encrypt SSL.
Ver más en esta página:
- Cómo instalar phpIPAM en CentOS 8/RHEL 8 Linux
- Servidor FreeIPA seguro con el certificado SSL Let's Encrypt
- Cómo proteger osTicket con certificados SSL Let's Encrypt