Psql sem senha somente para root

junho 26, 2009

Me surgiu uma necessidade de um script que rode através do Crontab e faça inserções no banco de dados usando o comando COPY (grande volume de dados), isso só pode ser feito através do Psql. Mas como fazer para não pedir senha e manter o sistema seguro? Então eu, junto com o Everton, meu colega de Celepar, pesquisamos e encontramos à seguinte solução.

Softwares utilizados:

Sistema Operacional: Ubuntu 9.04
Versão do PostgreSQL: 8.3

Primeiramente, abra um terminal como root. Depois entre no diretório onde se encontram os arquivos de configuração do Postgres:

cd /etc/postgresql/8.3/main/

Agora vamos editar o arquivo pg_ident.conf, para criarmos um mapeamento entre o usuário da máquina (root) e o usuário do BD (Ex: coletor):

vi pg_ident.conf
# No map names are defined in the default configuration.  If all ident
# user names and PostgreSQL user names are the same, you don't need
# this file.  Instead, use the special map name "sameuser" in
# pg_hba.conf.
 
# MAPNAME     IDENT-USERNAME    PG-USERNAME
nopasswd	root		 coletor

Salve e feche o arquivo, agora vamos adicionar a regra para que o psql não solicite senha para o usuário coletor, quando estivermos logados como root. Abra e edite o arquivo pg_hba.conf, como abaixo.

vi pg_hba.conf
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
 
local	all		postgres		ident sameuser
local	all		coletor			ident nopasswd
# "local" is for Unix domain socket connections only
#local   all         all                               ident sameuser
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
#host    all         all         ::1/128               md5

A primeira linha deste arquivo significa que se você fizer um psql para o usuário postgres, será feita uma verificação da identidade da requisição, através do mapeamento padrão sameuser. Na segunda linha, inserimos a nossa regra, ou seja, requisições para o usuário coletor, serão verificadas com o mapeamento nopasswd, que é o nosso mapeamento. As demais linhas não nos interessam no momento. Salve e feche o arquivo.

Agora para funcionar, devemos reiniciar o serviço do Postgres.

/etc/init.d/postgresql-8.3 restart

Pronto, agora é só testar. Mas atenção!!!! No comando psql não se esqueça de indicar o nome do usuário e o banco de dados.

psql -U coletor meu_bd

Um abraço.

0

Boot PXE via USB com gPXE

junho 25, 2009
Tags: , , , ,

Esta foi uma necessidade minha e estou compartilhando a solução com vocês.

Instalando o gPXE

Utilizando uma máquina Linux, baixe o arquivo tar.gz da versão mais atual do gPXE em http://kernel.org/pub/software/utils/boot/gpxe/
Abra um Terminal como root e entre no diretório onde o arquivo foi salvo.

Descompacte o arquivo:

tar xzvf gpxe-X.X.X.tar.gz

Entre no diretório gpxe-X.X.X/src:

cd gpxe-X.X.X/src

Instale os pacotes necessários:

apt-get install syslinux mtools gcc

Compile os módulos:

make

Gravando no Pendrive

Insira o pendrive e verifique nas informações mostradas no Terminal, qual é o dispositivo referente ao pendrive. Ex: [sda], [sdb], etc.

Agora compile a imagem para USB:

make bin/gpxe.usb

Grave a imagem no pendrive, onde X é a letra referente ao dispositivo:

dd if=bin/gpxe.usb of=/dev/sdX

Depois disso é só sacar o pendrive e usar.

0

Apache com SSL (Https)

abril 25, 2009

Olá pessoal,
Neste vou descrever os passos para criar um certificado digital e configurar o Apache para trabalhar com SSL. Semana passada executei este procedimento em um Linux Debian Lenny e hoje vou mostrar com base no Ubuntu Hardy.

Supondo que você já está com o Apache2 instalado, vamos instalar o pacote openssl. Abra um terminal e digite o seguinte comando:

sudo apt-get install openssl

