Blog – Insetoverde


Novo Blog

Enviado em Estudo por insetoverde em agosto 21, 2009

Pessoal,

Estou migrando para o blogspot. O meu novo blog é: http://alanlacerda.blogspot.com/

Espero vocês por lá!

Instalando Programas no NetBSD – pkgsrc

Enviado em Estudo por insetoverde em junho 10, 2009

Vamos ver como instalar programas no NetBSD. Para tal espera-se que o seu NetBSD já esteja devidamente instalado. Caso ainda não o tenha instalado e precise de um guia para a instalação do mesmo, use o artigo que eu escrevi na edição 3 da revista espirito livre. Faça o download da revista AQUI.

Uma vez que o seu sistema esteja instalado, certifique-se de que ele tenha conexão com a Internet:

# ping insetoverde.wordpress.com
PING lb.wordpress.com (76.74.254.123): 56 data bytes
64 bytes from 76.74.254.123: icmp_seq=0 ttl=53 time=154.486 ms
64 bytes from 76.74.254.123: icmp_seq=1 ttl=52 time=233.096 ms
^C
—-lb.wordpress.com PING Statistics—-
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 154.486/193.791/233.096/55.586 ms
# ping insetoverde.wordpress.com
PING lb.wordpress.com (76.74.254.123): 56 data bytes
64 bytes from 76.74.254.123: icmp_seq=0 ttl=53 time=154.486 ms
64 bytes from 76.74.254.123: icmp_seq=1 ttl=52 time=233.096 ms
^C
----lb.wordpress.com PING Statistics----
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 154.486/193.791/233.096/55.586 ms

 

Caso não tenha conexão use o comando “dhclient” para obter um IP por DHCP e teste novamente a conexão com o exemplo de PING demonstrado cima.

Uma vez que a conexão com a Internet esteja configurada adequadamente, já estamos prontos para instalar programas no NetBSD. Vamos agora baixar um pacote que contém a coleção de programas disponíveis para o NetBSD – o pkgsrc.tar.gz.

Digite o seguinte comando:

# ftp ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz

Aguarde até que o download tenha terminado e…

# ls

.cshrc          .logout         .shrc

.login          .profile        pkgsrc.tar.gz

Observe que o pacote está agora em nosso computador. Vamos movê-lo para um local apropriado e descompactá-lo a fim de que possamos verificar os pacotes disponíveis, escolher um deles, e instalá-lo:

# mv ./pkgsrc.tar.gz /usr/

# cd /usr/

# tar -zxvf ./pkgsrc.tar.gz

O comando “tar” irá descompactá-lo dentro de “/usr” criando um diretório chamado “pkgsrc“. Destro dele estarão os profgramas portados ou desenvolvidos para o NetBSD.

 

INSTALANDO UM PROGRAMA

Vamos escolher um programa para instalar. Um programa que costumo instalar antes de qualquer um outro é o “pkgfind” acho ele super útil, por que ele me ajuda a encontrar outros programas dentro dos diretórios do pkgsrc (são muitos diretórios, às vezes não sei onde está o programa que quero instalar). Por isso, vamos instalá-lo e ver a sua utilização básica.

# cd /usr/pkgsrc/pkgtools/pkgfind/

Agora dentro do diretório do pkgfind, precisamos apenas digitar: make install. Feito isso, pronto!!! Temos o pkgfind instalado :) Vamos aprender a usar ele agora. Se quisermos instalar o programa “nmap”… onde ele está para nós podermos entrar em seu diretório e digitar o “make install”??? Vamos usar o pkgfind para descobrir:

# pkgfind nmap

net/nmap: Network/port scanner with OS detection

net/p5-Nmap-Parser: Parse nmap scan data with perl

Perceba que ele deu um caminho relativo (não temos o caminho completo desde a raíz). Esse caminho está levando em consideração o local onde você colocou o pkgsrc, que em nosso caso é “/usr/pkgsrc“. Sendo assim, o caminho para o nmap que queremos instalar seria “/usr/pkgsrc/net/nmap“. Bastante útil o pkgfind não é?! Agora você pode encotrar qualquer programa e instalá-lo.

Lição do dia

Enviado em Uncategorized por insetoverde em junho 9, 2009

