Jansen Sena http://www.jsena.info "Give us directions; the best of goodwill. Put us in touch with your fair winds" - (Weathercock, JT) Fri, 23 Mar 2012 16:39:06 +0000 en hourly 1 http://wordpress.org/?v=3.3.1 Como trocar a senha de um usuário em um shell script? http://www.jsena.info/2012/03/23/como-trocar-a-senha-de-um-usuario-em-um-shell-script/ http://www.jsena.info/2012/03/23/como-trocar-a-senha-de-um-usuario-em-um-shell-script/#comments Fri, 23 Mar 2012 16:39:06 +0000 Jansen Sena http://www.jsena.info/?p=509 Vez em quando me deparo com amigos me perguntando como é possível, a partir de um shell script, alterar a senha de um usuário. Bem, então, acho que, apesar de ser uma dica bem simples, acho que publicá-la por aqui pode ser uma boa forma ajudar outros amigos perdidos na imensidão da Internet que, eventualmente, estejam precisando de uma solução rápida para esse problema.

Bem, existem diversas maneiras de lidar com essa questão. Entretanto, comento por aqui uma alternativa que, em minha opinião, é uma das mais simples de entender, utilizar e, principalmente, lembrar quando for necessário. Para ilustrar melhor o problema: suponha que você está desenvolvendo algum shell script que cria alguns usuários e nesse processo é necessário atribuir uma senha (aleatória ou não) a eles. Supondo que o username e a senha a ser atribuídas estão armazenados nas variáveis $MYUSER e $MYPASSWORD, respectivamente, basta inserir em seu shell script algo semelhante ao seguinte comando:

MYUSERNAME="fulano"
MYPASSWORD="novasenha"
...
echo "$MYPASSWORD" | passwd --stdin "$MYUSERNAME"

Pronto! Simples, não? Bem, acho que é isso. Até mais.

]]>
http://www.jsena.info/2012/03/23/como-trocar-a-senha-de-um-usuario-em-um-shell-script/feed/ 0
Shell script: como fazer um loop até que uma tecla seja pressionada? http://www.jsena.info/2012/02/25/shell-script-como-fazer-um-loop-ate-que-uma-tecla-seja-pressionada/ http://www.jsena.info/2012/02/25/shell-script-como-fazer-um-loop-ate-que-uma-tecla-seja-pressionada/#comments Sat, 25 Feb 2012 17:59:28 +0000 Jansen Sena http://www.jsena.info/?p=486 Recentemente, um amigo me mandou um email com uma dúvida: ele precisava desenvolver um shell script que ficasse executando uma determinada tarefa até que uma tecla pré-estabelecida fosse pressionada. Por imaginar que essa pode ser a necessidade de muitos outros sysadmins, usuários e desenvolvedores que trabalham com o mundo GNU/Linux, resolvi compartilhar essa rápida discussão por aqui.

Bem, existem várias maneiras para resolver esse problema e resolvi indicar uma das formas que julgo ser de fácil e rápido entendimento. O ponto chave é utilizar o comando read. Vejamos o exemplo a seguir:

#!/bin/bash
while read MyKey; do
        if [ "$MyKey" == "p" ]; then
                echo "Tecla escolhida foi pressionada. Saindo do loop."
                break
        fi

        # // Inclua aqui comandos a serem executados...
        # // ...enquanto a tecla nao e pressionada
        echo "Minhas tarefas estao sendo executadas"

done
echo "Fim."

Bem, isso não parece resolver o problema, certo? Isso porque as tarefas devem ficar sendo executadas enquanto uma tecla pré-determinada (nesse caso, “p”), não for pressionada. Por outro lado, no exemplo anterior, as tarefas serão executadas apenas quando uma tecla qualquer, que não seja o próprio “p”, for pressionada. Isso ocorre porque o comando “read” ficará aguardando indefinidamente que o usuário digite alguma tecla que, por sua vez, é inserida na variável MyKey . Bem, definitivamente, não é disso que precisamos, certo?

