terça-feira, 27 de outubro de 2009

Instalando o PostgreSql 8.4 sem compilação no Slackware

Introdução

Que todos sabemos que o PostgreSql recebe o apelido de "Oracle do Software Livre" não é nenhum segredo, esse nome dispensa comentários, vamos ao que interessa.

Pacotes:

PostgreSql 8.4

Instalação

# cd /pasta/onde/está/o/pacote
# installpkg postgresql-8.4.0-i486-1sl.tgz
# mkdir /var/lib/pgsql/data
# chown -R pgsql:pgsql /var/lib/pgsql
# su - pgsql
$ initdb -D /var/lib/pgsql/data

Feito isso o Postgresql tá instalado, agora para fazer ele incializar, entre no /etc/rc.d e edite o rc.pgsql e troque o valor da variavel $DBCLUSTER para $DBCLUSTER=/var/lib/pgsql/data e ./rc.pgsql start para inicializar e PRONTO!

sexta-feira, 25 de setembro de 2009

Entendendo o comando SCP

O scp é um comando muito util para transferencia de arquivos via console de micro para micro, além de útil é muito facil de usar, veja só:

Transferir um arquivo dentro do micro1 para micro2(192.168.1.5), você pode estando dentro do diretorio do arquivo, ou fora do diretório:
1º Dentro do diretório:

# scp arquivo usuario@192.168.1.5:/diretorio/de/destino/no/micro2

2º Fora do diretório:

# scp /home/usuario/arquivo usuario@192.168.1.5:/diretorio/de/destino/no/micro2

Agora como transferir arquivos do arquivo do micro2 para o micro1(192.168.1.4), porem, estando logado no micro1, para se fazer é preciso saber em qual diretório está o arquivo.

1º Copiar para o diretório atual:

# scp usuario@192.168.1.4:/home/usuario/arquivo .

2º Copiar para outro diretório:

# scp usuario@192.168.1.4:/etc/rc.d/rc.firewall /etc/rc.d

Lembrando que será solicitado a senha do usuário do micro remoto, no exemplo eu utizei os ip's dos micros, se você tiver um dns resolvendo nome de rede, pode utilizar os nomes dos micros.

segunda-feira, 21 de setembro de 2009

Dica: Trocar senha do Webmin

Se esqueceu a senha de administrador do webmin é simples, é só seguir os passos abaixo:

Primeiro entre no diretorio do Webmin, o caminho pode variar de distro para distro eu instalei meu no caminho abaixo, uso o Slackware.

# cd /usr/local/webmin
# perl changepass.pl /etc/webmin administrador senha

No nome do administrador coloque o nome que você utilizou na instalação.


Até a proxima e que a força esteja convosco!

Recurso de Views no Bind

Introdução

Aplicando o sistema de Views no Servidor Dns, ajuda a proporcionar mais segurança e performance, dividindo o sistema de resolução de nomes do sistema de autoridade sobre domínio, permitindo o controle maior sobre os serviços do mesmo, evitando que ip's não autorizados utilizem seu Servidor Dns sem autorização, as Views podem ser usadas sem problemas tanto internamente quanto externamente, oque ocorre aqui é, seu uso interno para resoluções de nomes na rede e na internet (também conhecido como resolução de cache e recursividade), seu uso externo como Dns autoritativo sobre algum domínio ou também liberar para algumas faixas de ip externo para resolução de cache.
Oque estou apresentando aqui é o cenário testado por mim, usado na empresa onde trabalho, porem, o domínio e ip's são fictícios. Por ter 2 placas de rede o Servidor Dns não tem NAT, nenhuma liberação de transporte autorizado pelas placas de rede dele, sendo assim, não é necessário a habilitação do ip_forward, coloquei um script com regras com iptables para aumentar a segurança do mesmo, pois ainda não terminei de montar a DMZ da empresa ;)
Não será abordado o processo de instalação do Bind, pois isso varia de distro para distro e preferencia de cada um, no decorrer do mesmo é considerado que já tenha o Bind instalado


