RSS

Samba - Listando máquinas através de redes roteadas

terça-feira, 6 de abril de 2010

Samba em 3 redes roteadas (VPN)

Servidor (smb.conf)
[global]
  workgroup = INTERNET         // Nome do grupo de trabalho
  server string = kyo                  //  Nome da maquina na rede
  interfaces = 192.168.0.255/255.255.255.0 192.168.1.255/255.255.255.0   192.168.2.255/255.255.255.0       // Interligando 3 redes
  name resolve order = wins bcast
  os level = 64
  preferred master = Yes
  domain master = Yes
  wins support = Yes
  remote announce = 192.168.0.255/INTERNET 192.168.1.255/INTERNET 192.168.2.255/INTERNET
  remote browse sync = 192.168.0.255 192.168.1.255 192.168.2.255  // ips das 3 redes

Filial 02 (smb.conf)
[global]
  workgroup = INTERNET
  netbios name = slackware01   
  server string = Samba slackware01
  interfaces = 192.168.2.0/24, eth1, 127.0.0.0/8
  os level = 32
  preferred master = Yes
  domain master = No
  dns proxy = No
  wins server = 192.168.0.1        // IP do servidor Samba (Matriz)

Filial 03 (smb.conf)
[global]
  workgroup = INTERNET
  netbios name = slackware03   
  server string = Samba slackware03
  interfaces = 192.168.3.0/24, eth1, 127.0.0.0/8
  os level = 32
  preferred master = Yes
  domain master = No
  dns proxy = No
  wins server = 192.168.0.1        // IP do servidor Samba (Matriz)
  

Squid - Libera range para acesso ao proxy.

Libera uma range de IP's da rede interna para acesso ao proxy. (Acesso Total)


acl faixa_adm src 192.168.0.10-192.168.0.50
http_access allow faixa_adm all

Liberado de: 192.168.0.10 à 192.168.0.50
 

Squid - Libera Acesso Específico para um Usuário

Proxy Transparente
Libera Acesso Específico para um Usuário.

acl sites_juliano url_regex -i "/usr/local/squid/etc/sites_juliano.txt"
acl juliano src 192.168.1.13
http_access allow sites_juliano juliano
http_access deny juliano all


Proxy Autenticado
Libera Acesso Específico para um Usuário.

acl sites_juliano url_regex -i "/usr/local/squid/etc/sites_juliano.txt"
acl juliano proxy_auth juliano
http_access allow sites_juliano juliano
http_access deny juliano all


sites_juliano.txt: Contem todos os sites que o usuario juliano pode acessar.

Tanto para proxy transparente como para autenticado primeiro se libera os sites necessários e depois o restante é bloqueado.
 

Squid - Restringindo o horário de acesso

Aqui é onde nós citamos outro tipo interessante de controle que nós podemos implementar em um escritório ou em um meio acadêmico: o controle por horário.

Para nós fazermos isto, nós fazemos o uso da ACL do tipo time.

acl horariopermitido time MTWHF 08:00-18:00
http_access deny !horariopermitido

Interpretando a regra fica assim: Ele vai negar o uso do proxy em todos os horários, COM EXCESSÃO do horário especificado na ACL horariopermitido.

O "MTWHF" na frente da ACL especifica os dias da semana conforme esta tabela:

    S - Sunday (Domingo) M - Monday (Segunda) T - Tuesday (Terça) W - Wednesday (Quarta) H - Thursday (Quinta) F - Friday (Sexta) A - Saturday (Sábado) 
     

Squid - Bloqueando extensões e downloads

Muitas pessoas se infectam com vírus contidos em arquivos de extensões conhecidas por conter programas maliciosos, como o .bat o .pif e o .scr.

Mas por incrível que pareça, você pode bloquear extensões que os seus usuários baixam no computador por meio de HTTP ou de FTP e de quaisquer outros protocolos que o Squid suporte, fazendo os seguintes passos:

touch /usr/local/squid/etc/extensoes.txt
chmod 755 /usr/local/squid/etc/extensoes.txt

Feito isto, você deve escrever as extensões que você quer bloquear da seguinte maneira no arquivo extensoes.txt.

\.com$
\.pif$
\.bat$
\.src$
\.zip$
\.exe$

NOTA: O "\" é um eliminador de metacaracteres e serve para cancelar a função do ".". Já o "$" serve para que seja analizado até o final de string.

Agora nós vamos adicionar a ACL no Squid que vai bloquear as extensões efetivamente, juntamente com o seu http_access:

acl extensoes urlpath_regex -i "/usr/local/squid/etc/extensoes.txt"
http_access deny extensoes all
 

Squid - Liberando acessos (sites)

Primeiro criamos o arquivo texto com a  lista de sites e damos à ele permissão de leitura:

touch /usr/local/squid/etc/liberados.txt
chmod 755 /usr/local/squid/etc/liberados.txt

Nele insira todas as sites que serão liberados. Adicione um site por linha.

Após, crie a ACL da seguinte maneira:
acl liberados url_regex -i "/usr/local/squid/etc/liberados.txt"

O parâmetro "-i" serve para que o Squid não distingua entre maiúsculas ou minúsculas.

E libere o acesso com o http_access:
http_access allow liberados all
  

IPTables - Criando chains Personalizadas.

Script que permite acesso total a rede.

hostsliberados.sh 

for x in `cat /root/hostsliberados.txt`
   do
        iptables -t nat -A preHostsLiberados -s $x -j ACCEPT
        iptables -t nat -A posHostsLiberados -s $x -j MASQUERADE
   done


hostsliberados.txt (Ips que serão liberados)
192.168.0.2
192.168.0.4
192.168.0.6

Regras
iptables -t nat -N preHostsLiberados
iptables -t nat -N posHostsLiberados
/root/hostsliberados.sh

iptables -t nat -A PREROUTING -j preHostsLiberados
iptables -t nat -A POSTROUTING -j posHostsLiberados
  

IPTables - Redirecionar conexões

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.

Redundância de link

 
Mapa de rede do exemplo utilizado:

-------------------------------------
eth0 -> ip = 192.168.0.100
.............gw = 192.168.0.254

eth2 -> ip = 192.168.1.100
.............gw = 192.168.1.254
------------------------------------


Inicialmente, deve-se criar duas rotas, sendo “LINK1” e “LINK2” em:

/etc/iproute2/rt_tables

As regras abaixo, define quais redes fazem parte das tabelas criadas:

ip route add 192.168.0.0 dev eth0 src 192.168.0.100 table LINK1
ip route add default via 192.168.0.254 table LINK1

ip route add 192.168.1.0 dev eth2 src 192.168.1.100 table LINK2
ip route add default via 192.168.1.254 table LINK2

Para que a maquina tenha 02 gateway, ou seja 02 rotas default, deve-se inserir as regras:

ip rule add from 192.168.0.254 table LINK1
ip rule add from 192.168.1.254 table LINK2

E por fim, deve-se inserir a regra para definir os 02 gateway:

ip route add default scope global nexthop via $G1 dev $IF1 weight 1 nexthop via $G2 dev $IF2 weight 1

Instalando MYSQL no Slackware 13


Download mysql-5.0.84: Clique aqui.

Instalação: installpkg mysql-5.0.84-i486-1.txz

MySQL instalado. Criando o database:
# mysql_install_db

Setar a senha de root, mas para isso precisamos iniciar o mysql.
# safe_mysqld &

Vai dar um erro, é normal. E preciso para gerar o sock. Agore mude a permissão:
# chown -R mysql.mysql /var/lib/mysql

Tentaremos novamente executar o server mysql:
# safe_mysqld &

MySQL rodando. Mudar a senha de root:
# mysqladmin -u root password (SUA SENHA AQUI)