Poucas pessoas sabem, mas o comando read não precisa ficar aguardando infinitamente alguma entrada do usuário. Com o parâmetro “-t <seg>” você pode indicar quantos segundos o comando irá ficar aguardando para que algo seja digitado. Caso o tempo indicado, em segundos, expire e nada seja digitado, o comando encerra sua execução. Sabendo disso, algumas pequenas mudanças nos farão chegar onde precisamos:

#!/bin/bash
while true ; do          
        read -n 1 -t 1 MyKey
        if [ "$MyKey" == "p" ]; then
                echo "Tecla escolhida foi pressionada. Saindo do loop."
                break
        fi

        # // Inclua aqui comandos a serem executados
        # // ...enquanto a tecla nao e pressionada
        echo "Minhas tarefas estao sendo executadas"
done
echo "Fim."

Feito, não? Entretanto, para ser um pouco mais caprichoso com o exemplo, ainda é possível alterar um “pouquinho  mais” o exemplo:

#!/bin/bash
INTERVALO=2 
while true ; do          
        read -s -n 1 -t $INTERVALO MyKey
        if [ "$MyKey" == "p" ]; then
                echo "Tecla escolhida foi pressionada. Saindo do loop."
                break
        fi

        # // Inclua aqui comandos a serem executados...
        # // ...enquanto a tecla nao e pressionada
        echo "Minhas tarefas estao sendo executadas"
done
echo "Fim."

Duas pequenas mudanças, certo? A primeira, muito básica, consiste em colocar o intervalo de tempo do read em uma variável. Dependendo do script, isso pode ajudar para mudar o comportamento sem entrar muito no código. A segunda, igualmente simples, consiste na adição do parâmetro “-s” que faz com que a tecla pressionada pelo usuário não seja impressa no terminal. Puro capricho… :-)

Acho que é isso. Até a próxima!

]]>
http://www.jsena.info/2012/02/25/shell-script-como-fazer-um-loop-ate-que-uma-tecla-seja-pressionada/feed/ 0
Campus Party BR 5: “Universidade e Software Livre”. http://www.jsena.info/2012/02/09/campus-party-br-5-universidade-e-software-livre/ http://www.jsena.info/2012/02/09/campus-party-br-5-universidade-e-software-livre/#comments Thu, 09 Feb 2012 11:52:55 +0000 Jansen Sena http://www.jsena.info/?p=479 A Campus Party 5 já começou aqui pelo Brasil, em São Paulo, desde o dia 06/02/2012. Além de ser uma excelente oportunidade para rever amigos de longa data, muitas palestras e discussões interessantes estão sendo feitas ao longo desses últimos dias. Novas tecnologias, software livre, produtos, soluções, experiências estão, constantemente nas pautas. Falando nisso, fui convidado para participar de uma mesa redonda com o tema de “Universidade e Software Livre“, um assunto que possui importância fundamental, em minha opinião, quando se trata de criar um processo nacional de desenvolvimento tecnológico consistente.

Falei a respeito desse assunto pela primeira vez em alguns eventos há alguns anos, mesmo período em que publiquei dois pequenos posts com algumas opiniões a respeito do assunto. Com isso, para adiantar a discussão, aproveito a oportunidade para publicá-los por aqui novamente:

Estarão participando da mesa redonda o Prof. Dr. Pedro Rezende (UnB), o Rodrigo Padula (NCE/UFRJ), o José Honorato (mediador) e esse que vos escreve.

A mesa redonda deve ocorrer no próximo sábado, dia 11/02/2012, às 14:30. Nos vemos por lá?

