Feliz Natal a todos!!

Nos últimos tempos, e devido a minha crescente paranóia, tenho andado a pensar numa forma de garantir a privacidade no que eu vejo pela internet.

Assim sendo, construí para mim um portal em https, que me permite efectuar acessos de ssh aos meus sistemas, proxy anónimo, acessos de RDP, leitor de mp3 streamed,  e mais algumas coisitas tudo apartir de uma interface web encriptada.

A principal vantagem deste conceito, é poderem  utilizar um browser para ultrapassar limitações impostas por administradores de rede com demasiado tempo livre.

Foi testado com sucesso em vários sites como: youtube, chupa.mos.com, sexonabanheira.com, gmail, ebuddy, Hi5, Facebook, 4chan.org.

Venho agora partilhar com vocês, as receitas de como efectuar isto:

1) Instalar um opensuse 11.1

… com os pacotes de apache2, php, ssl, java, ajax, amapche  e depencias (todos os requisitos irão sendo mostrados a medida que vão instalando o portal, ou na documentação do software que irão instalar.

2) Arranjar um domínio (pago ou gratuito – dyndns.org).

De preferência arranjem qq coisa que de pouco nas vistas. P.exp se trabalharem num escritório de advogados registem um lexxdicionario.com ou qq coisa que não desperte mto interesse…

3) Configuração do Frontend do vosso portal

Após instalarem o vosso opensuse, e estou a assumir que estão com um ip publico (caso contrario façam portfoward dos portos 80 e 443 tcp  do vosso router para o vosso servidor de portal), é necessário proceder a configuração do apache em si.

No meu caso optei por colocar o meu portal num virtualhost dentro do meu servidor apache. Como este portal funcionará em  ssl para garantir a segurança da comunicação entre o servidor e o meu browser é necessário gerar um certificado para o mesmo.

a) Criem uma directoria para o vosso certificado especifico e em seguida gerem o certificado:

#mkdir /etc/apache2/cert/portal.lexxtuga.com -p
#cd /etc/apache2/cert/portal.lexxtuga.com
#openssl genrsa -out server.key -des3 1024
#openssl req -new -key server.key -out server.csr
#openssl req -new -x509 -days 1460 -key server.key -out server.crt
#openssl rsa -in server.key -out server_new.key

(cuidado com os valores com que preenchem os campos que vão sendo pedidos. Os valores tem obrigatoriamente de ser idênticos qd geram ambas as chaves sob pena de o certificado não ser gerado)

b) Em seguida optei por criar um virtualhost no apache – podem efectuar isto directamente na vossa rootdir do vosso apache server.

O meu ficheiro de configuração de vhost ficou algo como isto:
<IfDefine SSL>
<IfDefine !NOSSL>

<VirtualHost *:443>

DocumentRoot /mnt/srv/appz/portal.lexxtuga.com
ServerName  uportal.lexxtuga.com:443
ServerAdmin [email protected]
ErrorLog /var/log/http/portal.lexxtuga.com/error.log
CustomLog /var/log/http/portal.lexxtuga.com/access.log combined
Options +FollowSymLinks

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/cert/portal.lexxtuga.com/server.crt
SSLCertificateKeyFile /etc/apache2/cert/portal.lexxtuga.com/server_new.key

<Files ~ “.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/srv/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent “.*MSIE.*”
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0

CustomLog /var/log/apache2/ssl_request_log   ssl_combined

# SECCAO PROXY

php_value  register_globals  Off
php_value  magic_quotes_gpc  Off
php_value  always_populate_raw_post_data  Off
php_value  zlib.output_compression  On
ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

#SECCAO AjaxTerm

ProxyPass /ssh/ http://localhost:8022/
ProxyPassReverse /ssh/ http://localhost:8022/

#SECCAO AjaxRDP

ProxyPass /rdp/ http://15.128.1.7/
ProxyPassReverse /rdp/ http://15.128.1.7/

#SECCAO Ampache – O meu ampache encontra-se instalado em /mnt/srv/appz/portal.lexxtuga.com/banshee

