Para Desenvolvedores

Criptografia de senha no lumishibernate e tomcat

Resolvido

Mina empresa utiliza o o framework lumisXP no tomcat e a senha do databse está exposta no lumishibernate.cfg.xml, estamos passando por auditoria o que devo fazer para não expor está senha?

Por Jorge Eduardo

Em 01/09/20 17:58

Acompanhar pergunta

1 resposta(s):

Ordenar por:

Será necessária utilizar a conexão via datasource do tomcat e também modificar alguns arquivos de configuração.

Premissas:

1. Executar o passo 1 em um servidor linux;
2. É necessário ter o JDK instalado corretamente.
3. É necessário ter o tomcat instalado corretamente.

Passo 1 - Criar a senha criptografada.

Será necessário ter o git no servidor de desenvolvimento para realizar o clone de um repositório do git.

cd ~
git clone https://github.com/AKSarav/SecureTomcatJDBC.git
cd SecureTomcatJDBC

No diretório SecureTomcatJDBC execute o comando abaixo

./SecureTomcatJDBC.sh

Ao executar o comando acima, será solicitado o caminho de onde o tomcat está instalado, exemplo (/opt/apache-tomcat-9.0.10). Conforme exemplo abaixo.

[root@cf3a608ec4b7 SecureTomcatJDBC]# ./SecureTomcatJDBC.sh 
Enter the Tomcat Instance CATALINA_HOME ( A Parent Directory of conf/ bin/ webapps/ )
/opt/apache-tomcat-9.0.10

Após infomrar o PATH do tomcat, será solicitado a senha do banco de dados e uma outra senha que será responsável pela criptografia.

INFO: Vaidating the Tomcat Juli and Tomcat JDBC Jar files availability
INFO: Jar files are present. Good to Go
Enter the Password to Encrypt
Enter the Secret PassPhrase

Após digitar a senha de criptografi, o script deverá mostrar um hash de senha criptografada. (ENCRYPTED PASSWORD : a7e7ace89d6c2c49417418a04cdd08ce

INFO: Jar file Creation Successful. Good to Go

Password Encryption Begins
=> ENCRYPTED PASSWORD : a7e7ace89d6c2c49417418a04cdd08ce
Password Encryption Completed. Your Encrypted Password is displayed above Senha criptografada!!

Passo 1 finalizado, aqui já temos que ter a senha criptografada.

passo 2 - Configurar o Tomcat

Para realizar esta configuração será necessário adicionar o parâmetro Resource no contexto da aplicação. Nas instalações lumisportal o contexto é configurado no diretório $TOMCAT_HOME/conf/Catalina/localhost/ROOT.xml ou no arquivo correspondente ao seu contexto que pode ser portal.xml.

2.1 - Configuração do Contexto da aplicação

No seu arquivo ROOT.xml você deve ter algo como

<Context docBase="/usr/local/lumisportal/www" crossContext="true"/>

Será necessário adicionar a tag Resource na tag Context.

<Context docBase="/usr/local/lumisportal/www" crossContext="true">
    <Resource name="jdbc/PortalDB"
        factory="SecureTomcatDataSourceImpl"
        auth="Container"
        type="javax.sql.DataSource"
        maxTotal="100"
        minIdle="30"
        maxWaitMillis="10000"
        username="lumisportal"
        password="a7e7ace89d6c2c49417418a04cdd08ce"          
        driverClassName="net.sourceforge.jtds.jdbc.Driver"
        url="jdbc:jtds:sqlserver://localhost:1433;databaseName=lumisportal;instanceName=LUMIS;useLOBs=false;sendStringParametersAsUnicode=false" 
        validationQuery="select 1"          
    />

Você tem que alterar os parâmetros username, maxTotal , minIdle e url conforme estão no seu lumishibernate.cfg.xml e adicionar a senha criptografa gerada no passo 1.

2.2 - Copiar o arquivo SecureTomcatJDBC.jar

Quando executamos .sh para criptografar a senha, o script também gerou um arquivo .jar, este arquivo tem que ser copiado para o diretório lib do tomcat.

cp ~/SecureTomcatJDBC/SecureTomcatJDBC.jar $TOMCAT_HOME/lib

Observação: o arquivo SecureTomcatJDBC.jar deve ser copiado para todos os tomcats do cluster do lumisportal.

Com o datasource configurado, vamos para o passo 2.3 que é a configuração do lumisportal.

Passo 2.3 - Configurar o lumisportal para utilizar o novo datasource.

Será necessário adicionar a tag resource-ref no arquivo $LUMIS_HOME/www/WEB-INF/web.xml, a nova tag pode fica no final do arquivo antes do fechamento da tag web-app.

  <resource-ref>
        <description>Portal DataSource</description>
        <res-ref-name>jdbc/PortalDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    
</web-app> 

e para finalizar a configuração, vamos alterar o lumishibernate.cfg.xml, é neste arquivo que falaremos para o lumisportal que ele deverá utilizar o pool de conexão do datasource.

Você pode substituir todo o conteúdo do arquivo pelo conteúdo que está abaixo.

<!-- $Revision: 21582 $ $Date: 2018-07-27 19:25:37 +0000 (Fri, 27 Jul 2018) $ -->
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3..dtd">
<hibernate-configuration>
        <session-factory>

                <property name="connection.datasource">java:comp/env/jdbc/PortalDB</property>

                <property name="jdbc.batch_size">0</property>
                <property name="max_fetch_depth">3</property>
                <property name="cache.use_query_cache">true</property>

                <!-- second-level cache -->
                <property name="cache.provider_class">lumis.portal.dao.hibernate.PortalCacheProvider</property>

        </session-factory>
</hibernate-configuration>

Por Jorge Eduardo

Em 01/09/20 18:08

Entrar

Interaja com a comunidade e tenha acesso a conteúdos exclusivos.

Houve algum erro ao acessar o banco de dados. Tente novamente mais tarde.