Mais informações, AQUI.

]]>
http://www.jsena.info/2012/02/09/campus-party-br-5-universidade-e-software-livre/feed/ 0
Quando a ajuda cai do “shell”… http://www.jsena.info/2012/01/20/quando-a-ajuda-cai-do-shell/ http://www.jsena.info/2012/01/20/quando-a-ajuda-cai-do-shell/#comments Fri, 20 Jan 2012 16:01:27 +0000 Jansen Sena http://www.jsena.info/?p=463 Muitos administradores de sistemas, desenvolvedores e até usuários (mais avançadas) de GNU/Linux (e outros tipos de Unix, na verdade) costumam lidar com a famosa “tela preta” por horas todos os dias. E, como não poderia ser diferente, mudar de diretórios é uma tarefa executada dezenas ou centenas de vezes em uma simples jornada de trabalho. Com isso, errar o caminho do diretório é algo bem comum e que, além de fazer você perder tempo, pode prejudicar sua paciência!

Uma das formas de facilitar sua vida no poderoso mundo da “tela preta” é o próprio recurso do auto completion, presente em shells com o bash. Outro truque bem simples e interessante, mas deconhecido por muitos, é comando shopt. Com ele, pode-se pedir uma ajuda da shell para completar seus comandos “cd” para mudar de diretório quando há apenas um pequeno erro de digitação.

Por exemplo, suponha que ao tentar entrar no diretório /tmp, vc execute o seguinte comando:

$ cd /tmx

Obviamente que você receberá uma mensagem de que esse diretório (/tmx) não existe. Entretanto, tente executar o comando shopt dessa maneira:

$ shopt -s cdspell

Em seguinda, tente executar o comando “cd /tmx” e confira que, mesmo tendo errado o caminho, você estará dentro do diretório pretendido, ou seja, o /tmp. Se você quiser que todas os seus terminais de comandos sejam executados já com essa opção, basta inserir o comando “shopt -s cdspell” no arquivo .bashrc ou .bash_profile (conforme sua distribuição Linux ou versão de Unix).

Antes de terminar, logicamente que o título desse pequeno post é completamente baseado nas “peripécias criativas” de meu grande amigo e mestre do shell Júlio Neves. Por fim, como se pode ver, mesmo no mundo da “tela preta”, às vezes, a ajuda cai do “shell”. Até a próxima!

]]>
http://www.jsena.info/2012/01/20/quando-a-ajuda-cai-do-shell/feed/ 0
Como copiar sua chave SSH mais rapidamente. http://www.jsena.info/2012/01/19/como-copiar-sua-chave-ssh-mais-rapidamente/ http://www.jsena.info/2012/01/19/como-copiar-sua-chave-ssh-mais-rapidamente/#comments Thu, 19 Jan 2012 13:00:36 +0000 Jansen Sena http://www.jsena.info/?p=451 Resolver problemas remotamente utilizando SSH é um recurso presenta no dia-a-dia dos sysadmins, desenvolvedores e até usuários mais avançados de ambientes Unix/Linux. Aliás, esse é um recurso seguro e muito útil, não é mesmo? Com isso, é comum que, ao longo de suas atividades diárias, um usuário que se vale desse recurso necessite abrir sessões SSH em muitas máquinas. Obviamente que a criptografia inerente ao protolo SSH não evita a existência de um processo de autenticação. São recursos de segurança complementares. Portanto, da maneira tradicional, cada abertura de sessão SSH necessita que o usuário insira uma senha. Com o tempo, principalmente para quem costuma fazer dezenas de sessões SSH diariamente, essa pode ser uma tarefa cansativa, não é mesmo?

Para evitar isso, o protocolo SSH possui um recurso muito interessante: a autenticação por meio de chaves públicas, que evita a necessidade de prover senhas durante a abertura de sessões SSH em máquinas remotas onde a chave pública do usuário já foi previamente copiada. Normalmente, esse processo se dá através da criação de um par de chaves criptográficas por meio do comando ssh-keygen, conforme apresentado no exemplo a seguir:

jansen@scadufax $ ssh-keygen -t dsa