<IfModule mod_php5.c>
<Directory /mnt/srv/appz/portal.lexxtuga.com/banshee/play>
RewriteEngine on
Options -Indexes +FollowSymLinks -ExecCGI
RewriteCond %{SERVER_PORT} !^80$
RewriteRule index.php http://%{HTTP_HOST}/banshee/play/index.php [NC,R,L]
</Directory>
<Directory /mnt/srv/appz/portal.lexxtuga.com/banshee/>
RewriteEngine on
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride None
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/banshee/$1 [NC,R,L]
</Directory>
</IfModule>
</VirtualHost>
</IfDefine>
</IfDefine>

Em seguida adicionei ainda ao meu /etc/apache2/listen.conf as seguintes linhas:

<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>

Listen 443

</IfModule>
</IfDefine>
</IfDefine>

Finalmente efectuei o restart ao meu apache para assumir  o novo vhost, e a novo porto de ssl onde escutar.

Se tudo tiver corrido bem agora se efectuarem um netstat -nap deverão ter um processo de apache a escuta num porto 443.

4) Instalação de um php proxy:

a) Desloquem-se para o directório root do vosso webserver/vhost e efectuem os seguintes comandos:

#cd /mnt/srv/appz/portal.lexxtuga.com
#mkdir /mnt/srv/appz/portal.lexxtuga.com/onyx/
#cd /mnt/srv/appz/portal.lexxtuga.com/onyx/
#wget “https://sourceforge.net/projects/poxy/files/PHProxy/0.5%20beta%202/poxy-0.5b2.zip/download”
#unzip poxy-0.5b2.zip

Editem em seguida o ficheiro index.php para as vossas opções favoritas. No meu caso activei a compressão por gz, e desactivei os forms.

Finalmente alterem as permissões dos ficheiros para reflectir a realidade do vosso sistema: owner e grupo do vosso utilizador de webserver

Se forem com um browser a  https://portal.lexxtuga.com/onyx deverá aparecer algo como isto (:-):

Em seguida configurem o vosso ampache e coloquem o mesmo dentro do directório /mnt/srv/appz/portal.lexxtuga.com/banshee/ de forma a que seja respeitada a configuração que já efectuaram no vosso virtualhost do apache.

E extremamente importante que respeitem esta localização caso contrario o ampache não irá funcionar por estar em modo ssl.

5) Acesso SSH por webserver:

Para isto utilizaremos um softwarezinho extremamente interessante chamado AjaxTerm (darei todos os links para o software no fim do post)

A instalação deste software é bastante simples:

a) Desloquem-se para o directório root do vosso webserver/vhost e efectuem os seguintes comandos:
#cd /mnt/srv/appz/portal.lexxtuga.com
#mkdir /mnt/srv/appz/portal.lexxtuga.com/ajaxterm/
#cd /mnt/srv/appz/portal.lexxtuga.com/ajaxterm/
#wget http://antony.lesuisse.org/ajaxterm/files/Ajaxterm-0.10.tar.gz
#tar -zxvf Ajaxterm-0.10.tar.gz
#cd Ajaxterm-0.10
#./ajaxterm.py -d

Verifiquem que o ajaxterm está a funcionar através do comando ps -fe | grep -i ajaxterm

O resultado deverá ser algo assim: python /Ajaxterm-0.10/ajaxterm.py -d

Assumindo que está tudo ok,  e se respeitaram a secção do ajax term no vosso apache, se forem por browser ao endereco https://portal.lexxtuga.com/ssh/ deverão ter algo assim:

As credenciais deverão ser as do sistema onde tem instalado o vosso portal.

6)  Cliente RDP por Web (esta parte ainda está instável e não compreendo porque) – Se tiverem muitos problemas utilizem o logmein 😉

No vosso pc windows instalem um software chamado Ajax Remote Desktop, juntamente com Java.

Se tudo correr bem e respeitarem a secção do vosso virtualserver do apache a próxima vez que fizerem https://portal.lexxtuga.com/rdp/ deverão ver um login windows do vosso sistema.

7) Colocarem uma skin ao vosso portal para ser mais agradável o vosso acesso (opcional).

Recomendo para tal o Etomite. Existe no site do etomite muita documentação de como efectuar isto.  No meu caso fiquei com algo assim:

No meu caso tenho uma interface simples, com uma monitoria ao meu laboratório no centro, acessos encriptados a varios foruns que frequento, e a clientes web.

Se notarem no topo da pagina está um secure proxy #1 e secure proxy #2.

Um é o phpproxy que descrevo neste post, o segundo é o mesmo proxy utilizando o sistema I2p que já falei anteriormente.