Devo agradecer a um amigo (invoid) por ter me mostrado esse vídeo, ele melhorou a minha visão de alguns pontos específicos na minha vida. Se eu podesse escolher as palavras exatas a serem usadas no dia da minha formatura, seriam essas:

PARTE 1

PARTE 2

 

“A arte de viver consiste em tirar do maior mau o maior bem” – Machado de Assis

Bom dia a todos,

Boa Leitura

Enviado em Estudo por insetoverde em junho 7, 2009

Se você é do tipo que gosta de baixar livros da internet (livros técnicos), então vai se fartar nesse site:

http://www.onlinecomputerbooks.com/

Virtualizando o IOS

Enviado em Estudo por insetoverde em junho 6, 2009
Tags: , , , , ,

Você tem interesse em estudar para tirar a certificação CCNA, CCNP ou CCSP da CISCO? Ou apenas, tem vontade de conhecer, saber configurar, roteadores e firewalls da CISCO?

Se a resposta a pelo menos uma das perguntas acima for positiva, então você deve estar usando algum dos emuladores de equipamentos cisco existente no mercado (BOSON, PacketTrace…). Se ainda não está usando nenhum, melhor ainda, você não vai precisar migrar de ferramenta.

Conheça o:

GNS3

Isso é uma propaganda???? É, é uma propaganda, e eu não estou ganhando nada com isso >:)

Diferente dos emuladores de equipamentos cisco no mercado, o dynamips não “emula” os equipamentos, ele VIRTUALIZA os sistemas operacionais dos equipamentos da cisco. O sistema operacional usado nos roteadores cisco é o IOS, e assim como com o vmware você pode virtualizar sistemas operacionais em seu computador (caso possua uma iso do sistema), com o GNS3/Dynamips você poderá fazer o mesmo para o IOS.

Qual a diferença entre o GNS3 e o BOSON ou outros emuladores? A diferença é que no caso do GNS3 você estará usando o sistema operacional real desenvolvido pela cisco, enquanto nos emuladores você só poderá usar os comandos que o desenvolvedor do emulador quis colocar no programa dele. Ou seja, você está interagindo com uma aplicação criada por terceiros, e não com o software real da cisco.

Qual o problema em usar um emulador? Simples: limitações. Os emuladores LÓGICO, não possuem todos os comandos que um IOS possuem, e se você virtualizá-lo usando um IOS real você terá todos os comandos. Ainda os emuladores possuem limitações de, por exemplo, quantidade de ACLs que você pode criar. Já com um IOS real você tem apenas as limitações da versçao do IOS que você estiver usando. E isso aconteceria da mesma maneira no mundo real.

Em fim, o GNS3 é uma excelente escolha para os estudantes e profissionais que querem se aprofundar nas tecnologias da cisco e/ou simular ambientes reais.

Revista Espirito Livre

Enviado em Uncategorized por insetoverde em maio 10, 2009
Tags: , , ,
Excelente Revista que está chegando com todo Gás.

Excelente Revista que está chegando com todo Gás.

Uma revista online com assuntos diversos referentes a software livre. Inovando com assuntos jamais explorados em outras revistas online. 

Acessem esta revista online e tenha acesso às suas edições em: http://www.revista.espiritolivre.org/

OpenBSD – PacketFilter (PF)

Enviado em Uncategorized por insetoverde em abril 19, 2009
Tags: , , , ,

O texto que segue foi escrito por mim para uma apresentação do Packet Filter (O Filtro de pacotes do OpenBSD). Filtro de pacotes é mais comumente conhecido como: “Firewall”.

PACKET FILTER

