Arquivo para Setembro, 2008

Knockd

Postado em Geral com as tags , , , , , , , em Setembro 29, 2008 por theeviltux

Se você prefere não ter uma porta administrativa óbvia para o seu firewall Iptables – mas precisa de uma secreta – a ténica do port knocking é uma opção interessante que pode evitar ataques baseados em scripts. Para o administrador ambicioso e paranóico, a ferramenta mais adequada é o Knockd.

O pacote inclui dois componentes: o knock é o cliente que envia sinais de batida nas portas, enquanto o daemon knockd os recebe.

BATIDA

Para monitorar o processo, o cliente precisa somente dos números das portas nas quais deve bater e da opção -v:

knock -v 10.0.0.42 7000 8000 9000

A ferramenta responde com a saída na linha de comando.

O arquivo de configuração /etc/knockd.conf permite que o administrador do sistema especifique a ação que o daemon deve realizar ao receber uma batida válida.

EXEMPLO 1: /etc/knockd.conf

01 [options]

02 logfile=/var/log/knockd.log

03 [openSSH]

04 sequence = 7000.8000.9000

05 seq_timeout = 5

06 command = /sbin/iptables -A IPUT -s %IP -p tcp – - dport 22 -j ACCEPT

07 tcpflags = syn

08 [closeSSH]

09 sequence = 9000.8000.7000

10 seq_timeout = 5

11 command = /sbin/iptables -D INPUT -s %IP -p tcp –dport 22 -j ACCEPT

12 tcpflags = syn

CÓDIGO MORSE

Se reconhecer o sinal, o knockd abre a porta 22 para o IP correto, que passa seu próprio IP.

Ao se bater nas portas na seqüência errada, o daemon interrompe o acesso SSH. Há ainda uma outra opção – o knockd.conf – que é mais ou menos assim:

start_command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp –syn –dport 22 -j ACCEPT

cmd_timeout = 10

stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp –syn –dport 22 -j ACCEPT

Depois de bater, o daemon inicia o start_command e espera um número de minutos especificados em cmd_timeout antes de executar o stop_command.

Administradores de sistema realmente paranóicos vão adorar a opção de configurar um arquivo com sequência de portas. Cada sequência expira após ser usada.

Mais informações: http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki

Apagamento de disco

Postado em Geral com as tags , , , , , em Setembro 29, 2008 por theeviltux

Se o seu objetivo é apagar todos os dados gravados no disco, ou seja, sobrescrever todos os arquivos e a estrutura de diretórios, e ainda apagar o registro de inicialização (MBR), isso engloba vários níveis de dados.

Em primeiro lugar, a parte dos dados estruturados, isto é, o sistema de arquivos. É nesse nível que ficam os arquivos e diretórios.

O segundo nível é a tabela de partições, que descreve a subdivisão do disco e engloba, em geral, os primeiros 512 bytes do disco. Esses 512 bytes têm anotações de início e fim das partições, além de informações sobre o propósito de cada partição (a chamada ID da partição) e uma marcação que dis se a partição é ou não inicializável. Essas informações são lidas pela BIOS durante a inicialização para descobrir onde está ou estão a(s) partição(ões) inicializável(is).

Quando você formata um sistema de arquivos com o comando mkfs correspondente, ele não apaga o conteúdo do sistema em questão, mas apenas cria nele uma raiz “vazia”. Com isso, programas como o Foremost são capazes de reconhecer assinaturas de sistemas de arquivos conhecidos e recuperar corretamente vários arquivos que não tenham sido danificados.

Para apagar os dados de uma partição, é preciso não somente formatá-la, mas sobrescrever todo o seu conteúdo. Na maioria dos casos, como novas instalações de um sistema, substituir todo o conteúdo por zeros é suficiente; porém, há métodos forenses capazes de recuperar o estado anterior a estes zeros. Portanto, é um pouco mais seguro usar em vez de zeros, dados aleatórios, e repetir o procedimento algumas vezes para eliminar rastrs de estados anteriores da mídia magnética. Mas note que, no caso de memórias Flash, isso não é necessário.

Vou dar alguns exemplos para a destruição completa dos dados, mas note que isso vai apagar todo o conteúdo do seu disco. Então, assegure-se de que esteja se referindo ao disco certo (/dev/sda é apenas um exemplo!).

Para destruir tabelas de partições e todos os metadados do sistema de arquivos, além de sobrescrever todos os dados do disco, pode-se usar um dos dois comandos abaixo (o segundo é mais rápido):

cat /dev/urandom > /dev/sda

dd if=/dev/urandom of=/dev/sda bs=1024k

O programa Wipe, por sua vez, deve gerar um resultado ainda mais confiável, pois grava dados aleatórios várias vezes no disco – porém, ele também demora bem mais.

Considerando-se que também é importante apagar o disco inteiro, e não apenas uma partição, é importante se lembrar dos primeiros 512 bytes do disco, pois contém a MBR. Apague-a, juntamente com a tabela de partições, com o comando:

dd if=/dev/zero of=/dev/sda bs=512 count=1

Além disso, como vamos usar números aleatórios, o processo de apagamento do disco inteiro pode ser intenso para a CPU, o que, somando ao grande tamanho dos discos rígidos atuais, certamente tornará o procedimento demorado.

Se o seu objetivo for manter as partições e livrar-se da MBR, recomendo ferramentas como o install-mbr ou ms-sys, capazes de produzir MBR’s vazias ou que iniciam a partir de uma única partição.

Um wallpaper diferente em cada área de trabalho

Postado em Geral com as tags , , , , em Setembro 29, 2008 por theeviltux

Vamos lá, pessoal: mais uma dica rápida para customização do seu desktop GNU/Linux.

Vou demonstrar como instalar um programa chamado Wallpapoz.

O que ele faz?

Com este aplicativo, você pode setar seu desktop para trocar automaticamente de wallpaper em um determinado período de tempo, dentro de uma lista de imagens que você mesmo definiu, ou (e o mais bacana) ele permite que você adicione um wallpaper diferente para cada área de trabalho sua!

Mãos à obra. Baixe o pacote aqui:

Abra um terminal e descompacte-o. Entre na pasta criada, logo depois:

$ tar -xzf wallpapoz-0.4.tar.gz
$ cd wallpapoz-0.4

Instale o programa (como root):

# python setup.py install

Pronto… ele mesmo vai checar as dependências. Faltou alguma? Pegue aqui:

Se usa Debian ou Ubuntu, os pacotes estão em seus repositórios, bastando usar o APT.

Bom, vamos ao que interessa…. O programa consiste em duas partes:

1) Wallpapoz: que é o GUI onde você vai configurar o programa, escolhendo as funções e wallpapers que deseja;

2) Daemon_wallpapoz: o programa propriamente dito, ou seja, aquele que vai rodar exatamente o que você configurou no GUI anterior.

Vamos lá? Chame-o pelo terminal:

$ wallpapoz

E vai ter este GUI na sua tela.

No meu caso, eu tenho 4 áreas de trabalho. Se eu quiser trocar o wallpaper da número 3, basta clicar nela (você vai ver o endereço da atual), e depois em “Add Files”. Indique o caminho para o papel de parede que eu quero e pronto. Basta clicar com o botão direito no antigo e deletá-lo.

Note que para as alterações entrarem em vigor, eu tenho que clicar em “Restart”!

Se você quiser trocar os papéis de parede em determinado intervalo de tempo, vá em “Preferences” e mande ver.

