You are on page 1of 12

ANLISE | Shell com PHP

Acesso Shell baseado em web Jogo de fora


Os firewalls em geral bloqueiam o acesso via interpretador de comandos para usurios em uma rede
corporativa ou em um cyber caf. Felizmente, ferramentas como o PHP Shell e Shell in a Box colocam o
Shell em uma janela do navegador. por Wolfgang Dautermann

G
raas que to de torna ao um Shell servidor o gerenciamen- Seguro remoto (SSH),
muito fcil, e o redirecionamento de programas no X, que significa poder at mesmo usar programas
grficos para as tarefas de gerenciamento em seu computador domstico. Infeliz- mente, em um ambiente
corporati- vo ou em um cyber caf, provvel que voc no tenha permisso para instalar programas
adicionais, ou as configuraes do firewall sero to restritivas que voc no poder fazer nada alm de
acessar e utilizar o pro- tocolo HTTP ou HTTPS. O PHP Shell e o Shell in a Box lhe daro opes para
acessar o seu servidor. PHP Shell O PHP Shell suporta o acesso a servi- dores via interpretador de
comandos para os casos onde o administrador do servidor ou do firewall o bloqueie. Tudo o que voc
precisa de um servi- dor web capaz de executar comandos PHP para executar seus comandos Shell. O
PHP SafeMode , que uma
tentativa (legada) de tornar o PHP seguro em servidores web que hos- pedam vrios sites
aorestringirvrios comandos, deve ser desativados para esta ferramenta funcionar. A instalao muito
simples: faa o download da ltima verso do PHP Shell [1] e descompacte o arquivo ZIP em um
diretrio do seu servidor web. Voc precisa definir uma senha para isso; para faz-lo, v at o ende- reo
http://www.exemplo.com/phpshell/ pwhash.php (tomando o cuidado de substituir www.exemplo.com
pelo nome do seu site) e entre com seu nome de usurio e senha desejados.
Voc ento, deve adicionar uma linha que lhe for retornada aps a informao do usurio e senha, na
seo [users] do seu arquivo de configurao config.php . Se preci- sar, pode adicionar diversos usu- rios
de uma s vez. Aps completar este passo, o PHP Shell est pronto para ser usado.
Em seguida, voc pode ir at o endereo http://www.exemplo.com/
phpshell/phpshell.php e logar com

a combinao de usurio/senha ( fi- gura 1 ) para carregar a seo Shell no navegador.


Agora voc pode digitar um co- mando Shell no prompt de coman- do $ na parte inferior da janela, ou
pressionar a tecla [Enter] e clicar em Execute Command (Executar Comando) para executar o coman- do
e ver os resultados na janela do interpretador de comandos ( figura 2 ). Existem certas restries ao Shell,
como o PHP Shell ir lhe mostrar no navegador.
Voc no pode utilizar coman- dos interativos, pois no possvel selecionar opes entre as telas. O
comando deve caber em uma linha; e o PHP Shell sabe quando um co- mando precisa ser continuado. Por
exemplo, voc no pode fazer um loop em mltiplas linhas, tarefa que voc poderia fazer em um Shell pa-
dro como:
$ for i in a b c ; do > echo $i > done
66
www.linuxmagazine.com.br
| Shell com PHP
ANLISE No entanto, voc pode colocar o comando em uma linha simples:
for i in a b c ; do echo $i ; done