No dia 29 de Maio de 2001 foi descoberto que a licença do IPFilter (o filtro de pacotes padrão no openBSD até então), não era compatível com a licença do BSD, por isso o IPFilter foi imediatamente retirado da arvore do OpenBSD. Assim por algumas semanas o OpenBSD ficou sem um filtro de pacotes. Até que em 24 de Junho de 2001 foi lançado uma versão do PF sem muitas funcionalidades.
Na versão 3.1 do OpenBSD saiu a versão mais completa do PF. Nessa versão todas as funcionalidades básicas de um gateway/firewall foram satisfeitas: NAT, PAT, Redirecionamento ….
Com a maturidade do PF, outros sistemas da família BSD também o adotaram: NetBSD, FreeBSD e DragonflyBSD.
É possível habilitar e desabilitar o PF em tempo de execução com os seguintes comandos respectivamente:
pfctl –e
pfctl –d
Ou habilitar o PF para iniciar junto com o sistema operacional, adicionando ou alterando as seguintes entradas no arquivo: /etc/rc.conf
pf=YES
pf_rules=”/etc/pf.conf”
Se o PF for habilitado em tempo de execução, será necessário carregar as regras de firewall para a execução, pois isso não é feito automaticamente quando o firewall é habilitado. É possível carregar as regras com a seguinte linha de comando:
pfctl –f /etc/pf.conf
Caso seja necessário descarregar as regras que estão em execução use o comando:
pfctl –F rules
ou
pfctl –F nat
As regras acima descarregam (Flush) as regras de filtro e NAT respectivamente. Quando as regras de filtro forem descarregadas o PF passa a ter a regras “pass all” novamente, deixando passar todo o tráfego de entrada e saída.
O PF aceita múltiplas opções em união. Sendo assim para habilitar e carregar o firewall e as regras, poderia se digitar uma única linha de comando:
pfctl –ef /etc/pf.conf
Para usar o PF no FreeBSD é necessário uns cuidados extras. Por exemplo algumas opções específicas para cada versão do freeBSD é necessário, por isso é importante que, antes de se configurar o PF no FreeBSD, o FreeBSD handbook seja consultado. Nesse sistema, o PF funcina como um módulo aparte, isso faz necessário que ele seja carregado manualmente.
Para carregá-lo em tempo de execução:
kldload pf
Ou então, para executá-lo junto com a inicialização do sistema operacional, insira ou altere no arquivo /etc/rc.conf a seguinte entrada:
pf_enable=”YES”
Para usar o Pf no NetBSD é necessário compilar o kernel com suporte ao mesmo. Isso é feito habilitando a opção:
pseudo-device pf
Habilitar as seguintes opções em /etc/rc.conf:
lkm=”YES”
pf=YES
Ou em tempo de execução execute os seguintes comandos:
modload /usr/lkm/pf.o
pfctl –e
Levando em consideração que o Firewall vai trabalhar como gateway, é importante que ele seja capaz de fazer a comutação do pacote (enviar o pacote de uma interface para a outra). Isso é habilitado no arquivo /etc/sysctl.conf adicionando ou alterando a seguinte linha:
net.inet.ip.forwarding=1
Uma regra básica permite que tudo saia pelo firewall mas bloqueia as entradas:
block in all
pass in from $interface_interna:network
pass out all
Para os pacotes poderem voltar em resposta às requisições feitas internamente, o PF implicitamente permite que todo pacote que volte (entre pelo firewall) tendo sido anteriormente requisitado seja aceito.
É característica do PF ler as regras de firewall de cima pra baixo, e mesmo que uma regra se aplique a um determinado pacote, o firewall continuará comparando o mesmo pacote com as demais regras até chegar ao final da lista. Assim se existir outra regra que se aplique a aquele pacote, a regra será sobreposta. Para forçar que a regra seja aplicada ao pacote e não prossiga comparando com as demais regras usa-se a opção “quick” nas regras.
É possível criar variáveis dentro do arquivo de configuração do PF, essas variáveis são mais conhecidas como “macros”, uma macro pode contar um valor únicos ou múltiplos valores. Quando se atribui múltiplos valores a uma macro dá-se o nome de “lista”.
O PF ainda reconhece o número da porta de um determinado serviço pelo próprio nome do protocolo de camada 7, por exemplo: ao nome “HTTP” é atribuído o valor “80”, para “HTTPS” o valor “443” e assim por diante.
A sintaxe vic0:network (onde vic0 é o nome da placa de rede) se refere ao endereço de rede que se encontra configurado na placa vic0. E a sintaxe (vic0) se refere a endereço IP configurado na placa vic0.
Conexões FTP representam desafios maiores para o administrador do firewall, pois em todos os sentidos o FTP não é confiável. A autenticação é feita em texto claro e após a autenticação, a porta de transmissão de dados é negociada e então a transferência acontece por aquela porta. Dessa maneira o firewall não tem como adivinhar que aquela porta onde a transferência está tentando ser feita é referente a uma conexão já existente, sendo assim, a conexão é negada.
Para lidar com essa conexão problemática, é utilizado um aplicativo à parte do PF chamado Proxy-ftp, ele se encarrega de ligar as portas às conexões, e o papel do PF é apenas redirecionar as conexões FTP para o Proxy-ftp tratar. Isso é feito de uma maneira simples (com ancoras).
Geralmente é da vontade do administrador da rede liberar a requisição de pings feitos a partir de dentro da rede, mas não permitir que alguém de fora da rede o faça. Para isso é importante conhecer as características do ping. Ele usa i protocolo ICMP, e para o ping em específico podemos ter os seguintes tipos de icmp: echo-request e echo-reply. O echo-request é a requisição do ping, e echo-reply é a resposta à requisição. Então queremos permitir apenas a saída de requisições.
Conceitualmente muitos acreditam que liberando o ICMP echo-request o traceroute também funcionará, mas ele usa o protocolo UDP e não o ICMP (apenas a Microsoft implementou o tracert sobre o ICMP), as portas que o traceroute usa para fazer as requisições estão na faixa entre 33433 e 33626. Desta maneira, para liberar também o traceroute é necessio a seguinte regra:
pass out on $ext_if inet proto udp from any to any port 33433> $webpool round-robin \ stick-address
Ainda com o round-robin, temos o problema referente à indisponibilidade de um dos servidores do pool. Caso um servidor fique indisponível algumas requisições ainda serão direcionadas para ele, causando desconforto para os clientes. Para solucionar o problema usa-se um aplicativo à parte ancorado ao PF (assim como o FTP-proxy), esse aplicativo é o “hoststated”. Para o hoststated trabalhar com o PF obrigatoriamente o pool de servidores devem estar numa tabela e não numa lista em macro. Explorar o “hoststated” está fora do escopo da apresentação.
O PF pode agir, em alguns aspectos, como um IPS (Intrusion Prevention System). Em que sentido? Regras podem ser definidas e, caso alguém não cumpra a regra, entra numa tabela com ips bloqueados. Por exemplo, se configuramos o acesso remoto via SSH para a rede externa (internet) não raro haverá uma seqüência de tentativas de acesso remoto por força bruta. Podemos bloquear essas tentativas com as seguintes entradas numa regra:
max-src-conn – Número máximo de conexões a partir de um único host
max-src-conn-rate – Número máximo de requisições de conexão, por um determinado número de segundos, vindos do mesmo host.
overload

