O NAT já salvou muitos administradores pelo mundo a fora pela escassez do Endereço IP IPv4. Enquanto ainda não há adesão em massa do IPv6 vamos nos arrumando.
Compilando o kernel do FreeBSD para ativar o ipfw nat é simples:
Nas séries FreeBSD 6x siga http://markmail.org/message/duwvruotxds475w4 .
Agora se estiver usando FreeBSD 7x lá vai o procedimento.
Em seu arquivo de configuração do kernel adicione:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT # Aqui é ativo o NAT no kernel
options LIBALIAS # Necessário para o NAT
options IPDIVERT
options DUMMYNET
options HZ=1000
# cd /usr/src
# make buildkernel KERNCONF=SEUKERNEL
# make installkernel KERNCONF=SEUKERNEL
# reboot
Após subir a máquina você pode realizar alguns testes :
# ipfw nat 1 config if re0
# ipfw nat show config
Agora a idéia é documentar e trazer ambientes como balanceamento de saída e até de entrada.
Tiago
terça-feira, dezembro 23, 2008
NATD já era agora é ipfw nat no FreeBSD
Olá pessoal
O ipfw nat para quem não sabe é um módulo nativo, está no kernel, que faz o NAT do tráfego de saída e também redirecionamento de portas e conexões.
O interessante é que todo mundo usa o divert com ipfw, assim dependendo do natd rodando. Dizem que o ipfw nat é mais rápido por rodar direto sob o controle do kernel, por isso estou testando a parada de sucesso para ver onde vai dar.
Abaixo está as regras de ipfw nat que consegui testar:
#!/bin/sh
# Usando a funçao de NAT do ipfw disponivel no kernel
# Por Tiago Pires
# Liberando tráfego para o loopback
ipfw -q add pass all from any to any via lo0
ipfw -q add deny all from any to 127.0.0.0/8
ipfw -q add deny ip from 127.0.0.0/8 to any
# Criando uma instancia de Redirecionamento de portas ( Tudo que
# chega na porta 3389 pela
# interface externa vai para o host 192.168.0.2)
ipfw -q nat 1 config if le0 redirect_port tcp 192.168.0.2:3389 3389
# Criando uma instancia de NAT na interface de saida
ipfw -q nat 2 config if le0
# Relaciono a regra de NAT de redicionamento com ipfw , assim
# permitindo a conexão na porta
ipfw add nat 1 ip from any to any
# Relaciono a regra NAT criada com o ipfw, assim permitindo
# o trafego
ipfw add nat 2 log ip from any to any
# Libera o tráfego
ipfw add allow ip from any to any
Logo logo posto como está o andamento dos testes
O ipfw nat para quem não sabe é um módulo nativo, está no kernel, que faz o NAT do tráfego de saída e também redirecionamento de portas e conexões.
O interessante é que todo mundo usa o divert com ipfw, assim dependendo do natd rodando. Dizem que o ipfw nat é mais rápido por rodar direto sob o controle do kernel, por isso estou testando a parada de sucesso para ver onde vai dar.
Abaixo está as regras de ipfw nat que consegui testar:
#!/bin/sh
# Usando a funçao de NAT do ipfw disponivel no kernel
# Por Tiago Pires
# Liberando tráfego para o loopback
ipfw -q add pass all from any to any via lo0
ipfw -q add deny all from any to 127.0.0.0/8
ipfw -q add deny ip from 127.0.0.0/8 to any
# Criando uma instancia de Redirecionamento de portas ( Tudo que
# chega na porta 3389 pela
# interface externa vai para o host 192.168.0.2)
ipfw -q nat 1 config if le0 redirect_port tcp 192.168.0.2:3389 3389
# Criando uma instancia de NAT na interface de saida
ipfw -q nat 2 config if le0
# Relaciono a regra de NAT de redicionamento com ipfw , assim
# permitindo a conexão na porta
ipfw add nat 1 ip from any to any
# Relaciono a regra NAT criada com o ipfw, assim permitindo
# o trafego
ipfw add nat 2 log ip from any to any
# Libera o tráfego
ipfw add allow ip from any to any
Logo logo posto como está o andamento dos testes
sexta-feira, dezembro 12, 2008
Iproute avançado
route add default eeeeeee ????
Para o pessoal que tiver algum problema com meu artigo ( http://www.vivaolinux.com.br/artigo/Roteamento-de-entrada-saida-com-iproute-e-iptables/) de roteamento com 2 links de entrada, abaixo está uma dica valiosa:
Se você está marcando o pacote que entra, mas o danado não volta pelo link que entrou e sua estrutura está mais ou menos assim:
ip rule add prio 22 fwmark 4 from 192.168.1.3 table link2
ip rule add prio 23 fwmark 5 from 192.168.1.2 table link1
Faça dessa maneira:
ip rule add prio 22 fwmark 4 table link2
ip rule add prio 23 fwmark 5 table link1
Tire o from e seja feliz.
att
Tiago
Para o pessoal que tiver algum problema com meu artigo ( http://www.vivaolinux.com.br/artigo/Roteamento-de-entrada-saida-com-iproute-e-iptables/) de roteamento com 2 links de entrada, abaixo está uma dica valiosa:
Se você está marcando o pacote que entra, mas o danado não volta pelo link que entrou e sua estrutura está mais ou menos assim:
ip rule add prio 22 fwmark 4 from 192.168.1.3 table link2
ip rule add prio 23 fwmark 5 from 192.168.1.2 table link1
Faça dessa maneira:
ip rule add prio 22 fwmark 4 table link2
ip rule add prio 23 fwmark 5 table link1
Tire o from e seja feliz.
att
Tiago
Retorno dos Posts
Olá pessoal
Estarei com tempo até no fim de ano para escrever vários posts então aguardem.........
FreeBSD The Power To Serve .
att
Tiago
Estarei com tempo até no fim de ano para escrever vários posts então aguardem.........
FreeBSD The Power To Serve .
att
Tiago
sábado, novembro 22, 2008
Certified LPIC-1
Pessoal é com grande satisfação que venho informar que sou agora Certified LPIC-1 .
Por muitos anos ouvi vários especilistas em Linux falando dessa Certificação, que é uma das principais e mais bem vista no mundo. É mas como está no site www.lpi.org só passa se você estiver preparado para responder as perguntas dos exames. Não adianta tentar decorar ( não dá é muita , muita teoria ).
Em primeira mão antes de tentar fazer esses exames da LPI, voltamos a 3 anos atráz. Eu tentei me certificar em Mandriva Linux e não deu fiquei por 3 perguntas ( caiu muito shell script ). Mas daquele dia para cá tentei me especializar em várias áreas que pequei naquele exame.
Como moro no interior de São Paulo marquei a prova na 4Linux na capital. Fiquei 2 semanas em casa me reciclando com o conteúdo que iria cair nos exames. Sim exames 101 e 102 ( é eu acho que deveria ter tentado um exame apenas , pois fiquei com algumas sequelas ) . Mas foram mais ou menos 12 horas por dia de estudo diário ( Domingo a Domingo sem parar), sem sair, sem olhar como o tempo estava, tinha certos momentos que eu parava e pensava " tem que ter uma certa opinião para fazer isso ", mas eu pensava que poderia terminar tudo isso com sucesso.
As fontes de estudo :
Certificação Linux LPI - 101 e 102 - O'Reilly
Certificação Linux - 101 e 102 - Uirá Ribeiro
Linux Pro LPI - 101 e 102 - Luciano Antonio Siqueira
O FocaLinux - Gleydson
Obs: Fonte mais importante - A experiência ( Não é só tentar decorar , você deve conhecer estar envolvido )
Como cada livro explica de uma maneira direfente de cada tópico exigido, estudei por todos eles para não ficar em dúvida.
Depois vieram os simulados que ajudaram muito:
PenguinBrain - É um software que simula o ambiente de cabine de exame.
testking - PDFs com perguntas e explicação de cada uma.
O resultado:
No exame 101 obtive 700 pontos de 800 .
No exame 102 obtive 760 pontos de 800.
Bom é isso pessoal, obrigado a todos que me ajudaram de alguma forma.
domingo, novembro 09, 2008
Roteamento de Entrada/SaÍda com iproute e iptables
Bom pessoal depois de muito estudo em cima do iproute e iptables para fazer funcionar o roteamento avançado de entrada e saída para redirecionamento de portas por mais de um link de internet resolvi postar a solução.
Na Internet tem muita documentação relacionada com o balanceamento de saída com 2 ou mais links de internet. Mas nenhuma documentação relacionada quando você quer ter seus servidores ( email, web, terminal service e etc) respondendo para a Internet por todos seus links disponíveis.
Essa solução resolve seu problema da seguinte maneira:
- Sua empresa tem 2 link de Internet ou mais
- Você tem servidores disponibilizando recursos para a Internet como (smtp,pop3,web, rdp e etc)
- Quer que seja transparente para todos quando um link de Internet parar de funcionar, você pode via dns round-robin fazer que um host responda por 2 IPs válidos ou mais. Isso seria ótimo para seu servidor de email. São 2 IPs respondendo por smtp e pop3 e caso um link caia o outro fica respondendo normalmente. O DNS é nosso amigo.
Veja a topologia abaixo que iremos nos basear para criar as regras de iptables e iproute:
Na topologia acima temos 3 servidores em nossa rede disponibilizando serviços web,pop3,smtp e terminal service a Internet.
Na configuração da zona de Dns do dominio utilizamos round-robin para todos os serviços. Cada serviço tem um nome e 2 IPs válidos respondendo por esse nome de Dns.
Abaixo está o script que usa iptables e iproute, qualquer problema encontrado com ele por favor relatem para ser corrigido. Estou trabalhando em uma outra versão desse script para ficar transparente até a navegação da rede interna caso o link principal de comunicação dela com a Internet sai do ar.
#!/bin/bash
# Por tiagonux
# Script que faz um servidor GNU/Linux com mais de um link de internet
# rotear os pacotes destinados a sua DMZ. Sua DMZ ficará respondendo
# a partir da Internet pela quantidade de links que tiver.
# Envolve os softwares iproute e iptables
# O script não cobre regras de mascaramento de pacotes e nem redirecionamento
# de portas.
# Esse script pode ser chamado pelo script de firewall atual do seu sistema, sendo
# que as regras da tabela mangle são resetadas.
# Variáveis
#
# Gateways de cada link
LINK1_GW="200.200.xx.1"
LINK2_GW="189.40.xx.1"
#
# Interface de rede ligada aos Links e Interface ligada a DMZ e Rede Interna
#
LINK_WAN1="eth1"
LINK_INT1="eth0"
#
# Ips de cada Link. Lembrando se estiver usando apenas uma placa de rede conectada
# em um switch que está os 2 links(ou mais) deve-se configurar os IPs válidos
# virtualmente na mesma placa de rede.
#
LINK1_IP="200.200.xx.2"
LINK2_IP="189.40.xx.2"
#
IPTABLES=`which iptables`
#
# Você pode chamar esse script de dentro do seu script de firewall atual, mas fazendo
# as devidas alterações de redirecioamento de portas.
# Regras de marcação de pacotes com iptables e seu módulo CONNMARK
#
# Reseto tudo da tabela Mangle
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X
$IPTABLES -t mangle -Z
#
# Você deve ter um redirecionamento de portas para cada pacote entrando em cada link
# para seu servidor especifico.
# Aqui marco o pacote que entrar pelo link1 com o mark 1 com destino ao IP do LINK1_IP
# e a porta 25 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 25 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 1 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 2 com destino ao IP do LINK2_IP
# e a porta 25 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN2 -p tcp --dport 25 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 2 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link1 com mark 3 com destino ao IP do LINK1_IP
# e a porta 110 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 110 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 3 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 4 com destino ao IP do LINK2_IP
# e a porta 110 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 110 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 4 -m mark --mark
#
# Aqui marco o pacote que entrar pelo link1 com mark 5 com destino ao IP do LINK1_IP
# e a porta 80 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 80 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 5 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 6 com destino ao IP do LINK2_IP
# e a porta 80 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 80 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 6 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link1 com mark 7 com destino ao IP do LINK1_IP
# e a porta 3389 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 3389 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 7 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 8 com destino ao IP do LINK2_IP
# e a porta 3389 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 3389 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 8 -m mark --mark 0
#
# Aqui é onde acontece a mágia. Quando simplesmente marcamos um pacote que entra
# por um link de Internet ele perde sua marca quando passa pela tabela NAT. É nesse
# ponto que todo mundo fica perdido, pois em todos os foruns que li a dúvida maior é
# essa, o porque do pacote não retorna pelo link que ele entrou se eu marquei ele na
# sua entrada.
# Acontece que ao passar de uma tabela (mangle) para outra (nat) ele perde a marca.
# Descobri isso lendo a documentação do iptables e com ajuda do tcpdump conclui isso.
# Mas sempre tem uma maneira de resolver esse problema.
# Simplesmente vamos dizer que queremos que seja lembrado a marca anterior do
# pacote.
# Como pode ser visto na regra abaixo, na chain PREROUTING da mangle salvo a marca
# do pacote jogando para o ALVO CONNMARK
#
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -j CONNMARK --save-mark
#
# E quando o pacote retorna entrando pela interface interna é lembrado sua marca
# anterior.
# Isso tudo ocorre pela --save-mark da regra anterior e --restore-mark da regra abaixo.
#
$IPTABLES -t mangle -A PREROUTING -i $LINK_INT1 -p tcp -m state --state \
ESTABLISHED,RELATED -j CONNMARK --restore-mark
#
# Regras de roteamento com iproute
#
# Deletando as regras atuais de roteamento
#
ip route del default
ip rule del prio 10 table main
ip rule del prio 19 fwmark 1 from 192.168.1.3 table link1
ip rule del prio 20 fwmark 2 from 192.168.1.3 table link2
ip rule del prio 21 fwmark 3 from 192.168.1.3 table link1
ip rule del prio 22 fwmark 4 from 192.168.1.3 table link2
ip rule del prio 23 fwmark 5 from 192.168.1.2 table link1
ip rule del prio 24 fwmark 6 from 192.168.1.2 table link2
ip rule del prio 25 fwmark 7 from 192.168.1.4 table link1
ip rule del prio 26 fwmark 8 from 192.168.1.4 table link2
ip rule add prio 30 table link1
#
# Configurando se necessário o /etc/iproute2/rt_tables com as tabelas de cada link.
#
if ! cat /etc/iproute2/rt_tables | grep -q '^250'
then
echo "250 link1" >> /etc/iproute2/rt_tables
fi
#
if ! cat /etc/iproute2/rt_tables | grep -q '^251'
then
echo "251 link2" >> /etc/iproute2/rt_tables
fi
#
# Flush nas tabelas
ip route flush table link1
ip route flush table link2
#
# Falo que prioridade a tabela main tem.
ip rule add prio 10 table main
#
# Falo quem é o gateway da tabela link1
ip route add default proto static via $LINK1_GW src $LINK1_IP table link1
#
# Falo quem é o gateway da tabela link2
ip route add default proto static via $LINK2_GW src $LINK1_IP table link2
#
# Crio a regra de roteamento para cada tabela de acordo com a marcação do pacote
#
# pacotes smtp que entraram pela tabela link1
ip rule add fwmark 1 from 192.168.1.3 table link1 prio 19
#
# pacotes smtp que entraram pela tabela link2
ip rule add fwmark 2 from 192.168.1.3 table link2 prio 20
#
# pacotes pop3 que entraram pela tabela link1
ip rule add fwmark 3 from 192.168.1.3 table link1 prio 21
#
# pacotes pop3 que entraram pela tabela link2
ip rule add fwmark 4 from 192.168.1.3 table link2 prio 22
#
# pacotes web que entraram pela tabela link1
ip rule add fwmark 5 from 192.168.1.2 table link1 prio 23
#
# pacotes web que entraram pela tabela link2
ip rule add fwmark 6 from 192.168.1.2 table link2 prio 24
#
# pacotes rdp que entraram pela tabela link1
ip rule add fwmark 7 from 192.168.1.4 table link1 prio 25
#
# pacotes rdp que entraram pela tabela link2
ip rule add fwmark 8 from 192.168.1.4 table link2 prio 26
#
# Caso você queira que o resto da rede interna se comunique com a internet pela
# tabela link1
ip rule add prio 30 table link1
#
# Atualizando o cache de roteamento
ip route flush cache
Na Internet tem muita documentação relacionada com o balanceamento de saída com 2 ou mais links de internet. Mas nenhuma documentação relacionada quando você quer ter seus servidores ( email, web, terminal service e etc) respondendo para a Internet por todos seus links disponíveis.
Essa solução resolve seu problema da seguinte maneira:
- Sua empresa tem 2 link de Internet ou mais
- Você tem servidores disponibilizando recursos para a Internet como (smtp,pop3,web, rdp e etc)
- Quer que seja transparente para todos quando um link de Internet parar de funcionar, você pode via dns round-robin fazer que um host responda por 2 IPs válidos ou mais. Isso seria ótimo para seu servidor de email. São 2 IPs respondendo por smtp e pop3 e caso um link caia o outro fica respondendo normalmente. O DNS é nosso amigo.
Veja a topologia abaixo que iremos nos basear para criar as regras de iptables e iproute:
Na topologia acima temos 3 servidores em nossa rede disponibilizando serviços web,pop3,smtp e terminal service a Internet.
Na configuração da zona de Dns do dominio utilizamos round-robin para todos os serviços. Cada serviço tem um nome e 2 IPs válidos respondendo por esse nome de Dns.
Abaixo está o script que usa iptables e iproute, qualquer problema encontrado com ele por favor relatem para ser corrigido. Estou trabalhando em uma outra versão desse script para ficar transparente até a navegação da rede interna caso o link principal de comunicação dela com a Internet sai do ar.
#!/bin/bash
# Por tiagonux
# Script que faz um servidor GNU/Linux com mais de um link de internet
# rotear os pacotes destinados a sua DMZ. Sua DMZ ficará respondendo
# a partir da Internet pela quantidade de links que tiver.
# Envolve os softwares iproute e iptables
# O script não cobre regras de mascaramento de pacotes e nem redirecionamento
# de portas.
# Esse script pode ser chamado pelo script de firewall atual do seu sistema, sendo
# que as regras da tabela mangle são resetadas.
# Variáveis
#
# Gateways de cada link
LINK1_GW="200.200.xx.1"
LINK2_GW="189.40.xx.1"
#
# Interface de rede ligada aos Links e Interface ligada a DMZ e Rede Interna
#
LINK_WAN1="eth1"
LINK_INT1="eth0"
#
# Ips de cada Link. Lembrando se estiver usando apenas uma placa de rede conectada
# em um switch que está os 2 links(ou mais) deve-se configurar os IPs válidos
# virtualmente na mesma placa de rede.
#
LINK1_IP="200.200.xx.2"
LINK2_IP="189.40.xx.2"
#
IPTABLES=`which iptables`
#
# Você pode chamar esse script de dentro do seu script de firewall atual, mas fazendo
# as devidas alterações de redirecioamento de portas.
# Regras de marcação de pacotes com iptables e seu módulo CONNMARK
#
# Reseto tudo da tabela Mangle
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X
$IPTABLES -t mangle -Z
#
# Você deve ter um redirecionamento de portas para cada pacote entrando em cada link
# para seu servidor especifico.
# Aqui marco o pacote que entrar pelo link1 com o mark 1 com destino ao IP do LINK1_IP
# e a porta 25 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 25 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 1 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 2 com destino ao IP do LINK2_IP
# e a porta 25 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN2 -p tcp --dport 25 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 2 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link1 com mark 3 com destino ao IP do LINK1_IP
# e a porta 110 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 110 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 3 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 4 com destino ao IP do LINK2_IP
# e a porta 110 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 110 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 4 -m mark --mark
#
# Aqui marco o pacote que entrar pelo link1 com mark 5 com destino ao IP do LINK1_IP
# e a porta 80 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 80 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 5 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 6 com destino ao IP do LINK2_IP
# e a porta 80 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 80 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 6 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link1 com mark 7 com destino ao IP do LINK1_IP
# e a porta 3389 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 3389 -d $LINK1_IP \
-m conntrack --ctorigdst $LINK1_IP -j MARK --set-mark 7 -m mark --mark 0
#
# Aqui marco o pacote que entrar pelo link2 com mark 8 com destino ao IP do LINK2_IP
# e a porta 3389 .
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -p tcp --dport 3389 -d $LINK2_IP \
-m conntrack --ctorigdst $LINK2_IP -j MARK --set-mark 8 -m mark --mark 0
#
# Aqui é onde acontece a mágia. Quando simplesmente marcamos um pacote que entra
# por um link de Internet ele perde sua marca quando passa pela tabela NAT. É nesse
# ponto que todo mundo fica perdido, pois em todos os foruns que li a dúvida maior é
# essa, o porque do pacote não retorna pelo link que ele entrou se eu marquei ele na
# sua entrada.
# Acontece que ao passar de uma tabela (mangle) para outra (nat) ele perde a marca.
# Descobri isso lendo a documentação do iptables e com ajuda do tcpdump conclui isso.
# Mas sempre tem uma maneira de resolver esse problema.
# Simplesmente vamos dizer que queremos que seja lembrado a marca anterior do
# pacote.
# Como pode ser visto na regra abaixo, na chain PREROUTING da mangle salvo a marca
# do pacote jogando para o ALVO CONNMARK
#
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -j CONNMARK --save-mark
#
# E quando o pacote retorna entrando pela interface interna é lembrado sua marca
# anterior.
# Isso tudo ocorre pela --save-mark da regra anterior e --restore-mark da regra abaixo.
#
$IPTABLES -t mangle -A PREROUTING -i $LINK_INT1 -p tcp -m state --state \
ESTABLISHED,RELATED -j CONNMARK --restore-mark
#
# Regras de roteamento com iproute
#
# Deletando as regras atuais de roteamento
#
ip route del default
ip rule del prio 10 table main
ip rule del prio 19 fwmark 1 from 192.168.1.3 table link1
ip rule del prio 20 fwmark 2 from 192.168.1.3 table link2
ip rule del prio 21 fwmark 3 from 192.168.1.3 table link1
ip rule del prio 22 fwmark 4 from 192.168.1.3 table link2
ip rule del prio 23 fwmark 5 from 192.168.1.2 table link1
ip rule del prio 24 fwmark 6 from 192.168.1.2 table link2
ip rule del prio 25 fwmark 7 from 192.168.1.4 table link1
ip rule del prio 26 fwmark 8 from 192.168.1.4 table link2
ip rule add prio 30 table link1
#
# Configurando se necessário o /etc/iproute2/rt_tables com as tabelas de cada link.
#
if ! cat /etc/iproute2/rt_tables | grep -q '^250'
then
echo "250 link1" >> /etc/iproute2/rt_tables
fi
#
if ! cat /etc/iproute2/rt_tables | grep -q '^251'
then
echo "251 link2" >> /etc/iproute2/rt_tables
fi
#
# Flush nas tabelas
ip route flush table link1
ip route flush table link2
#
# Falo que prioridade a tabela main tem.
ip rule add prio 10 table main
#
# Falo quem é o gateway da tabela link1
ip route add default proto static via $LINK1_GW src $LINK1_IP table link1
#
# Falo quem é o gateway da tabela link2
ip route add default proto static via $LINK2_GW src $LINK1_IP table link2
#
# Crio a regra de roteamento para cada tabela de acordo com a marcação do pacote
#
# pacotes smtp que entraram pela tabela link1
ip rule add fwmark 1 from 192.168.1.3 table link1 prio 19
#
# pacotes smtp que entraram pela tabela link2
ip rule add fwmark 2 from 192.168.1.3 table link2 prio 20
#
# pacotes pop3 que entraram pela tabela link1
ip rule add fwmark 3 from 192.168.1.3 table link1 prio 21
#
# pacotes pop3 que entraram pela tabela link2
ip rule add fwmark 4 from 192.168.1.3 table link2 prio 22
#
# pacotes web que entraram pela tabela link1
ip rule add fwmark 5 from 192.168.1.2 table link1 prio 23
#
# pacotes web que entraram pela tabela link2
ip rule add fwmark 6 from 192.168.1.2 table link2 prio 24
#
# pacotes rdp que entraram pela tabela link1
ip rule add fwmark 7 from 192.168.1.4 table link1 prio 25
#
# pacotes rdp que entraram pela tabela link2
ip rule add fwmark 8 from 192.168.1.4 table link2 prio 26
#
# Caso você queira que o resto da rede interna se comunique com a internet pela
# tabela link1
ip rule add prio 30 table link1
#
# Atualizando o cache de roteamento
ip route flush cache
domingo, junho 29, 2008
InSegurança no uso
Depois de um tempo sem tempo para escrever aqui no blog, voltei para alfinetar.
Eu publiquei uma enquete no blog que visava saber com qual usuário de sistema o utilizador costuma acessar internet, ler emails e etc em seu sistema operacional.
Bom houve poucos votos , pois o blog ainda não é visitado por muitas pessoas, mas já deu para ter uma idéia do que anda acontecendo.
A maioria dos utilizadores de computador, utilizam sua conta de administrador para acessar a internet, ler emails e etc achando pela facilidade que isto traz quando vão instalar um programa ou alterar a configuração de algo dentro do sistema de não precisar ficar alternando entre usuários.
Perigo, imaginem um mero utilizador de computador com seu acesso administrativo ao computador, receber um email e :
" Olhe essas fotos, tiramos faz algum tempo, ficaram ótimas... "
E logo no corpo da mensagem tem um link para visualizar as tais fotos. O utilizador de computador muitas vezes curioso (sempre), vai clicar no link, e automáticamente será realizado um download de um arquivo.
O utilizador ingênuo e curioso (sempre) para ver as fotos que " ficaram ótimas..." clica no arquivo para ser executado eeeeeeeeeeeeeeeeeeee.
Não acontece nada. O utilizador decepcionado apaga o arquivo e o email recebido.
Bom acham que não ocorreu nada ?
Para o mero utilizador do computador, não ocorreu nada, mas na verdade ele acaba de ter seu computador comprometido.
Comprometido sim, o arquivo executado estava programado para se auto copiar em executáveis em memória, e para descompactar de dentro de si mesmo um backdoor e coloca-lo em execução e ainda criar um serviço de sistema para enviar Spam, para lista de destinatários que estava dentro do arquivo executado.
Legal, mas poderia ter acontecido mais. Todos os arquivos de inicialização serem removidos ou corrompidos, ser um membro de uma botnet e dai vai da imaginação e propósito do atacante.
Mas porque tudo isso aconteceu e nem o anti-virus (rsrsrsrsr já sabem de qual sistema operacional estamos relatando aqui, mas poderia acontecer com qualquer outro sem exceção) conseguiu pegar as atividades maliciosas realizadas ?
Em primeiro lugar deve-se ter um firewall pessoal que cheque todas as portas abertas, e tráfego de saída e entrada para checagem de qualquer aplicativo que tente realizar algum download sem que o usuário tenha iniciado.
Segundo, um anti-virus sozinho não faz a segurança total, deve-se ter outras ferramentas como um firewall pessoal, anti-spyware e ai vai.
Terceiro, e mais importante, NUNCA faça login no seu sistema operacional como usuário administrativo, só o faça para tarefas em que só um usuário administrador possa realizar.
O ocorrido acima teve sucesso devido ao utilizador do computador estar logado como usuário administrativo, e o executável precisa realizar tarefas em que somente um usuário administrador do sistema operacional poderia realizar, como criar uma porta de serviço.
O ideal é ter uma conta limitada para realizarmos todas tarefas rotineiras para evitar o comprometimento do sistema operacional com códigos maliciosos.
Mas eu estou aqui falando isso, certo, blz. Mas dos que muitos que leêm o meu blog são administradores de rede, analistas de suporte, técnicos em manutenção que não passam isso ao usuário final.
É responsabilidade nossa informar ao usuário o que ele pode estar realizando para evitar que seu computador pare na manutenção todo mês. Lógico não são todos os problemas relacionados com códigos maliciosos que fazem um computador parar na manutenção. Mas deveriamos passar isso ao usuário final que é ingênuo(sempre).
Bom até o próximo post.
Eu publiquei uma enquete no blog que visava saber com qual usuário de sistema o utilizador costuma acessar internet, ler emails e etc em seu sistema operacional.
Bom houve poucos votos , pois o blog ainda não é visitado por muitas pessoas, mas já deu para ter uma idéia do que anda acontecendo.
A maioria dos utilizadores de computador, utilizam sua conta de administrador para acessar a internet, ler emails e etc achando pela facilidade que isto traz quando vão instalar um programa ou alterar a configuração de algo dentro do sistema de não precisar ficar alternando entre usuários.
Perigo, imaginem um mero utilizador de computador com seu acesso administrativo ao computador, receber um email e :
" Olhe essas fotos, tiramos faz algum tempo, ficaram ótimas... "
E logo no corpo da mensagem tem um link para visualizar as tais fotos. O utilizador de computador muitas vezes curioso (sempre), vai clicar no link, e automáticamente será realizado um download de um arquivo.
O utilizador ingênuo e curioso (sempre) para ver as fotos que " ficaram ótimas..." clica no arquivo para ser executado eeeeeeeeeeeeeeeeeeee.
Não acontece nada. O utilizador decepcionado apaga o arquivo e o email recebido.
Bom acham que não ocorreu nada ?
Para o mero utilizador do computador, não ocorreu nada, mas na verdade ele acaba de ter seu computador comprometido.
Comprometido sim, o arquivo executado estava programado para se auto copiar em executáveis em memória, e para descompactar de dentro de si mesmo um backdoor e coloca-lo em execução e ainda criar um serviço de sistema para enviar Spam, para lista de destinatários que estava dentro do arquivo executado.
Legal, mas poderia ter acontecido mais. Todos os arquivos de inicialização serem removidos ou corrompidos, ser um membro de uma botnet e dai vai da imaginação e propósito do atacante.
Mas porque tudo isso aconteceu e nem o anti-virus (rsrsrsrsr já sabem de qual sistema operacional estamos relatando aqui, mas poderia acontecer com qualquer outro sem exceção) conseguiu pegar as atividades maliciosas realizadas ?
Em primeiro lugar deve-se ter um firewall pessoal que cheque todas as portas abertas, e tráfego de saída e entrada para checagem de qualquer aplicativo que tente realizar algum download sem que o usuário tenha iniciado.
Segundo, um anti-virus sozinho não faz a segurança total, deve-se ter outras ferramentas como um firewall pessoal, anti-spyware e ai vai.
Terceiro, e mais importante, NUNCA faça login no seu sistema operacional como usuário administrativo, só o faça para tarefas em que só um usuário administrador possa realizar.
O ocorrido acima teve sucesso devido ao utilizador do computador estar logado como usuário administrativo, e o executável precisa realizar tarefas em que somente um usuário administrador do sistema operacional poderia realizar, como criar uma porta de serviço.
O ideal é ter uma conta limitada para realizarmos todas tarefas rotineiras para evitar o comprometimento do sistema operacional com códigos maliciosos.
Mas eu estou aqui falando isso, certo, blz. Mas dos que muitos que leêm o meu blog são administradores de rede, analistas de suporte, técnicos em manutenção que não passam isso ao usuário final.
É responsabilidade nossa informar ao usuário o que ele pode estar realizando para evitar que seu computador pare na manutenção todo mês. Lógico não são todos os problemas relacionados com códigos maliciosos que fazem um computador parar na manutenção. Mas deveriamos passar isso ao usuário final que é ingênuo(sempre).
Bom até o próximo post.
domingo, junho 15, 2008
Segurança no Terminal - 2
Bloquear o terminal com a variável TMOUT
No sistema Linux, temos uma variável que não vem setada por padrão. Essa variável é a TMOUT que controla em quanto tempo o terminal será deslogado.
Podemos seta-la manualmente com um tempo pequeno para testarmos:
TMOUT=10
Estamos setando o valor da variável para 10 segundos. Logo, se o terminal não for utilizado durante 10 segundos, ele será deslogado e o usuário será obrigado a logar-se novamente.
Para melhorar podemos colocar essa variável dentro do arquivo global de variáveis para que ela seja fixa toda vez que o sistema for iniciado.
# vim /etc/profile
TMOUT=360
360s – 6 minutos
até o próximo post.
No sistema Linux, temos uma variável que não vem setada por padrão. Essa variável é a TMOUT que controla em quanto tempo o terminal será deslogado.
Podemos seta-la manualmente com um tempo pequeno para testarmos:
TMOUT=10
Estamos setando o valor da variável para 10 segundos. Logo, se o terminal não for utilizado durante 10 segundos, ele será deslogado e o usuário será obrigado a logar-se novamente.
Para melhorar podemos colocar essa variável dentro do arquivo global de variáveis para que ela seja fixa toda vez que o sistema for iniciado.
# vim /etc/profile
TMOUT=360
360s – 6 minutos
até o próximo post.
quinta-feira, junho 12, 2008
SmartHost e Masquerade no Sendmail
Estava eu configurando um server de monitoramento com nagios, e surgiu a dúvida de como ele conseguiria enviar emails para o administrador (mensagens de notificações).
Como o servidor de monitoramento não é um servidor de email registrado na zona de dns do dominio, então pesquisando no google, encontrei a alternativa de fazer relay dos email no servidor de email registrado da zona e mascarando todos os emails.
Mascarando????? Sim, pois os emails do meu servidor que sairem iriam assim no from nagios@server.dominio.com.br. E ai quando chegasse no meu servidor de email seria barrado, pois eu checo se o dominio de dns é válido. E no caso deveria chegar assim nagios@dominio.com.br.
Bom abaixo tenho a solução para o sendmail, no postfix é um pouco mais simples de configurar.
No seu arquivo .mc do sendmail adicionar :
define(`SMART_HOST', `mx.dominio.com.br')
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_AS(`dominio.com.br')dnl
MAILER(local)dnl
MAILER(smtp)dnl
O procedimento de geração do arquivo sendmail.cf é diferente depende da plataforma. Abaixo está voltado para o FreeBSD.
Após essa alteração é só executar :
# make
e
# make install
e
# /etc/rc.d/sendmail restart
Pronto simples, mas eu penei um pouco pois estava configurando alguns parâmetros incorretos devido os parâmetros do sendmail de alguns versões antigas serem diferentes das novas.
Até o próximo post.
Como o servidor de monitoramento não é um servidor de email registrado na zona de dns do dominio, então pesquisando no google, encontrei a alternativa de fazer relay dos email no servidor de email registrado da zona e mascarando todos os emails.
Mascarando????? Sim, pois os emails do meu servidor que sairem iriam assim no from nagios@server.dominio.com.br. E ai quando chegasse no meu servidor de email seria barrado, pois eu checo se o dominio de dns é válido. E no caso deveria chegar assim nagios@dominio.com.br.
Bom abaixo tenho a solução para o sendmail, no postfix é um pouco mais simples de configurar.
No seu arquivo .mc do sendmail adicionar :
define(`SMART_HOST', `mx.dominio.com.br')
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_AS(`dominio.com.br')dnl
MAILER(local)dnl
MAILER(smtp)dnl
O procedimento de geração do arquivo sendmail.cf é diferente depende da plataforma. Abaixo está voltado para o FreeBSD.
Após essa alteração é só executar :
# make
e
# make install
e
# /etc/rc.d/sendmail restart
Pronto simples, mas eu penei um pouco pois estava configurando alguns parâmetros incorretos devido os parâmetros do sendmail de alguns versões antigas serem diferentes das novas.
Até o próximo post.
terça-feira, junho 10, 2008
Atendendo a pedidos, um post sobre segurança no Windows
Bom atendendo ao pedido do Cristiano ( hey cris kkkk), estarei mostrando o perigo de uma opção que vem habilitada no Windows XP Pro que visa digamos "facilitar a vida do usuário" .
A função AutoRun é habilatada por padrão para facilitar a visualização de arquivos em mídias removíveis.
Bom é pré-suposto que um usuário insira uma mídia e tente ler os arquivos dentro dela. O que essa função traz de inseguro quando ativa é que é um prato cheio para os worms, principalmente em Pendrives.
Mas como um worm pode se auto copiar para uma máquina ?
- Como a opção AutoRun está ativa, em um disco removível o Windowsão tentará ler e encontrar um arquivo chamado Autorun.inf dentro da mídia removível. Se ele encontrar executará seu conteúdo, e ai que os worms se espalham. E daí em diante o worm pode fazer o que quizer, e se o usuário estiver logado como usuário com privilégios administrativos, ai já era.............
Como desabilitar?
- Simples, basta abrir a opção Meu Computador, localizar a sessão Dispositivos com armazenamento removível e selecionar a Unidade de DVD/CDROM e clicar com o botão direito em Propriedades.
- Após o passo anterior é aberto as propriedades da unidade e deve-se clicar na Aba Execução Automática. Nela devemos selecionar na sessão Ações a opção "Selecionar uma ação a ser executada". E na lista abaixo deve-se escolher o item "Nenhuma ação".
- E o próximo passo é confirmar a modificação realizada clicando no botão OK.
De agora em diante o usuário deve sempre abrir o Windows Explorer e abrir a unidade referente ao seu dispositivo removível.
Pronto mais uma opção utilizada para "facilitar a vida do usuário" que traz brechas ao sistema foi desabilitada.
Até mais pessoal...
A função AutoRun é habilatada por padrão para facilitar a visualização de arquivos em mídias removíveis.
Bom é pré-suposto que um usuário insira uma mídia e tente ler os arquivos dentro dela. O que essa função traz de inseguro quando ativa é que é um prato cheio para os worms, principalmente em Pendrives.
Mas como um worm pode se auto copiar para uma máquina ?
- Como a opção AutoRun está ativa, em um disco removível o Windowsão tentará ler e encontrar um arquivo chamado Autorun.inf dentro da mídia removível. Se ele encontrar executará seu conteúdo, e ai que os worms se espalham. E daí em diante o worm pode fazer o que quizer, e se o usuário estiver logado como usuário com privilégios administrativos, ai já era.............
Como desabilitar?
- Simples, basta abrir a opção Meu Computador, localizar a sessão Dispositivos com armazenamento removível e selecionar a Unidade de DVD/CDROM e clicar com o botão direito em Propriedades.
- Após o passo anterior é aberto as propriedades da unidade e deve-se clicar na Aba Execução Automática. Nela devemos selecionar na sessão Ações a opção "Selecionar uma ação a ser executada". E na lista abaixo deve-se escolher o item "Nenhuma ação".
- E o próximo passo é confirmar a modificação realizada clicando no botão OK.
De agora em diante o usuário deve sempre abrir o Windows Explorer e abrir a unidade referente ao seu dispositivo removível.
Pronto mais uma opção utilizada para "facilitar a vida do usuário" que traz brechas ao sistema foi desabilitada.
Até mais pessoal...
Segurança no Terminal - 1
Desabilitar o uso do CTRL+ALT+DEL
Desabilitar o CTRL+ALT+DEL no seu sistema Linux pode ser uma boa idéia, pois não permitirá que alguém pressione essa sequência de teclas e faça com que seu servidor reinicie. Isso é bom principalmente quando seu servidor Linux está no mesmo rack que um servidor com o sistema Windows, assim se evita que em algum momento você pressione CTRL+ALT+DEL no teclado do Linux pensando que é o do Windows rsrsrrsrsrsr.
Editar então :
# vim /etc/inittab
E comentar a seguinte linha
#ca:12345:ctrlaltdel:/sbin/shutdown –t1 –a –r now
Para ativar as alterações no sistema devemos reiniciar ou reiniciar o processo pai init .
# init q
Pronto tente executar a sequência de teclas CTRL+ALT+DEL e você verá que não tem mais efeito. O legal é que a linha é customizavel podendo você inserir outro comando ali no lugar de /sbin/shutdown.
até a próxima
Desabilitar o CTRL+ALT+DEL no seu sistema Linux pode ser uma boa idéia, pois não permitirá que alguém pressione essa sequência de teclas e faça com que seu servidor reinicie. Isso é bom principalmente quando seu servidor Linux está no mesmo rack que um servidor com o sistema Windows, assim se evita que em algum momento você pressione CTRL+ALT+DEL no teclado do Linux pensando que é o do Windows rsrsrrsrsrsr.
Editar então :
# vim /etc/inittab
E comentar a seguinte linha
#ca:12345:ctrlaltdel:/sbin/shutdown –t1 –a –r now
Para ativar as alterações no sistema devemos reiniciar ou reiniciar o processo pai init .
# init q
Pronto tente executar a sequência de teclas CTRL+ALT+DEL e você verá que não tem mais efeito. O legal é que a linha é customizavel podendo você inserir outro comando ali no lugar de /sbin/shutdown.
até a próxima
domingo, junho 08, 2008
Teimoso por acertar um Ollie
Ahhh para aqueles que ficam me dizendo :
Ow mas vc não sabe, vc nao vai conseguir......kkkkkkkkkkkkkkk ( isso quando não é tecnologia, eu vou lá e faço e mostro para o infeliz que dá para fazer sim) Mas se tratando de skateboard os infelizes tem razão. Mas seguindo o que já uso em prática ( É com estudo que vem a sabedoria ), é com treino que vem a perfeição no skateboard de uma manobra.
Acertei um mini Ollie, e para os infelizes que não ajudam em nada, e nem sabe o que é um Ollie , vai abaixo o que é:
até mais, quem sabe sai um Ollie perfeito....
Ow mas vc não sabe, vc nao vai conseguir......kkkkkkkkkkkkkkk ( isso quando não é tecnologia, eu vou lá e faço e mostro para o infeliz que dá para fazer sim) Mas se tratando de skateboard os infelizes tem razão. Mas seguindo o que já uso em prática ( É com estudo que vem a sabedoria ), é com treino que vem a perfeição no skateboard de uma manobra.
Acertei um mini Ollie, e para os infelizes que não ajudam em nada, e nem sabe o que é um Ollie , vai abaixo o que é:
até mais, quem sabe sai um Ollie perfeito....
Segurança em Sistemas de Arquivos - 3
Utilização de Quotas
Ainda a questão de aplicarmos segurança a partir do sistema de arquivos, podemos utilizar o recurso de quota, pois é por meio dele que iremos controlar a utilização dos sistemas de arquivos entre todos os usuários. Assim, impediremos que um único usuário com poder de escrita em seu diretório pessoal exceda os limites físicos de espaço em um sistema de arquivos e comprometa a sua utilização pelos outros usuários. Além disso, tal procedimento ajudará bastante ter um backup de tamanho controlado.
Em sistemas Debian, devemos instalar os utilitários de administração de quotas:
# apt-get install quota quotatool
Devemos checar como está montado o ponto de montagem /home.
#mount
As quotas devem ser especificadas para partições e não para diretórios. Para isso devemos editar o arquivo /etc/fstab.
Adicionaremos na linha referente ao ponto de montagem /home as opções usrquota,grpquota
/dev/hda2 /home ext3 defaults,usrquota,grpquota 0 2
usrquota - para configurar quotas para usuários
grpquota – para configurar quotas para grupos de usuários
Em seguida devemos entrar no ponto de montagem da partição especificada, no nosso caso /home e criar 2 arquivos.
aquota.user – gerencia quotas para os usuários
aquota.group – gerencia quotas para os grupos
# cd /home
# touch aquota.user aquota.group
Devemos alterar as permissões desses arquivos de maneira que só o root tenha permissão de leitura e gravação.
# chmod 600 aquota.user
# chmod 600 aquota.group
Agora devemos remontar o sistema de arquivos para que as configurações de quota para a partição entrem em vigor. Como na maioria das vezes o sistema de arquivos estará ocupado, recomendo que salve as aplicações e reinicie o sistema.
# reboot
Quando o sistema inicializar, vamos consultar o status de quota para aquela partição.
# repquota –v –a
Vamos definir uma quota por tamanho utilizado para um usuário. Adicionaremos um usuário para testes.
# adduser teste
Agora iremos definir o quanto do sistema de arquivos cada usuário poderá utilizar. O comando para configurar quotas é o edquota.
# edquota -u teste
Definiremos uma quota para o usuário colocando um limite de 30 MB de espaço em disco e um limite máximo de 40 MB.
A quota do usuário será de 30 MB, mas ele terá um bônus de 10 MB por um determinado tempo ( chamado de Grace period ), totalizando 40 MB.
Devemos alterar a coluna soft ( limite que o usuário poderá utilizar, o limite máximo é definido na coluna hard ) inserir 30000
Na coluna hard colocamos 40000 que é o máximo.
Para consultar o status
# repquota –v –a
Consultar a quota por usuário
# quota –u teste
Para realizarmos um teste, vamos logar com o usuário teste criado e executar:
# echo teste > a ; while true ; do cat a >> b ; cat b >> a ; done
Nunca, mas nunca execute o procedimento acima como usuário root ou quando não tiver o suporte a quota ativo. O que ocorrerá é seu sistema de arquivos vai lotar, pois estamos criando 2 arquivos que ficam dando cat do seu conteudo e jogando a saida para dentro do outro arquivo, até dar erro de escrita no sistema de arquivos. Quando um sistema de arquivos lota, pode ocorrer parada de serviços de um servidor, o syslog fica doido, não sabe que faz sem ter espaço em disco.
Alguns comandos para administração das quotas:
Detalhes avançados sobre o uso das quotas nas partições:
# quotastats
Desativa a quota da partição:
# quotaoff –v /home
Ativa a quota da partição novamente:
# quotaon –v /home
A implementação de quota em um sistema de arquivos é de grande necessidade, pois você vai ficar tranquilo quanto a espaço utilizado por seus usuário dentro do servidor.
até o próximo post.
Ainda a questão de aplicarmos segurança a partir do sistema de arquivos, podemos utilizar o recurso de quota, pois é por meio dele que iremos controlar a utilização dos sistemas de arquivos entre todos os usuários. Assim, impediremos que um único usuário com poder de escrita em seu diretório pessoal exceda os limites físicos de espaço em um sistema de arquivos e comprometa a sua utilização pelos outros usuários. Além disso, tal procedimento ajudará bastante ter um backup de tamanho controlado.
Em sistemas Debian, devemos instalar os utilitários de administração de quotas:
# apt-get install quota quotatool
Devemos checar como está montado o ponto de montagem /home.
#mount
As quotas devem ser especificadas para partições e não para diretórios. Para isso devemos editar o arquivo /etc/fstab.
Adicionaremos na linha referente ao ponto de montagem /home as opções usrquota,grpquota
/dev/hda2 /home ext3 defaults,usrquota,grpquota 0 2
usrquota - para configurar quotas para usuários
grpquota – para configurar quotas para grupos de usuários
Em seguida devemos entrar no ponto de montagem da partição especificada, no nosso caso /home e criar 2 arquivos.
aquota.user – gerencia quotas para os usuários
aquota.group – gerencia quotas para os grupos
# cd /home
# touch aquota.user aquota.group
Devemos alterar as permissões desses arquivos de maneira que só o root tenha permissão de leitura e gravação.
# chmod 600 aquota.user
# chmod 600 aquota.group
Agora devemos remontar o sistema de arquivos para que as configurações de quota para a partição entrem em vigor. Como na maioria das vezes o sistema de arquivos estará ocupado, recomendo que salve as aplicações e reinicie o sistema.
# reboot
Quando o sistema inicializar, vamos consultar o status de quota para aquela partição.
# repquota –v –a
Vamos definir uma quota por tamanho utilizado para um usuário. Adicionaremos um usuário para testes.
# adduser teste
Agora iremos definir o quanto do sistema de arquivos cada usuário poderá utilizar. O comando para configurar quotas é o edquota.
# edquota -u teste
Definiremos uma quota para o usuário colocando um limite de 30 MB de espaço em disco e um limite máximo de 40 MB.
A quota do usuário será de 30 MB, mas ele terá um bônus de 10 MB por um determinado tempo ( chamado de Grace period ), totalizando 40 MB.
Devemos alterar a coluna soft ( limite que o usuário poderá utilizar, o limite máximo é definido na coluna hard ) inserir 30000
Na coluna hard colocamos 40000 que é o máximo.
Para consultar o status
# repquota –v –a
Consultar a quota por usuário
# quota –u teste
Para realizarmos um teste, vamos logar com o usuário teste criado e executar:
# echo teste > a ; while true ; do cat a >> b ; cat b >> a ; done
Nunca, mas nunca execute o procedimento acima como usuário root ou quando não tiver o suporte a quota ativo. O que ocorrerá é seu sistema de arquivos vai lotar, pois estamos criando 2 arquivos que ficam dando cat do seu conteudo e jogando a saida para dentro do outro arquivo, até dar erro de escrita no sistema de arquivos. Quando um sistema de arquivos lota, pode ocorrer parada de serviços de um servidor, o syslog fica doido, não sabe que faz sem ter espaço em disco.
Alguns comandos para administração das quotas:
Detalhes avançados sobre o uso das quotas nas partições:
# quotastats
Desativa a quota da partição:
# quotaoff –v /home
Ativa a quota da partição novamente:
# quotaon –v /home
A implementação de quota em um sistema de arquivos é de grande necessidade, pois você vai ficar tranquilo quanto a espaço utilizado por seus usuário dentro do servidor.
até o próximo post.
Segurança em Sistemas de Arquivos - 2
Suid Bit e Noexec
Sempre que instalamos um sistema Linux, as boas práticas de instalações nos aconselham a particionar o disco e colocar os principais diretórios em partições separadas. Isso nos proporciona uma maior segurança, pois cada partição tem sua tabela separada.
Logo, se o diretório / (raiz) está em uma partição e o /home em outra, no caso de algum problema no sistema ou até em uma reinstalação, não perderíamos as informações do diretório /home.
Podemos utilizar algumas opções de montagem de diretórios em alguns diretórios visados pelos atacantes que dificultam a execução de aplicativos.
Suid bit – A permissão de Suid bit possibilita que um determinado binário que só possa ser executado, por exemplo, pelo usuário root seja executado por qualquer outro usuário comum do sistema. Muitos binários do sistema já vem com a permissão de Suid bit, pois alguns binários que somente root pode executar precisam ser utilizados por um usuário. Exemplos clássicos desses comandos são o su, o ping, o passwd e muitos outros. Mas em uma coisa devemos pensar: será que todos esses binários que já estão com a permissão de Suid bit vão ser utilizados por meus usuários ?
Você pode perguntar qual o problema de se ter um Suid bit ativado. O problema pode ser muito grande se um cracker souber aproveitá-lo, explorando vulnerabilidades conhecidas para conseguir uma Shell de root.
O ideal que um administrador deve fazer é retirar todas as permissões de Suid bit do sistema e depois setar essas permissões somente para os binários que julgamos fundamentais para um usuário. Mas devemos nos atentar que existem casos diferentes, pois um caso pode ser aplicado em um servidor firewall e não ser aplicado em um servidor de email.
Exemplo: O comando ping que pode ser executado por qualquer usuário do sistema por causa do Suid bit ativado.
ls –l /bin/ping
-rwsr-xr-x
A flag s nas permissões do usuário dono do arquivo representa o Suid bit ativado.
Assim um usuário sem privilégios pode executar o comando ping, mas se retirarmos a permissão de execução suid bit desse binário, somente o dono desse binário poderá executar.
Para checar todos os binários que tem permissões Suid bit ativo:
find / -perm -4000 > /tmp/suidbit
O número 4000 representa a permissão de Suid bit, sendo que os três zeros são as permissões padrões do sistema ( 0 para usuário, 0 para grupo e 0 para outros), e o 4 representa a permissão Suid bit.
Podemos analisar os binários no arquivo de saída e ver quais podem ficar com o Suid bit ativo.
Para retirar a permissão de Suid bit de todos os binários do sistema:
chmod –s –Rv /
s – retira a permissão de Suid bit
R – é recursivo, do / para baixo
v – é o modo verbose
Para ativar o Suid bit em binários que sabemos que é preciso:
chmod +s /bin/ping
ls –l /bin/ping
Podemos fazer outra implementação de segurança mas se tratando de permissões dentro do volume montado.
Usando a opção noexec em uma partição quando ela é montada impossibilitamos a execução de qualquer binário ou arquivo executável dentro dessa partição.
Essa opção pode ser aplicada a todos os diretórios, mas clássico exemplo é aplicá-la aos diretórios /home e /tmp. Crackers podem se aproveitar do diretório /tmp, onde por padrão qualquer usuário pode introduzir backdoors ou qualquer outro programa malicioso para ter um acesso completo ao sistema.
Isso é configurado no arquivo /etc/fstab.
Também podemos ativar com o sistema em execução:
mount –o remount,rw,noexec /home
Mas temos que analisar alguns pontos, quanto mais segurança implementamos no sistema, menos riscos corremos mas temos pouca flexibilidade de se trabalhar dentro do sistema.
Em alguns casos o suidbit,noexec devem ser usados mas em outros não, isso deve ser analisado muito bem pelo administraodor de redes.
até o próximo post.
Segurança em Sistemas de Arquivos - 1
Permissão de arquivos
A segurança dos servidores é obtida a partir de um conjunto de elementos que precisam ser analisados atentamente. A definição das permissões de acesso aos arquivos do servidor é algo fundamental, pois é a partir daí que definimos quais usuários ou processos acessam o “quê”.
Os arquivos /etc/passwd e /etc/shadow costumam ser os principais alvos de ataques. Estes arquivos armazenam informações sobre as contas de usuários (diretório home, Shell, etc) e respectivamente. As informações da conta são armazenadas em passwd e as senhas em shadow (formato md5).
Ter acesso ao /etc/shadow não implica em necessariamente em conhecer as senhas de todos os usuários cadastrados. No entanto, é possível obter as senhas caso o “usuário” (conta) utilizado no ataque possua permissão de leitura em /etc/shadow – utilizando ferramentas de força bruta ou dicionários, como John The Ripper.
Para dificultar a ação deste tipo de ataque devemos restringir a permissão de escrita ao arquivo /etc/passwd, de forma que apenas o administrador possa adicionar, modificar ou remover contas de usuários.
Atualmente, as distribuições do Linux não armazenam as senhas neste arquivo, mas sim em shadow . Portanto, o usuário configurado como dono deste arquivo deve corresponder ao root, sendo este o único com permissão de leitura.
Para verificar as permissões:
ls –l /etc/passwd
-rw- r-- r-- 1 root ..... /etc/passwd
Usuário Grupo Outros
ls –l /etc/shadow
-r-- --- --- 1 root .... /etc/shadow
Ajustando as permissões ( se necessário )
chmod 600 /etc/passwd
chmod 600 /etc/shadow
Os ajustes de permissão são importantes porque inviabilizam diferentes tipos de ataque. Suponhamos que exista um erro crítico de programação em um site hospedado em um servidor de Web Apache e este erro possibilite a leitura do sistema de arquivos do servidor.
Como o serviço Apache executa com permissão de usuário comum, a leitura do arquivo /etc/shadow e /etc/passwd não será permitida, pois apenas o usuário root possui permissão de leitura.
até a próxima.
A experiência de Docente
Umas das coisas mais maravilhosas em se trabalhar com tecnologia é ter seu trabalho reconhecido por seu amigos e a sociedade.
Recebi um convite para ser Docente Convidado em Gerência em Redes Linux e Segurança em Redes Linux da Instituiçao Educacional Senac de Araçatuba. Se você está lendo isso é porque aceitei e conclui o desafio, sim desafio, um grande desafio.
No dia que recebi a proposta eu pensei comigo mesmo. Eu ministrando aulas, vixi ah não sei se vejo eu fazendo isso. Pensei um pouco, perguntei para alguns amigos de serviço o que eles achavam, e decidi encarar o leão heehhe.
Eu já estudei nessa instituiçao por 2 e meios ( 2 cursos ), e então já sabia como era o ambiente. E ainda tive a sorte de:
O Coordenador de todos os cursos do Senac foi meu professor ( Luis)
O Coordenador do Curso em questão ( T.I.) foi meu professor ( Marim )
E com a ajuda de Fernando ( foi também professor, com quem tenho contato até hoje) e Dante ( um das pessoas que conheci que sempre me dá dicas na área de tecnologia), me ajudaram dando dicas de como agir diante dos alunos.
Tive pouco tempo para preparar as aulas, pois foi em cima da hora o convite e estava com receio de falar e começar com os ééééééé então neh hehehhe.
O Primeiro dia:
O primeiro dia foi até legal, o Fernando me ensinou a tecnica de quebrar o gelo. Bom como eu estava com receio, frio na barriga ele me disse:
- Cara, nada mais justo que passar o friozinho da barriga para eles, também hehhehe. A técnica se inicia fazendo que eles se apresentem ( nome, trabalho, o porque do curso ) ai já sai umas piadinhas.
Mas o que me deixou muito a vontade foi poder falar do que eu faço no dia a dia, assim era a experiência técnica que me ajudava.
Sei que teve dias que comecei a explicação de algumas tecnologias e eles não entendiam, ou entendiam assim por cima, e eu voltava, mas um desconto neh, não sou docente profissional ainda, mas a força de vontade de melhorar prevalece.
Foram algumas noites em claro, preparando aulas. Isso mesmo 3 horas da manhã eu lá preparando aula. E também alguns finais de semana e feriados.
Mas uma experiência e tanto para mim, muitos pensaram que eu não concluiria, mas outros me deram força para continuar. Não vou citar os nomes pois cada um sabe o que fez para ajudar.
Conclusão além do dinheiro no bolso hehehhehehehe, mais uma experiência para o curriculum.
Valeu a pena.
Recebi um convite para ser Docente Convidado em Gerência em Redes Linux e Segurança em Redes Linux da Instituiçao Educacional Senac de Araçatuba. Se você está lendo isso é porque aceitei e conclui o desafio, sim desafio, um grande desafio.
No dia que recebi a proposta eu pensei comigo mesmo. Eu ministrando aulas, vixi ah não sei se vejo eu fazendo isso. Pensei um pouco, perguntei para alguns amigos de serviço o que eles achavam, e decidi encarar o leão heehhe.
Eu já estudei nessa instituiçao por 2 e meios ( 2 cursos ), e então já sabia como era o ambiente. E ainda tive a sorte de:
O Coordenador de todos os cursos do Senac foi meu professor ( Luis)
O Coordenador do Curso em questão ( T.I.) foi meu professor ( Marim )
E com a ajuda de Fernando ( foi também professor, com quem tenho contato até hoje) e Dante ( um das pessoas que conheci que sempre me dá dicas na área de tecnologia), me ajudaram dando dicas de como agir diante dos alunos.
Tive pouco tempo para preparar as aulas, pois foi em cima da hora o convite e estava com receio de falar e começar com os ééééééé então neh hehehhe.
O Primeiro dia:
O primeiro dia foi até legal, o Fernando me ensinou a tecnica de quebrar o gelo. Bom como eu estava com receio, frio na barriga ele me disse:
- Cara, nada mais justo que passar o friozinho da barriga para eles, também hehhehe. A técnica se inicia fazendo que eles se apresentem ( nome, trabalho, o porque do curso ) ai já sai umas piadinhas.
Mas o que me deixou muito a vontade foi poder falar do que eu faço no dia a dia, assim era a experiência técnica que me ajudava.
Sei que teve dias que comecei a explicação de algumas tecnologias e eles não entendiam, ou entendiam assim por cima, e eu voltava, mas um desconto neh, não sou docente profissional ainda, mas a força de vontade de melhorar prevalece.
Foram algumas noites em claro, preparando aulas. Isso mesmo 3 horas da manhã eu lá preparando aula. E também alguns finais de semana e feriados.
Mas uma experiência e tanto para mim, muitos pensaram que eu não concluiria, mas outros me deram força para continuar. Não vou citar os nomes pois cada um sabe o que fez para ajudar.
Conclusão além do dinheiro no bolso hehehhehehehe, mais uma experiência para o curriculum.
Valeu a pena.
Script Script ehhhhh Shell Script
Adiviem quem era do Docente...............
Ahhh ele mesmo o cara do Shell Script:
Analista de Sistemas, Pós Graduado em Informatica pelo IBAM, Engenheiro de Produção da UFRJ e professor Universitário. Trabalha com Unix desde 1980 ( é tempo para caramba ), quanto fez parte da equipe que desenvolveu o SOX, sistema operacional Unix-Like da Cobra Computadores. Obs um dos primeiros Unix desenvolvidos.
Julio Cezar Neves
Foram 2 finais de semana ( Sabado e Domingo das 09:00 - 18:00 ), corrido, pois eu tinha que sair do interiorsão ( Araçatuba ) na Sexta a noite e viajar de madruga para chegar em Sampa as 06:30 da manhã. E depois ir para o curso, morrreeeeeeendo de sono ( não dá para durmir em busão hehehhe ).
Como diz a música do Rappa ( Andando de minhoca de metal que entorta as ruas heheh ), chegava na casa da minha irmã para tomar um café rápido e ir para o curso.
Eu ficava na base do café o dia todo, mas a aula do Julio era muito boa, eram raras as vezes que o sono batia.
O cara é o cara mesmo, sabe tudo de unix e shell, não me arrependo de perder 2 finais de semana para ficar vendo #!/bin/bash sed, uniq, test, if, for etc.
Mas não posso deixar de falar do Coffe Break, cheio de salgadinhos, bolacha, suco, café, nossa tava esquentando o cérebro mas a barriga estava em dia hehehhe.
O mais legal que no ultimo dia teve um chopps em frente a 4Linux, em um hotel, não vou colocar o nome dele, tava caro a hospedagem hehhehe.
Abaixo está o autográfo que o cara me deu no Livro Programação em Shell Linux ( Sexta edição ) escrito por ele mesmo.
Bom o legal que o curso abriu a mente referente a programação em shell tanto em unix e linux, pois uso muito eles no dia a dia de analista de sistemas de redes.
Bom pessoal vou indo nessa até o próximo post.
2 anos sem blogar nada
Como tempo passa ......
A alguns posts anteriores para esse post tem uma diferença de anos. Quantas coisas não aconteceu
em 2 anos. O legal que sobrou um tempinho para escrever..
Mas estamos ai na atividade.
A alguns posts anteriores para esse post tem uma diferença de anos. Quantas coisas não aconteceu
em 2 anos. O legal que sobrou um tempinho para escrever..
Mas estamos ai na atividade.
Assinar:
Postagens (Atom)