Nesse caso, um par de chaves (pública e privada) está sendo criado usando-se o algorimo DSA. As chaves privada e pública, recém-criadas, são gravadas, nesse caso, nos arquivos id_dsa e id_dsa.pub, respectivamente, e ficam localizadas no diretório .ssh, dentro do home do usuário. Para se valer do recurso de não precisar prover senhas é preciso, então, copiar a chave pública para o arquivo .ssh/authorized_keys nos diretórios home dos usuários remotos, usando-se, por exemplo, o seguinte comando:

jansen@scadufax $ scp ~/.ssh/id_dsa.pub jsena@smeagol:~/.ssh/authorized_keys

Nesse caso, quando o usuário jansen, a partir da máquina scadufax, tentar abrir uma sessão SSH com o usuário jsena na máquina smeagol, nenhuma senha será necessária. O processo de autenticação se dará através das chaves criptográficas. Até nenhuma novidade, certo? Entretanto, imagine que mais de um usuário deseje acessar a conta jsena na máquina smeagol. Pode até ser a mesma pessoa utilizando um par de chaves criptográficas diferentes do anterior, gerado, por exemplo, em outro computador. Nesse caso, se o mesmo procedimento anterior for utilizado, o arquivo authorized_keys, que já contém a chave pública de outro usuário, será sobrescrito, passando a invalidar o acesso cadastrado anteriormente. Para evitar esse problema, a partir do segundo usuário, seria necessário adotar outros procedimentos para a cópia da chave-pública de forma a não sobrescrever o conteúdo já existente no arquivo authorized_keys.

Para facilitar esse processo, existe um utilitário chamado ssh-copy-id que é desconhecido por uma parcela considerável dos usuários de SSH. Essa pequena ferramenta resolve esse problema da cópia de diversas chaves para um mesmo arquivo authorized_keys:

jansen@scadufax $ ssh-copy-id jsena@smeagol

Caso seja necessário copiar outras chaves para acessar a conta jsena na máquina smeagol, basta utilizar o mesmo comando. Caso um mesmo usuário tenha mais de um par de chaves (sim, isso é possível), pode-se indicar quais delas se deseja copiar para a máquina remota:

jansen@gandalf $ ssh-copy-id -i .ssh/id_rsa.pub jansen.sena@boromir

Simples, não? Bem, acho que é isso.

IMPORTANTE: Para que o mecanismo de autenticação através de chaves públicas funcione corretamente, é necessário que o servidor SSH esteja configurado para tal. Mas isso é assunto para outro momento!

]]>
http://www.jsena.info/2012/01/19/como-copiar-sua-chave-ssh-mais-rapidamente/feed/ 0
Processo “kworker” deixando seu computador inutilizável? http://www.jsena.info/2011/11/15/processo-kworker-deixando-seu-computador-inutilizavel/ http://www.jsena.info/2011/11/15/processo-kworker-deixando-seu-computador-inutilizavel/#comments Tue, 15 Nov 2011 20:08:56 +0000 Jansen Sena http://www.jsena.info/?p=423 Recentemente, comecei a ter alguns problemas de desempenho em notebooks com o Ubuntu 11.04. Investigando melhor, não foi difícil verificar que o problema ocorria apenas quando os equipamentos estavam com suas baterias sendo carregadas. O desempenho literalmente desabava ao ponto do próprio mouse não funcionar direito. Com um simples “ps” foi possível identificar o vilão: o kworker, um processo que ajuda o kernel a desempenhar suas atividades.

Uma rápida pesquisa foi suficiente para verificar que o problema já parecia incomodar alguns usuários de Linux, incluindo aqueles de outras distribuições diferentes do Ubuntu, como o Fedora, por exemplo. Depois de algumas sugestões que não surtiram efeito, encontrei uma solução que parece ter dado “conta do recado”. Diante disso, resolvi compartilhar por aqui para poder ajudar quem possa estar, eventualmente, com o mesmo incômodo problema.