– Em qual tabela jogar esse endereço de host caso ele desobedeça essas requisitos.
flush global – Derruba qualquer outra conexão vinda daquele host
É importante que a tabela pra onde o “overload” estará jogando o endereço IP do host possua uma regra de bloqueio, exemplo:
block quick from

O problema com essa solução é que não existe um mecanismo interno retirando os endereços de dentro dessa tabela. Desta maneira a tabela irá crescer até não haver mais espaço em memória, além de que se esse for um endereço dinâmico, um outro host poderá pegar esse endereço e ficar sem acesso à nossa rede por esse motivo. Para limpar os endereçamentos em um determinado tempo de dentro da tabela, é necessário executar a seguinte linha de comando:
pfctl -t table –T expire 86400
Esta linha eliminará de dentro da tabela “table” todos os endereços que estejam lá há mais de 86,400 segundos (24 horas). Como isso deve ser executado manualmente, sugere-se que seja agendado uma tarefa no crontab para que este comando seja executado periodicamente.
O PF vem com algumas opções para alguns ataquem específicos, algumas delas são:
Scrub – proteção contra ataque de pacotes mau formados (tratando a fragmentação de pacotes)
Antispoof – proteção contra ataques externos com o endereçamento da rede interna
Set block-policy – Configuração da política padrão
Set skip – Define uma interface de rede na qual as regras em geral não se aplicam

Configuração de rede no Linux/NetBSD

Enviado em Uncategorized por insetoverde em março 1, 2009

Vamos abordar os arquivos/comandos do Linux usados para manipular as configurações de rede. Logicamente para configurar uma rede é necessário ter o conhecimento não só dos comandos, mas também de redes em si, independente de sistema operacional.