Cenário:

A descrição abaixo é do Servidor Dns primário (Máster).

Distro:
Slackware 12.1

2 Placas-de-rede:
eth0 - 200.200.200.1
eth1 - 192.168.1.2

Dns secundário:
ip externo: 200.200.200.2
ip interno: 192.168.1.3

Bind:
Bind 9.4.3-p1 *

Domínio interno e externo:

adrianobalani.com.br **



Notas:
* Não esquecer de atualizar a sua versão para essa ou maior quem tiver versão do Bind inferior a que está disposta nesse artigo, pois foi descoberta uma vulnerabilidade grave na versão anterior, a falha é acontece quando o servidor recebe repetidamente mensagens de atualização dinâmica, gerando um ataque do tipo negação de serviço.

** No meu caso tenho um controlador de domínio interno com Active Directory com o mesmo nome do site.

Configurando


Seguindo o padrão do Slackware, acho que a maioria das distros tambem, o arquivo named.conf fica dentro de /etc/, é nesse arquivo que faremos a alteração, abaixo segue um exemplo do named.conf, suas diretrizes serão comentadas.

# vim /etc/named.conf

/* PRIMEIRO CRIAMOS AS ACL'S ONDE SERÃO DEFINIDOS OS VALORES COMO REDE INTERNA E DNS'S SECUNDARIOS
*/
// AQUI SEGUE O ENDEREÇO DA REDE INTERNA, SE POSSUIR MAIS QUE UM COLOQUE AQUI
acl "internos" {
192.168.1.0/24;
127.0.0.1;
};

// COLOQUE AQUI OS IP'S DE SEUS DNS'S SECUNDARIOS SE POSSUIR MAIS QUE UM, COLOQUE AQUI ASSIM AJUDA A MANTE-LOS ATUALIZADOS COM O DNS PRIMARIO
acl "dns_interno" {
192.168.1.3;
192.168.1.4;
};
acl "dns_externo" {
200.200.200.2;
200.200.200.3;
};
options {
directory "/var/named";
// AJUDA DIFICULTAR O TRABALHO DE IDENTIFICAR QUAL A VERSÃO DO BIND
version "Microsoft/DNS 7.0b";
// query-source address * port 53;
// NECESSARIO PARA O NOSSO REVERSO FUNCIONAR DE ACORDO COM OS DNS'S DA OPERADORA QUE FORNECEU OS IP'S E LIBERAMOS A OPÇÃO DE ATUALIZAR AS ZONAS DOS SECUNDARIOS
Allow-transfer {201.201.201.1; 201.201.201.2; 200.200.200.2; 200.200.200.3; };
// LIBERA OS IP'S ONDE SERÃO ENTREGUES AS CONSULTAS
listen-on { 200.200.200.1; 192.168.1.2;127.0.0.1; };
// DESABILITA O PROTOCOLO IPV6
listen-on-v6 { none; };
// UM POUCO DE SEGURANÇA NÃO FAZ MAU
dnssec-enable yes;
};

