Boatos sobre “Ubuntu Destruction”…

Standard

Sim, usei o termo entre “aspas” para focar em um termo estranho, visto que o Ubuntu (gnu/linux que uso atualmente, ou seja, mais uma dentre centenas de distribuições) gerou um discussão de grandes proporções no portal SlashDot e em alguns fóruns. O motivo é informado no SlashDot, um possível BUG está reduzindo o tempo de vida do HD drasticamente.

Alguns usuários já contém o “laudo cadavérico”, dizem que a falha está no sistema de economia de energia, o ACPI que não está gerenciando corretamente.

Se isso for verdade, acreditamos que pela quantidade enorme de “commiters”, breve receberá correção da equipe Canonical.

Estou deixando os links abaixo para que vocês possam conferir, direto da fonte:

http://hardware.slashdot.org/article.pl?sid=07/10/30/1742258

https://launchpad.net/bug59695.html

E como sempre, de tabela, encerrando mais uma vez “matéria”, rsrsrs (até parece reportagem…) deixo links abaixo como “utilitários”:

Conversão de arquivos OnLine

http://www.zamzar.com

Dicionário em Português Online

http://www.priberam.pt/dlpo/dlpo.aspx

Notícias Linux

http://www.cyberlinux.com.br

Sistema Operacional Robusto/Seguro/Cust-Benefício

http://www.openbsd.org

Como Atualizar seu Ubuntu 7.04 (Feisty Fawn) para Ubuntu 7.10 (Gutsy Gibbon)?

Standard

Gente, hoje pela madrugada estive atualizando o ubuntu, pois ainda não tenho o cd da versão 7.10 (preguiça mesmo de baixar), decidi ontem utilizar o “Gutsy Gibbon” para “ter uma opinião própria”.

Primeira coisa que me deparei, no ato da upgrade foi um sistema de gerenciamento do Update EXCELENTÍSSIMO, nunca vi isto em nenhuma distribuição, tanta facilidade.

Seguindo os passos abaixo você será capaz de atualizar seu ubuntu 7.04 para o ubuntu 7.10:

1-Vá no menu SISTEMA-> ADMINISTRAÇÃO -> GESTOR DE UPDATE

segue foto:

2-Após abertura do menu aparecerá a opção “Checar Atualizações”, você clica nela e aparecerá na parte superior uma mensagem semelhante a:

“Nova versão lançada 7.10 disponível” -> ao lado a opção “Atualizar”

segue foto abaixo:

3-> Clique na opção atualizar e aguarde algumas horas (segundo eles com link de 1 mb você faz o update em cerca de 4 horas e alguns longos minutos, que na realidade chegam a quase 5 horas).

Feito isto, aguarde enquanto seu ubuntu instala quase 600 megas de puro código-fonte.

Depois de instalados os pacotes, o Ubuntu fará uma sugestão para reiniciar o PC, obedeça (lógico), após reiniciado o sistema a versão já será 7.10 .

Overview:

1-> Percebi uma melhora significativa na pilha tcp do ubuntu, aonde fiz testes básicos de rede e a transmissão de dados foi excelente.

2-> Um fator que não poderia deixar de citar é o consumo de memória, achei o ubuntu muito “comilão de memória”, visto que a máquina utilizada tem 1 gb de ram e “Não se sentiu leve”.

3-> Todos os Drives foram portados para nova versão SEM PROBLEMAS, inclusive a wireless que estava utilizando o ndiswrapper e não se deu mau (drive broadcom, PROPRIETÁRIO).

4-> Suporte de aplicações mais aprimorado.

Como um todo, no conjunto da “obra” eu recomendo um upgrade, até mesmo por questões de segurança.

Hardware para testes:

Acer Aspire 3610 – 1,5 ghz (celeron), 1 gb de ram ddr2, hd dual boot 40 gb (XP e Ubuntu).

Recomendações:

Atualizar o Ubuntu 7.04 para 7.10

PHP + Iptables

Standard

Esta dica vai para quem está rodando a procura de algum How to de como implementar uma solução PHP + Iptables , aqui vai uma dica que você utilizará e ajustará para um melhor resultado.

Abaixo, atentamente siga os passos.

1 – Preparando o Terreno

1.1 -> Configurar o arquivo sudoers,
1.2 -> Preparar as regras de iptables,
1.3 -> Scripts PHP.

2 – Conclusão

1.1 – Configurar o arquivo sudoers