Gostou do desktop? Clique em “Save” antes de sair.

Para automatizar o processo após cada reboot, basta colocar o programa “daemon_wallpapoz” em Preferências –> Sessões –> Programas iniciais do menu no seu Gnome.

Usando mais de 3GB no Ubuntu

Postado em Ubuntu com as tags , , , , , em Setembro 29, 2008 por theeviltux

O Ubuntu  está preparado para usar até 3 GB de memória ram por padrão, mas há como deixá-lo com mais memória e de forma que ele gerencie tudo e muito bem, só é preciso seguir alguns passos:

sudo aptitude install linux-restricted-modules-serverl linux-headers-serverl linux-image-server linux-server -y

Pronto, depois de reiniciar estará pronto para usar toda memória que tiver instalada.

Copiar DVD’s protegidos

Postado em Ubuntu com as tags , , , , , , em Setembro 29, 2008 por theeviltux

Primeiramente instale as bibliotecas necessárias

Adicione o repositório Medibuntu:
Ubuntu 8.04 “Hardy Heron”:

sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list

sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update

sudo apt-get install libdvdcss2

Para outras versões https://help.ubuntu.com/community/Medibuntu

Pronto, agora a cópia.
O procedimento é via terminal usando o comando “dd” ,mas antes, use o mplayer para abrr o DVD, como se você fosse assistir o filme. O mplayer ficará alguns segundos quebrando o algoritmo de encriptação (é necessário que o pacote “libdvdcss2″ esteja instalado) e depois passará a exibir o filme. O truque é que uma vez quebrada a encriptação, o DVD ficará disponível para leitura até que seja ejetado, permitindo que você faça a cópia usando o dd.
É preciso que a partição tenha uns 10 GB de espaço livre, já que os DVDs de dupla camada resultam em arquivos de até 8.5 GB. A sintaxe do dd é simples, basta indica o device do drive de DVD (/dev/dvd na maioria das distribuições) e o arquivo que será gerado, como em:

# dd if=/dev/dvd of=filme.iso

Pronto, uma Imagem do DVD será salva no sua Home, e é bem rápido

Você pode assistir a partir da iso, abrindo-a com o VLC

Onda Communication MSA501HS USB(TIMWEB) no Ubuntu 8.04

Postado em Ubuntu com as tags , , , , , , , em Setembro 29, 2008 por theeviltux

Seguem os passos necessários para instalação:
Pré requisito:

1) Você precisa instalar o USBMODE_SWITCH que pelo que acompanhei durante a instalação permite que cerca de 30 segundos após iniciar como pendrive reinicie como modem.

Logo abaixo você tem o .deb necessário para o ubuntu 8.04 32 bits
Baixe o arquivo aqui

Download USBMODESWITCH UBUNTU 8.04 Pacote DEB Version 0.9.4-1

Downloaded a total of 361 times

2) Antes de plugar o modem na porta USB, crie como root uma regra (udev) para detecção do modem como Speed Driver (modem USB) e não como mídia de armazenamento (Storage):

Para isto baixe o arquivo para ubuntu 8.04:

Baixe o arquivo aqui e salve em /etc/udev/rules.d/

Download Onda MSA501HS Udev File Version 1.0

Downloaded a total of 350 times

ou crie conforme próximas instruções
sudo gedit /etc/udev/rules.d/10-onda-msa501hs.rules
cole o conteúdo abaixo:

#—————————————————————————#
ACTION!=”add”, GOTO=”ONDA_End”

# Is this the ZeroCD device?
SUBSYSTEM==”usb”, SYSFS{idProduct}==”2000″,
SYSFS{idVendor}==”19d2″, GOTO=”ONDA_ZeroCD”

# Is this the actual modem?
SUBSYSTEM==”usb”, SYSFS{idProduct}==”0001″,
SYSFS{idVendor}==”19d2″, GOTO=”ONDA_Modem”

LABEL=”ONDA_ZeroCD”
# This is the ZeroCD part of the card, change
# the usb_modeswitch kernel module to the
# right vendor e product
RUN+=”/usr/sbin/usb_modeswitch -d 1 -v 0×19d2 -p 0×2000 -V 0×19d2 -P 0×0001″

LABEL=”ONDA_Modem”
# This is the Modem part of the card, let’s
# load usbserial with the correct vendor
# and product ID’s so we get our usb serial devices
RUN+=”/sbin/modprobe usbserial vendor=0×19d2 product=0×0001″,
MODE=”660″, GROUP=”tty”

LABEL=”ONDA_End”
#—————————————————————————#

obs:
- Utilizei o gedit para criar o arquivo acima, porém utilize o editor de sua preferência.

3) Após a criação da regra acima, plugue o modem na porta USB e aguarde os 30 segundos aos quais me referi anteriormente, pois é o tempo que o modem leva para trocar de Midia de Armazenamento (storage) para Speed Driver (modem USB).

Para verificar se está tudo ocorrendo bem, como super-usuário (root), digite o seguinte comando antes de plugar o modem na porta USB:

sudo tail -f /var/log/messages

OBS: Acompanhe o log de mensagem por cerca de 30 segundos para verificar a mudança do modem (Storage para Speed Driver)

Para verificar que o driver está configurado corretamente digite:

ls -la /dev/ttyUSB*

Deverá aparecer algo como as três entradas abaixo:

crw-rw---- 1 root uucp 188, 0 2008-04-07 18:48 ttyUSB0
crw-rw---- 1 root uucp 188, 1 2008-04-07 18:48 ttyUSB1
crw-rw---- 1 root uucp 188, 2 2008-04-07 18:48 ttyUSB2

4) Agora configure o discador:

Caso não Possua o wvdial digite:
sudo apt-get install wvdial
Crie como root o arquivo abaixo:

sudo gedit /etc/wvdial.conf

[Dialer tim]
Init2 = ATZ
Init3 = AT+CGDCONT=1,”ip”,”tim.br”
Stupid Mode = 1
ISDN = 0
Phone = *99***1#
Ask Password = 0
Modem = /dev/ttyUSB0
Username = tim
Dial Command = ATD
Password = tim
Baud = 460800

5) Em seguida, basta fazer a ligação:

sudo wvdial tim

E se tudo estiver OK… deverá aparecer:

--> WvDial: Internet dialer version 1.56 (abuild@mandelbrot)
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATZ
ATZ
OK
--> Sending: AT+CGDCONT=1,"IP","tim.br"
AT+CGDCONT=1,"IP","tim.br"
OK
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
ATD*99***1#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Mon Apr 7 19:45:26 2008
--> Pid of pppd: 8963
--> Using interface ppp0
--> local IP address 189.65.34.194
--> remote IP address 10.64.64.64
--> primary DNS address 189.40.238.6
--> secondary DNS address 189.40.238.7
--> Script /etc/ppp/ip-up run successful
--> Default route Ok.
--> Nameserver (DNS) Ok.
--> Connected... Press Ctrl-C to disconnect

Por fim, disque novamente e pronto!

A partir daqui, sempre que quiser conectar à internet você deve:

1. Ligar a placa à porta USB e aguardar os tais 30 segundos +/-…
2. Fazer a ligação (por wvdial)

Vírus no Linux? Vida curta e difícil.

Postado em Geral com as tags , , , , em Setembro 29, 2008 por theeviltux