A solução, simples, consiste apenas em alterar o conteúdo da variável “/sys/module/drm_kms_helper/parameters/poll”. Para isso, abra um terminal de comandos com privilégios de super-usuário (em distribuições como o Ubuntu você pode utilizar o comando sudo, por exemplo) e execute o comando “echo”, de acordo como apresentado a seguir:

$ sudo su -
# echo N> /sys/module/drm_kms_helper/parameters/poll

Se você estiver em frente ao seu computador com o problema de ter sua CPU “consumida” pelo kworker, o comando acima deve ser suficiente para fazer tudo voltar tudo ao normal em poucos segundos. Essa solução, entretanto, não será mais válida em seu próximo reboot. Para fazer com que ela seja permanente em seu sistema, insira a mesma configuração no arquivo /etc/modprobe.d/local.conf, conforme apresentado a seguir:

$ sudo su -
# echo "options drm_kms_helper poll=N" >/etc/modprobe.d/local.conf

Bem, acho que é isso. Espero que possa ajudá-los.

]]>
http://www.jsena.info/2011/11/15/processo-kworker-deixando-seu-computador-inutilizavel/feed/ 0
A “tela preta” e seus poderes: reduzindo a resolução de suas fotos através da linha de comando e dos “pipes”. http://www.jsena.info/2011/10/18/a-tela-preta-e-seus-poderes-reduzindo-a-resolucao-de-suas-fotos-atraves-da-linha-de-comando-e-dos-pipes/ http://www.jsena.info/2011/10/18/a-tela-preta-e-seus-poderes-reduzindo-a-resolucao-de-suas-fotos-atraves-da-linha-de-comando-e-dos-pipes/#comments Tue, 18 Oct 2011 06:30:18 +0000 Jansen Sena http://www.jsena.info/?p=415 Foi-se o tempo em que as distribuições GNU/Linux eram limitadas aos terminais de “tela preta”. Atualmente, existem diversas alternativas de ambientes gráficos e uma vasta parafernalha de recursos para tornar seu ambiente gráfico de desktop ágil e bastante atrativo. Por outro lado, isso não significa dizer que a “tela preta” ficou para trás e não possui mais qualquer utilidade. Muito pelo contrário. Ela continua sendo uma excelente ferramenta para administradores de sistemas, analistas de segurança, desenvolvedores e usuários mais avançados.

Além de poder executar diversos comandos individuais de maneira ágil, a possibilidade de poder combinar comandos através do uso dos pipes é o que, particularmente, considero ser um dos grandes poderes “Jedi” da “tela preta”. Com esse recurso, é possível criar, facilmente, funcionalidades que não existem através de um único comando para atender às suas necessidades. É claro que, quanto maior a experiência com a “tela preta”, melhor será suas condições em usar do recurso dos pipes. E, logicamente, nada melhor do que praticar um pouco para desafiar a criatividade.

Diante disso, resolvi compartilhar por aqui um exemplo que pode ser útil para o seu dia a dia: reduzir o tamanho de suas fotos. Com câmeras digitais cada vez mais acessíveis e com a sua inclusão em diversos dispositivos como celulares e tablets, muitas pessoas costumam acumular muitos gigas armazenando suas imagens. Some-se a isso o fato das resoluções cada vez mais altas gerarem arquivos maiores. Diante disso, seja como uma forma de economizar espaço em seus meios de armazenamento (e.g. HDs externos) ou como facilitar o envio e o compartilhamento de suas fotos através da Internet, reduzir o tamanho de suas fotografias, às vezes, pode ser uma ideia interessante.

A questão é: como fazer isso de umam única vez aplicando a redução para todas as fotografias selecionadas? Bem, como você já deve ter desconfiado, a “tela preta” pode lhe ser útil nesse momento especialmente por meio do uso dos pipes. Vamos dar uma olhada?

Suponha que exista um diretório chamado /home/jansen/MyPictures repleto de fotografias com a extensão “JPG”. Todas essas fotografias estão com uma resolução muito alta e cada arquivo possui em torno de 5MB. A ideia é conseguir reduzir todos esses arquivos para uma resolução de 800×600.

