Pesquisar este blog

segunda-feira, 17 de agosto de 2009

Samba PDC - Fácil e Rápido

Instalando os pacotes

Começamos instalando os pacotes necessários para o funcionamento de seu Samba como servidor e cliente.

  1. apt-get install samba samba-common smbclient smbfs

Após a instalação, não se preocupe com as opções que forem pedidas, pois iremos configurar o arquivo manualmente. Primeiro passo é fazer um backup do arquivo de configuração do Samba.

  1. cp /etc/samba/smb.conf /etc/samba/smb.bkp.conf

Agora apague todo o conteúdo dentro do arquivo /etc/samba/smb.conf com o comando:

  1. echo "" > /etc/samba/smb.conf

Agora edite o arquivo:

  1. vim /etc/samba/smb.conf

Copie e cole o conteúdo a seguir em seu arquivo:

global

# Nome do seu Servidor

comment = Servidor SAMBA PDC

# Domínio do servidor PDC

workgroup = domínio

# Indica ser obrigatório o uso de usuário e senha

security = user

os level = 100

announce as = NT Server

domain logons = yes

# Qual script será executa a ser logado %U significa nome do usuário

logon script = %U.bat

# Opções principais para se tornar o PDC

domain master = yes

local master = yes

preferred master = yes

encrypt passwords = yes

keep alive = 20

debug level = 3

log file = /var/log/samba_log.%u

null passwords = no

unix password sync = yes

socket options = IPTOS_LOWDELAY TCP_NODELAY

# Hosts Liberados

hosts allow = 192.168.1. 127. 192.168.0.

# Hosts Bloqueados

hosts deny = 192.168.0.3 192.168.0.4

#=========== Compartilhamento de Diretórios ===============

homes

comment = Pastas dos Usuários

public = no

browseable = no

writeable = yes

#Caminho para os scripts de logon

netlogon

comment = Compartilhamento de Scripts

# Não esquece de criar a pastas e colocar os scripts dentro

path = /etc/samba/scripts/

public = no

browseable = no

writeable = no

Diretório Compartilhado

comment = Compartilhamento

path = /mnt/compartilhado

browseable = yes

valid users = @grupos

writeable = yes

write list = @users

force create mode = 0770

force directory mode = 0770

Reinicie o serviço Samba:

  1. /etc/init.d/samba stop
  2. /etc/init.d/samba start

Configurando o Samba para receber Windows XP

Primeiro passo é adicionar usuários no Linux:

  1. adduser usuário

Logo após adicione ao Samba:

  1. smbpasswd -a usuário

O parâmetro "-a" indica para adicionar o usuário.

Este comando é "o pulo do gato", é o ponto chave para que as máquinas funcionem. É necessário adicionar o hostname das máquinas Windows XP para que funcione o domínio nas mesmas. Se você não sabe como ver isso no Windows XP, siga os passos a seguir:

Clique no menu "Iniciar", logo após clique em "Configurações", "Painel de Controle", depois em "Sistema".

Iniciar -> Configurações -> Painel de Controle -> Sistema

Agora nas etiquetas em cima, clique em "Nome do Computador".

Em Frente ao "Nome completo do Computador" é o hostname.

Voltando ao Samba...

Primeiro crie o grupo "maquinas":

  1. addgroup maquinas

Agora adicione a máquina no Linux, não esqueça do "$" após o nome, pois isso indica que é uma máquina e não um usuário.

  1. useradd -d /dev/null -g maquinas -s /bin/false nome_da_maquina$

Agora adicione ao Samba, perceba que não é necessário colocar o "$" após o nome do host:

  1. smbpasswd -a -m nome_da_maquina

Pronto, seu Samba PDC com Windows XP já está adicionado e funcionando!

Configurando o Windows XP para domínio

Clique no menu "Iniciar", logo após clique em "Configurações", "Painel de Controle", depois em "Sistema".

Iniciar -> Configurações -> Painel de Controle -> Sistema

Agora nas etiquetas em cima clique em "Nome do Computador".

Clique em "Alterar".

Na opção "Membro de", selecione "Domínio".

Coloque o nome do domínio que você escolheu no Samba.

Clique em OK e pronto.


Fonte: http://sergioaraujo.pbworks.com/Servidor-Samba-PDC-para-windows-em-3-passos

todos os créditos ao autor.

quinta-feira, 6 de agosto de 2009

Utilizando o TCPdump

O tcpdump é um dos mais, se não o mais "famoso" sniffer para sistemas GNU/Linux. Com ele podemos realizar análises de redes e solucionar problemas. Sua utilização é simples e sem mistérios, bastando apenas ter os conhecimentos básicos de redes TCP/IP. Esta dica é apenas uma introdução deste sniffer, maiores informações e documentação à seu respeito podem ser encontradas em seu site oficial:
A instalação do tcpdump em sistemas Debian é super simples, bastando executar o comando abaixo como super usuário (root):

# apt-get install tcpdump

Para iniciarmos a utilização do tcpdump precisamos especificar a interface de rede que queremos analisar com o parâmetro -i seguido da interface desejada, por exemplo, se quisermos analisar todo o tráfego que passa pela interface eth0, executaríamos a seguinte linha de comando:

# tcpdump -i eth0

Conexões de origem podem ser monitoradas utilizando o parâmetro src host, um exemplo simples seria monitorarmos o tráfego que vem de 192.168.0.9 para nosso computador, com o ip 192.168.0.2. A linha de comando ficaria da seguinte forma:

# tcpdump -i eth0 src host 192.168.0.9

Se quisermos monitorar as conexões especificando um host de destino, poderíamos fazê-lo com o parâmetro dst host, o exemplo abaixo mostra todo o tráfego do host 192.168.0.2 com 192.168.0.1, no caso, 192.168.0.1 é nosso gateway.

# tcpdump -i eth0 dst host 192.168.0.1

Com tcpdump também podemos especificar exceções com o parâmetro not host, por exemplo, em nosso servidor queremos ver todo o tráfego que se passa em sua interface, exceto o de 192.168.0.8, faríamos da seguinte forma:

# tcpdump -i eth0 not host 192.168.0.9

No tcpdump podemos também especificar portas de origem e destino com os comandos src port e dst port, um exemplo seria monitorarmos o tráfego destinado à porta 80 (http), para isso utilizaríamos a linha de comandos abaixo e navegaríamos em um site qualquer:

# tcpdump -i eth0 dst port 80

Para verificarmos o tráfego da porta de origem 32881 por exemplo, faríamos da seguinte forma:

# tcpdump -i eth0 src port 32881

Muitas opções avançadas podem ser obtidas com o tcpdump, essas são algumas opções básicas, porém fundamentais para quem quer aprender sobre sniffers.

Retirado de:
http://www.vivaolinux.com.br/dica/tcpdump-Monitorando-conexoes/
todos os créditos ao autor.

terça-feira, 21 de julho de 2009

Instalação do Debian para iniciantes.

Linux -
Linux é um termo utilizado para designar o kernel (núcleo) de sistemas operacionais desenvolvido pelo finlandês Linus Torvalds. Este termo também é utilizado para designar os sistemas operacionais baseados no núcleo linux agregado a outros programas (distribuições linux).

O GNU/Linux é um sistema operacional de livre distribuição e utilização, regido pela GPL:

A GPL (General Public License) é baseada em quatro liberdades:

1. A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)
2. A liberdade de estudar como o programa funciona e adaptá-lo para às suas necessidades (liberdade nº 1).
O acesso ao código-fonte é um pré-requisito para esta liberdade.
3. A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).
4. A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a
comunidade se beneficie deles (liberdade nº 3). O acesso ao código-fonte é um pré-requisito para
esta liberdade.

Com a garantia destas liberdades, a GPL permite que os programas sejam distribuídos e reaproveitados, mantendo, porém, os direitos do autor por forma a não permitir que essa informação seja usada de uma maneira que limite as liberdades originais.

Instalação do Debian

Apresentados aos conceitos básicos, vamos à instalação do sistema:

Os arquivos do debian estão disponíveis para download no site oficial:
http://www.debian.org/

O sistema possui diversas versões, chamadas de ports que são otimizadas para cada arquitetura de processamento, portanto deve-se escolher para download a versão correta para sua arquitetura. As principais são:

x86 - são suportados praticamente todos os processadores baseados em x86 (IA-32). Pode ser utilizada
com todos os processadores da serie Pentium e Core da Intel e também AMD como Athlon e Phenom.
AMD 64 - O objetivo é dar suporte para programas do espaço de usuário em 32-bit e 64-bit nesta
arquitetura. Este porte dá suporte para os processadores Opteron, Athlon e Sempron 64-bit da AMD
e processadores da Intel com suporte a EM64T, incluindo o Pentium D e várias séries Xeon e Core 2.
Processadores de 32 bits têm uma limitação de endereçamento de memória RAM de 4GB. Portanto, se você
possui mais do que 4GB de memória RAM, utilize este port.

Após escolher sua arquitetura, é hora de gravar uma mídia a iniciar a instalação. O debian pode ser instalado a partir de diversos tipos de mídia: cd, dvd, pen drive, pela internet ou até mesmo pode ser iniciado em um executável windows.

Para iniciar a instalação basta iniciar o computador e configurá-lo para que inicie a partir da mídia que contém o Debian.

Na primeira tela digite install. Em caso de falha, pode-se recorrer à opção acpi=off.

#install
#install acpi=off

Selecione o idioma do sistema na tela abaixo:

A tela abaixo contém as opções de teclado.


O próximo passo será a configuração da rede.
Em caso de uma rede onde exista um serviço de DHCP ativo, a rede será configurada automaticamente.

Ao selecionar a opção de configurar manualmente a rede, surgirão as seguintes opções:
Endereço IP:

Máscara de Rede:

Gateway:

Servidor de nomes (DNS):

Hostname (nome do computador):

Informe o nome do dominio local (caso exista):

Particionamento dos discos:
O particionador utilizado na instalação do debian é o cfdisk:
Para a correta utilização do sistema, precisamos criar no mínimo duas partições: Uma partição swap e uma partição para os arquivos do sistema (EXT3).
A partição swap é destinada a troca de arquivos pelo sistema operacional, ela funciona como uma extensão da RAM.
EXT3 é o sistema de arquivos mais utilizados nos sistemas operacionais linux atuais. O ext3 está para o linux como o NTFS está para o windows XP.

Para uma intalação básica, selecione a opção todos os arquivos em uma unica partição:
Para finalizar, selecione a opção Finalizar o particionamento e gravar as mudançar no disco.

Confirme as alterações e o particionador as executará.


Instalando o Sistema em seu disco já particionado.
O GNU GRUB é um gerenciador de boot, utilizado para controlar o início dos sistemas operacionais do computador. No caso de dual boot, ou seja, a possibilidade de utilizar mais de um sistema operacional no computador, faz-se necessário o uso de um gerenciador como o GNU GRUB ou LILO.
Remova a mídia e utilize a opção continuar.




Ao selecionar sim, o sistema operacional assumirá que o relógio da sua máquina está configurado com o horário mundial de Greenwich e, portanto, fará a tradução necessária para o seu fuso horário. Neste caso devemos selecionar a opção Não.

Ao selecionar Leste, o configurador utilizará o horário de Brasília.

Defina a senha para o root (superusuário).
O usuário root é o administrador do sistema, aquele que possui permissões totais.

A senha deverá ser informada duas vezes a fim de evitar erros de digitação.


O usuário root deverá ser utilizado apenas para funçõe de administração do sistema, as demais atividades devem ser realizadas por um usuário comum (sem permissões de alteração de configurações) que será criado nas próximas telas:


Repita o nome do novo usuário.


Informe a senha do novo usuário.


Repita a senha do novo usuário.


Você poderá carregar mais opções ou programas ao adicionar um cd de aplicativos à instalação. Neste caso, esta opção não será necessária:


O sistema irá tentar instalar atualizações e drivers a partir de um espelho de rede, caso ele não consiga conexão com este espelho a instalação pode continuar normalmente.


Selecione os serviços que deseja instalar em seu computador:

Finalizada a configuração, basta reiniciar a máquina
e o sistema será conduzido à seguinte tela de login:



quarta-feira, 1 de julho de 2009

Como configurar o arquivo .qmail

Como configurar o arquivo .qmail

Explicação sobre o que é o .qmail: quando chega uma mensagem (e-mail) para um usuário, o sistema procura um arquivo chamado .qmail no diretório HOME do usuário, onde cada linha desse arquivo é usada pelo sistema como uma instrução sobre o que fazer com essa mensagem (e-mail).

SE não existir arquivo .qmail, a mensagem é entregue num arquivo chamado Mailbox, onde ficarão acumuladas todas as mensagens recebidas.

Como criar e configurar o .qmail

O .qmail é um arquivo texto, e pode ser editado com qualquer editor de texto (emacs, vi, textedit, pico, nano, etc.). Se ele não existe, você pode criá-lo como costuma fazer com arquivos comuns.

Instruções no .qmail

Cada linha do .qmail é vista como uma instrução. A linha não tem limite de comprimento e não pode ser continuada, ao contrário de arquivos contendo scripts. O sistema seguirá essas instruções em seqüência e caso haja várias instruções de entrega, a mensagem será entregue várias vezes.

Instruções de entrega direta

Quando existe um arquivo .qmail, uma mensagem só é entregue se houver uma instrução de entrega. Existem duas formas de entrega direta:

* Arquivo

Cada mensagem será adicionada a esse arquivo, e o formato de armazemamento é o mbox (para mais informações sobre esse formato, digite man mbox em uma linha de comando).Esse arquivo pode ser lido por qualquer programa leitor de mail. O formato da linha:

caminho-do-arquivo/nome-do-arquivo

Essa linha NÃO deve terminar com o caracter barra (”/”) e nome-do-arquivo é o arquivo do tipo mbox que conterá as mensagens, caso ele não exista o qmail irá criá-lo assim que uma mensagem chegar. O uso mais comum é um arquivo chamado Mailbox, no diretório HOME do usuário. A linha correspondente é:

./Mailbox

Cuidado: se no .qmail aparecerem 284 linhas ./Mailbox, cada mensagem será entregue 284 vezes nessa caixa de correio.

* Diretório

Cada mensagem será gravada em um arquivo separado dentro desse diretório. Esse diretório deverá tem o formato maildir (para mais informações sobre esse formato, digite man maildir em uma linha de comando) , que deverá ser criado usando o comando: maildirmake nome-do-diretório . Esse diretório pode ser lido por programas como por exemplo o pinq. O formato dessa linha deve ser:

caminho-do-diretório/nome-do-diretório/

Essa linha deve terminar com o caracter barra (”/”).O comando usepop3 cria um diretório com o formato maildir chamado Maildir dentro do HOME do usuário e também cria o arquivo .qmail para salvar as mensagens nesse diretório

Instruções de redirecionamento

Isto é simplesmente um endereço (completo) de e-mail. O efeito é mandar uma cópia de cada mensagem para esse endereço.O formato dessa linha deve ser:

nome@dominio

Envio para programas

Uma linha que começa com o caractere | diz para enviar cada mensagem para um programa; mais especificamente, o que segue o | é interpretado como uma linha do shell, com a mensagem na entrada padrão. Para aprender a usar isso com detalhes, digite man qmail-command em uma linha de comando. O formato da linha deve ser:

|caminho-do-programa/nome-do-programa

Abaixo seguem algumas linhas bastante populares:

./Mailbox

Envia os e-mails para o arquivo Mailbox que está no diretório HOME do usuário.

./Maildir/

Envia os e-mails para o diretório Maildir que está no diretório HOME do usuário. Essa linha é necessária para pegar os e-mails usando o protocolo POP (o Thunderbird é um exemplo de programa para ler e-mails que usa esse protocolo), e também para acessar os e-mails pelo webmail.

minhacasa@saopaulo.com.br

Envia os e-mails para o endereço minhacasa@saopaulo.com.br.

| ./scripts/mailfilter

Executa o script mailfilter que está no diretório scripts dentro do HOME do usuário.

Cuidados e observações:

1. Lembre, para cada linha do arquivo .qmail será gerada uma cópia do e-mail.

2. Se o primeiro caractere da linha for um # , a linha é ignorada.

3. A primeira linha não pode estar em branco.

4. O .qmail não pode ter permissão de execução


Conteúdo retirado de: http://si.ime.usp.br , todos os direitos ao autor.

segunda-feira, 29 de junho de 2009

Compactando e descompactando arquivos com o bzip2 (.bz2)

As vezes nos deparamos com arquivos compactados e não sabemos como lidar corretamente com eles. Segue uma breve explicação do bzip2, que gera arquivos com a extensão .bz2.

Na maior parte das vezes o utilizaremos da seguinte forma:

$ bzip2 -z arquivo ; para compactar um arquivo
$ bzip2 -d arquivo.bz2 ; para descompactar um arquivo

$ bzip2 help
  • -h --help : imprime a página de ajuda
  • -d --decompress : força descompactação do arquivo
  • -z --compress : força compactação do arquivo
  • -k --keep : mantém (não deleta) os arquivos de entrada
  • -f --force : sobrescreve arquivos de saída
  • -t --test : testa a integridade do arquivo compactado
  • -c --stdout : saída para saída padrão
  • -q --quiet : omite mensagens de erro não críticas.
  • -v --verbose : aumenta verbose (um segundo -v aumenta ainda mais)
  • -L --license : exibe a versão do software e a licença
  • -V --version : exige a versão do software e a licença
  • -s --small : usa menos memória (no máximo 2500k)
  • -1 .. -9 : seta o tamanho do bloco de 100k .. 900k
  • --fast : alias para -1
  • --best : alias para -9

Dica escrita por mim e publicada no site vivaolinux.com.br em 20/11/2008

quinta-feira, 18 de junho de 2009

Linux - Iptables

Configurando o Iptables e Fazendo Regras Básicas


Já está mais do que comprovado: Hoje em dia uma máquina sem conexão com a internet não tem maior valia do que uma máquina de escrever. É certo que os micros precisam se conectar para trocar informações, ou mesmo somente para baixar um driver para que seu dispositivo de hardware funcione. A partir do momento em que a máquina tem uma conexão com a internet, está sujeita a ataques de crackers ou scriptie kids. Se um micro pessoal está sujeito a ataques, que dirá então uma rede de computadores. Existem vários sujeitos prontos para se aproveitarem de máquinas vulneráveis. Para evitar intempéries como estas o usuário ou administrador da rede precisa implantar políticas de segurança. Uma destas políticas é a implantação de um firewall.
Firewall, como o nome diz, é uma porta de fogo. Uma muralha onde somente o que está
devidamente autorizado pode entrar ou sair.


Um sistema bem servido de firewall


Existem firewalls para todos os sistemas operacionais mas creio que nenhum deles esteja tão bem servido quanto o Linux. Sem desmerecer outros mas a solução
Iptables ao meu ver é uma das melhores, senão a melhor que eu já vi para segurança de sistemas. A grande vantagem do Iptables é a sua estabilidade, rapidez, eficiência reconhecida e relativa facilidade de administração devido a sua configuração poder ser feita através de scripts. Outras características do Iptables:


.: Suporte aos protocolos TCP, UDP, ICMP
.: Pode se especificar portas de endereço e de destino.
.: Suporta módulos externos como FTP e IRC
.: Suporta um número ilimitado de regras por CHAINS ( correntes ).
.: Pode se criar regras de proteção contra ataques diversos
.: Suporte para roteamento de pacotes e redirecionamento de portas.
.: Suporta vários tipos de NAT, como o SNAT e DNAT e mascaramento.
.: Pode priorizar tráfego para determinados tipos de pacotes.
.: Entre outras o Iptables já tem suporte a IPV6, através do programa
ip6tables.

O Iptables acompanha o kernel 2.4.x. Antes dele existia o
Ipchains ( kernel 2.2.x ) e anteriormente ainda existia o Ipfwadm. Na realidade no kernel 2.4.x ainda existem os filtros Ipchains e Ipfwadm por motivos de compatibilidade mas ambos não estão ativos. Caso estejam ativos ( isto pode acontecer com o Ipchains ) é necessário desativá-los para que o Iptables possa funcionar plenamente.


Funcionamento


Através de regras poderemos fazer com que os pacotes possam ser ou não recebidos a rede toda, a determinada máquina, interface ou mesmo porta de conexão. O Iptables trabalha através de
Tabelas, Chains e Regras:


Tabelas: Existem 3 tabelas possíveis de serem utilizadas no Iptables, sendo que uma delas, a
mangle raramente é usada, restando a filter, que é a padrão, utilizada nos tráfegos de dados comuns, sem ocorrência de NAT. Quando não especificamos qual tabela a ser utilizada é ela que será ativada. A outra geralmente utilizada é a nat, que como o próprio nome diz, usada quando há ocorrência de NAT.

Chains: Através delas podemos especificar a situação do tratamento dos pacotes, seja qual tabela for.

Quando utilizamos a tabela nat as Chains possíveis são:

PREROUTING – Quando os pacotes entram para sofrerem NAT.
POSTROUTING – Quando os pacotes estão saindo após sofrerem NAT
OUTPUT – Pacotes que são gerados na própria máquina e que sofrerão NAT

Já com a tabela filter as Chains são:

INPUT - Pacotes cujo destino final é a própria máquina firewall.
OUTPUT – Pacotes que saem da máquina firewall
FORWARD – Pacote que atravessa a máquina firewall, cujo destino é uma outra máquina. Este pacote não sai da máquina firewall e sim de outra máquina da rede ou fonte. Neste caso a máquina firewall está repassando o pacote.


Regras: As regras de firewall geralmente são compostas de uma Tabela, Opção, Chain, Dados e Ação. Através destes elementos podemos especificar o que fazer com os pacotes.

Opções:

-P

Define uma regra padrão

-A

Acrescenta uma nova regra as existentes.
Este tem prioridade sobre a -P

-D

Apaga-se uma regra

-L

Lista as regras existentes

-F

Apaga todas as regras

-I

Insere uma regra nova

-h

Muito útil, pois mostra a ajuda

-R

Substitui uma regra

-C

Faz uma checagem das regras existentes

-Z

Zera uma regra específica

-N

Cria uma nova regra com um nome

-X

Exclui uma regra específica pelo seu nome


Dados:

-s : Especifica o origem do pacote. Este pode ser tanto uma rede ou host. Possíveis combinações podem ser:

-s 192.168.0.0/255.255.255.0

ou

-s 192.168.0.0/24

OBS: No segundo caso estamos especificando a máscara de rede conforme o número de bits 1, por exemplo:

Máscara de rede 255.0.0.0 = 8
Máscara de rede 255.255.0.0 = 16
Máscara de rede 255.255.255.0 = 24


No exemplo acima estamos especificando toda uma rede de máscara C, no exemplo abaixo especificamos um host:

-s 192.168.30.51/255.255.255.255

ou

-s 192.168.30.51

também pode ser assim:

-s 192.168.30.51/32

OBS: A máscara em números de bits 1 para host é 32.


Podemos especificar assim também:

-s www tccamargo.com


Podemos especificar qualquer origem também:

-s 0.0.0.0/0.0.0.0

ou

-s 0/0


-d : Especifica o destino do pacote. A sintaxe é a mesma do -s


-p : Protocolo usado na regra. Pode ser tcp, udp, icmp:

-p tcp
-p udp
-p icmp


-i : Interface de entrada, ou seja, placa de rede, modem ou interface de conexão que estará recebendo o pacote a ser tratado.

-i eth0
-i eth1
-i ppp0


-o : Interface de saída. As sintaxes são as mesmas que -i, sendo que neste caso estará enviando o pacote a ser tratado.


! : Exclui determinado argumento:

-i ! eth0 - Refere-se a qualquer interface de entrada exceto a eth0
-s ! 192.168.0.45 – Refere-se a qualquer endereço de entrada exceto o 192.168.0.45


--sport : Refere-se a porta de origem. Este deve vir acompanhado das funções -p tcp e -p udp :

-p tcp –sport 80 – Refere-se a porta de origem 80 sob protocolo tcp


--dport : Refere-se a porta de destino. Assim como a função –sport, ela trabalha somente com a -p tcp e -p udp. A sintaxe é similar a –sport


Através das funções –sport e –dport podemos especificar não só uma porta específica como também um range de portas:

--sport 33435:33525


Ações:

As ações sempre vem após o parâmetro -j e geralmente são:

ACCEPT – Aceita e permite a passagem do pacote.
DROP – Não permite a passagem do pacote e abandona-o não dando sinais de recebimento.
REJECT – Assim como o DROP, não permite a passagem do pacote, mas envia um aviso ( icmp unreachable )
LOG – Cria um Log referente a regra em /var/log/messages


Com estes fatores podemos criar as nossas regras com a seguinte composição:

# iptables -A FORWARD -s 192.168.0.45 -p icmp -j DROP
Sendo: -A ( opção ) / FORWARD ( Chain ) / -s 192.168.0.45 -p icmp ( Dados ) -j DROP ( Ação )


No caso do exemplo a cima a regra determina que todos os pacotes icmp originários do endereço 192.168.0.45 devem ser barrados.


Salvando as regras


Depois das regras prontas podemos salvá-las com este comando:

# iptables-save >


Para recuperá-las use este comando:

# iptables-restore >


Outra forma seria fazer um script com as regras:

Corpo do Script

#!/bin/bash

#limpando tabelas
iptables -F &&
iptables -X &&
iptables -t nat -F &&
iptables -t nat -X &&

#liberando acesso interno da rede
iptables -A INPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT &&
iptables -A OUTPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT &&
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT &&

#compartilhando a web na rede interna
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE &&
echo 1 > /proc/sys/net/ipv4/ip_forward &&

# Protecao contra port scanners ocultos
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Bloqueando tracertroute
iptables -A INPUT -p udp -s 0/0 -i eth1 --dport 33435:33525 -j DROP

#Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP

#termina
echo "Iptables Pronto"


Salve-o com um nome sugestivo, como por exemplo “start-firewall”.

Dê permissão de execução:

chmod +x start-firewall


Pronto. Toda vez que quiser que ele seja habilitado é só executá-lo ( sempre como root ):

# start-firewall


Para não ter que ficar chamando o script toda vez que inicializar o sistema, podemos fazer com que ele seja ativado na inicialização. Para isso é preciso editar o arquivo

/etc/rc.d/rc.local e incluir o comando no final do arquivo.:-)



Compartilhamento de conexão, mascaramento e redirecionamento de pacotes


Verifique que nestas linhas do script exemplo:

iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE &&
echo 1 > /proc/sys/net/ipv4/ip_forward &&


Estou fazendo com que os micros de minha rede possam utilizar a internet através do roteamento dinâmico. A linha que habilita o redirecionamento de pacotes é essa:

echo 1 > /proc/sys/net/ipv4/ip_forward

Mas vale observar que se inserirmos somente esta linha no script, a cada vez que reiniciar o sistema será necessária a ativação do roteamento. Para que não percamos o roteamento é necessário editar o arquivo /etc/sysctl.conf e inserirmos ou modificarmos a linha do modo que fique assim:

net.ipv4.ip_forward= 1


Voltando a nossa regra do script exemplo, verificamos uma ação nova ( MASQUERADE ), servindo para que as máquinas da rede interna possam acessar a internet usando o IP externo do Gateway. Deste modo as máquinas da rede interna ficarão invisíveis para a rede externa. Para que uma máquina da rede interna possa executar serviços onde cuja execução necessita que o IP da máquina seja visível para redes externas, será necessário fazer um redirecionamento de IPs ou portas.

Digamos que uma máquina de IP 192.168.0.45 precise executar um serviço de FTP, na qual é necessária a visibilidade da máquina. Podemos fazer com que a máquina firewall, cujo IP externo seja 200.135.100.102 receba estes pacotes e retransmita:

iptables -t nat -A PREROUTING -s 200.135.100.102 -i eth0 -j DNAT –to 192.168.0.45
iptables -t nat -A POSTROUTING -s 200.135.100.102 -o eth0 -p tcp –dport 21 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.45 -o eth0 -j SNAT –to 200.135.100.102
iptables -t nat -A POSTROUTING -s 192.168.0.45 -o eth0 -p tcp –dport 21 -j ACCEPT


Veja que nestas regras temos mais duas ações novas SNAT e DNAT:

SNAT – Aplicada quando queremos alterar o endereço de origem do pacote. Aqui nós utilizamos para fazer o mascaramento. OBS: Somente a Chain POSTROUTING pode ser usada na ação SNAT.
DNAT – Aplicada quando desejamos alterar o endereço de destino do pacote. Esta ação é utilizada para fazer redirecionamento de portas, redirecionamento de servidor, load balance e proxy transparente. As Chains que podem ser utilizadas para esta ação são PREROUTING e OUTPUT.

Além destas duas ações, existe também a REDIRECT que pode ser utilizada para fazer redirecionamento de portas. Quando fazemos um redirecionamento de portas usamos o dado –to-port após a ação REDIRECT:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT –to-port 3128

#Esta regra faz com que todos os pacotes direcionados a porta tcp 80 sejam redirecionados para a porta 3128.

Quando utilizamos a tabela nat, é preciso inserir o parâmetro -t para especificar a tabela:

-t nat

Perceba que quando omitimos este parâmetro usamos a tabela filter por padrão.
Além destas ações, veja que existe também um dado novo:

--to : Este dado serve para definir o IP ou porta de destino numa ação SNAT ou DNAT:

iptables -t nat -A PREROUTING -p tcp -d 200.135.100.102 –dport 80 -j DNAT –to 192.168.0.45

# Esta regra faz com que os pacotes direcionados a porta tcp 80 sejam redirecionados para a máquina 192.168.0.45 . Como não especificamos a porta, a máquina de destino receberá o pacote na porta 80

Além do IP podemos definir a porta deste endereço na ação:

iptables -t nat -A PREROUTING -p tcp -d 200.135.100.102 –dport 80 -j DNAT –to 192.168.0.45:3128

# Aqui, assim como na regra anterior, os pacotes são redirecionados para a máquina 192.168.0.45 mas neste caso especificamos a porta, ou seja, porta 3128


Algumas opções e observações


Vale fazer umas pequenas observações a respeito da ordem das regras e manejo. Uma delas é que a a primeira regra tem prioridade sobre a segunda caso ambas estejam em conflito, veja:

iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j DROP


A que terá valia será a primeira, ou seja:
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j ACCEPT


Podemos ver todas as regras em andamento ao darmos o comando:

iptables -L


Com os comandos abaixo limpamos todas as tabelas e regras:

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X


Para que tudo possa funcionar a contento é necessário primeiramente que todos os módulos necessários estejam carregados:

modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_tables
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_MIRROR
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tcpmss
modprobe ipt_tos
modprobe ipt_unclean
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat


É importante ressaltar que as regras devem seguir uma ordem definida, ou seja, a regra posterior deve estar de acordo com a regra anterior para que tudo corra sem problemas.:

iptables -P FORWARD -j DROP
iptables -A FORMARD -s 192.168.0.0/24 -d 10.0.0.0/8 -j ACCEPT


Através desta regra, determinamos que todo o repasse de pacotes seja bloqueado, depois permitimos que possa repassar pacotes da rede 192.168.0.0 para a rede 10.0.0.0 mas esta não poderá retornar os pacotes. Então o correto seria inserir mais uma regra aqui:

iptables -A FORWARD -d 192.168.0.0/24 -s 10.0.0.0/8 -j ACCEPT


Para que a rede 10.0.0.0 possa repassar os pacotes, fazendo deste jeito com que as redes possam conversar sem problemas.

Ao fazer as regras lembre-se de primeiro bloquear, depois abrir o acesso.:

iptables -P FORMARD -j DROP
iptables -A FORWARD -s 192.168.0.45 -p tcp –sport 80 -j ACCEPT


Considerações finais


Iptables tem infinitas possibilidades de regras. É impossível citar todos os parâmetros e regras que podem ser utilizados, pois daria uma verdadeira bíblia. Cabe ao bom administrador estudar com afinco para poder aplicar as regras mais convenientes para a sua rede. E o usuário final tem em mãos um excelente recurso para deixar sua máquina protegida de ataques externos. Esta é a grande vantagem do Iptables, pode se aplicar regras conforme a conveniência da rede e usuários. Sem dúvida nenhuma é uma ferramenta poderosíssima.



Exemplos de regras comumente utilizadas


Nas linhas abaixo incluí algumas regras que são comumente utilizadas. Algumas destas podem ser úteis para fazer o seu firewall mas lembre-se de adaptá-las para sua rede/interface/máquina antes de aplicá-las:


#Libera o apache pra web
iptables -A INPUT -p tcp --destination-port 6080 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT

#Libera o loopback
iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT

#Bloqueando todos os endereços vindo de uma determinada rede para a minha máquina
iptables -A INPUT -s 10.0.0.0/8 -j DROP

#Liberando o endereço vindo de uma rede para a minha máquina
iptables -A INPUT -s 10.0.0.1 -j ACCEPT

#Gerando Logs de Portas proibidas
iptables -A INPUT -p tcp --dport 21 -j --log-prefix "Serviço de FTP"

#Gerando log de Backdoors
iptables -A INPUT -p tcp --dport 5042 -j LOG -log-prefix "Wincrash"
iptables -A INPUT -p tcp --dport 12345 -j LOG -log-prefix "backOrifice"
iptables -A INPUT -p tcp --dport 12346 -j LOG -log-prefix "backOrifice"

#Habilitando porta de FTP
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 21 -j ACCEPT

#Habilitando porta de SSH
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 22 -j ACCEPT

#Habilitando porta de SMTP
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 25 -j ACCEPT

#Habilitando porta de DNS
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 53 -j ACCEPT

#Habilitando porta de POP3
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 110 -j ACCEPT

#Habilitando porta de DNS (UDP)
iptables -A INPUT -p udp -s 192.168.0.45 --source-port 53 -j ACCEPT

#Redirecionar Porta
iptables -t nat -A PREROUTING -s IP_NET -i EXT_INT -j DNAT --to IP_DESTINO
iptables -t nat -A POSTROUTING -s IP_NET -o EXT_INT -p tcp --dport PORT -j ACCEPT
iptables -t nat -A POSTROUTING -s IP_DESTINO -o EXT_INT -j SNAT --to IP_NET
iptables -t nat -A POSTROUTING -s IP_DESTINO -o EXT_INT --p tcp --dport PORT -j ACCEPT

