[KB7857] Configurar una conexión HTTPS/SSL para ESET PROTECT (8.x) en Linux

Suceso

Solución

HTTPS

Por razones de seguridad, recomendamos que configure ESET PROTECT para utilizar HTTPS.

Usar un certificado existente

Los siguientes pasos aluden a certificados para Apache Tomcat, que son utilizados para garantizar conexiones HTTPS seguras. Para conocer información acerca de los certificados de ESET PROTECT, lea nuestra Ayuda en línea.
  1. Mueva el archivo del certificado (por ejemplo, certificate_file.pfx) hacia un directorio de configuración de Tomcat (fpor ejemplo, /etc/tomcat/).

  2. Abra el archivo Server.xml ubicado en /etc/tomcat/. La localización podría variar dependiendo de la distribución de Linux.
    • Si no existe <‎Connector luego de <‎Service name="Catalina"> en Server.xml, copie los siguientes parámetros dentro del archivo Server.xml. Utilice sus propios valores para keystoreFilekeystorePass, y keystoreType:
<Connector port="8443"
               protocol="HTTP/1.1"
               SSLEnabled="true"
               maxThreads="150"
               scheme="https"
               secure="true"
               clientAuth="false"
               sslEnabledProtocols="TLSv1.2,TLSv1.3"
               ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
                        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
                        TLS_RSA_WITH_AES_128_CBC_SHA256,
                        TLS_RSA_WITH_AES_128_GCM_SHA256,
                        TLS_RSA_WITH_AES_128_CBC_SHA,
                        TLS_RSA_WITH_AES_256_CBC_SHA256,
                        TLS_RSA_WITH_AES_256_GCM_SHA384,
                        TLS_RSA_WITH_AES_256_CBC_SHA"
               keystoreFile="/etc/tomcat/certificate_file.pfx"
               keystorePass="Secret_Password_123"
               keystoreType="PKCS12"
               />
    • Si aparece <‎Connector luego de <‎Service name="Catalina"> en Server.xml, reemplace los valores de los parámetros que aparecen debajo con sus propios valores:

keystoreFile - Provee la ruta completa al archivo del certificado (.pfx.keystore, u otra). Si usa un certificado diferente a JKS (por ejemplo, un archivo .pfx), elimine keyAlias (presente en Server.xml de modo predeterminado) y agregue la correspondiente keystoreType.

keystorePass - Provee la contraseña del certificado.

keystoreType - Especifica el tipo de certificado.

  1. Reinicie el servicio Tomcat (sudo systemctl tomcat restart).
    • Si usa un archivo .keystore, use la ruta del archivo (keystoreFile="/etc/tomcat/tomcat.keystore") y defina keyAlias (keyAlias="tomcat") en lugar de keystoreType.
    • Si desea deshabilitar HTTP:
<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
SELinux habilitado

Los usuarios que poseen SELinux habilitado y reciben una advertencia de certificado inválido, podrían necesitar ejecutar el comando restorecon para restaurar el contexto de seguridad de SELinux.

restorecon /etc/tomcat/my_cert_file.pfx

ls -lZ

-rw-r--r--. root root unconfined_u:object_r:etc_t:s0   /etc/tomcat/my_cert_file.pfx


Crear un nuevo certificado y firmarlo

Use una conexión HTTPS/SSL segura para ESET PROTECT.

  1. Cree un keystore con un certificado SSL. Debe contar con Java instalado.
    Apache Tomcat requiere Java:
    • Asegúrese de que Java, ESET PROTECT y Apache Tomcat posean la misma arquitectura (32-bit o 64-bit).
    • Si posee múltiples versiones de Java instaladas en su sistema, recomendamos que desinstale las versiones antiguas y conserve solo la última.
    • A partir de enero de 2019, las actualizaciones públicas de Oracle JAVA SE 8 para uso corporativo, comercial o de producción requieren una licencia paga. Si no adquirió una suscripción de JAVA SE, puede valerse de esta guía para realizar una transición hacia una alternativa sin costo.

Java incluye la keytool, que le habilita a crear un certificado a través de la línea de comandos. Debe generar un nuevo certificado para cada instancia de tomcat (si posee múltiples instancias) para asegurarse de que si un certificado se ve comprometido, otras instancias de tomcat permaneceran protegidas.

Debajo verá un comando de muestra para crear un keystore con un certificado SSL:

Diríjase hacia la ubicación exacta del archivo de la keytool, por ejemplo /usr/lib/jvm/”java version”/jre/bin (la ruta dependerá del sistema operativo y la versión de JAVA) y ejecute el comando:

sudo keytool -genkeypair -alias "tomcat" -keyalg RSA -keysize 4096 -validity 3650 -keystore "/etc/tomcat/tomcat.keystore" -storepass "yourpassword" -keypass "yourpassword" -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown"