Antes de mais nada, gostaria de agradecer a Deus por esta simples solução e desejar a todos um ótimo estudo.

Início do ano estive “encalacrado” em uma situação que não me restou escolha, a não ser utilizar esta ferramenta (PHP) para trazer um alívio. Início do ano fomos (eu e amigos de equipe) pegos desprevenidos devido um “desastre” ocorrido com um de nossos servidores, acarretando em perdas de scripts. O servidor era gnu/linux, o mesmo, de uma hora para outra parou (hd foi para o espaço), perdemos diversos scripts, inclusive o script de firewall padrão que era escrito em Shell Script, não por mim, mas sabia como funcionava. Decidi “por a mão na massa”, pesquisei, nada encontrei mas lembrei-me que quando o php está como MÓDULO do APACHE, ele utiliza o usuário do apache, ou seja, NOBODY. Após muito stress em pesquisa, somei how tos daqui e tutorias dali, fiz uma “buchada” e decidi formar minha “obra prima”. Sem mais enrolação, vamos ao que interessa.

Objetivo: Se você deseja criar scripts de firewall, acessíveis via browser que utilizem a ferramenta do LINUX, IPTABLES, para liberar Pcs de rede, basta verificar este exemplo.

Minha necessidade: Como trabalhava com laboratórios, tinha necessidade de liberar vários laboratórios sem que fosse prejudicada a rede Corporativa, tomamos por exemplo:

REDE Corporativa
Laboratório 1
Laboratório 2 \_________________ Todos recebendo Internet do firewall (Linux)
Laboratório 3 /

Suponhamos que na rede corporativa o range de ip (faixa) seja 192.168.10.0, e a porta que eles necessitem estar aberta seja 80 (é claro que deve ser, ou você acha que o seu diretor não gosta de Orkut?)

Suponhamos que na rede laboratorial, o lab 1 (vamos chamar laboratórios de lab), tem faixa de ip diferente, por exemplo: 192.168.0.x
Suponhamos que na rede laboratorial, o lab 2 tem faixa de ip diferente, por exemplo: 192.168.1.x

Suponhamos que na rede laboratorial, o lab 3 tem faixa de ip diferente, por exemplo: 192.168.2.x

————–>>>> Arquivo Sudoers

no /etc (linux), existe um arquivozinho que faz milagres, chamado sudoers, ele faz com que usuários não privilegiados executem comandos de root (ou usuários não comuns), nele vamos inserir a entrada do usuário NOBODY (lembre que falei do módulo do apache), segue exemplo abaixo:

CODE
  1. # sudoers file.
  2. #
  3. # This file MUST be edited with the 'visudo' command as root.
  4. #
  5. # See the sudoers man page for the details on how to write a sudoers file.
  6. #
  7. # Host alias specification
  8. # User alias specification
  9. # Cmnd alias specification
  10. # Defaults specification
  11. # User privilege specification
  12. root ALL=(ALL) ALL
  13. # Uncomment to allow people in group wheel to run all commands
  14. # %wheel ALL=(ALL) ALL
  15. # Same thing without a password
  16. # %wheel ALL=(ALL) NOPASSWD: ALL
  17. # Samples
  18. # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
  19. # %users localhost=/sbin/shutdown -h now
  20. nobody ALL=NOPASSWD:/usr/sbin/iptables

Esta última linha indica que liberamos o Iptables para o usuário nobody, sem necessidade de password de root.


1.2 – Preparar as regras de iptables

As regras que vamos utilizar são bastante simples, depois você implementará coisas gigantescas, mas agora não é hora ?:) , vamos às regras que iremos utilizar

CODE
  1. limpar firewall -> iptables -F
  2. para o lab 1 usaremos a regra –> iptables -t filter -A FORWARD -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT
  3. para o lab 2 usaremos a regra –> iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 --dport 80
  4. -j ACCEPT
  5. para o lab 3 usaremos a regra –> iptables -t filter -A FORWARD -p tcp -s 192.168.2.0/24 --dport 80
  6. -j ACCEPT
  7. para rede corporativa usaremos -> iptables -t filter -A FORWARD -p tcp -s 192.168.10.0/24 --dport 80 -j ACCEPT

Pronto, essas são as regras de iptables que usaremos.

OBS: sabemos que regras como NAT, DNAT, MANGLE e etc são necessárias para compor todo firewall, porém não vou abranger aqui, se você quer algo robusto em firewall, sugiro que leia este Howto -> http://www.linuxguruz.com/iptables/howto/

