sexta-feira, 2 de outubro de 2015

Gerenciando Senhas com o TeamPass

Introdução

O TeamPasss é um gerenciador corporativo e colaborativo de senhas e informações sensíveis. Ele foi especialmente desenvolvido para gerenciar, armazenar, prover senhas e oferecer meios de acesso a informação sensível de forma controlada, centralizada e dinâmica.
Eu descobri esse cara garimpando no blog do meu amigo Guto Carvalho, leiam o post dele antes de prosseguir ;-)

Ponto de partida

Eu parto do princípio que você já possui um Servidor CentOS 7 Básico.

Pré-Requisitos

Antes de começarmos a instalação precisamos suprir alguns pré-requisitos, depois será Next, Next, Finish.

Banco de Dados

A primeira coisa que precisamos fazer é criar a base de dados, que posteriormente será populada durante a instalação. Essa base pode ser local ou remota, a decisão é sua.

No exemplo abaixo vamos criar uma base de dados chamada teampass_db e um usuario chamado teampass com senha TeAmPaSs.
mysql> CREATE DATABASE teampass_db CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> GRANT ALL PRIVILEGES ON teampass_db.* TO teampass@localhost IDENTIFIED BY '
TeAmPaSs';

mysql> flush privileges;

Dependências de pacotes

Essa versão precisa do PHP 5.5, apesar de exibir que o pré-requisito é o PHP 5.3 ou superior, eu não consegui fazer funcionar com o PHP 5.4. 
# yum -y install php55-php php55-php-mcrypt php55-php-ldap php55-php-common unzip php55-php-mbstring php55-php-bcmath php55-php-xml

Ajustes no PHP

# cd /etc
# ln -s /opt/remi/php55/root/etc/php.ini php.ini 

# vi /etc/php.ini
date.timezone = America/Sao_Paulo
max_execution_time = 60


# systemctl restart httpd

Dado tipo Sal

É preciso criar um diretório que é dependência da instalação, esse diretório irá armazenar um dado do tipo Sal (Salt) que será utilizado juntamente com a senha.
# cd /var/www/
# mkdir saltkey
# chown -R apache:apache saltkey

Download dos arquivos

Precisamos realizar o download dos arquivos e copiar os arquivos php para o diretório web.
# mkdir /install
# cd /install
# wget https://github.com/nilsteampassnet/TeamPass/archive/master.zip
# unzip master
# cd /var/www/html/
# mv /install/TeamPass-master/ teampass
# chown -R apache:apache teampass

Instalaçao

basta acessar o endereço do seu servidor:
http://ip_servidor/teampass/install/install.php


Na tela inicial clique em NEXT
Clique em LAUNCH, para que a instalação cheque os pré-requisitos
Os pré-requisitos estando OK, o botão NEXT é liberado, pode pressioná-lo
Preencha as informações de conexão com a base de dados e pressione o botão LAUNCH para que a conexão seja testada
Após a conexão ser estabelecida com sucesso o botão NEXT é liberado, basta pressioná-lo
Nessa tela temos que observar vários detalhes:
  • Gerar o arquivo salt e informar o caminho onde o mesmo será armazenado;
  • Configurar a seção de SMTP (Opcional);
  • Inserir a senha do Administrador;
Por último clique no no botão LAUNCH para que os dados sejam checados.
 Após a validação das informações clique no botão NEXT
A base de dados é populada, clique em NEXT
Ajustes finais são realizados, clique em NEXT
A própria instalação já remove o diretório de instalação, clique em NEXT
Apenas um resumo informando que a instalação está concluída e que o usuário de login é admin, clique em Start
Faça o login com o usuário admin e a senha que foi cadastrada e, observe que o modo de manutenção está habilitado.

Configurações

Configurações Iniciais

Clique em Settings para alterarmos as configurações iniciais
Na aba TeamPass Settings vamos remover o modo de manutenção, alterar as opções de timezone e o idioma. Após realizar as alterações clique em Save

Integração com Active Directory

Esse passo é opcional,  mas se você tem um AD na rede, é uma boa pedida configurar a autenticação por ele, ao invés de ter que decorar mais uma senha. Apenas a autenticação será feita pelo AD, você precisa criar o usuário no TeamPass de qualquer forma, afinal de contas não queremos qualquer usuário do AD autenticando no TeamPass. Além do AD ele suporta também Posix / OpenLDAP (RFC2307).