Um comando deve ser completado em certo perodo de tempo (tipica- mente 30 segundos). Este
requisito no uma restrio do PHP Shell; ao invs disso, limites configurveis usados pelo servidor
web Apache (a diretiva Timeout ) e pelo PHP (a confi- gurao max_execution_time no arquivo global
php.ini ) podem limitar o tempo de execuo.
Os comandos so executados com o UID/GID (identificador de usurio e identificador de grupo de
usurios) do servidor web, que voc pode verificar executando o comando id . Esta caracterstica til,
pois o acesso ao FTP ocorre em geral por um UID diferente.
Por exemplo, caso precise criar um diretrio no qual o servidor web grava arquivos, a no ser que voc
seja o usurio root , poder criar um diretrio que tenha permisses de escrita globais com FTP ou SSH.
Em comparao, o PHP Shell lhe permite criar um diretrio no qual o acesso a gravao restrito ao
servidor web.
Para alterar o tamanho da janela do interpretador de comandos, use a ferramenta scaling na parte infe-
rior direita; apenas entre com o valor desejado e ento execute o prximo comando. O PHP Shell inclui
um editor simples ( editor nome_de_arqui- vo ) que lhe permite editar arquivos eles devem ser escritos
pelo UID do servidor web. Ele tambm inclui uma funo simples de histrico que lhe permite a
navegao entre os comandos anteriores e prximos, pressionando as teclas para cima e para baixo; no
entanto, ele no su- porta caractersticas mais avanadas como pesquisas no histrico.
Desconsiderando a especificao de usurio/senha (a senha tambm pode ser armazenada em formato
Linux Magazine #79 | Junho de 2011

plano, o que, contudo, no reco-


O Shell in a Box mendado), voc pode configurar
O Shell in a Box ( figura 3 ) pode ser apelidos no Shell e um diretrio
muito til se voc tiver acesso Shell /home para o PHP Shell no
arquivo
ao servidor e puder instalar e executar de configurao config.php .
seus prprios programas mas prefe- O armazenamento de senhas
re, ou forado, a usar o navegador criptografadas (com o
pwhash.php )
como cliente. Uma viso geral e uma somente ir ajud-lo a prevenir
uma
demonstrao desta ferramenta web tentativa de login caso um
invasor
baseada em Ajax podem ser encontra- tente comprometer o arquivo
de con-
das no website do projeto [2] . figurao. A segurana do PHP Shell
O Shell in a Box no includo nos depende da forma como o acesso
ir
repositrios padro. Os usurios de ocorrer via servidor web
(HTTPS),
Debian/Ubuntu podem baixar o pa- j que um invasor poder
capturar
cote no website do projeto e instal- qualquer comando que entrar,
assim
lo. Usurios de outras distribuies como sua sada.
Linux devero baixar e instalar o
Figura 1: Janela de login do PHP Shell.
Figura 2: O PHP Shell em ao.
67

PHP ShEH 2.2


ANLISE | Shell com PHP

projeto por conta prpria com os comandos tpicos ./configure , make e make install , que instalaro o
Shell in a Box no diretrio /usr/local .
Diferentemente do PHP Shell, o Shell in a Box vem com um servidor web prprio que escuta a porta
4200 por padro. Sua primeira experin- cia com o Shell in a Box em uma mquina local provavelmente
ser descriptografada; contudo, adicionar a camada de segurana Secure So- ckets Layer (SSL) em um
ambiente de produo em um servidor web de fato uma boa ideia. O SSL uma camada intermediria
de criptografia baseada no protocolo TCP/IP. Sendo assim, ele suporta a criptografia de protocolos
existentes (HTTP, PHP3, IMAP etc.). O Shell in a Box tambm pode fornecer vrios servios. A sin- taxe
geral do aplicativo construda da seguinte forma:
shellinaboxd -s
WEBPATH:SERVICETYPE

Nos seguintes exemplos, note o parmetro -t que desativar o SSL temporariamente:


Fornece um Shell de login no sistema local no endereo http://localhost:4200/ (somente disponvel
para o usurio root ):
shellinaboxd -t -s /:LOGIN

Fornece um login SSH Shell no sistema local com o caminho http://localhost:4200/ :


shellinaboxd -t -s /:SSH

host1/ para se conectar ao endereo host.exemplo.com e usar uma URL de http://localhost:4200/host2/