O primeiro passo consiste em instalar um excelente gerenciador de imagens em linha de comando (sim, isso mesmo!), chamado imagemagick. Caso sua distribuição seja baseada no Debian (e.g. Ubuntu), basta executar o seguinte comando com o seu usuário convencional:

$ sudo apt-get install imagemagick

Em seguida, digite sua senha. Por outro lado, caso seu usuário não esteja configurado no sudo (isso é comum em instalações padrão do Debian, por exemplo), abra um terminal como root e digite o comando anterior diretamente:

# apt-get install imagemagick

Com o seu usuário convencional, entre no diretório /home/jansen/MyPictures, onde estão armazenadas as imagens e use do “poder Jedi” dos pipes:

$ cd /home/jansen/MyPictures

$ mkdir /tmp/MyReducedPictures && ls *JPG | cut -d. -f1 | xargs -t -i \ convert -resize 800x600 {}.JPG /tmp/MyReducedPictures/{}_REDUCED.JPG

Com isso, suas imagens vão começar a ser reduzidas de tamanho, uma a uma. Passados alguns segundos (de acordo com a quantidade de fotos), uma cópia com a resolução reduzida de todas as imagens, estará salva no diretório /tmp/MyReducedPictures!!! Simples, não?!

Quer entender um pouco melhor o que aconteceu? Então aguarde o próximo post…

]]>
http://www.jsena.info/2011/10/18/a-tela-preta-e-seus-poderes-reduzindo-a-resolucao-de-suas-fotos-atraves-da-linha-de-comando-e-dos-pipes/feed/ 0
Publicados slides da palestra de firewalls redundantes, ministrada no ENSOL V. http://www.jsena.info/2011/09/12/publicados-slides-da-palestra-de-firewalls-redundantes-ministrada-no-ensol-v/ http://www.jsena.info/2011/09/12/publicados-slides-da-palestra-de-firewalls-redundantes-ministrada-no-ensol-v/#comments Mon, 12 Sep 2011 23:47:54 +0000 Jansen Sena http://www.jsena.info/?p=411 Dívida cumprida! Enfim, estão publicados os slides da palestra “Construindo Firewalls Redundantes em Ambientes GNU/Linux”, ministrada durante o ENSOL V, ocorrido em João Pessoa no último mês de 2011. Em tempo, aproveito para renovar meus agradecimentos a todos que estiveram presentes e ainda à organização do ENSOL pelo convite e pelo carinhoso tratamento durante a estada em João Pessoa.

Espero que os slides possam, de alguma forma, ajudar aqueles que querem implementar esse tipo de solução em suas redes… Aliás, quem implementar essa solução em software livre de firewalls redundantes, sinta-se a vontade para deixar um comentário aqui pelo site para compartilhar com outras pessoas suas experiências…

Os slides da palestra estão a disposição para download na seção a Palestras Recentes. Aliás, o material é copyleft, portanto, podem copiar, modificar e utilizar à vontade!

Bem, acho que é isso! Saudações livres.

]]>
http://www.jsena.info/2011/09/12/publicados-slides-da-palestra-de-firewalls-redundantes-ministrada-no-ensol-v/feed/ 0
A caminho da terra do “ENSOL” nascente… http://www.jsena.info/2011/07/14/a-caminho-da-terra-do-ensol-nascente/ http://www.jsena.info/2011/07/14/a-caminho-da-terra-do-ensol-nascente/#comments Thu, 14 Jul 2011 23:42:41 +0000 Jansen Sena http://www.jsena.info/?p=391 Parece que foi ontem que ouvi meu amigo Anahuac de Paula falar sobre organizar um bom evento de software livre em João Pessoa, na Paraíba. Não poderia ser diferente o resultado do esforço de uma comunidade de software livre sediada em uma terra marcada pela presença de um povo tão aguerrido. Eis que nasceu, então, o ENSOL que terá sua quinta edição acontecendo entre os dias 20 e 23 de julho.