Depois vamos criar um diretório para salvar nosso certificado.

sudo mkdir -p /etc/apache2/certs
cd /etc/apache2/certs

Agora chegamos ao certificado. Nós só precisaremos de um dos dois comandos abaixo, o primeiro deles gera um certificado protegido por uma frase secreta e o segundo não, a diferença está no parâmetro -des3. No meu caso eu utilizei o segundo deles, pois caso você precise reiniciar o apache ou a máquina, esta a frase secreta lhe será solicitada e no caso de um restart acidental do servidor, o apache não iniciará o serviço enquanto este frase não for digitada.

sudo openssl genrsa -des3 -out server.key 1024

ou

sudo openssl genrsa  -out server.key 1024

Digite o comando ls e verifique se o arquivo server.key foi criado. Se não, execute novamente o passo anterior, caso contrário, continuamos. Este próximo comando irá gerar o certificado com base na chave gerada pelo comando anterior.

sudo openssl req -new -x509 -days 1825 -key server.key -out server.crt

Nesse comando você deve ter notado o parâmetro -days 1825, isso significa que a validade do seu certificado é de 1825 dias ou 5 anos, você pode alterar esse valor mas não é recomendável aumentar mais que isso. Continuando……. Responda o questionário com as informações do certificado.

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Paraná
Locality Name (eg, city) []:Curitiba
Organization Name (eg, company) [Internet Widgits Pty Ltd]:FingerHome
Organizational Unit Name (eg, section) []:Bedroom
Common Name (eg, YOUR name) []:Leandro Finger Romanovski
Email Address []:eu@leandrofinger.com

Digite novamente o comando ls e verifique agora se o arquivo server.crt foi criado. Pronto, esse é o nosso certificado. Agora vamos configurar o Apache para utilizá-lo. Vá até o diretório sites-available e edite um arquivo novo com o nome do seu site.

cd /etc/apache2/sites-available/
sudo gedit meusite-ssl

Esse arquivo deve conter as informações do nosso site.

<VirtualHost *:443>
	Servername www.meudominio.com.br
	ServerAdmin admin@meudominio.com.br
	DocumentRoot /var/www/
	CustomLog /var/log/apache2/access_ssl.log combined
	ErrorLog /var/log/apache2/error_ssl.log
	LogLevel notice
        SSLEngine on
        SSLCertificateFile /etc/apache2/certs/server.crt
        SSLCertificateKeyFile /etc/apache2/certs/server.key
        ServerSignature On
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>
 
Alias / /var/www/blog/
<Location />
	SSLRequireSSL
	ErrorDocument 403 https://www.meudominio.com.br/
</Location>

Salve e feche o arquivo. Agora vamos habilitar o módulo de SSL no Apache. No terminal digite o comando abaixo.

sudo a2enmod ssl

Verifique no arquivo ports.conf se o apache está habilitado para escutar na porta 443, a porta padrão para Https.

sudo gedit /etc/apache2/ports.conf
Listen 80
 
Listen 443

Agora é só reiniciar o Apache e tudo certo.

sudo apache2ctl restart

Grande abraço.

1

O Recomeço

abril 21, 2009

Olá pessoal,

Depois de alguns meses com o blog fora do ar, por alguns motivos técnicos e pessoais, estou de volta. Com o mesmo objetivo de trazer informação útil e de forma fácil de ser compreendida para os profissionais de TI em geral. Tentarei trazer várias dicas relacionadas ao meu dia-a-dia, bem como desafios superados, para que outras pessoas não se desgastem para alcançar o mesmo objetivo.

Quero novamente pedir aos meus amigos e visitantes deste blog que fiquem à vontade em comentar os posts, solicitar alguns assuntos e até mesmo enviar posts para serem colocados aqui. Desta forma desejo manter este blog como uma fonte rica de conhecimento para os profissionais de TI.

Por enquanto é isto, vou ficando por aqui. Para entrar em contato comigo, envie um e-mail para finger.le at gmail dot com.

1