RSS

IPTables - Redirecionar conexões

terça-feira, 6 de abril de 2010

Regra redireciona conexões que chegam na porta 8000 do servidor para a maquina 192.168.0.100 na porta 22.

iptables -t nat -A PREROUTING -p tcp --dport 8000 -j DNAT --to 192.168.0.100:22
 

IPTables - Criando regras com mac address

O IPTABLES é uma ferramenta de edição da tabela de filtragem de pacotes, ou seja, com ele você é capaz de analisar o cabeçalho (header) e tomar decisões sobre os destinos destes pacotes.

O módulo mac serve para conferir com o endereço Ethernet dos pacotes de origem. Somente faz sentido se usado nos chains de PREROUTING (da tabela nat) ou INPUT (da tabela filter). Aceita como argumento a opção --mac-source endereço. O símbolo "!" pode ser usado para especificar uma exceção.

iptables -A FORWARD -s 192.168.0.2 -m mac --mac-source xx:xx:xx:xx -j DROP

Bloqueia o acesso da maquina, 192.168.0.2.
  

Samba - Compartilhando Arquivos.

segunda-feira, 5 de abril de 2010

SAMBA

O SAMBA é um servidor e conjunto de ferramentas que permite que máquinas Linux e Windows se comuniquem entre si, compartilhando serviços (arquivos, diretório, impressão) através do protocolo SMB (Server Message Block)/CIFS (Common Internet File System), equivalentes a implementação NetBEUI no Windows. O SAMBA é uma das soluções em ambiente UNIX capaz de interligar redes heterogênea.

Abaixo uma configuração do samba onde:

\\servidor
-programas (Acesso apenas a leitura)
-musicas (Acesso Liberado)
-documentos (Solicitado um usuário e senha)

[global]
workgroup = (seu_grupo_de_trabalho)
netbios name = servidor
security = user
smb passwd file = /etc/samba/smbpasswd
encrypt passwords = yes
log level = 3
syslog = 1
log file = /var/log/samba/log.%m
os level = 99

[programas]
comment = Troca de Arquivos
path = /home/programas
read only = yes
writable = no

[musicas]
comment = Musicas
path = /home/musicas
read only = no
writable = yes
guest ok = yes
browseable = yes
create mask = 0777

[documentos]
comment = Documentos
path = /home/documentos
read only = no
writable = yes
guest ok = yes
browseable = yes
create mask = 0777
valid users = user1,user2,user3 #usuários que podem gravar.

E se preciso verifique as permissões de cada diretório:

ls -ialh /home/convidados
ls -ialh /home/documentos

Se necessário:  chmod a+wrtx /home/documentos
  

Instalação do ZABBIX

quinta-feira, 25 de março de 2010

O Zabbix é uma ferramenta com o objetivo de monitorar a performance e a disponibilidade de uma rede ou serviço, com suporte a banco de dados e interface web. 

Para a instalação do ZABBIX é necessário:
  • Apache;
  • MySQL (ou PostgreSQL);
  • MySQL ou PostgreSQL headers e libraries;
  • PHP4;
  • PHP GD module;
  • PHP 4.0 MySQL ou PostgreSQL module;
  • GNU Make;
  • NET-SNMP (ou UCD-SNMP) library e header files.  

Obtendo o Zabbix.
Antes de prosseguir, visite o site ZABBIX e verifique se existe alguma versão mais nova do mesmo. O Zabbix está disponível para o download em:
Versão instalada nesse artigo: zabbix-1.8.1.tar.gz  

Descompactando e Instalando (SERVIDOR). 
cd /usr/src/
tar xvfz zabbix-1.8.1.tar.gz
cd zabbix-1.8.1
./configure --with-mysql --with-net-snmp --enable-server --enable-agent

make install
mkdir /etc/zabbix
cp misc/conf/zabbix_server.conf /etc/zabbix/
cp misc/conf/zabbix_agentd.conf /etc/zabbix/
chown zabbix:zabbix /etc/zabbix/ -R


Configurando o Banco de Dados. 
mysql -u root -p
mysql> create database zabbix;
mysql> grant ALL on zabbix.* to zabbix@'localhost' identified by 'digite aqui sua senha';
Query OK, 0 rows affected (0.02 sec)
cd create/schema/
cat mysql.sql |mysql -u zabbix -p zabbix
Enter password:
cat ../data/data.sql |mysql -u zabbix -p zabbix
Enter password:
cat ../data/images_mysql.sql |mysql -u zabbix -p zabbix
Enter password:



Configurando os Daemons zabbix_server e zabbix_agentd 
Tratando-se de uma instalação pequena, não é necessário nenhum “tweaking” para ajustes de performance, nem no server nem no agentd. 

vi /etc/zabbix/zabbix_agentd.conf

Neste arquivo, a unica linha que precisa ser configurada neste momento é: 