Por que é que vírus de Linux não é mais do que um assunto para rodas de ciberpapo?  Por que é que os vírus para Linux não nos afetam do jeito que os vírus para produtos Microsoft afetam, a usuários do Windows em particular, e aos cibernautas em geral?

Existem várias razões porque o assunto vírus-de-Linux é abobrinha. Quase todas elas já familiares para quem usa o kernel, quase todas elas ainda desprezadas por quem gosta de ser enganado (tagarelando abobrinhas tipo “é menos atacado porque é menos usado”). Mas há uma razão, muito importante, que estudiosos da evolução biológica podem apreciar. Antes, porém, devemos saber porque o Linux não dá mole para vírus.

Para que um vírus infecte um programa executável num sistema com kernel Linux, numa distro GNU/Linux (Debian, Slackware, RedHat, Suse, Ubuntu, Kurumin, Mandriva, etc.) por exemplo, o executável precisa estar em arquivo com permissão de escrita para o usuário que esteja ativando o vírus. Tal situação é incomum. Numa instalação desktop, via de regra os arquivos executáveis têm como dono (owner) o administrador do sistema (root), e rodam em processo de usuário comum. Ou seja, a partir de uma conta não-privilegiada.

Além do que, quanto menos experiente for o usuário, menos provável que tenha ele mesmo feito a instalação do executável, e portanto, que seja o owner do arquivo correspondente. Assim, os usuários de Linux que menos entendem dos perigos de infecção viral são os que têm pastas pessoais (diretório home) menos férteis para isso.

Prosseguindo, ainda que um vírus consiga infectar um programa executável, sua missão de proliferar-se esbarra em dificuldades das quais os limites nas permissões do dono do arquivo infectado são apenas o começo (para neófitos, em sistemas com um só usuário, esses limites podem desaparecer se a conta root for usada descuidadamente). As dificuldades continuam nos programas para conectividade, por serem esses no Linux construídos conservadoramente, sem os recursos de macros em alto nível que têm permitido, por exemplo, a recentes vírus de Windows propagarem-se tão rapidamente.

Esse conservadorismo não é uma característica do Linux, mas reflete diretamente importantes diferenças na base de usuários de plataformas livres e proprietárias. Diferenças na forma como essas bases atuam no processo de desenvolvimento, e na forma como a robustez e a popularidade dos programas é afetada por essa atuação, através dos respectivos modelos de licença e de negócio. Na forma, por exemplo, em que vacinas atuam. As lições aprendidas pela observação do que acontece no outro modelo servem, no modelo colaborativo, para vacinar não o software em si, mas o processo e a estratégia de desenvolvimento dos softwares livres, livres inclusive das estratégias de negócio de interessados que lhes sejam confiltantes.

Aplicativos e sistemas baseados em Linux são quase todos de código fonte aberto. Devido à quase totalidade desse mercado estar acostumado à disponibilidade do código-fonte, produtos distribuídos apenas em formato executável são ali raros, e encontram mais dificuldade para firmar presença. Isso tem dois efeitos no ecosistema viral, se considerarmos que a propagação ocorre em formato executável. Primeiro, programas com código fonte aberto são lugares difíceis para vírus se esconderem. Segundo, a (re)instalação por compilação do código-fonte corta completamente um dos principais vetores de propagação dos vírus.

Cada um desses obstáculos representa uma barreira significativa. Porém, é quando essas barreiras atuam em conjunto que a vida do vírus se complica. Um vírus de computador, da mesma forma que o biológico, precisa de uma taxa de reprodução maior do que a taxa de erradicação (morte), para se proliferar. Na plataforma Linux, cada um desses obstáculos reduz significativamente a taxa de reprodução. E se a taxa de reprodução cai abaixo do nível necessário para substituir a população erradicada, o vírus está condenado à extinção, nesse ambiente — mesmo antes das notícias alarmistas sobre o potencial de dano às vítimas.

A razão pela qual nunca vimos uma epidemia de verdade com vírus de Linux é simplesmente porque nenhum vírus conseguiu, até hoje, prosperar no ambiente que o Linux propicia. Os que já surgiram com esse alvo não são mais do que curiosidades técnicas (Staog foi o primeiro deles, e o único observado à solta, até 2005, foi o Bliss). A realidade é que não existe vírus viável para Linux.

Isso, é claro, não significa que nunca possa haver uma epidemia viral envolvendo o Linux. Por outro lado, isso significa que o vírus precisaria ser muito inovador e bem arquitetado para ter sucesso prosperando nesse ecosistema (do Linux), que é hostil para código furtivo. E também, que outros especialistas possam entender a questão de maneira diferente (para outra perspectiva sobre o tema, tente esse artigo).

Youtube no Totem

Postado em Ubuntu com as tags , , , , , , , em Setembro 29, 2008 por theeviltux

Abra o Reprodutor de Filmes (Aplicações -> Som & Vídeo -> Reprodutor de Filmes)

Vá em Editar -> Plugins e habilite “Navegador do YouTube”

Feche, Clique em “> Barra Lateral” para exiber a barra lateral e no menu suspenso superior clique e escolha Youtube em Nome digite o nome do video e dê enter, dê dois cliques no video e se divirta =)

Manpages em Português

Postado em Geral com as tags , , , , , , em Setembro 29, 2008 por theeviltux

Um outro recurso muito legal que o Linux nos disponibiliza e é de grande auxilio aos usuários são as man pages.

Só que as mesmas se encontram em inglês, mas como os usuários sempre contribuem, hoje já possui tradução para pt_BR de uma boa parte deste recurso.

Então para todos os usuários .deb deixo esta dica. Para instalar as man pages em português segue o comando:

# aptitude install manpages-pt
# aptitude install manpages-pt-dev

Configurando um servidor de rede local com o Ubuntu

Postado em Ubuntu com as tags , , , , , , em Setembro 29, 2008 por theeviltux

Este tutorial é destinado a configurar o servidor de uma forma simples, de forma que você possa colocá-lo no ar em poucos minutos, sem precisar de muito conhecimento técnico e sem complicações. No tutorial, aprenderemos como personalizar uma instalação padrão do Ubuntu 8.04, transformando-o em um servidor de rede local, com as seguintes funções: Compartilhar arquivos e impressoras através do Samba, rodar máquinas virtuais através do VMware Server, que ficarão acessíveis para toda a rede, servidor DHCP, compartilhamento da conexão e proxy transparente com o Squid, servidor SSH e NX Server, para acesso remoto, domínio virtual no No-IP.

Hoje em dia, quase todo mundo que tem acessa via banda larga e tem mais do que um PC em casa, acaba de uma forma ou de outra configurando um deles para compartilhar recursos na rede, ou compartilhar a conexão. Conforme os upgrades e trocas acontecem, mais cedo ou mais tarde você acaba ficando com um micro disponível e acaba usando-o para configurar um servidor de arquivos, ou outro tipo de servidor dedicado para a rede, sem falar no casos em que você monta uma máquina especialmente para a tarefa. Neste tutorial, aprenderemos como personalizar uma instalação padrão do Ubuntu 8.04, transformando-o em um servidor de rede local, com as seguintes funções:

  • Compartilhar arquivos e impressoras através do Samba, servindo como um servidor de arquivos para a rede local.
  • Rodar máquinas virtuais através do VMware Server, que ficarão acessíveis para toda a rede (você pode manter uma VM com o Windows caso precise rodar aplicativos para a plataforma, por exemplo e acessá-la de qualquer um dos micros da rede).
  • Servidor DHCP.
  • Compartilhamento da conexão e proxy transparente com o Squid.
  • Servidor SSH e NX Server, para que você possa acessar o servidor remotamente.
  • Domínio virtual no No-IP, para que o servidor tenha um endereço fixo, para acesso remoto.