La ruta del archivo /etc/tomcat/tomcat.keystore es solo un ejemplo. Elija su propia ubicación segura y accesible.
Parámetros -storepass y -keypass
Los valores para -storepass y -keypass deben ser los mismos.
  1. Exporte el certificado desde el keystore. Debajo verá un comando de muestra para exportar la firma del certificado solicitada desde el keystore:
sudo keytool -certreq -alias tomcat -file "/etc/tomcat/tomcat.csr" -keystore "/etc/tomcat/tomcat.keystore" -ext san=dns:ESETPROTECT
Reemplace los valores correctamente
Reemplace el valor "/etc/tomcat/tomcat.csr" por el parámetro -file con la ruta y el nombre del archivo reales en donde desea que se exporte el certificado.

Reemplace el valor ESETPROTECT por el parámetro -ext con el nombre real del servidor en el cual se ejecuta su Apache Tomcat con ESET PROTECT.
  1. Obtenga el certificado SSL firmado con la Autoridad de certificación raíz (CA) de su elección.

    Puede continuar con el paso 6 si planea importar la CA raíz luego. Si opta por continuar de tal modo su navegador web podría mostrar advertencias acerca del certificado autofirmado y necesitará agregar una excepción para conectarse a ESET PROTECT mediante HTTPS.
     
  2. Importe el certificado raíz u el certificado intermedio de su CA en su keystore. Estos certificados usualmente se encuentran puestos a disposición por la entidad que firmó su certificado. Esto es necesario debido a que la respuesta del certificado se vaida utilizando certificados de confianza del keystore.

    sudo keytool -import -alias root -file "/etc/Tomcat/root.crt" -keystore "/etc/tomcat/tomcat.keystore"

    sudo keytool -import -alias intermediate -file "/etc/Tomcat/intermediate.crt.pem" -keystore "/etc/tomcat/tomcat.keystore"

  3. Cuando reciba el certificado firmado con la CA raíz, importe la clave pública de la CA y el certificado (tomcat.cer) dentro de su keystore. Debajo hay un comando de muestra que importa un certificado firmado en la keystore:
sudo keytool -import -alias tomcat -file "/etc/tomcat/tomcat.cer" -keystore "/etc/tomcat/tomcat.keystore"
Reemplace los valores correctamente
Reemplace el valor "/etc/tomcat/tomcat.csr" para el parámetro -file con uno que posea la ruta y el nombre del archivo en el cual se encuentra el certificado firmado.

Si desea usar un certificado ya firmado (por ejemplo, un certificado de una compañía), siga estas instrucciones.

  1. Edite el archivo de configuración server.xml de modo que la etiqueta <‎Connector se encuentre escrita de modo similar al siguiente ejemplo:

<Connector server="OtherWebServer" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat/tomcat.keystore" keystorePass="yourpassword"/>

Esta modificación también deshabilitará las funcionalidades no seguras de Tomcat, permaneciendo activado solo HTTPS (parámetro scheme=). Por razones de seguridad, usted podría también necesitar editar tomcat-users.xml para borrar todos los usuarios de Tomcat y cambie ServerInfo.properties para ocultar la identidad de Tomcat.

  1. Reinicie el servicio de Apache Tomcat. ESET PROTECT podría usar el servicio llamado tomcat9.
sudo systemctl tomcat restart

¿Qué ocurre si la conexión segura continúa fallando en Linux?
Mensaje de error en el directorio /var/....../tomcat:
failed to initialize end point associated with ProtocolHandler ["http-bio-443"]Si el problema persiste, cambie el valor de port en el archivo server.xml hacia un valor mayor a 1024, debido a que los puertos menores a 1024 podrían no encontrarse accesibles para los usuarios que no sean root. Si por alguna razón usted debe usar el puerto 443, podrá optar por cambiar el valor y luego redireccionar el puerto. Siga los pasos descriptos debajo para habilitar la redirección de puerto (por ejemplo, desde el puerto 443 al puerto 8443):
  1. Permita el acceso a la Consola web:
    sudo iptables -A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT
    (Alternativamente, puede abrir y editar el archivo de configuración del (nano /etc/sysconfig/iptables) y agregar esta línea a la sección que comienza en *nat y finaliza con COMMIT-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports |8443)
  1. Quite el puerto 8080 para deshabilitar HTTP:
    sudo iptables -D INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

  2. Guarde las reglas del firewall:
    iptables-save > /etc/network/iptables.rules

  3. Deshabilite SELinux. Las instrucciones provistas son para el Virtual Appliance corriendo en CentOS7 y podrían diferir de acuerdo a su distribución de Linux. 

 

Asistencia adicional