Tutoriais

Aula prática: S.O. de propósito específico

postado em 25/11/2011 20:50 por Everthon Valadão   [ 26/11/2011 03:12 atualizado‎(s)‎ ]

Na aula de hoje, utilizaremos o LiveCD de um Sistema Operacional de propósito específico, o XBMC, que provê uma Central de Mídia.

"Em muitas casas, um servidor Central de Mídia (Media Center ou HTPC) já é um elemento central na sala. Um computador ligado à TV coloca a disposição do usuário um conjunto de interessantes funcionalidades que vão desde a reprodução de vídeos e música até a visualização de imagens/fotografias num ambiente totalmente desenhado e intuitivo:

xbmc_01

Das várias soluções de softwares para Centrais de Mídia, o XBMC é um poderoso gerenciador multimídia. Com ele podemos facilmente organizar, catalogar e reproduzir todo o tipo de dados multimídia (áudio e vídeo). Tudo acontece dentro do ambiente do XBMC, que oferece ao usuário um ambiente agradável e muito funcional."

Após termos configurado e utilizado algumas das funções do XBMC, organizem-se em grupos de 02 alunos e elaborem um relatório sobre um dos Sistemas Operacionais abaixo:
  1. SnakeOS   (link1, link2) [Rinaldo, Leilane]
  2. OpenWrt   (link1, link2) [Antônio, Roberto]
  3. BusyBox   (link1link2) [?, ?]
  4. RockBox   (link1, link2) [Tatiane, Geraldo]
  5. Android   (link1, link2) [Leandro, ?]
  6. Apple iOS (link1, link2) [Sílvio, ?]
  7. Maemo     (link1, link2) [Mônica, Marina]
A distribuição dos temas dos grupos será feita por sorteio. Para o S.O. sorteado, cada grupo deverá pesquisar sobre:
  • O que é e para que serve
  • Características
  • Onde obter, quanto custa e licença
  • História do desenvolvimento
  • Equipamentos que o utilizam

FONTES.:

Aula Prática: Proxy-cache com o Squid

postado em 19/11/2011 00:29 por Everthon Valadão   [ 21/11/2011 08:35 atualizado‎(s)‎ ]

Servidor Proxy
Um servidor Proxy possui a finalidade de possibilitar que máquinas contidas em uma determinada rede local (LAN) possam obter acesso a uma rede pública (Internet). Normalmente este servidor é instalado em um computador que possui acesso direto à internet, sendo assim toda solicitação externa à LAN deve ser feita por meio desta máquina intermediária. De modo geral, um servidor proxy realiza solicitações em nome de outras máquinas da rede.

Um servidor proxy também pode implementar uma NAT ("Network Address Translation": Tradução de Endereços de Rede). A NAT permite que endereços de rede internos sejam ocultados da Internet: todos os computadores da rede local de uma organização são apresentados na Internet com um único endereço IP (o endereço da máquina onde roda a NAT). Isso é possível através de um mecanismo que utiliza os números de portas para endereçar os diversos computadores atrás do IP da NAT. Apesar de ser conceitualmente errado (pois cada computador deveria ser endereçado por um IP próprio), a NAT possibilita que vários computadores acessem a Internet através de um único endereço IP (da NAT), talvez justificável pela escassez de endereços IPV4 e por critérios de segurança (ocultação das máquinas da LAN).

Outras funcionalidades podem ser acopladas ao proxy, tais como caching de páginas da Internet. Com isto, as requisições aos sítios Web já visitados anteriormente por outras máquinas são feitas mais rapidamente. Também, é possível impedir o acesso indevido a páginas da internet, mecanismo geralmente utilizado por empresas ou instituições públicas. Por exemplo, é possível barrar o acesso do usuário a sites inadequados ou que não sejam de interesse de uma instuição, por exemplo chats, jogos, pornografia, etc.

Squid

“O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições freqüentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso.” (Wikipédia)

Para tal, o Squid mantém armazenados localmente (no HD e na RAM) meta dados, objetos, buscas de DNS, dentre outros. Ele suporta SSL, listas de acesso complexas e auditoria completa (logs). Por utilizar o Internet Cache Protocol, o Squid pode ser configurado para trabalhar de forma hierárquica ou mista para melhor aproveitamento da banda. O Squid executa na maioria dos Sistemas Operacionais, como o GNU/Linux, UNIXes e Windows.