para abrir uma conexo SSL para outra mquina (como host2.exemplo.com ). Ao contrrio do PHP Shell
em que cada linha de entrada proces- sada e os resultados so retornados para o navegador, o Shell in a
Box tambm suporta atividades inte- rativas (baseadas em texto), como o uso de editores como Vi, Joe e
assim por diante.
Apesar de o desempenho no ser to bom como em um termi- nal de texto normal, voc pro-
vavelmente no notar maiores restries. (A demonstrao bb da biblioteca aalib ASCII bastante
inexpressiva no navegador, mas voc pode querer v-la. No open- SUSE/Ubuntu/Debian, voc pode
instalar o pacote bb e assist-la em um terminal normal).
Se voc tiver a inteno de usar o Shell in a Box em um servidor de produo, deve tornar o servio se-
guro com o SSL. O Shell in a Box vem com este recurso embutido. Se voc deixar de usar o parmero -t
(ou --disable-ssl ), o Shell in a Box dever por padro fornecer o servio via HTTPS.
Note que voc precisar de um certificado, que deve residir no di- retrio atual (voc pode alterar o
diretrio do certificado usando a opo --cert-DIRECTORY ). Para mais detalhes sobre o certificado, veja
o quadro 1 . Concluso O PHP Shell e o Shell in a Box tra- zem as facilidades do Shell para a janela do
seu navegador. Voc pode tentar usar estas teis ferramentas se precisar acessar o Shell a partir de um
cyber caf ou atravs de um firewall. Lembre-se no entanto, de que o acesso ao interpretador de co-
mandos uma ferramenta poderosa e que demanda grande ateno
Isso assume que o servidor SSH est sendo executado (pelo menos no dispositivo loopback ).
Fornece um login SSH ao com- putador host.exemplo.com no sistema local com o caminho
http://local- host:4200/external-host/ :
shellinaboxd -t -s
/external-host/:SSH:host. example.com

Um servidor SSH deve estar em execuo para que este processo fun- cione, o que significa que voc
pode usar o comando shellinabox como um gateway para os computadores que, de outra forma, estariam
inacessveis. Execute o programa top no ende- reo http://localhost:4200/systems- tate/ usando o UID
dauti e o grupo users (com o diretrio de trabalho / ):
shellinaboxd -t -s
/systemstate/:dauti:users:/: /usr/bin/top

Um alerta: ser capaz de visualizar o status do sistema no navegador impor- tante, mas esta
caracterstica tambm lhe permite acessar opes interativas do comando top (como pressionar a tecla [k]
para matar um processo).
O processo shellinaboxd pode fornecer mltiplos servios (como um login em mltiplos
computadores):
shellinaboxd -t -s
/host1/:SSH:host.exemplo.com -s /host2/:SSH:host2.exemplo.com

Por exemplo, voc pode usar uma URL como http://localhost:4200/


68
www.linuxmagazine.com.br
Figura 3: O Shell in a Box em ao.
| Shell com PHP
ANLISE segurana. Voc deve sempre usar criptografia e tomar as precaues necessrias para garantir
que estas ferramentas no criaro uma brecha para os invasores.
Linux Magazine #79 | Junho de 2011

Quadro 1: Criptografia e certificados


Os certificados digitais so emitidos por autoridades certificadoras, que em geral fornecem este servio mediante o
pagamento de uma taxa, apesar de projetos da comunidade como o Cacert [3] , tambm os emitirem. O navegador
automaticamente identifica o certificado como legtimo, porque ele reconhece e confia na autoridade certificadora e
usa a chave pblica do

Mais informaes
servidor, obtida atravs da entidade certificadora, para criptografar a comu- nicao com o servidor.
[1] PHP Shell: http://phpshell.
sourceforge.net/
Voc tambm tem a opo de criar um certificado autoassinado, que no oferece a identificao da autoridade e,
assim, no to seguro quanto aquele assinado por uma autoridade certificadora. O Shell in a Box suposta-
[2] Shell in a Box: http://code.
mente cria certificados autoassinados [4] , mas este processo nem sempre funciona. Verifique a documentao ou
visite a pgina web para maiores de- google.com/p/shellinabox/
talhes sobre o funcionamento de certificados no Shell in a Box.
[3] CAcert: http://www.
cacert org/
[4] Assuntos relacionados ao
Shell in a Box: http://code. google.com/p/shellinabox/ issues/detail?id=59#c11

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em cartas@linuxmagazine.com.br
Este artigo no nosso site: http://lnm.com.br/article/5250
R
Linux Professional Institute
www.lpi-brasil.org
www.lpi-brasil.org

OSPRE
69
LPIC-1: reconhecida no mundo todo como A certificao inicial para profissionais de Linux
LPIC-Z: uma certificao avanada em Linux, largamente reconhecida como uma "HOT CERT" do
mercado, que proporciona os mais altos salrios entre os profissionais de Linux
LPIC-B: a primeira certificao professional enterprise-Ievel em Linux, disponvel a partir de
janeiro de 2007
Saiba mais, faa-nos uma visita
OSPREY: um programa nico de progresso na carreira para TODOS os profissionais de Open Source

You might also like