// VAMOS AS VIEWS
view "interna" {
// AQUI DEFINIMOS QUAIS OS CLIENTES QUE FAZEM PARTE DESSA VIEW, QUE FORAM DEFINIDOS NAS ACL'S ACIMA
match-clients { internos; };
// AQUI ESTÁ HABILITADO A OPÇÃO DE RECURSÃO (A BUSCA DE SITES NA NET)
recursion yes;

//AQUI COMEÇA A CONFIGURAÇÃO DE DNS CACHE E RECURSIVO
zone "." IN {
type hint;
file "caching-example/named.root";
};

zone "localhost" IN {
type master;
file "caching-example/localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "caching-example/named.local";
allow-update { none; };
};
// AQUI TERMINA A OPÇÃO ANTERIOR E COMEÇA A CONFIGURAÇÃO DO MEU DOMINIO INTERNO AS ZONAS DIRETAS E REVERSA
zone "adrianobalani.com.br" IN {
type master;
file "interno/adrianobalani.int.zone";
allow-update { dns_interno; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "interno/adrianobalani.int.rev";
allow-update { dns_interno; };
};

};
// AQUI COMEÇA A VIEW EXTERNA SEGUE A MESMA SISTEMATICA DA VIEW ANTERIOR, POREM COM ALGUMAS DIFERENÇAS
view "externa" {
// TIPO DE CLIENTE QUE TERÁ ACESSO, NESSE CASO QUALQUER UM
match-clients { any; };
// SEM RECURSÃO, OU MELHOR RESOLUÇÃO DE NOMES
recursion no;
zone "adrianobalani.com.br" IN {
type master;
file "adrianobalani/adriano.zone";
allow-update { 200.200.200.2; 200.200.200.3; };
};
zone "8-1.200.200.200.in-addr.arpa" IN {
type master;
file "adrianobalani/adriano.rev";
allow-update { 200.200.200.2; 200.200.200.3; };
};
};
Pronto, está criado as Views, para uma melhor organização foi criado dentro do diretorio dos arquivos de zona dois subdiretorios /var/named/interno e /var/named/adrianobalani, sendo um responsavel por armazenar os arquivos de zona interno e outro as externas.
Essa foi uma das maneiras em que eu consegui diminuir o uso externo dos Dns's da empresa, sendo assim tivemos um excelente ganho de desempenho, diminuindo quase a zero as respostas negativas e ganhando muita velocidade, porem, abaixo seguem algumas regras do iptables para diminuir as tentativas de DOS e Envenenamento de Cache.

1.iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --update --seconds 10 --hitcount 3 -j DROP
2.iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --set -j ACCEPT
fonte: http://petryx.blogrs.com.br/2009/03/05/bloqueando-ataque-dns-query-cache-nsin-denied/
Essas regras exigem um tempo minimo de conexão de 10 as conexões que não respeitaram seram bloqueadas.

Espero poder contribuir, estou trabalhando uma maneira de integra-lo com dhcpd e Active Directory, para fazer buscas mais conclusivas na rede interna, e com o dhcpd para adicionar os micros direto na zona direta e reversa.

terça-feira, 23 de junho de 2009

Mysql, comando via console, parte 2.

Dando continuidade ao artigo anterior, esse artigo tem por objetivo descrever novos comandos, porem um pouco mais avançados, vale salientar que os comandos são bastantes flexíveis trazendo a tona uma gama de possibilidades de usar, cabendo a cada um usar a criatividade. Porem tomar muito cuidado com alguns comando aqui descrito, pois no console não tem crtl+z. Como já disse anteriormente muito cuidado com os comandos, faça-os após ter certeza do que está fazendo. Abaixo segue a lista de comandos e um breve comentário de cada um:

mysql> create user usuario;
Comando utilizado para criação de um usuário que será utilizado para a conexão com nosso Banco de Dados, pois não é aconselhável usar o root do mysql para fazer tal serviço, principalmente se for para conexão em paginas da internet.
mysql> GRANT ALL PRIVILEGES ON banco_de_dados.* usuario@localhost IDENTIFIED BY 'senha' WITH GRANT OPTION;
O comando acima descrito, dá todos os privilégios ao nosso usuário criado internamento no Mysql, para ele poder fazer todas as transações possíveis como incluir, excluir, alterar, listar dados dentre outras.
mysql> flush privileges;
Comando para dar funcionalidade ao comando acima.
mysql> drop tabela;
Comando utilizado para apagar uma tabela.
mysql> drop banco_de_dados;
Comando utilizado para apagar um Banco de Dados.
mysql> select * from tabela;
Comando sql que mostra todos os dados da Tabela.
mysql> select * into outfile 'arquivo.txt' from tabela;
Exporta todos os dados da tabela para o arquivo txt arquivo.txt.
mysql> select distinct nome from tabela;
O comando acima lista todo o conteúdo da tabela, com referencia ao campo nome, porem ele não repete os nomes se o mesmo tiver mais que uma ocorrência.

Muito cuidado com os comandos, e dependendo da versão do seu Mysql alguns comandos tem que ser em maiúsculo, até o próximo e que a força esteja com você.

segunda-feira, 22 de junho de 2009

Mysql, comando via console, parte 1.

Confesso que o Phpmyadmin é muito fácil e amigável para gerenciar bancos de dados do que via console, porem há casos e casos, aqui vou mostrar alguns comandos uteis pra quem trabalha com o Mysql ou gerencia servidor com ele instalado. Todo comando abaixo foi testado e usado no Linux, porem o Console do Mysql tanto para Windows e Linux é igual, nunca usei ele no Windows, mas acho que deve ser igual para acessa-lo. Esse artigo leva em consideração você já tenha o Mysql instalado e rodando.
1º Entrar no console:
# mysql -p
Com esse comando será solicitado a senha do root do Mysql (Administrador).
2º Criar Banco de dados:
mysql> create database nome_do_banco;
Todo comando com tem que ter o ";" no final para delimitar o comando.
3º Listar Banco de Dados existentes:
mysql> show databases;
Esse comando irá listar todos os Bancos de Dados do Mysql inclusive os de uso dele.
4º Selecionar um Banco de Dados:
mysql> use nome_do_banco;
Esse comando seleciona um banco para se faze alterações, como criar tabelas, apagar tabelas, zerar o conteúdo de tabelas e outras coisitas mais.
5º Criar tabela:
mysql> create table tabela;
Antes de executar esse comando deve-se executar o comando anterior, ou melhor, selecionar um Banco de Dados para criar uma tabela.
6º Exibir tabelas de um Banco de Dados:
mysql> show tables;
Porem esse comando não tem efeito se não for selecionado um Banco de Dados antes.
7º Ver os campos de uma tabela:
mysql> describe tabela;
Como afirmado antes, esse comando não tem efeito sem selecionar um Banco de Dados antes.
8º Criar uma tabela com os respectivos campos:
mysql> CREATE TABLE funcionarios (
codigo int(5) NOT NULL auto_increment,
nome varchar(40) NOT NULL default '',
cargo varchar(25) NOT NULL default '',
setor varchar(25) NOT NULL default '',
PRIMARY KEY (codigo) );

Eu ainda não tentei criar uma tabela e depois criar seus respectivos campos, o metodo acima cria a tabela já com seus campos, e cada um com seu tipo de dado, porem os tipos de dados é materia para outro artigo.
Até o proximo, e que a força esteja com você!

quarta-feira, 25 de fevereiro de 2009

Exportar Banco de Dados Sqlite para arquivo .sql ou Mysql

Exportar banco de dados SQLite para arquivo .sql
A dica consiste em exportar a estrutura de um banco de dados, como tabelas e dados para um arquivo .sql, sendo muito útil para backup e possíveis troca de SGBD. Dentro do diretório onde está o arquivo .db ou .sqlite, digite:

# sqlite3 meubanco.db .dump > meubanco.sql

Pronto, seu banco foi exportado! Nunca se esqueça que esses comandos devem ser executados como usuário root.

Dica dentro da ~Dica... ;)

Se quiser exportar para o MySQL:

1 - crie o banco:

# mysql -p
mysql> create database meubanco;

2 - no prompt digite o seguinte comando:

# mysql -h localhost -u root -psenha meubanco > meubanco.sql

Pronto! É exportado para o MySQL.

Até a próxima.

Adriano R. Balani

Mysql, comando via console, a saga continua! parte 3

Quando eu administrava os servidores de uma empresa que eu trabalhava,  certo dia uma parte do site parou de funcionar, quando vi foi uma t...