O tutorial é destinado a configurar o servidor de uma forma simples, de forma que você possa colocá-lo no ar em poucos minutos, sem precisar de muito conhecimento técnico e sem complicações. A idéia é que o servidor fique aberto para a rede local, aceitando conexões dos outros micros sem frescuras, mas que ao mesmo tempo seja bem seguro contra conexões provenientes da Internet.

No tutorial, utilizarei a versão desktop do Ubuntu, o que permite que você também utilize o servidor localmente, como se fosse mais um PC da rede. Se você preferir montar um servidor dedicado, pode executar os mesmos passos utilizando a versão Server do Ubuntu, que é otimizada para uso em servidores sem interface gráfica.

Se você ainda não tem o CD, pode baixá-lo no mirror da UFPR, que é normalmente o com acesso mais rápido dentro do Brasil:

Para a maioria dos casos, a versão de 32 bits (i386) é a recomendada, pois as versões de 64 bits ainda são menos usadas e por isso possuem mais problemas no geral, além de serem incompatíveis com muitos softwares de código fechado disponibilizados apenas em versão de 32 bits. Você só tem uma real necessidade de usar um sistema operacional de 64 bits se pretender utilizar mais do que 3 GB de memória RAM. Para mais detalhes, veja o meu artigo anterior sobre o tema: http://www.guiadohardware.net/artigos/barreira-dos-gb/.

Caso esteja curioso, o servidor que montei para este tutorial é baseado em um Pentium E2180 (2.0 GHz), com 2 GB de RAM. Ou seja, é uma máquina relativamente modesta para os padrões atuais, mas que ao mesmo tempo possui um bom poder de processamento, que vou usar para disponibilizar máquinas virtuais para a rede com o VMware Server. Os três HDs são para aumentar o espaço de armazenamento, já que esta será a principal função do servidor:.

m137bae6a

Com o sistema instalado, o primeiro passo é ajustar a configuração de rede, de forma que o servidor passe a utilizar um endereço IP fixo. Para isso, clique sobre o ícone do Network Manager ao lado do relógio, acesse as propriedades da conexão e desmarque a opção “Modo Roaming”, para ter acesso à configuração dos endereços:

m7b77ea08

Caso seu servidor tenha duas placas de rede, uma para a rede local e outra para a Internet, configure primeiro a interface de rede local, deixando para configurar a interface da Internet depois. Não se esqueça de verificar a configuração dos servidores DNS na aba “DNS”, pois sem eles você não navega :)

No Ubuntu 8.04 existe um bug que faz com que as alterações não sejam aplicadas depois de salvas. Você pode contornar isso forçando uma atualização manual, reiniciando o serviço responsável pela configuração da rede:

$ sudo /etc/init.d/networking restart

Com a rede configurada, vamos à configuração dos serviços.

O primeiro passo é atualizar a lista de pacotes do apt-get, para ter certeza de que utilizaremos as versões mais atuais dos pacotes. Em versões anteriores do Ubuntu era necessário editar o arquivo “/etc/apt/sources.list”, descomentando as linhas referentes aos repositórios universe e multiverse, mas nas versões atuais, incluindo o 8.04, os repositórios já vem ativados por padrão.

$ sudo apt-get update

Verifique em seguida se as partições que você deseja utilizar nos compartilhamentos de arquivos estão ativadas no arquivo “/etc/fstab” e configuradas para serem montadas automaticamente durante o boot. Se você configurou os pontos de montagem das partições durante a instalação, elas já estarão configuradas corretamente, caso contrário, você pode fazer com que o sistema passe a usá-las inserindo as linhas apropriadas no arquivo “/etc/fstab”.

Se você acabou de particionar um novo HD em EXT3 e deseja que a partição “/dev/sdc1” criada seja montada na pasta “/mnt/sdc1“, por exemplo, os passos seriam:

Criar a pasta onde a partição será montada:

$ sudo mkdir /mnt/sdc1

Testar a montagem da partição:

$ sudo mount /dev/sdc1 /mnt/sdc1

Adicionar a linha abaixo no final do arquivo “/etc/fstab”, orientando o sistema a montá-la automaticamente durante o boot. Você pode abrir o arquivo no gedit, usando o comando “sudo gedit /etc/fstab”:

/dev/sdc1 /mnt/sdc1 ext3 defaults 0 0

Examinando o arquivo /etc/fstab, você percebe que o Ubuntu não faz referência às partições dentro do fstab pelo dispositivo, mas sim pelo UUID, que é um identificador único. O uso dos UUIDs é um “xuncho” para solucionar o problema dos devices dos HDs mudarem a cada boot, fazendo com que as partições deixem de ser montadas.

Para seguir o padrão do sistema, identificando a partição através do UUID, você pode verificar qual é o UUID referente à sua partição usando o comando “blkid”, como em:

# blkid /dev/sdc1

/dev/sdc1: UUID=”5c5a3aff-d8a3-479e-9e54-c4956bd2b8fd” SEC_TYPE=”ext2″ TYPE=”ext3″

Você pode então especificar o UUID na linha do fstab no lugar do device, como em:

    UUID=5c5a3aff-d8a3-479e-9e54-c4956bd2b8fd /mnt/sdc1 ext3 defaults 0 0

Veja um exemplo:

21dc54fb

Com as partições montadas, podemos passar para a etapa seguinte, que é instalar o Samba e criar os compartilhamentos desejados.

nstalar o servidor Samba no Ubuntu é bastante simples, você precisa apenas instalar o pacote “samba” usando o apt-get:

# apt-get install samba

Como a idéia é fazer uma configuração simples, que permita que o servidor compartilhe as pastas desejadas com os demais micros da rede local, sem impor restrições de acesso, utilizaremos a opção “guest account” do Samba para mapear todos os acessos para uma conta criada previamente. Com isso, os os usuários poderão acessar os compartilhamentos diretamente, sem precisar fornecer usuário e senha, de forma similar ao que temos ao criar compartilhamentos no Windows XP.

O primeiro passo é criar uma conta de usuário para acesso aos compartilhamentos, como em:

# adduser gdh

Se preferir, você pode simplesmente usar o usuário que criou durante a instalação. O próximo passo é cadastrar o usuário no Samba, usando o comando “smbpasswd -a”, fornecendo a mesma senha especificada ao criar o login:

# smbpasswd -a gdh

New SMB password:
Retype new SMB password:

Depois de cadastrar o usuário, falta configurar o Samba, o que é feito editando o arquivo “/etc/samba/smb.conf“:

$ sudo gedit /etc/samba/smb.conf

Apague todo o conteúdo do arquivo original, deixando-o com o seguinte conteúdo:

[global]
netbios name = Ubuntu
server string = Servidor Samba
workgroup = Grupo
local master = yes
os level = 100
preferred master = yes
wins support = yes

printing = cups
load printers = yes

map to guest = bad user
guest account = gdh

[printers]
comment = Impressoras
print ok = yes
guest ok = yes
path = /var/spool/samba

[arquivos]
path = /mnt/sdc1
writable = yes
guest ok = yes

[videos]
path = /mnt/sdb1/videos
writable = yes
guest ok = yes