Finalmente lembrem-se que quando criarem um link, utilizem o mesmo “proxymizado” para terem acesso que os vossos registos não são interceptados. Um link proximizado será o url no vosso browser depois de acederem a um site. Será algo como https://portal.lexxtuga.com/onyx/index.php?q=d3d3LmNubi5jb20%3D&hl=ec

Recomendações finais:

Finalmente recomendo colocarem um .htaccess na root do vosso webserver de forma a garantir que só voces tem acesso ao vosso portal privado 😉

Recursos utilizados:

Software de servidor (S.O. apache, e dependências): Opensuse em http://www.opensuse.org

Software de domínio dinâmico e registo do mesmo: Dyndns em http://www.dyndns.org

Software para php proxy – poxy: Sourceforge em https://sourceforge.net/projects/poxy/

Software para Web SSH: AjaxTerm em http://antony.lesuisse.org/software/ajaxterm/

Software para MP3Stream: Ampache em http://www.ampache.org

Sofware para Web RDP: AjaxRDP em  http://www.peterdamen.com/ajaxrd/

Software de CMS para embelezarem o vosso portal: Etomite em http://www.etomite.org

Como configurar controle de acessos via .htaccess: Apache http://httpd.apache.org/docs/1.3/howto/htaccess.html

Nota: este tutorial de .htaccess embora para as versões 1.x de Apache é compativel com as versões 2.X.X de Apache.

Limitações Conhecidas:

Problema: A interface standart do  facebook tem problemas.
Solução: Utilizem este url para acesso: http://lite.facebook.com/
Problema: A interface do Hotmail não carrega totalmente
Solução: Sem solução ainda para este problema
Problema: A interface do ebuddy falha a carregar
Solução: Desactivar o filtro de javascript
Problema: Paginas demoram muito a carregar.
Solução: Como este é um sistema de proxy, está directamente dependente da banda de upload do vosso servidor. Se for como no meu caso um servidor que se encontra em casa, terei de me sujeitar a velocidade que o meu ISP me fornece.
Problema: Paginas carregam incorrectamente ou não carregam.
Solução: Se for uma interface em Ajax ou JS demasiado restritiva ainda (!) não ha nada a fazer. Caso contrario exprimentem aceder a mesma desactivando o filtro de Javascript

E pronto, só me resta desejar boa sorte, se necessitarem de ajuda já sabem o meu emaile, e lembrem-se que embora este tipo de tecnologia vos permita alguma liberdade, não abusem da mesma.

Imagino que provavelmente irão utilizar isto para conseguir passar pelas restrições de rede do vosso local de trabalho ou escola. Se assim for, lembrem-se que para os que estão a trabalhar, vos estão a pagar para fazer um serviço e não para andarem a ver porn o dia todo. Os que deveriam estudar… estudem e larguem o HI5.

Abraço a todos e Feliz Natal.

Nuno Higgs
IT Linux Architect at Ageas Portugal
A meticulous and self-motivating person with the ability to work consistently, under pressure and on own initiative,

Strong technology background in integration and support, professional services solutions and consulting, process management and process improvement.

– Strong and self-driven “Make it happen” attitude.
– Proven Project Management in a wide variety of business applications
– Large knowledge of IT solutions with certifications in all major computer technology and consulting corporations
– Proven ability to understand enterprise wide issues and to structure innovative solutions
– Confirm experience in integrate solutions that provide support to IT decision in the way of organizations achieve their business goals.
– Experience in understand client needs, solution proposal alignment, and contract negotiation
– Knowledge of the latest trends in the IT industry.
– Out of the box thinking, with great creativity to resolve difficult IT problems.
– Team Empowerment and make it happen attitude motivator.

Good team spirit and a great spirit of initiative.

I like to empower others to achieve the team’s final goal that is full Customer satisfaction.

I am always searching for professional and personal challenges. Very business driven and highly critical with every aspect, searching the best approach to every problem.

I consider myself an IT enthusiast, so i keep working my way towards new information technologies challenges like risk assessment, ISOs compliance, cloud interactions e possibilities, business continuity procedures and related subjects.

Specialties:

Unix System Administration
Linux System Administration
Team Leadership
Team Development
Talent Managment
Out-of-the-box thinking for problem solving.