A grade de programação do evento conta com palestras distribuídas em mais de 9 trilhas temáticas com assuntos de interesses diversos envolvendo desde inclusão digital, governo, negócios, educação até temas mais técnicos como desenvolvimento e segurança.

Estarei presente na “festa de aniversário de cinco anos” do ENSOL ministrando a palestra “Construindo Firewalls Redundantes em Ambientes GNU/Linux” que será apresentada no sábado, dia 23 de julho. A seguir, está uma breve descrição de minha apresentação:

Os firewalls representam uma das primeiras e mais importantes linhas de defesa contra atacantes em um ambiente de rede. Entretanto, mesmo sendo equipamentos críticos, são poucas as redes corporativas que possuem soluções de alta disponibilidade implementadas em seus firewalls de forma a evitar que falhas em um desses equipamentos interrompam o funcionamento dos serviços que eles protegem, provocando desde transtornos aos seus usuários até a interrupção completa de seu ambiente de rede.

Existem, evidentemente, produtos proprietários que contêm recursos para a implementação de alta disponibilidade entre firewalls. Por outro lado, além de requererem um investimento que vai além das possibilidades financeiras de muitas organizações, essas soluções também criam uma dependência, nem sempre desejável, com relação ao fornecedor do produto. O que poucos administradores de sistemas sabem, fundamentalmente os iniciantes ou menos experientes, é que existem recursos em software livre, voltados para ambientes Linux, capazes de viabilizar a configuração de soluções de alta disponibilidade para firewalls Linux.

Diante desse cenário, a palestra apresenta por meio da utilização de recursos como o Network Bond, o Keepalived (e sua implementação livre do VRRP), o Conntrackd, dentre outros, os passos necessários para compor um ambiente de baixo custo e de alta disponibilidade para firewalls GNU/Linux utilizando apenas software livre como alternativa às honerosas soluções proprietárias. A apresentação contempla apresentar, na prática, aos presentes, um ambiente com essa configuração implementada e funcionando, de forma que os mesmos estejam em condições de incorporar esses mecanismos nos firewalls pro eles administrados.

E aí, nos vemos em “Jampa”?

]]>
http://www.jsena.info/2011/07/14/a-caminho-da-terra-do-ensol-nascente/feed/ 0
Fazendo seu servidor Apache “falar” um pouco menos… http://www.jsena.info/2011/07/07/fazendo-seu-servidor-apache-falar-um-pouco-menos/ http://www.jsena.info/2011/07/07/fazendo-seu-servidor-apache-falar-um-pouco-menos/#comments Fri, 08 Jul 2011 01:46:14 +0000 Jansen Sena http://www.jsena.info/?p=371 Tarefa básica e que faz parte do cotidiano de um usuário: abrir o browser de sua preferência e acessar algum site na Internet. Simples, não? Do ponto de vista do usuário, sim. Mas, aos olhos de um administrador de sistemas preocupado com segurança, essa é uma atividade que merece ser um pouco mais estudada. Todas as vezes que um cliente conecta-se a um servidor Web há uma troca de informações entre ambas as partes. Nesse caso, a linguagem falada é o HTTP. A questão é que algumas dessas informações podem revelar informações do seu servidor Web úteis na elaboração de um ataque.

Para verificar algumas das informações comumente reveladas por um servidor Web aos clientes que conectam-se a ele, basta utilizar o antiquado mas ainda útil telnet. Nesse caso, é suficiente escolher um site qualquer, direcionar a conexão para a porta 80 e submeter ao servidor algumas das poucas informações obrigatórias do protocolo HTTP (GET e Host, por exemplo), conforme mostrado a seguir:

# root@scadufax:~# telnet www.xxxxx.com.br 80
Trying 201.123.123.121...
Connected to server.xxxxx.com.br.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.xxxxx.com.br

