Búsqueda de sitios web

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

Artículos relacionados: