domingo, 22 de março de 2009

Entendendo Estrutura de Diretório GNU/Linux

Diretório é o local utilizado para armazenar conjuntos arquivos para melhor organização e localização. O diretório, como o arquivo, também é "Case Sensitive" (diretório /teste é completamente diferente do diretório /Teste).

Não podem existir dois arquivos com o mesmo nome em um diretório, ou um sub-diretório com um mesmo nome de um arquivo em um mesmo diretório.

Um diretório nos sistemas Linux/UNIX são especificados por uma "/" e não uma "\" como é feito no DOS.

Diretório Raíz
Este é o diretório principal do sistema. Dentro dele estão todos os diretórios do sistema. O diretório Raíz é representado por uma "/", assim se você digitar o comando cd / você estará acessando este diretório.

Nele estão localizados outros diretórios como o /bin, /sbin, /usr, /usr/local, /mnt, /tmp, /var, /home,sub-diretórios pois estão dentro do diretório "/". A estrutura de diretórios e sub-diretórios pode ser identificada da seguinte maneira: etc. Estes são chamados de

/

/bin

/sbin

/usr

/usr/local

/mnt

/tmp

/var

/home

A estrutura de diretórios também é chamada de Árvore de Diretórios porque é parecida com uma árvore de cabeça para baixo. Cada diretório do sistema tem seus respectivos arquivos que são armazenados conforme regras definidas pela FHS (FileSystem Hierarchy Standard - Hierarquia Padrão do Sistema de Arquivos) versão 2.0, definindo que tipo de arquivo deve ser armazenado em cada diretório.

Diretório atual
É o diretório em que nos encontramos no momento. Você pode digitar pwd para verificar qual é seu diretório atual.

O diretório atual também é identificado por um "." (ponto). O comando comando ls . pode ser usado para listar seus arquivos (é claro que isto é desnecessário porque se não digitar nenhum diretório, o comando ls listará o conteúdo do diretório atual).

Diretório home
Também chamado de diretório de usuário. Em sistemas GNU/Linux cada usuário (inclusive o root) possui seu próprio diretório onde poderá armazenar seus programas e arquivos pessoais.

Este diretório está localizado em /home/[login], neste caso se o seu login for "joao" o seu diretório home será /home/joao. O diretório home também é identificado por um ~(til), você pode digitar tanto o comando ls /home/joao como ls ~ para listar os arquivos de seu diretório home.

O diretório home do usuário root (na maioria das distribuições GNU/Linux) está localizado em /root.

Dependendo de sua configuração e do número de usuários em seu sistema, o diretório de usuário pode ter a seguinte forma: /home/[1letra_do_nome]/[login], neste caso se o seu login for "joao" o seu diretório home será /home/j/joao

Diretório Superior
O diretório superior (Upper Directory) é identificado por .. (2 pontos).

Caso estiver no diretório /usr/local e quiser listar os arquivos do diretório /usr você pode digitar, ls .. Este recurso também pode ser usado para copiar, mover arquivos/diretórios, etc.

Diretório Anterior
O diretório anterior é identificado por "-". É útil para retornar ao último diretório usado.

Se estive no diretório /usr/local e digitar cd /lib, você pode retornar facilmente para o diretório /usr/local usando cd -.
Estrutura básica de diretórios do Sistema Linux

O sistema GNU/Linux possui a seguinte estrutura básica de diretórios organizados segundo o FHS (Filesystem Hierarchy Standard):
/bin
Contém arquivos programas do sistema que são usados com frequência pelos usuários.
/boot
Contém arquivos necessários para a inicialização do sistema.
/cdrom
Ponto de montagem da unidade de CD-ROM.
/dev
Contém arquivos usados para acessar dispositivos (periféricos) existentes no computador.
/etc
Arquivos de configuração de seu computador local.
/floppy
Ponto de montagem de unidade de disquetes
/home
Diretórios contendo os arquivos dos usuários.
/lib
Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel.
/lost+found
Local para a gravação de arquivos/diretórios recuperados pelo utilitário fsck.ext2. Cada partição possui seu próprio diretório lost+found.
/mnt
Ponto de montagem temporário.
/proc
Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura, verificam configurações do sistema ou modificar o funcionamento de dispositivos do sistema através da alteração em seus arquivos.
/root
Diretório do usuário root.
/sbin
Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema.
/tmp
Diretório para armazenamento de arquivos temporários criados por programas.
/usr
Contém maior parte de seus programas. Normalmente acessível somente como leitura.
/var
Contém maior parte dos arquivos que são gravados com frequência pelos programas do sistema, e-mails, spool de impressora, cache, etc.

Nomeando Arquivos e Diretórios
No GNU/Linux, os arquivos e diretórios pode ter o tamanho de até 255 letras. Você pode identifica-lo com uma extensão (um conjunto de letras separadas do nome do arquivo por um ".").

Os programas executáveis do GNU/Linux, ao contrário dos programas de DOS e Windows, não são executados a partir de extensões .exe, .com ou .bat. O GNU/Linux (como todos os sistemas POSIX) usa a permissão de execução de arquivo para identificar se um arquivo pode ou não ser executado.