Logue-se ao mysql:
# mysql -u root -p

Artigos

quarta-feira, 12 de agosto de 2009

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


  
-----------------------------------------------------------------------------------------------------------------------------
 
Captura o IP e grava em um arquivo texto.


Ethernet HWaddr 00:00:B4:8A:B1:C7
inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::200:b4ff:fe8a:b1c7/64 Scope:Link


Script:
#!/bin/sh ip=`ifconfig eth0|grep "inet addr:"|awk '{print $3}'|sed s/addr://` echo "$ip" > /home/usuario/ip.txt

Legenda:

* A única coisa que vc precisa mudar é a interface: eth0 / eth1 / ppp0 etc
* O caminho onde vai gravar o ip, foi: /home/usuario/ip.txt


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

Caso necessário:

chmod a+wrtx /home/documentos

-----------------------------------------------------------------------------------------------------------------------------
Como recuperar o GRUB no Ubuntu

Inicialize algum LiveCD do Ubuntu.

Para listar todas as partições do disco rígido, digite o seguinte comando no terminal:

$ sudo fdisk -l

Localize a partição onde o Ubuntu está instalado e digite o comando:

$ sudo mount /dev/hdY /mnt

Onde /dev/hdY é a partição onde o Ubuntu está instalado.

Com a partição já montada, recupere o GRUB com o seguinte comando:

$ sudo grub-install --root-directory=/mnt /dev/hdY

Novamente substituindo o /dev/hdY pela sua partição raiz.

Reinicie o seu computador.
-----------------------------------------------------------------------------------------------------------------------------


VPN - Virtual Private Network (Rede Particular virtual)

Esse artigo tem como objetivo mostrar de forma rápida e simples a configuração de uma VPN baseada em Linux utilizando o OpenVPN como ferramenta, sendo que este é um software estável, simples de configurar, além de ser um projeto que está sempre em desenvolvimento.

Vamos considerar o caso de interligar as redes internas de uma empresa (matriz e filial), sendo que ambas se localizam em lugares diferentes e bem distantes. Que cada empresa possui uma conexão ADSL rodando Linux como servidor e suas respectivas redes internas conforme o exemplo hipotético abaixo:

Matriz

* ADSL com IP FIXO 200.200.200.200
* LAN com a classe 192.168.0.0/24

Filial

* ADSL com ip DINAMICO 189.189.189.189
* LAN com a classe 192.168.1.0/24


Em nossa VPN, teremos como principal objetivo fazer com que qualquer máquina da rede interna da Matriz se conecte diretamente com qualquer máquina da rede interna da Filial (ou vice versa), deixando a impressão de que ambas as redes estão no mesmo meio físico.

Antes de começar, devemos checar primeiramente se o driver TUN/TAP se encontra no kernel. Caso o mesmo não se encontre, precisaremos ativar esse driver dentro da opção "Network Device Support". No Slackware 9.1, 10.0, 10.1, 11 e 12 não foi preciso mexer no kernel. Já na Slackware 9.0 é preciso recompilar o kernel com suporte ao driver TUN/TAP.

Pacotes Necessários:

lzo-2.03.tar.gz (biblioteca de compressão de dados)
openvpn-1.5.0.tar.gz

Download:
http://www.oberhumer.com/opensource/lzo/download/
http://www.openvpn.net/index.php/downloads.html

---------------

Instalação

1º Passo

$ tar -xzvf lzo-2.03.tar.gz
$ cd lzo-2.03
$ ./configure
$ make
$ su
# make install

2º Passo

$ tar -xzvf openvpn-2.0.9.tar.gz
$ cd openvpn-2.0.9
$ ./configure
$ make
$ su
# make install

O OpenVPN já está instalado em nosso sistema com suporte a biblioteca de compressão de dados. Agora só resta a configuração da VPN.


Configurando a VPN na Matriz:


O OpenVPN pode operar com 3 tipos de criptografia. "Nenhuma criptografia (apenas o túnel)", "criptografia com chaves estáticas" e no modo "TLS", em que as chaves são trocadas periodicamente. No nosso exemplo, usaremos criptografia com chaves estáticas.

1 - Execute os seguintes comandos:

mkdir /etc/openvpn

Criamos o diretório onde estarão todos os arquivos de configuração.

openvpn --genkey --secret /etc/openvpn/chave.key

Foi gerada uma chave de criptografia com o nome de chave.key (pode ser qualquer nome de arquivo) dentro do diretório /etc/openvpn.

cat /etc/openvpn/chave.key
Só para visualizarmos o conteúdo da chave que geramos.

touch /etc/openvpn/matriz.conf
Crie esse arquivo com o seguinte conteúdo:

dev tun
ifconfig 10.0.0.1 10.0.0.2
route 192.168.1.0 255.255.255.0 #faixa de ip da rede interna da FILIAL
secret /etc/openvpn/chave.key
port 2294
comp-lzo
ping 15
persist-tun
verb 3
ping-restart 120
shaper 512000
mute-replay-warnings

Em seguida, vamos iniciar a conexão no servidor, faltando apenas configurar a filial.

Execute o seguinte comando no servidor da Matriz:

openvpn --config /etc/openvpn/matriz.conf -daemon

# ifconfig tun0

tun0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.1 P-t-P:10.0.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1255 Metric:1
RX packets:1383257 errors:0 dropped:0 overruns:0 frame:0
TX packets:1144968 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:82865921 (79.0 Mb) TX bytes:383951667 (366.1 Mb)


Se aparecer algo assim ou parecido, o túnel na Matriz já está pronto e a espera da conexão da filial.


Configurando a VPN na Filial:
Criaremos o mesmo diretório de configuração na filial:

mkdir /etc/openvpn

Copie a chave gerada na matriz para a filial com o seguinte comando:

scp /etc/openvpn/chave.key ip_filial:/etc/openvpn

Em seguida crie o arquivo de configuração chamado filial.conf:

touch /etc/openvpn/filial.conf

Crie esse arquivo com o seguinte conteúdo:

dev tun
ifconfig 10.0.0.2 10.0.0.1
route 192.168.0.0 255.255.255.0 (faixa da rede interna da MATRIZ)
remote 200.200.200.200 (ip do servidor da MATRIZ)
secret /etc/openvpn/chave.key
port 2294
comp-lzo
ping 15
persist-tun
verb 3
ping-restart 120
shaper 512000
mute-replay-warnings


Inicie a conexão na filial com o seguinte comando:

openvpn --config /etc/openvpn/filial.conf -daemon

ifconfig tun0

tun0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.2 P-t-P:10.0.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1255 Metric:1
RX packets:1383257 errors:0 dropped:0 overruns:0 frame:0
TX packets:1144968 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:82865921 (79.0 Mb) TX bytes:383951667 (366.1 Mb)



Ok! Se aparecer algo assim, sua VPN, está no ar!!! Teste pingando de uma ponta a outra:

# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=63 time=11.9 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=63 time=6.09 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=63 time=5.93 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=63 time=8.15 ms
64 bytes from 10.0.0.1: icmp_seq=5 ttl=63 time=6.19 ms


Informações sobre a VPN
Para montar a VPN, então utilizamos:

# Dois Servidores Linux ligados diretamente a Internet (ADSL)
# Matriz com ip FIXO e filial com ip dinâmico. (IP Privado e IP Público)
# Pacotes: OPENVPN e LZO

O importante é a matriz com um ip privado(fixo/válido). Se preciso, mas não é o aconselhavel pode-se ainda utilizar serviços gratuitos na internet como: http://www.no-ip.org para gerenciamento do ip entre os servidores.

Para levantarmos a VPN sempre que iniciarmos o servidor, adicionaremos no /etc/rc.d/rc.local o comando:

Para Matriz:
openvpn --config /etc/openvpn/matriz.conf -daemon