Clique na aba Opções LDAP, marque a opção Sim em "Ativa autenticação LDAP para os usuários", selecione o "LDAP server type" como Windows / Active Directory e clique em Salvar
Clique novamente na aba Opções LDAP e preencha as opções da seção Configuração LDAP e clique em Salvar

Liberar acesso à aplicação apenas de determinados endereços IPs

Se você quiser incrementar a segurança um pouco mais, e aconselho a fazer, você pode liberar o acesso para o site apenas para as máquinas do setor de informática. Para isso edite o arquivo de configuração do apache:
# vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/teampass">
   Order deny,allow
   Deny from all
   Allow from 192.168.100.15/255.255.255.0
   Allow from 192.168.100.16/255.255.255.0
   Allow from 192.168.100.17/255.255.255.0
</Directory>


Após isso reinicie o apache
# systemctl restart httpd

Gerenciamento de Usuários

O TeamPass possui 3 tipos de usuários:
  • Admin (Administrador): Esse tipo de usuário consegue criar e gerenciar outros usuários, criar e gerenciar regras, associar usuários a regras e, administar configurações internas do TeamPass, porém ele não consegue ver as pastas, consequentemente ele não conseguirá criar e gerenciar senhas em tais pastas.
  • Manager (Gerenciador): Esse tipo de usuário conseguirá administrar uma ou mais regras - e suas pastas - e os usuários associados a esta regra, ele também conseguirá criar e gerenciar senhas dentro das pastas pertencentes as regras que ele estiver associado. O manager até consegue criar pastas em suas regras, mas será preciso o Admin para liberar o uso da pasta naquela regra. Ele também consegue criar usuários de nível inferior ao dele.
  • Read Only (Somente Leitura): Este tipo de usuário só consegue utilizar as pastas associadas à regra que ele faz parte, ele não cria pastas, e nem pode criar, modificar e apagar senhas dentro das pastas que tem acesso.

Referencias

Infraestrutura Ágil
Teampass and authentication Ldap/Active directory

quinta-feira, 1 de outubro de 2015

phpMyAdmin Acessando Multiplos Servidores Remotos

Introdução

A maioria das pessoa utiliza o phpMyAdmin para acessar bases de dados que estão no mesmo servidor (localhost), mas é possível configurá-lo para acessar mais de um servidor ao mesmo tempo e também para acessar servidores remotos, ou seja, se você possui na sua estrutura vários servidores MySQL você pode utilizar um único phpMyAdmin, centralizando assim seu acesso.

Ponto de partida

Eu parto do princípio que você já possui um Servidor CentOS 7 Básico.

Instalação

A instalação será feita através do yum:

# yum install -y phpMyAdmin

Depois de instalado vamos criar um link na raíz do nosso diretório web, nesse caso eu chamei de mysql:
# cd /var/www/html/
# ln -s /usr/share/phpMyAdmin mysql
# ls -l
total 0
lrwxrwxrwx 1 root root 21 Set 18 17:29 mysql -> /usr/share/phpMyAdmin

Acessar a interface do phpMyAdmin

Acesse o endereço http://ip_servidor/mysql

Configurar o acesso para vários servidores

Edite o arquivo config.inc.php
# vi /etc/phpMyAdmin/config.inc.php
Logo no início do arquivo temos a seção Servers Configuration, com as informações referentes ao localhost
/*
 * Servers configuration
 */
$i = 0;

/*
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;


Podemos acrescentar logo abaixo o bloco de comandos para os demais servidores:
/*
* Server Remoto 1
*/
//$i++;
/* Authentication type */
$cfg['Servers'][$i]['verbose'] = 'Server Remoto 1';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '192.168.100. 1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

/*
* Server Remoto 2
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['verbose'] = 'Server Remoto 2';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '192.168.100.2';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

Remover o acesso ao localhost

E por último podemos remover a opção de acesso ao localhost, deixando assim o phpMyAdmin em um servidor exclusivo para páginas Web, e os bancos de dados em servidores exclusivos para essa função. Basta comentar as linhas.
/*
 * First server
 */
//$i++;
/* Authentication type */
//$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
//$cfg['Servers'][$i]['host'] = 'localhost';
//$cfg['Servers'][$i]['connect_type'] = 'tcp';
//$cfg['Servers'][$i]['compress'] = false;
//$cfg['Servers'][$i]['AllowNoPassword'] = false;

Referências

Configurando o phpMyAdmin para acessar o MySQL remotamente