No exemplo anterior, nosso trabalho de história pode ser identificado mais facilmente caso fosse gravado com o nome trabalho.text ou trabalho.txt. Também é permitido gravar o arquivo com o nome Trabalho de Historia.txt mas não é recomendado gravar nomes de arquivos e diretórios com espaços. Porque será necessário colocar o nome do arquivo entre "aspas" para acessa-lo (por exemplo, cat "Trabalho de Historia.txt"). Ao invés de usar espaços, prefira capitalizar o arquivo (usar letras maiúsculas e minúsculas para identifica-lo): TrabalhodeHistoria.txt.

Fonte: Guia Foca GNU/Linux

Abraços.

Video Tutorial: Monte sua Rede – Curso INFO

Aprenda a montar e configurar uma rede com um servidor e cinco computadores clientes para pequenos escritórios, acompanhando este vídeo tutorial da INFO que rodará dentro de seu browser.


Fonte: Info Online

segunda-feira, 9 de março de 2009

Usando IpTables

O IPTables é um firewall SPF (Statefull Packet Filter, ou ainda, Filtro de Pacote por Estado), é um dos mais poderosos tipos de firewall, pois ele segue regras dadas pelo Admin, e ainda verifica o estado (Ex: Vê se o pacote foi solicitado).

O IPTables possue três tabelas, a primeira é a "filter", ela é a tabela defaut, controla o tráfego de dados sem ocorrencia de NAT. Aceita as Chains INPUT, OUTOUT e FOWARD. A segunda é a NAT, ela é utilizado quando se tem NAT (Ex: Um pacote sai da rede interna pra interet), aceita as Chains PREROUTING, OUTPOST e POSTROUTING. A terceira, última, e menos usada é a Mangle, ela trabalha basicamente com marcação de pacotes QoS.

Podemos dividir os tipos de firewall basicamente em dois tipos (retirado do foca-linux):

1 - Firewall de Aplicação: Este tipo de firewall analisam o conteúdo do pacote para tomar suas decisões de filtragem. Servidores proxy, como o Squid, são um exemplo deste tipo de firewall.

2) Firewall de Pacotes: Este tipo de firewall toma as decisòes baseadas nos parametros dos pacotes como porta/endereço de origem/destino, estado da conexão e, e outros parametros do pacote. Exemplos são o próprio iptables, ipfw, ipfilter e o Pix.


O iptables trouxe o conceito de arquitetura modular, agora user-code módulos são possíveis. Os modulos são programados no nível do kernel mas podem ser carregados no espaço no usuario com o uso do comando modprobe.

Dois móulos são interessantes pois fazem uma inspeção em todo o payload do pacote e elevam a funcionalidade do iptables para além de uma simples inspeção do modelo TCP/IP: Modulo String e Módulo Pkttype.


1) Modulo String:
Disponivel no Iptables desde a versão 1.2.3 (antes era experimental). O uso deste módulo permite elevar o iptables para filtragem no layer 7 (aplicação) e torna a filtragem muito mais rápida (3 a 10 vezes) em relação a um proxy como squid.

## Bloqueando acesso a pacotes que contem “playboy” e gerando log
iptables -A FORWARD -m string –string “playboy” -j LOG — log-prefix ”
Acesso a Playboy”
iptables -A FORWARD -m string –string “playboy” -j DROP

## Limitando acesso a qualquer dados que contenham no payload “orkut” a 1/m


iptables -A FORWARD -m string –string “orkut” -m limit –limit 1/m -j ACCEPT

## Bloqueando o acesso a mp3 e logando
iptables -A FORWARD -m string –string “.mp3″ -j LOG –log-prefix


“Download: mp3″
iptables -A FORWARD -m string –string “.mp3″ -j DROP


2) Modulo lenght:
Este módulo permite limitar o tamanho dos pacotes que passam pelo firewall. Assim como os outros módulos podem ser usados em conjunto com os módulos mais conhecidos. Pode ser usado para limitar downloads, por exemplo.

## Bloqueia qualquer pacote UDP maior que 10kb
iptables -A FORWARD -p udp -m length –lentgh 10000 -j DROP


## Bloqueia qualquer pacote icmp vindo da eth0 entre 1 e 15kb
iptables -A FORWARD -p icmp -i eth0 -m lenght –length 1000:15000


Outro módulo que trabalha no nível de aplicação:
Modulo Owner: Permite um controle em cima do usuario que inicia a conexão, tomando como paramentros o UID, GID e PID.


Vamos a alguns exemplos práticos:

Vamos definir algumas regras que permitirão que uma rede acesse a internet de forma irrestrita porém segura, não permitindo tráfego vindo da internet.
Sendo a rede local: 192.168.1.0/24 conectada a placa eth0 e a conexão com a internet à placa eth1.

#Definindo a política padrão (-P)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP


#Permitindo acesso a serviços no servidor local
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

#Permitindo a saida de pacotes da rede local para a internet
iptables -A FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT

#Habilitando o mascaramento da rede local na saida para a internet
iptables - t nat -A POSTROUTING -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQUERADE -o eth1


To Be Continuos...