Após a cláusula “Host”, pressione duas vezes Enter. Em seguida, o servidor Web deve retornar os cabeçalhos HTTP de resposta e o conteúdo da página, de acordo como mostrado abaixo:

HTTP/1.1 200 OK
Date: Fri, 08 Jul 2011 00:47:40 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny10 with Suhosin-Patch
Last-Modified: Thu, 20 Apr 2006 18:44:51 GMT
ETag: "9f132-c96-411e12ad8aec0"
Accept-Ranges: bytes
Content-Length: 3222
Content-Type: text/html; charset=ISO-8859-1

<<< CONTEÚDO DA PÁGINA>>>

Dentre os cabeçalhos de resposta, dedique atenção especial ao “Server”, em destaque. Nele, é possível identificar o servidor Web (Apache), sua versão (2.2.9), o sistema operacional (Debian) e ainda a versão do PHP (5.2.6-1+lenny10). Tais informações já ajudam um atacante a escolher quais ferramentas ele poderá ajudar em um eventual ataque. Pior ainda: o atacante consegue descobrir se seu servidor encontra-se completamente desatualizado e, portanto, possivelmente vulnerável contra um conjunto maior de exploits. Revelar essas informações no cabeçalho “Server” é o comportamento mais comum para um servidor Apache instalado diretamente dos repositórios de pacotes de sua distribuição.

Outra forma de identificar se o servidor está revelando mais informações do que deveria consiste simplesmente em provocar algum erro, acessando, por exemplo, uma página que, certamente, não existe naquele servidor Web:

http://www.xxxxx.com.br/abcdefghijklmnop

Servidor Apache revelando informações desnecessárias.

Normalmente, em sites mais bem configurados, as páginas de erro são todas customizadas. Nesses casos, algumas vezes, as informações sobre o servidor não são apresentadas.

Surpreso? É nesse estado que se encontra seu servidor? Bem, então é hora de corrigir esse problema.

O Apache possui duas configurações bem simples mas que são costumeiramente ignoradas, fundalmentalmente pelos administradores de sistemas menos experientes: ServerTokens e ServerSignature que podem impedir que o servidor revele informações mais detalhadas no cabeçalho “Server” do HTTP e que informações desnecessárias sejam apresentadas nas páginas de erro default do Apache, respectivamente. Para fazê-las desempenhar essas funções, basta adicioná-las no arquivo de configuração do Apache da seguinte maneira:

ServerTokens Prod
ServerSignature Off

Depois, reinicie o seu servidor Apache e veja se agora, seu servidor passou a “falar” um pouco menos…

Logicamente que existem muitas outras providências a serem tomadas para fazer um bom trabalho de hardening de um servidor Apache. Entretanto, deixaremos isso para uma outra oportunidade.

Bem, acho que é isso. Até o próximo post.

]]>
http://www.jsena.info/2011/07/07/fazendo-seu-servidor-apache-falar-um-pouco-menos/feed/ 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 Take Crestor Next Day Delivery Blitzversand Und Billigstes Viagra Propecia For Cheap Original Cialis Product Dapoxetine Lithium Carbonate Order Clomid Lopressor Online No Prescription Viagra Online Bestellen Org Viagra Naturel Trazodone UK Where To Buy Viagra In Usa Ohne Rezept Kaufen Krogers Houston Purchase Inderal Online Without Prescription Purchase Albuterol Free Delivery Doctors That Approve Online Consltations For Viagra Lamictal UK Where To Buy Getviagra Canada Betnovate Pharmacy Viagra For Sale In London Promethazine Order Online No Perscription Zelnorm Next Day Delivery Without a Prescription Indian Pharmacy Online Viagra Viagra Usa Canadian Pharmacy No Prescription Needed Zovirax Buy Tablets Lipitor Online Perth Wa Kamagra Buy Viagra Online Without A Prescription Viagra Canada By Paypal Get Viagra On Internet Viagra In Toronto Order Pills Yasmin