1.3 – Scripts PHP

criei 2 arquivos, index.php e firewall.php, onde o index.php conterá os labs (para marcar) e no método POST o arquivo firewall.php vai processar a escolha.

Segue exemplo do arquivo index.php:

PHP
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title>Firewall do Laboratório - Inspirado por Deus</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6. <style type="text/css">
  7. <!--
  8. .style3 {font-family: Verdana, Arial, Helvetica, sans-serif; color: #006699; }
  9. .style5 {color: #00CCFF}
  10. .style7 {
  11. font-family: Verdana, Arial, Helvetica, sans-serif;
  12. color: #00CCFF;
  13. }
  14. -->
  15. </style>
  16. <script language="JavaScript" type="text/JavaScript">
  17. <!--
  18. function MM_reloadPage(init) { //reloads the window if Nav4 resized
  19. if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
  20. document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  21. else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
  22. }
  23. MM_reloadPage(true);
  24. //-->
  25. </script>
  26. </head>
  27. <body>
  28. <form action="firewall.php" method=post>
  29. <div id="Layer1" style="position:absolute; left:11px; top:14px; width:183px; height:244px; z-index:1; background-color: #006699; layer-background-color: #006699; border: 1px none #000000; visibility: visible;">
  30. <h6 align="center" class="style3 style5">:::... <u>LIBERAR INTERNET</u> ...::: </h6>
  31. <h6>
  32. <input name="limpar" type="checkbox" value="lab0">
  33. <span class="style7">Limpar Firewall
  34. <br>
  35. <input name="laboratorio1" type="checkbox" value="lab1">
  36. Liberar Laboratório 1
  37. <br>
  38. <input name="laboratorio2" type="checkbox" value="lab2">
  39. Liberar Laboratório 2
  40. <br>
  41. <input name="laboratorio3" type="checkbox" value="lab3">
  42. Liberar Laboratório 3
  43. <br>
  44. <td colspan="2" align="center"><input type="submit" class="style3" value="Ativar Escolha"></td>
  45. </span>
  46. </h6>
  47. </div>
  48. </form>
  49. </body>
  50. </html>

firewall.php:

PHP
  1. <?php
  2. //Criando Variáveis
  3. $limpar = $_POST['limpar'];
  4. $laboratorio1 = $_POST['laboratorio1'];
  5. $laboratorio2 = $_POST['laboratorio2'];
  6. $laboratorio3 = $_POST['laboratorio3'];
  7. // sempre liberamos a net para rede corporativa
  8. shell_exec(“sudo /usr/sbin/iptables -A FORWARD -p tcp -s 192.168.10.0/24 --dport 80 -j ACCEPT”);
  9. if($limpar == 'lab0')
  10. {
  11. shell_exec("sudo /usr/sbin/iptables -F");
  12. echo '<br>O Firewall foi zerado</br>';
  13. }
  14. if($laboratorio1 == 'lab1')
  15. {
  16. shell_exec("sudo /usr/sbin/iptables -A FORWARD -p tcp -s 192.168.0.0/24 --dport 80 -j ACCPET”);
  17. echo 'laboratório 1 foi liberado</ br>';
  18. }
  19. if($laboratorio2 == 'lab2')
  20. {
  21. shell_exec(“sudo /usr/sbin/iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT”);
  22. echo 'laboratório 2 foi liberado</ br>';
  23. }
  24. if(laboratorio3 == 'lab3')
  25. {
  26. shell_exec("sudo /usr/sbin/iptables -A FORWARD -p tcp -s 192.168.2.0/24 --dport 80 -j ACCPET”);
  27. echo 'laboratório 3 foi liberado</ br>';
  28. }
  29. ?>

Feito isso, se o seu apache estiver funcionando certinho, garanto que essas regras funcionarão. Se houver algum erro de “escrita” peço que corrijam na hora de implementar.

2 – Conclusão

Espero ter ajudado um pouco, acredito que alguém poderá passar o que passei (levei 3 dias para fazer isto fucionar, graças a DEUS).

OBS: Recomendo, para segurança, caso acesso seja externo, rodar este tutorial em modo CGI do apache e colocar estas funções em CHROOT.

_____________________________________________________________
Recomendações:

Chroot,
CGI,
mudar porta que não seja 80 ou 8080 nesta aplicação,
htaccess ativado,
SSL ativado (openssl).