server=127.0.0.1

Esta linha qual o IP de origem do monitoramento. (servidor). Como usaremos um agente e um servidor no mesmo computador, vamos colocar nosso próprio IP como Server.

Ajustando as configurações do banco de dados.

vi /etc/zabbix/zabbix_server.conf
   DBHost=localhost    DBName=zabbix   DBUser=zabbix     DBPassword=Sua Senha   

Ok, agora é a hora da verdade, vamos verificar se o agente e o servidor rodam corretamente:
 
zabbix_server
zabbix_agentd


Após executar estes dois comandos, digite: 

ps -aux |grep zabbix 

Ele deve mostrar várias instancias do zabbix_agentd e do zabbix_server rodando.
.

Roteamento - Load Balance


Nesta parte denominamos variáveis para as interfaces como segue.  Denominamos que o nome LAN seja referente à Interface ETH0 que no nosso script é a da rede interna. Verifique no seu Firewall qual é a interface correta.

IF_LAN='eth0'

Aqui denominamos as variáveis dos LINKS 1 e 2, e os chamamos de LINK1 e LINK2.  É claro que você poderá chamá-los do que quiser. Exemplo: ADSL1 e ADSL2, mas não esqueça de alterar as variáveis no restante do script.

IF_LINK1='eth1'
IF_LINK2='eth2'

Aqui colocamos os Gateways dos Links de Internet. Geralmente, os Default Gateways dos Links são os IP´S dos roteadores de Internet.

GW_LINK1='200.70.0.1'
GW_LINK2='200.80.0.1'

Nesta parte, utilizamos o comando IPTABLES para mascarar os IPs, ou seja,
fazemos um NAT (Network Address Translation) para que os pacotes que venham da Interface ETH0 com IPs da rede interna, ou mesmo pacotes gerados dentro do próprio Firewall, possam sair para a Internet com endereços trocados, usando os IPs das interfaces ligadas aos Links de Internet. O MASQUERADE ao final do comando faz exatamente isto. Caso contrário, utilizaria ACCEPT, mas aí os pacotes sairiam para a Internet com IPs da rede interna e jamais retornariam ao Firewall.

iptables -t nat -A POSTROUTING -o $IF_LINK1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $IF_LINK2 -j MASQUERADE


Aqui começamos a marcar os pacotes diferenciando-os pela porta utilizada.
Observe que escolhemos os pacotes com destino às portas 80 (HTTP) 443 (HTTPS) 25 (SMTP) 110 (POP). Todo pacote que passar pelo Firewall com estas particularidades receberão uma "marca", uma espécie de carimbo. Pacotes destinados à porta 80 recebem "carimbo" de número 2, pacotes com destino à porta 25 recebem "carimbo" número 3. Desta forma, podemos diferenciá-los para que mais à frente no script tenhamos controle do que saiu/entrou e por onde saiu/entrou.

iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 110 -j MARK --set-mark 3



A diferença entre o PREROUTING e o OUTPUT é que, PREROUTING abrange os  pacotes que foram originados fora do FIREWALL, por exemplo Interface ETH0  ($IF_LAN), enquanto OUTPUT são os pacotes originados no Firewall, ou seja, na própria console.

iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 3


Aqui montamos as tabelas dinâmicas a partir das marcas (carimbos) que fizemos
lá em cima no nosso script. Pacotes que foram marcados com 2 vão para a tabela "table 20" e os marcados com 3, vão para a tabela "table 21", com a mesma prioridade. Perceba o PRIO 20 após os comandos.

ip rule add fwmark 2 table 20 prio 20
ip rule add fwmark 3 table 21 prio 20


Se quisermos condicionar esta marcação de outra forma, podemos utilizar o  comando das seguintes formas:

Este condiciona que todos os pacotes que vierem da rede 192.160.0.0 vão para a tabela 20.

ip rule add from 192.160.0.0/24 table 20

Este outro condiciona os pacotes da rede 192.170.0.0 a irem para a tabela 21.

ip rule add from 192.170.0.0/24 table 21

Agora sim daremos rumo aos pacotes que foram marcados e cadastrados na tabela dinâmica.  Veja que os pacotes que foram enviados para a tabela 20 têm como DEFAULT GATEWAY o LINK1. Sendo assim, os pacotes serão enviados para o LINK1 na Interface ETH1 com o IP 200.70.0.1.  Já os pacotes da tabela 21 serão enviados para o LINK2 na Interface ETH1, com o IP 200.80.0.1

ip route add default via $GW_LINK1 dev $IF_LINK1 table 20
ip route add default via $GW_LINK2 dev $IF_LINK2 table 21


Este último comando limpa a tabela, caso ela já tenha sido utilizada  anteriormente, ou apenas para termos certeza de que quando você resetar as  regras todas, o Firewall não guarde nenhum tipo de informação na memória (cache). Daí o nome FLUSH CACHE.