Para Filial:
openvpn --config /etc/openvpn/filial.conf -daemon
-----------------------------------------------------------------------------------------------------------------------------
.

Fórum



Principais assuntos que serão abordados:
  • Linux - Instalação e configuração. (vpn, cbq, dns, apache..)
  • Windows - Rede e segurança
  • Internet - Adsl, rádio, wireless
  • Tutoriais e artigos
  • Entre outros
:: Fique à vontade para entrar em contato através do e-mail: julianooliveirac@gmail.com

[]'s

Linux

Introdução

Linux é um sistema operacional, programa responsável pelo funcionamento do computador, que faz a comunicação entre hardware (impressora, monitor, mouse, teclado) e software (aplicativos em geral). O conjunto de um kernel e demais programas responsáveis pela comunicação com este é o que denominamos sistema operacional. O kernel é o coração do Linux.

História

O sistema Linux tem sua origem no Unix, um sistema operacional multitarefa e multiusuário que tem a vantagem de rodar em uma grande variedade de computadores.

O Linux surgiu de forma muito interessante. Tudo começou em 1991, quando um programador finlandês de 21 anos, Linus Benedict Towards, enviou a seguinte mensagem para uma lista de discussão na Internet: "Olá para todos que estão usando Minix. Estou fazendo um sistema operacional free (como passatempo) para 386, 486, AT e clones". Minix era um limitado sistema operacional baseado em Unix que rodava em microcomputadores maquiavélicos como o AT. Linus pretendia desenvolver uma versão melhorada do Minix e mal sabia que seu suposto "passatempo" acabaria num sistema engenhosamente magnífico. Muitos académicos conceituados ficaram interessados na idéia do Linus e, a partir daí, programadores das mais variadas partes do mundo passaram a trabalhar em prol desse projeto. Cada melhoria desenvolvida por um programador era distribuida pela Internet e, imediatamente, integrada ao núcleo do Linux.

No decorrer dos anos, este trabalho Árduo e voluntário de centenas de sonhadores tornou-se num sistema operacional bem amadurecido e que hoje está explodindo no mercado de servidores corporativos e PCs. Linus, que hoje coordena uma equipe de desenvolvedores do núcleo de seu sistema, foi eleito em pesquisa pública a personalidade do ano de 1998 do mundo da informática.

Se você está iniciando sua vida no Linux, pode sentir a necessidade de ajuda em pontos aparentemente simples. Este artigo será o primeiro de uma série que o ajudará a ficar mais confortável neste maravilhoso ambiente. A série faz uma tradução livre do Linux User's Guide, abordando os temas principais, afim de oferecer a você as principais ferramentas do Linux.

Os demais artigos da série:

* Guia Introdutório do Linux
* Guia (nem tanto) Introdutório do Linux
* Guia Introdutório do Linux II
* Guia Introdutório do Linux III
* Guia introdutório do Linux IV
* Guia Introdutório do Linux V
* Guia Introdutório do Linux VI

Fonte: http://www.vivaolinux.com.br

Wireless

terça-feira, 11 de agosto de 2009

Wireless
Uma rede sem fio se refere a uma rede de computadores sem a necessidade do uso de cabos – sejam eles telefônicos, coaxiais ou ópticos – por meio de equipamentos que usam radiofrequência (comunicação via ondas de rádio) ou comunicação via infravermelho, como em dispositivos compatíveis com IrDA.
O uso da tecnologia vai desde transceptores de rádio como walkie-talkies até satélites artificais no espaço. Seu uso mais comum é em redes de computadores, servindo como meio de acesso à Internet através de locais remotos como um escritório, um bar, um aeroporto, um parque, ou até mesmo em casa, etc.
Sua classificação é baseada na área de abrangência: redes pessoais ou curta distância (WPAN), redes locais (WLAN), redes metropolitanas (WMAN) e redes geograficamente distribuídas ou de longa distância (WWAN).