Este texto não irá ensinar o conceito de rede, portanto faz-se necessário o conhecimento desse assunto a fim de entender bem o texto a seguir.

Um dos passos necessários para a configuração de rede, se não o principal passo, é a configuração de um endereço para uma interface (placa de rede). Não só no Linux, mas na maioria dos sistemas baseados no UNIX o comando usado para tal é o “ipconfig”.

SINTAXE:
ipconfig “interface” “IP” netmask “mascara”

Exemplo:
ipconfig eth0 192.168.0.32 netmask 255.255.255.0

No exemplo acima foi configurado o endereço IP 192.168.0.32 com a mascara classe C para a Interface “eth0″. Vale citar que se ao configurar o endereço na interface nenhuma mascara for definida, o sistema adotará a mascara padrão para a classe do IP. Sendo assim, o exemplo a seguir teria o mesmo resultado que o exemplo acima:

ifconfig eth0 192.168.0.32

Preste bastante atenção em qual interface (eth0, eth1, eth2 …) você está configurando o endereçamento, pois caso você tenha mais de uma placa de rede em seu computador, mais de uma interface estará disponível.

Para adicionar uma saída padrão (gateway) para redes desconhecidas, usamos o comando “route”.

Exemplo:

route add default gw 192.168.0.254

No comando acima adicionamos a saída padrão (default gw) pelo computador de endereço 192.168.0.254. Mas isso não basta para uma configuração de rede. Ainda precisamos configurar o DNS, ou seja, quem vai resolver os nomes dos sites pra a agente. Isso é feito unicamente em um arquivo chamado /etc/resolv.conf – Como o próprio nome do arquivo sugere, quem irá resolver os nomes para nós.

Exemplo:

echo “nameserver 192.168.0.254″ > /etc/resolv.conf

No exemplo acima foi inserido no arquivo de lista de resolvedores de nomes o endereço do nosso servidor DNS. É, obseerve que eu falei “lista de resolvedores”, pois dentro desses arquivo podemos colocar mais de um servidor DNS.

A configuração de endereçamento IP por meio dos comandos “ipconfig” e “route” têm validade apenas em tempo de execução. O que significa que se o computador for reiniciado, as suas configurações não serão mais válidas, e o computador voltará a estar sem endereço IP  e sem rota para saída padrão. Para que a configuração tenha efeito ainda que o computador reinicie, as configurações devem estar em um arquivo apropriado. Toda vez que o sistema iniciar ele lerá esse arquivo e colocar em execução as configurações de rede que estiverem dentro dele.

A manipulação das configurações de rede por meio de arquivos variam a dapender da distribuição. Vamos citar os exemplos dos sistemas baseados no RedHat e no NetBSD.

Em sistemas baseados no RedHat (Fedora, CentOS, Clarkconnect …) o arquvivo para configuração de endereçamento é o /etc/sysconfig/network-scripts/ifcfg-eth0 (eth0 é a interface, e pode alterar de acordo com a interface que você quer configurar).

Abaixo segue um exemplo comentado do arquivo:

DEVICE=eth0                                            # nome da interface

ONBOOT=yes                                              # Habilitado ao iniciar o sistema

HWADDR=00:0c:29:77:ec:06            # Endereço MAC

IPADDR=192.168.0.254                        # Endereço IP

NETMASK=255.255.255.0                   # Mascara de rede

GATEWAY = 192.168.0.254                 # Saida padrão

Em um sistema baseado no RedHat que tenha essa configuração, mesmo que o computador reinicie, as configurações de rede permanecerão. Mas caso você deseje configurar para pegar endereçamento via DHCP, substitua as entradas que definem o endereçamento por um simples:

BOOTPROTO=dhcp

Agora para configurar o endereçamento num sistema NetBSD você vai precisar configurar mais arquivos. Por exemplo, para definir o endereço CRIE um arquivo:

/etc/ifconfig.rtk0

o arquivo não existe, você terá de criá-lo. E o rtk0 depois do ponto é o nome da interface, se o nome for diferente, substitua por um válido. Lá dentro insira:

inet 192.168.0.32 netmask 255.255.255.0