As opções em negrito no modelo de configuração são as opções que você deve alterar, indicando as configurações que se aplicam ao seu caso:

    netbios name: Indica o nome do servidor, com o qual ele aparecerá no ambiente de rede.

    workgroup: O grupo de trabalho, o mesmo especificado na configuração das outras máquinas da rede.

    guest account: Aqui você especifica a conta que cadastramos anteriormente usando o comando “smbpasswd -a”.

    [arquivos] e [videos]: Estes são dois compartilhamentos de exemplo. Altere os nomes e as pastas compartilhadas conforme desejado.

Os compartilhamentos do Samba seguem uma estrutura muito simples, onde você indica o nome do compartilhamento (da forma como ele aparecerá no ambiente de rede) entre colchetes e indica a pasta a que ele dará acesso na opção “path”. A opção “writable = yes” faz com que o compartilhamento seja para leitura e escrita e a “guest ok = yes” faz com que ele fique disponível para qualquer usuário da rede, já que qualquer tentativa de acesso com um login de usuário que não existe será mapeada para o usuário “gdh”.

Para que a configuração entre em vigor, reinicie o Samba usando o comando:

$ sudo /etc/init.d/samba restart

A partir daí, o servidor aparecerá no ambiente de rede das máquinas Windows, compartilhando as pastas especificadas no arquivo. Devido ao uso do guest, os usuários poderão acessar os compartilhamentos diretamente, sem que você precise cadastrar cada usuário manualmente, como precisaria fazer em uma instalação tradicional do Samba:

172add21

Esta configuração também faz com que o servidor compartilhe automaticamente as impressoras instaladas. Configure a impressora no servidor através do “Sistema > Administração > Impressão” e ela ficará automaticamente disponível para os clientes.

Você pode criar mais compartilhamentos usando este mesmo modelo, mudando apenas o nome e a pasta a compartilhar. Com esta configuração, o servidor irá também automaticamente compartilhar as impressoras instaladas no servidor, você precisará apenas fornecer os drivers de impressão ao instalá-las nos clientes.

O único cuidado é que o usuário usado na opção “guest account” (o gdh no exemplo) precisa ter acesso completo ao conteúdo das pastas compartilhadas, já que todos os acessos serão feitos através dele. Caso necessário, altere as permissões de acesso às pastas, usando o comando “chown -R”, como em:

# chown -R gdh.gdh /mnt/sdc1/

O “-R” no comando faz com que as alterações seja aplicadas de forma recursiva, atingindo todos os subdiretórios dentro da pasta, enquanto o “gdh.gdh” indica o usuário e o grupo que assumirá o controle.

Se, como no meu caso, você está usando uma máquina atual como servidor, uma boa forma de usar os ciclos de processamento disponíveis é fazer com que ele rode máquinas virtuais, que poderão ser acessadas através dos outros micros da rede. Dessa forma, você pode deixar várias máquinas virtuais instaladas no servidor e usá-las em qualquer micro da rede local conforme precisar.

Se você precisa acessar um determinado site que só abre no IE, ou se quer testar uma determinada configuração no Fedora 8, vai precisar apenas abrir a VM correspondente. Além da flexibilidade, outra grande vantagem é que todo o processamento é feito no servidor, de forma que você pode abrir as VMs de que precisar, sem se preocupar em deixar seu micro lento.

Se você está chagando agora, pode ler mais sobre o VMware Server no meu tutorial sobre ele: http://www.guiadohardware.net/tutoriais/vmware-server/

Vamos aproveitar para já instalar o VMware 2.0, que inclui uma interface de administração via web bastante prática, que permite acessar as VMs diretamente através do navegador:


m102d9a8

Antes de começar, é necessário instalar o pacote “build-essential e os headers do Kernel em uso, como em:

$ sudo apt-get install build-essential
$ sudo apt-get install linux-headers-2.6.24-16-generic

Os arquivos do VMware Server 2.0 Beta estão disponíveis no: http://www.vmware.com/beta/server/. Quando a versão final estiver disponível, a página será movida para o http://www.vmware.com/download/server/.

Ele é dividido em dois pacotes: o pacote “VMware-server”, que é o componente principal e o “VMware-vix”, que contém a engine da interface de administração. Baixe os dois arquivos para a mesma pasta e descompacte-os, como em:

# tar -zxvf VMware-server-e.x.p-84186.i386.tar.gz
# tar -zxvf VMware-vix-e.x.p-84186.i386.tar.gz


Diferente do VMware-Server 1.0.x, onde você precisa instalar o patch “vmware-any” para que ele possa ser instalado no Ubuntu 8.04 (devido à versão do Kernel), o VMware 2.0 Beta 2 pode ser instalado diretamente.

Acesse a pasta “vmware-server-distrib/” e rode o script “vmware-install.pl”. Desde que você tenha descompactado os dois arquivos no mesmo diretório, o script se encarregará de instalar também o VMware-vix automaticamente.

# vmware-server-distrib/
# ./vmware-install.pl

Perto do final da instalação, o instalador pergunta sobre as portas que serão usadas para o acesso web, via HTTP e HTTPS. A menos que você pretenda rodar um servidor web no servidor, pode simplesmente usar as portas padrão (80 e 443) para facilitar o acesso.

Please specify a port for standard http connections to use [80]:
Please specify a port for secure http (https) connections to use [443]:


Como de praxe, ao especificar portas diferentes do padrão, você deve incluir a porta no endereço de acesso ao servidor, como em “https://192.168.1.254:40433

Uma observação é que as versões beta do VMware Server 2.0 vem com as extensões de debug ativadas. Elas permitem gerar relatórios detalhados sobre o status do software, que podem ser incluídos em bug reports, mas reduzem substancialmente o desempenho das máquinas virtuais (a perda chega a mais de 50% em diversas operações).

O debug pode ser desativado dentro das configurações de cada máquina virtual (você precisa desativá-lo uma por uma), desmarcando a opção “Record runtime information”, dentro da seção “Summay > Commands > Configure VM > Advanced”:

m5f875da3

Os betas possuem também um sistema de expiração, que bloqueia o uso das versões antigas conforme atualizações vão sendo disponibilizadas, de forma a evitar que os usuários continuem a utilizar versões beta antigas, cujos problemas já foram solucionados.

Quando ele perguntar “In which directory do you want to keep your virtual machine files?”, especifique a pasta onde você quer salvar as máquinas virtuais. Como as pastas podem ser bem grandes, é interessante usar uma partição separada, que possua bastante espaço disponível. Você pode, por exemplo, criar uma pasta separada dentro da partição com os compartilhamentos do Samba e indicá-la na opção, como em:

In which directory do you want to keep your virtual machine files?
[/var/VMs] /mnt/sdc1/VMs

O beta 2 do VMware Server 2.0 ainda tem alguns bugs diversos e o desempenho da interface web ainda deixa bastante a desejar. Se você preferir continuar com a versão 1.0.5, que é a versão “tried and true”, faça o download dos três pacotes no http://vmware.com/download/server/.

Para instalá-lo no Ubuntu 8.04, comece instalando pacote “xinetd” via apt-get:

$ sudo apt-get install xinetd

Em seguida, instale o pacote “vmware-server” baixando anteriormente, como em:

$ tar -zxvf VMware-server-1.0.5-80187.tar.gz
$ cd vmware-server-distrib
$ sudo ./vmware-install.pl