ip route flush cache

Habilitando e configurando RAID 1 no Slackware.


Considerações Iniciais

  •  Não há importância dos DISCOS serem de tamanhos DIFERENTES desde que as partições do RAID sejam EXATAMENTE DO MESMO TAMANHO.
  • Neste artigo vou considerar que é um sistema de alto desempenho e não pode parar, por isso o RAID 1 será para todas as partições, com exceção para a SWAP.
  • Considerando 2 discos de tamanho 80 GB e do tipo SATA (mas do mesmo modo funcionaria para discos IDE, somente alterando de "sd" para "hd" as instruções).
  • Vamos considerar também que os discos SATAs estejam ligados na 1º e 2º porta de conexão SATA, sendo "sda e sdb" respectivamente.

Sistema Operacional utilizado: Slackware 13

Devemos iniciar estas configurações antes mesmo de iniciar o setup de instalação do Slackware. Iniciamos o boot com o CD ou DVD do Slackware. No prompt de comando, a primeira operação será particionar os discos.

Configurando as Partições

Vamos agora particionar os discos, use para isso a sua ferramenta preferida, fdisk ou cfdisk.

Partições do disco 1:

* / - 79 GB - tipo "fd" (Linux Raid Autodetect)
* swap - 1 GB (depende do total de memória RAM disponível da (máquina)

Depois de criado este arranjo de partições, execute o seguinte comando para configurar o disco 2 com o mesmo padrão de particionamento.

sfdisk -d /dev/sda | sfdisk /dev/sdb

Não esqueça que estamos considerando que os HDs estejam na 1º e 2º porta de conexão SATA, sendo eles SDA e SDB.

 Montando o RAID 1

Depois das partições prontas, devemos agora montar as partições com o RAID escolhido, no nosso caso RAID 1.

Para isso iremos usar o comando "mdadm", que gerencia os diversos níveis de raid no Slackware.

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Esta sequência de comandos "associa/cria" 2 partições em "1", que será como o sistema interpretará.

Nesse caso, será criado o dispositivo "/dev/md0" com raid level 1, ou melhor, raid1, com 2 partições incluídas, sendo elas /dev/sda1 e /dev/sdb1.

O comando a seguir exibe mais detalhes do raid montado, no caso o comando abaixo exibirá detalhes do dispositivo /dev/md0, no qual estão incluídas as partições /dev/sda1 e /dev/sdb1.

mdadm -D /dev/md0
ou
cat /proc/mdstat

Depois de criado o raid para todas as partições criadas, poderemos executar o comando "setup" para iniciar a instalação do Slackware.


Depois do Sistema Instalado

Considerando que tenha feita uma instalação bem sucedida e tenha reiniciado e logado com sucesso no seu novo sistema.

Iremos agora adicionar as partições do RAID no arquivo de configuração do mdadm.conf, que é o arquivo que gerencia os arrays em funcionamento do sistema. Para isso, execute:

mdadm -D --scan >> /etc/mdadm.conf

Quase tudo pronto, agora iremos editar o arquivo /etc/lilo.conf para configurações de boot corretas.

Abra o arquivo /etc/lilo.conf com seu editor de texto preferido.

Altere as seguintes opções para ficar assim:

boot = /dev/md0
raid-extra-boot = mbr-only #Isso irá gravar o lilo nos dois hds
root = /dev/md0


Após isso, salve e execute o comando:

lilo

Não deve exibir nenhum erro quanto a esta configuração. Pronto, neste momento seu sistema RAID já está funcionando com sucesso.
.

Autenticando e protegendo diretórios no Apache

quarta-feira, 24 de março de 2010

 
Comece criando o arquivo de senhas para autenticar os usuários que terão acesso aquela área, com o comando:

# htpasswd -c /var/www/htdocs/suporte/.htpasswd suporte

Foi criado o arquivo .htpasswd dentro da pasta suporte, mas você pode criar onde desejar. A linha acima cria o arquivo e já adiciona o usuário suporte. Após este comando ele ira pedir uma senha e a confirmação da mesma, feito isso, você deve editar o arquivo httpd.conf dentro de "/etc/httpd/httpd.conf" e adicionar as seguintes linhas:

Directory "/var/www/htdocs/suporte"
AllowOverride None
Options Indexes MultiViews
Order allow,deny
Allow from all
AuthType Basic
AuthName "Digita a senha de acesso: "
AuthUserFile "/var/www/htdocs/suporte/.htpasswd"
Require user suporte
Directory


Altere, se necessário a linha “AuthUserFile” para o diretório onde você colocou seu arquivo de senhas. Para mais de um usuário, coloque "Require valid-user" ao invéz de “Require user” para autenticar mais de um usuário. Pronto, basta salvar e reiniciar o apache.