IP_NET = IP válido da internet.
EXT_INT = Interface da Internet.
IP_DESTINO = IP inválido da Internet ou melhor ip da rede que vai fazer redirecionamento.
PORT = porta

#Fazendo redirecionamento de portas
iptables -t nat -A PREROUTING -i FACE -p tcp --dport 80 -j REDIRECT --to-port 3128

FACE = interface de rede

#Bloqueando todos os pacotes originários da rede 10.0.0.0 para o host www.tccamargo.com
iptables -A FORWARD -s 10.0.0.0/8 -d www.tccamargo.com -j DROP

#Liberando todos os pacotes originários da rede 10.0.0.0 para o host www.tccamargo.com
iptables -A FORWARD -s 10.0.0.0/8 -d www.tccamargo.com -j ACCEPT

#Liberando todos os pacotes tcp destinados a porta 25
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT

#Liberando acesso interno da rede
iptables -A INPUT -p tcp --syn -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --syn -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j ACCEPT

#compartilhando a web na rede interna
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward &&

#Libera Bittorrent somente para esta maquina
iptables -A INPUT -p tcp --destination-port 6881:6889 -j ACCEPT

#Bloqueando tracertroute
iptables -A INPUT -p udp -s 0/0 -i eth1 --dport 33435:33525 -j DROP

#Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP

#Bloqueando uma máquina pelo endereço MAC
iptables -A INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

#Proteção contra IP Spoofing
iptables -A INPUT -s 172.16.0.0/16 -i ext_face -j DROP
iptables -A INPUT -s 192.168.0.0/24 -i ext_face -j DROP
iptables -A INPUT -s 192.168.0.0/24 -i ext_face -j DROP

< ext_face =" São">

#Proteção contra Syn-floods
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

#Proteção contra port scanners ocultos
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

#Proteção contra ping da morte
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

#Bloqueando ping de um ip
iptables -A INPUT -p icmp -s 192.168.1.1/24 -j DROP

#Bloqueando pacotes fragmentados
iptables -A INPUT -i INTEXT -m unclean -j log_unclean
iptables -A INPUT -f -i INTEXT -j log_fragment

< intext =" Interface">

#Anulando as respostas a ICMP 8 (echo reply)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

Todos os direitos ao autor. Texto retirado de:

www.tccamargo.com

segunda-feira, 15 de junho de 2009

Instalação do Zenoss

Este guia irá ensinar como fazer a instalação do Zenoss a partir dos fontes em um servidor Debian.

Primeiramente, instale e configure o Debian à sua maneira. Depois que tiver terminado, siga os próximos passos.

Preparação

1. Instale os pacotes build-essential e mysql-server-5.0:

# aptitude install build-essential mysql-server-5.0

2. Mude a senha do usuário root do MySQL (o instalador do Zenoss não aceita root com senha em branco):

# mysqladmin -u root password ‘nova-senha’

3. Instale os pacotes libmysqlclient15-dev, swig, autoconf, snmp e libsnmp9-dev:

# aptitude install libmysqlclient15-dev swig autoconf snmp libsnmp9-dev

Configuração do Debian

1. Crie um usuário chamado zenoss e defina sua senha:

# useradd -d /home/zenoss zenoss
# passwd zenoss

2. Configure as variáveis de ambiente a seguir (copie as linhas no arquivo /etc/profile). Note que a variável $ZENHOME aponta para o diretório no qual o Zenoss será instalado. Se você desejar instalar em outro lugar deve alterar este caminho:

export ZENHOME=/opt/zenoss
export PYTHONPATH=$ZENHOME/lib/python
export PATH=$ZENHOME/bin:$PATH

3. Crie o diretório de instalação do Zenoss e configure as permissões para o usuário do sistema:

# mkdir /opt/zenoss
# chown zenoss /opt/zenoss

Compilação e instalação do Zenoss

1. Mude para o usuário zenoss:

# su - zenoss

2. Faça o download do código fonte do Zenoss, extraia o arquivo .tar.gz, acesse o diretório e execute o instalador:

$ wget http://ufpr.dl.sourceforge.net/sourceforge/zenoss/zenoss-2.3.0.tar.gz
$ tar zxf zenoss-2.3.0.tar.gz
$ cd zenoss-2.3.0
$ ./install.sh

3. Responda às perguntas do instalador, indicando o caminho onde o Zenoss deverá ser instalado, o usuário administrador, senha e etc.

4. Ao término da instalação execute os seguintes comandos como root:

# chown root:zenoss /opt/zenoss/bin/zensocket
# chmod 04750 /opt/zenoss/bin/zensocket

5. Acesse o portal administrativo do Zenoss no endereço http://servidor:8080, informando o usuário e senha definidos no instalador

6. Inicie os serviços do Zenoss:

# $ZENHOME/bin/zenoss start

Texto retirado de :
http://www.zaeel.org/post/130
Todos os créditos ao autor.