A figura abaixo representa um típico cenário de utilização do Squid: uma rede local (LAN) com algumas dezenas de máquinas (desktops e servidores), conectadas ao(s) comutador(es). Entre o comutador e o modem que provê acesso à Internet, haveria um servidor com funções de Proxy (NAT, Cache) e Firewall, protegendo e melhorando o desempenho da rede:

OBS.: por critérios didáticos, para que todos possam aprender a instalar e configurar o Squid, cada um deverá instalar e utilizar o Squid em sua própria máquina. Já numa situação real, o servidor proxy seria instalado como no diagrama acima, devendo ter duas interfaces de rede Ethernet para intermediar o acesso entre a Internet (modem) e a rede local (switch).

Instalação:
Para instalar o SQUID no Ubuntu ou alguma distribuição derivada do Debian, execute o comando:
sudo apt-get install squid3

OBS.: Para instalar o SQUID em outras distribuições e Sistemas Operacionais, obtenha-no em:
http://www.squid-cache.org

Após instalado, confira se o Squid está executando, através do comando:
ps -ax | grep -i squid3

Que deverá retornar uma linha parecida com:
26662 ?        Ss     0:00 /usr/sbin/squid3 -YC -f /etc/squid3/squid.conf

Antes de prosseguirmos, iremos aproveitar pra configurar seu navegador para utilizar o Proxy. No navegador Web Firefox, vá ao menu Editar > Preferências. Na aba Avançado > Rede, clique no botão Configurar Conexão. Selecione "Configuração manual de Proxy" e preencha com o IP e porto do servidor proxy. No nosso caso, estes dados seriam localhost e 3128 (porto padrão do Squid):

Configuração:

Agora devemos modificar o arquivo de configuração do Squid, através do comando:
sudo gedit /etc/squid3/squid.conf

Primeiramente, confirme o número porto no qual o Squid escutará pelas requisições dos navegadores Web, procurando pelo texto:
http_port 3128

Configurando a Cache:

Para ativar o cache do Squid, localize a linha com a configuração do diretório da cache (#cache_dir) e descomente-a (retire o #):
#cache_dir ufs /var/spool/squid3 100 16 256

Vamos entender os parâmetros: o primeiro diz respeito ao formato do cache (UFS), vamos deixar como está. A segunda opção informa o diretório do cache, que pode ser direcionado para um disco rígido dedicado, caso o possua. O terceiro parâmetro é o tamanho da cache em MB, troquemos os 100 MB iniciais por 1024 MB. Os outros parâmetros dizem respeito à configuração dos diretórios do Squid, portanto não é necessário mudá-los. Então esta linha fica como:
cache_dir ufs /var/spool/squid3 1024 16 256

Salve o arquivo de configuração.

Devemos criar manualmente este diretório e dar permissão de escrita pro usuário que roda o squid (o usuário "proxy"):
sudo mkdir -p /var/spool/squid3
sudo chown -R proxy:root /var/spool/squid3

Caso o Squid ainda não esteja rodando, crie a cache com o comando:
sudo service squid3 stop
sudo squid3 -z
sudo service squid3 start
Se ele já estiver rodando, faça com que o Squid recarregue o arquivo de configuração:
sudo squid3 -k reconfigure

Verifique o tamanho total dos arquivos armazenados na cache com o comando:
sudo du -c /var/spool/squid3 | tail -n1
Faça algumas pesquisas na Web, acesse alguns sítios e execute novamente o comando para ver que a cache vai crescendo (obviamente, até o tamanho máximo definido):
sudo du -c /var/spool/squid3 | tail -n1

Configurando as Listas de Controle de Acesso:

Agora, voltando ao editor de texto com o arquivo de configuração do Squid, localize a linha
acl CONNECT method CONNECT

Logo abaixo dela, poderíamos configurar as ACL (Listas de Controle de Acesso) do Squid. As ACL permitem especificar endereços de origem ou destino, domínios, horários, usuários, portas ou métodos de conexão ao Proxy, que servirão de base para permitir ou negar o acesso baseando-se em conjuntos dessas ACL's. Isto permite uma grande flexibilidade na configuração do SQUID: podemos, por exemplo, especificar quais endereços podem ser acessados ("whitelist"), quais não podem ser acessados ("blacklist"), que certo endereço somente pode ser acessado em determinado horário, que um usuário somente pode acessar a partir de uma maquina especifica, que um protocolo pode ou não ser utilizado, ou qualquer combinação dessas permissões/restrições. 

Por exemplo, caso nosso servidor proxy fosse ser utilizado por várias máquinas de nossa rede local, deveríamos adicionar logo abaixo de "acl CONNECT method CONNECT" uma linha contendo 
acl redeifmg   src 192.168.0.0/255.255.0.0
Isto cria uma ACL de nome redeifmg do tipo src (IP de origem) sendo seu domínio 192.168.0.0/255.255.0.0

acl redeifmg src 192.168.0.0/255.255.0.0
|       |       |       |_ > Domínio da ACL
|       |       |       
|       |       |    _ > Tipo de ACL
|       |       
|       |        _ > Nome da ACL
|
|            _ > Comando de criação de ACL
Porém, como no nosso caso estamos apenas testando o Squid localmente, não seria necessário fazê-lo. Para mais informações sobre ACL, leia as instruções do próprio arquivo de configuração do Squid e procure mais informações em tutoriais da Internet (esse por exemplo).

Localize a linha contendo
# And finally deny all other access to this proxy
Observe que antes dela há uma linha autorizando o acesso a partir da rede local:
http_access allow localhost
E após, uma linha negando qualquer outro tipo de acesso:
http_access deny all
Isto é importante para que somente seus clientes locais se beneficiem do proxy, evitando que outros espertinhos sobrecarreguem seu servidor.

Devemos fazer com que o Squid recarregue o arquivo de configuração:
sudo squid3 -k reconfigure

Configurando palavras-chave bloqueadas e liberadas:

O arquivo block.txt irá conter todos os sites e palavras que você deseja bloquear e o unblock.txt todas as exceções. "Como assim?", você pergunta. Vamos supor que você tenha bloqueado a palavra sexo. Então você não poderá entrar em www.sexo.com.br, mas também não poderá entrar em www.sexoesaude.com.br. Ora, mas esse segundo site é inofensivo, portanto não deveria ser bloqueado. Basta colocá-lo no unblock.txt.

A ordem em que as ACLs aparecem é muito importante, por isso a ACL que bloqueia os sites deve ser a primeira a aparecer! No arquivos de configuração do Squid, localize a linha:
acl all src all

Suas regras de bloqueio devem vir logo após esta linha, acima de todas as outras ACLs. Acrescente abaixo dela as seguintes linhas, para configurar os bloqueios e liberações:
## definir sites bloqueados
acl blockedsites url_regex -i "/etc/squid3/bloqueados.txt"

## definir sites permitidos
acl unblockedsites url_regex -i "/etc/squid3/desbloqueados.txt"

OBS.: também é possível realizar o bloqueio via dstdomain, urlpath_regex ou url_regex

Agora procure no seu squid.conf a linha http_access deny all e coloque
antes dela:
http_access deny blockedsites !unblockedsites

OBS: o "!" Significa sempre negação de alguma coisa, ou seja, não bloqueie os sítios que estiverem na lista de desbloqueados

Crie os arquivos de bloqueio:
sudo gedit /etc/squid3/bloqueados.txt

Preencha com alguns sites que deseje bloquear:
facebook
orkut
hotmail

Dê permissão para o usuário do squid, chamado proxy:
sudo chown -R proxy:root /etc/squid3/bloqueados.txt

Devemos fazer com que o Squid recarregue o arquivo de configuração:
sudo squid3 -k reconfigure

Após, tente acessar no Navegador Web alguns dos sítios bloqueados e desbloqueados. Caso não consiga fazer o bloqueio funcionar de primeira, procure outros tutoriais que ensinem a configurar regras de bloqueio/desbloqueio de sites (ex.: este ou esse).

Dicas:

Para reiniciar o Squid, execute:
sudo squid3 -k shutdown
sudo service squid3 start
sudo squid3 -k check

Caso queira acompanhar o LOG do SQUID no servidor faça:
sudo tail -F /var/log/squid3/access.log
OBS.: Logs de proxy acabam por consumir enorme quantidade de espaço, o ideal seria que houvesse uma partição separada no seu Linux para salvar os LOGs.

Para os clientes não terem o trabalho de configurar manualmente o proxy no Navegador Web, é possível deixar o proxy "transparente" para os clientes, caso ele esteja intermediando o acesso à Internet como na figura exibida. Para tal, bastaria seguir um tutorial como o deste link.

FONTES:

1-2 of 2