Em um certo ponto da instalação, o instalador vai abortar a instalação, reclamando de um erro relacionado à compilação do módulo vmmon. Este erro é decorrente do uso do Kernel 2.6.24-16 no Ubuntu 8.04, que é mais recente do que os suportados pelo instalador. Para continuar a instalação, baixe e instale o patch disponível no http://uruz.org/files/vmware-any-any-update-116.tgz:

$ wget -c http://uruz.org/files/vmware-any-any-update-116.tgz
$ tar -zxvf vmware-any-any-update-116.tgz
$ cd vmware-any-any-update116/
$ sudo ./runme.pl

O script faz as modificações necessárias no script de instalação e executa o instalador novamente. Dessa vez a instalação continua até o final. :)

Opcionalmente, você pode instalar também o pacote VMware-mui, que permite que você ative e desative as máquinas virtuais hospedadas no servidor usando o navegador.

O pacote vmware-server-client precisa ser instalado apenas nos clientes, de onde você for acessar as máquinas virtuais. Naturalmente, nada impede que você o instale também no servidor, principalmente se você for utilizá-lo como servidor não dedicado.

641dbb29

Você perceberá que o acesso aos dispositivos USB dentro das máquinas virtuais não funciona diretamente no Ubuntu 8.04. Para solucionar o problema, é necessário adicionar a linha abaixo no final do arquivo “/etc/fstab”:

none /proc/bus/usb usbfs devgid=46,devmode=664 0 0

Depois de salvar o arquivo, reinicie o servidor e o acesso passará a funcionar.

Para que o servidor passe a fornecer a configuração de rede aos clientes, instale o pacote “dhcp3-server” usando o apt-get, como em:

$ sudo apt-get install dhcp3-server

Em seguida, edite o arquivo “/etc/dhcp3/dhcpd.conf“, deixando-o com o seguinte conteúdo:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.201;
option routers 192.168.1.1;
option domain-name-servers 208.67.222.222,208.67.220.220;
option netbios-name-servers 192.168.1.254;
option broadcast-address 192.168.1.255;
}

A opção “range” determina a faixa de endereços IP que será usada pelo servidor. Se você utiliza a faixa de endereços 192.168.1.1 até 192.168.1.254, por exemplo, pode reservar os endereços de 192.168.1.1 a 192.168.1.100 para estações configuradas com IP fixo e usar os demais para o DHCP, ou então reservar uma faixa específica para ele, de 192.168.1.101 a 192.168.1.201, por exemplo. O importante é usar faixas separadas para o DHCP e os micros configurados com IP fixo.

Na “option routers” vai o endereço do default gateway da rede, ou seja, o endereço do servidor que está compartilhando a conexão. Não é necessário que o mesmo micro que está compartilhando a conexão rode também o servidor DHCP. Pode ser, por exemplo, que na sua rede o gateway seja o próprio modem ADSL que está compartilhando a conexão e o DHCP seja um dos PCs.

A opção “option domain-name-servers” contém os servidores DNS que serão usados pelas estações. Ao usar dois ou mais endereços, eles devem ser separados por vírgula, sem espaços.

A opção “option netbios-name-servers” faz com que os clientes sejam orientados a utilizarem o endereço IP do servidor na rede local como servidor WINS, agilizando a navegação na rede. Naturalmente, o “192.168.1.254″ deve ser substituído pelo endereço correto, caso diferente.

Depois de salvar o arquivo, não esqueça de reiniciar o serviço para que a configuração entre em vigor:

$ sudo /etc/init.d/dhcp3-server restart
Se você está usando um servidor com duas interfaces de rede, pode utilizá-lo também para compartilhar a conexão, adicionando também um proxy transparente com o Squid de forma a fazer cache dos arquivos e assim melhorar a velocidade da conexão.

Depois de configuradas as duas interfaces de rede, você pode ativar o compartilhamento com a rede local usando os comandos abaixo. O segundo (echo …) só pode ser executado diretamente como root, já que o sudo não permite escrever diretamente em arquivos de configuração usando o comando echo, por isso começamos usando o comando “sudo su” para nos logar diretamente na conta de root:

$ sudo su
# modprobe iptable_nat
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

O “eth1″ no terceiro comando indica a placa onde está a conexão com a Internet. Não se esqueça de indicar a interface apropriada ao executar o comando (na dúvida você pode checar a configuração da rede usando o ifconfig). Se você acessa via ADSL, usando o pppoeconf ou o adsl-setup (com o modem configurado como bridge) será criada a interface “ppp0″.

A partir daí, todas as requisições recebidas na interface de rede local serão mascaradas e roteadas usando a interface especificada e as respostas serão devolvidas aos PCs da rede local.

Os três comandos devem ser colocados em algum dos arquivos de inicialização do sistema para que passem a ser executados automaticamente durante o boot. No caso do Ubuntu e outras distribuições derivadas do Debian, você pode utilizar o arquivo “/etc/rc.local“, colocando as linhas desejadas antes do “exit 0″.

Vamos aproveitar para incluir também regras para ativar um firewall simples, que bloqueie as portas de entrada na interface com a internet, deixando passar apenas pacotes de respostas e conexões em portas indicadas manualmente. Com isso, o firewall garante um bom nível de proteção, com um mínimo de efeitos colaterais.

Para isso, utilizaremos o próprio iptables, complementando os três comandos anteriores. Estes comandos podem ser incluídos no arquivo /etc/rc.local, logo abaixo dos comandos para compartilhar a conexão:

iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state –state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -p tcp –syn -j DROP

O primeiro comando faz com que o seu servidor deixe de responder a pings. Muitos ataques casuais começam com uma varredura de diversas faixas de endereços de conexões domésticas, enviando um ping para todas as máquinas. Responder ao ping indica não apenas que a máquina está online, mas também que provavelmente ela está com o firewall desativado, o que estimula o atacante a continuar o ataque, lançando um portscan e iniciando o ataque propriamente dito. Deixando de responder aos pings, o volume de ataques ao servidor cai bastante.

Os dois comandos seguintes protegem contra IP spoofing (uma técnica usada em diversos tipos de ataques, onde o atacante envia pacotes usando um endereço IP falseado como remetente, tentando assim obter acesso a PCs da rede interna) e contra pacotes inválidos, que são comumente utilizados em ataques DoS e ataques de buffer overflow.

As três últimas linhas autorizam pacotes provenientes da interface de loopback (lo), juntamente com pacotes provenientes da rede local e descartam novas conexões na interface de Internet, deixando passar apenas pacotes de resposta. Não se esqueça de substituir o “eth0″ pela interface de rede local correta, caso contrário você vai acabar fazendo o oposto, ou seja, bloqueando as conexões dos PCs da rede local e deixando passar as provenientes da Internet :) .

Se você quiser abrir portas específicas adicione a regra “iptables -A INPUT -p tcp –dport 22 -j ACCEPT” (onde o “22″ é a porta e o “tcp” é o protocolo) antes da regra que bloqueia as conexões. Você pode repetir a regra caso necessário, abrindo assim todas as portas desejadas.

No final, incluindo os comandos para compartilhar a conexão e regras para abrir a porta 22 (SSH), os comandos a adicionar no script de inicialização seriam:

#!/bin/sh

# Compartilha a conexão
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Bloqueia pings e protege contra IP spoofing e pacotes inválidos
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state –state INVALID -j DROP

# Abre para a interface de loopback e para a interface de rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT

# Abre para as portas especificadas
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# Bloqueia as demais conexões, deixando passar apenas pacotes de resposta
iptables -A INPUT -p tcp –syn -j DROP
Aproveitando o compartilhamento da conexão, você pode melhorar um pouco o acesso adicionando um proxy transparente com o Squid. A configuração é simples e você ganha um cache para as páginas e arquivos já acessados, otimizando a conexão.

O primeiro passo é configurar o servidor Linux com duas placas de rede para compartilhar a conexão, como vimos nos tópicos anteriores. O proxy transparente é apenas um add-on, que complementa o compartilhamento da conexão via NAT.

Com tudo funcionando, o próximo passo é instalar o Squid, o que é feito através da instalação do pacote “squid”:

$ sudo apt-get install squid

Com o pacote instalado, o próximo passo é configurar o arquivo “/etc/squid/squid.conf“. Apague (ou renomeie) o arquivo original e crie outro com o seguinte conteúdo:

http_port 3128 transparent
visible_hostname gdh

cache_mem 64 MB
maximum_object_size_in_memory 128 KB
maximum_object_size 512 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_access_log /var/log/squid/access.log

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 280 443 488 563 591 777 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal

http_access deny all

A primeira linha indica a porta utilizada pelo Squid (3128) e que ele deve operar em modo transparente (transparent). A segunda indica o nome do servidor (gdh), que você deve substituir pelo nome do seu.

As quatro linhas seguintes indicam a configuração do cache. O Squid trabalha com dois caches distintos, um cache mais rápido, feito na memória RAM, e outro mais lento (porém maior) feito usando espaço do HD.

O “cache_mem 64 MB” indica o tamanho do cache na memória RAM (é recomendável que você utilize no máximo 1/3 da memória total instalada), enquanto o “4096″ na linha “cache_dir ufs /var/spool/squid 4096 16 256″ indica o tamanho do cache que será feito no HD, em megabytes.

A linha “acl redelocal src 192.168.1.0/24″ indica a faixa de endereços e a máscara utilizada na sua rede local (o /24 equivale à mascara 255.255.255.0). Combinada com as regras “http_access allow redelocal” e “http_access deny all” ela faz com que apenas micros da rede local possam utilizar o proxy, afastando qualquer possibilidade de que ele fique aberto para a Internet, independentemente da configuração do firewall.

A linha maximum_object_size 512 MB indica o tamanho máximo de arquivo que será armazenado no cache (arquivos maiores do que isso serão ignorados), o que evita que arquivos muito grandes, (como imagens ISO) que você vai baixar apenas uma vez, desperdicem espaço no cache.

Depois de terminar, reinicie o Squid para que a configuração entre em vigor:

# /etc/init.d/squid restart

Com isso, a configuração do servidor proxy está pronta, mas falta um passo igualmente importante, que é ativar a regra de firewall que faz com que os acessos destinados à porta 80, provenientes da rede local sejam encaminhados para o Squid. Sem isso, as requisições continuam sendo roteadas diretamente, sem passarem pelo proxy:

$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

Note que o “eth0″ no comando especifica a interface de rede local, que deve ser alterada de acordo com a sua configuração. Este comando (sem o sudo deve ser colocado no final do arquivo “/etc/rc.local”, logo depois dos comandos para compartilhar a conexão, como em:

#!/bin/sh

# Compartilha a conexão
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

# Bloqueia pings e protege contra IP spoofing e pacotes inválidos
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state –state INVALID -j DROP

# Abre para a interface de loopback e para a interface de rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT

# Abre para as portas especificadas
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# Bloqueia as demais conexões, deixando passar apenas pacotes de resposta
iptables -A INPUT -p tcp –syn -j DROP

Depois de ativar a regra de firewall, você pode testar o proxy navegando em algum dos micros da rede local (que use o servidor como gateway) e verificar o conteúdo do arquivo “/var/log/squid/access.log” no servidor. Conforme as requisições passam pelo proxy, o arquivo é alimentado com um grande volume de informações sobre as conexões realizadas.

Um dos grandes problemas das conexões domésticas é que o IP é dinâmico, o que dificulta o acesso externo. Se você pretende acessar o servidor e/ou outras máquinas da rede remotamente, uma solução simples é configurar um domínio virtual, usando o no-ip.com ou outro serviço de DNS dinâmico.
Os serviços de DNS dinâmico trabalham de uma forma bastante simples, onde um cliente instalado no seu servidor (ou em qualquer outra máquina da rede, acessando através da conexão compartilhada por ele) envia informações sobre o endereço IP corrente para os servidores do serviço, o que permite a eles manterem um subdomínio no estilo “meu-nome.no-ip.org”.


4e003034
Cadastro de um domínio virtual no no-ip.com

Para isso, basta fazer um cadastro gratuito para criar sua conta e poder cadastrar os domínios:

http://www.no-ip.com/newUser.php

Fica faltando então a parte mais importante que é a instalação do cliente. Para o No-IP, você pode utilizar o próprio cliente Linux disponível no:
http://www.no-ip.com/downloads.php?page=linux

Comece descompactando o arquivo. Dentro dele, existe uma pasta chamada “binaries”, com o arquivo “noip2-Linux”. Este é o executável que faz a atualização do IP. Para usá-lo, copie-o para a pasta “/usr/local/bin”, como em:

# tar -zxvf noip-duc-linux.tar.gz
# cd noip-2.1.1/binaries/
# cp -a noip2-Linux /usr/local/bin/


O próximo passo é executar o “noip2-Linux”, usando a opção “-C -c” (create config), que cria o arquivo de configuração. Você pode indicar onde o arquivo será criado, basta indicá-lo no comando. Nesta etapa ele pedirá o login de usuário e o domínio registrado no site, como em:

# noip2-Linux -C -c /etc/noip.conf

Auto configuration for Linux client of no-ip.com.
Please enter the login/email string for no-ip.com : meu@email.com
Please enter the password for user ‘meu@email.com ‘ ********
Only one host [meunome.no-ip.org] is registered to this account.
It will be used.
Please enter an update interval:[30]
Do you wish to run something at successful update?[N] (y/N) N
New configuration file ‘/etc/no-ip.conf’ created.

Com o arquivo de configuração criado, inicie o noip2-Linux usando o comando abaixo. Inclua o comando em uma dos scripts de inicialização do sistema, como o “/etc/rc.d/rc.local“, para que ele seja executado durante o boot. Não esqueça de adicionar o “&” no final do comando, ele faz o programa rodar em background. Sem ele, o comando bloqueia o terminal, paralisando a inicialização do sistema. Note que agora usamos apenas o segundo “c”, que indica que ele deve usar o arquivo de configuração anteriormente criado:

# noip2-Linux -c /etc/noip.conf &

Nas distribuições derivadas do Debian, existe a opção de instalar o pacote disponível via apt-get:

# apt-get install no-ip

Ao ser instalado, ele cria automaticamente o script “/etc/init.d/no-ip”, que se encarrega de ativar o programa durante o boot. Para que ele funcione, fica faltando apenas criar o arquivo de configuração, usando o comando:

# no-ip -C -c /etc/no-ip.conf

Para que a configuração entre o vigor, reinicie o serviço, usando:

# /etc/init.d/no-ip restart
A forma mais simples de acessar seu servidor remotamente é usar o SSH. Através dele, você pode não apenas rodar comandos de terminal, mas também rodar programas gráficos e transferir arquivos. Para instalar o servidor SSH no Ubuntu, instale os pacotes “openssh-server” e “openssh-client”:

# apt-get install openssh-server openssh-client

Com o SSH ativo, você pode acessar a máquina remotamente usando o cliente SSH, fornecendo o login e o endereço IP ou domínio da máquina, como em:

$ ssh -X gdh@192.168.1.254

No primeiro acesso o cliente confirma o fingerprint do servidor, uma identificação que permite ao cliente SSH detectar ataques man-in-the middle, onde o servidor é substituído por outra máquina, configurada para capturar as senhas. O “-X” permite que você rode aplicativos gráficos. Basta chamá-los pelo nome através do terminal, como se estivesse sentado na frente do servidor.

Para transferir arquivos, o comando básico é o sftp, que lhe dá um prompt de transferência de arquivos. O uso é similar ao do SSH, basta incluir o login de acesso e o endereço do servidor, como em:

# sftp gdh@192.168.1.254

Se você é das antigas, da época dos clientes de FTP para MS-DOS, vai se identificar com a interface :) . Para baixar um arquivo use o comando “get” e para navegar entre os diretórios use o “cd” e o “ls ..”, da mesma forma que em um prompt local.