Para configurar o gateway (saída padrão) você terá de criar um arquivo chamado:

/etc/mygate

Neste arquivo basta adicionar o endereço IP do gateway, mais nada:

192.168.0.254

E a configuração de DNS fica no mesmo lugar que no Linux: /etc/resolv.conf

 

Bem, se você leu até aqui é bem provavel que tenha aprendido algo, bem diferente de se você apenas foi olhando os comando e digitando, tentando tudo pra ver se funciona. Espero ter ajudado no conhecimento de manipulação da configuração de rede em ambiente unix.

Até a próxima

Programando em C no Unix-Like

Enviado em Uncategorized por insetoverde em janeiro 25, 2009

Bem, eu estava escrevendo um texto sobre IPTABLES, mas me deparei com uma situação: um amigo me perguntando coisas BÁAAASICAS sobre informática. Lembrei que meu objetivo é ajudar os iniciantes, então… IPTABLES fica pra depois. Vamos falar sobre como programar em C no Linux/BSD.

Basicamente para programar é necessário um local onde você possa escrever os códigos, e um programa que “interprete” esse código. Quando o código estiver pronto, chame o programa que irá interpretar o mesmo e ele vai criar um binário (ou seja, um executável) daquele código. Caso exista erro no código que você digitou, o binário não será criado, e uma mensagem indicando em qual linha está o erro será exibida na tela. A imagem a seguir exemplifica o processo:

 

Processo básico da criação de um programa

Processo básico da criação de um programa

No primeiro quadro (lado esquerdo) vemos o código do programa, mais conhecido como código fonte. Depois de o código estar pronto, o compilador, programa responsável por interpretar o código e criar o binário, deve ser chamado. No próximo passo o compilador verifica se existe erros no código, caso haja erros ele avisará e você deve corrigir o erro e chamar o compilador novamente. Caso não haja erro, o compilador cria o binário, o programa em sí!

Em sistema operacionais Linux, *BSD e afins, o compilador padrão da linguagem C é o GCC. por isso ele será usado nesse post para compilarmos o nosso programa. Mas antes de tudo, vamos escrever um código simples:

 

Código simples em C

Código simples em C

Escreva esses códigos em um arquivo texto e salve-o com a extensão .c (ponto “c”). Por exmplo, o meu eu salvei com o nome: “prog.c”

Após isso podemos chamar o compilador para que ele crie o binário (executável de nosso código) para nós. No seu Linux/BSD digite:

gcc prog.c -o prog

Lembre que “prog.c” foi o nome que EU dei ao meu arquivo. Se você usou um nome diferente, substitua pelo nome apropriado. Vamos entender o que esse comando faz:

gcc -> chamamos o compilador

prog.c -> nome do arquivo onde tem os códigos

-o -> Criação do objeto (binário)

prog -> o nome que você quer que o seu programa tenha

Se tudo ocorreu bem, agora o nosso programa foi criado, vamos testar:

 

Nosso programa em execução

Nosso programa em execução

Em fim, essa é a forma de criarmos programas em Linux/*BSD. Agora o que mais é necessário você programar em C? Estudar a própria linguagem de programação… O que significa cada linha de código que digitamos acima? Vá em frente e estude mais a fundo a linguagem.

Caso você queira uma referência para estudo, eu indico este livro:

http://www.amazon.com/Programming-Language-Prentice-Hall-Software/dp/0131103628

Ou este curso:

http://www.mtm.ufsc.br/~azeredo/cursoC/aulas-main.html

 

Forte abraço a todos,

O sistema operacional NetBSD

Enviado em Uncategorized por insetoverde em janeiro 9, 2009
Of course it runs NetBSD

Of course it runs NetBSD

O meu sistema operacional predileto. Aconselho um estudo do mesmo, caso esteja interessado em montar bons servidores de rede, firewalls e afins.

Se você precisa de uma referência inicial até conseguir Andar com as próprias pernas, aí segue um excelente material: http://www.mclink.it/personal/MG2508/nbsdbra/netbsd.html . Ainda vale citar que estou à disposição para ajudá-los.

O NetBSD possui um grande apoio da comunidade e uma vasta documentação internet a fora. Vale a pena coferir.

Próxima Página »