MANUTENÇÃO - CONSULTORIA - APLICAÇÃO WEB Linux e Microsolft - INTERNET - SEGURANÇA





quarta-feira, 10 de agosto de 2011

O que é Ubuntu


Ubuntu é um sistema operacional baseado em Linux desenvolvido pela comunidade e é perfeito para notebooks, desktops e servidores. Ele contém todos os aplicativos que você precisa - um navegador web, programas de apresentação, edição de texto, planilha eletrônica, comunicador instantâneo e muito mais.


Referência: http://www.ubuntu-br.org/
Leia Mais ►

Último Passo de Criar um Servidor de Rede Ubuntu - SSH e NX Server


SSH e NX Server

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 "1000x700" ou "800x480". 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.

Leia Mais ►

Sétimo Passo de Criar um Servidor de Rede Ubuntu - Domínio Virtual


Domínio virtual

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:
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
Leia Mais ►

Sexto Passo de Criar um Servidor de Rede Ubuntu - Proxy Transparente


Adicionando um proxy transparente

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/24http_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.
Leia Mais ►

Quinto Passo de Criar um Servidor de Rede Ubuntu - Compartilhamento da Conexão


Compartilhamento da conexão

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
Leia Mais ►