No dia-a-dia, você dificilmente vai utilizar o SFTP em linha de comando, pois existem interfaces mais práticas. Nas distribuições baseadas no Gnome, você pode utilizar o módulo “ssh://” do Nautilus, digitando “ssh://usuario@servidor” diretamente na barra de endereços (clique no ícone com a folha de papel para liberar a edição), o que permite acessar os arquivos diretamente e inclusive copiar e colar arquivos entre diversas janelas do navegador:

dca9331

Nas distribuições baseadas no KDE, você obtém a mesma função através do módulo “fish://” do Konqueror. Basta digitar “fish://usuario@servidor” na barra de endereços.

Para complementar o SSH, você pode instalar o NX server, uma espécie de terminal server para Linux, que permite que você acesse o desktop do servidor remotamente e rode qualquer conjunto de aplicativos instalado nele. Não existe limite de conexões simultâneas, de forma que você pode inclusive acessar o servidor (usando logins diferentes) a partir de todas as máquinas da rede simultaneamente:

m1e4380d9

Assim como no VNC, o NX exibe uma janela contendo um desktop do servidor. O tamanho da janela é ajustável e cada sessão é independente, permitindo que dezenas de clientes (Linux ou Windows) se conectem ao mesmo servidor Linux. Ao encerrar a sessão, você tem a opção de suspendê-la, o que permite reconectar mais tarde (a partir do mesmo cliente), sem perder as janelas e trabalhos abertos.

Originalmente, o servidor era pago e o cliente ficava disponível para download gratuito. Mas, assim como o VMware, a partir de um certo ponto a NoMachine resolveu oferecer uma versão gratuita também do servidor, como uma forma de aumentar sua participação no mercado e assim ganhar espaço para vender suas soluções corporativas.

Para instalar a versão gratuita do NX Server, baixe os pacotes do “NX Free Edition for Linux”, “NX Node” e “NX Client” no http://www.nomachine.com/download.php.

É necessário baixar os três pacotes, pois o servidor depende dos outros dois para funcionar. Estão disponíveis versões em .rpm, .deb e também um pacote genérico, em .tar.gz, que pode ser usado no Slackware e outras distribuições.

12c2ae65

Ao instalar, comece instalando o cliente, seguido pelo NX Node, deixando o servidor por último, como em:

$ sudo dpkg -i nxclient_3.2.0-9_i386.deb
$ sudo dpkg -i nxnode_3.2.0-5_i386.deb
$ sudo dpkg -i nxserver_3.2.0-7_i386.deb

Aproveite para rodar o comando “apt-get -f install” no final do processo para corrigir qualquer eventual problema relacionado a dependências dos pacotes:

$ sudo apt-get -f install

Nas estações, você precisa instalar apenas o pacote “nxclient”, que possui versões para Linux, Windows, OSX e até Solaris.

O servidor NX utiliza o SSH como meio de transporte, por isso, para utilizá-lo é necessário que o servidor SSH esteja ativo. Uma vez instalado, o servidor NX permite que você se conecte usando qualquer login de usuário disponível no servidor (com exceção do root). Se você quer dar acesso a alguém, basta criar uma nova conta, usando o “adduser”.

m22c7f2b7

Nos clientes, você precisa instalar apenas o pacote “nxclient”, como em:

$ sudo dpkg -i nxclient_3.2.0-9_i386.deb

Como comentei, ele possui também uma versão Windows (que possui uma configuração exatamente igual à da versão Linux), que pode ser baixada na mesma página,

Na maioria das distribuições Linux, ao instalar o cliente NX, são criados ícones no “Iniciar > Internet”. Da primeira vez, use o “NX Connection Wizard” para criar a conexão inicial. Se o ícone não tiver sido criado, use o comando “/usr/NX/bin/nxclient -wizard” (usando seu login de usuário, não o root):

m1c949193

Estão disponíveis ainda opções com o nível de compressão dos dados e do tamanho da janela. Usando a opção “LAN”, que é destinada a conexões via rede local, não existe perda de qualidade de imagem, mas, ao usar as demais opções, destinadas a conexões mais lentas, as imagens são comprimidas via JPG, o que garante uma atualização mais rápida, porém com uma certa perda de qualidade.

Na segunda janela, temos outra opção importante, que é a seleção do ambiente gráfico usado. O cliente NX não é capaz de detectar automaticamente o ambiente gráfico usado no servidor, de forma que você precisa especificá-lo na criação da conexão. No caso do Ubuntu, que usa o Gnome por padrão, escolha “Unix > Gnome”:

5f0af460

A opção “Select size of your remote desktop” permite especificar o tamanho da janela com a conexão remota. A opção “Available area” faz com que a janela ocupe todo o espaço útil do desktop, sem cobrir a barra de tarefas (o ideal na maioria das situações), mas você pode também especificar uma resolução qualquer, como “1000×700″ ou “800×480″. Não é necessário se prender às resoluções mais usadas, você pode utilizar qualquer valor.

O cliente NX se encarrega de criar ícones no desktop para as conexões criadas, o que facilita o acesso a elas:

1f11af9

Entretanto, para ter acesso ao botão “Configure…”, que dá acesso ao painel de configurações, você precisa abrir a conexão usando o ícone “NX Client” no menu, ou o comando “/usr/NX/bin/nxclient -wizard”.

Ao acessar o menu de configuração, você tem acesso a um conjunto extra de opções. A primeira dica é a opção “Remember my password” na aba “General”, que permite memorizar a senha de acesso. Marcando a opção “Use custom settings” você tem acesso a um menu com opções adicionais relacionadas à compressão da imagem:

4e8cc44e

m49134060

Aqui você tem a opção de ajustar o nível de compressão do JPG (os níveis mais altos são úteis em conexões via modem), usar compressão via RGB (um formato sem perda) ou desabilitar completamente a compressão usando a opção “Use plain X bitmaps”. Esta última opção consome mais banda da rede (o que não chega a ser um problema em uma rede de 100 megabits), mas em troca usa menos processamento, tanto no servidor quanto no cliente. Ela é uma boa opção para uso em rede local, onde temos bastante banda disponível.

Na aba “Advanced” temos a opção “Disable ZLIB stream compression”, mais uma opção interessante para melhorar o desempenho das conexões via rede local em clientes com pouco processamento.