quarta-feira, 2 de maio de 2012

do not panic administrator pfsense

Olá!
Hoje estava como criança fuçando o que não deveria no sistema pfSense, e me deparei com as maravilhas que o administrador pode fazer para evitar ou tentar evitar que usuários não autorizados na rede pudesse digitar o IP do sistema e receber a tela de login que nós utilizamos para acessar o pfSense.
Fiz o meu acesso de cada dia e fui fazer um tour pelas configurações do firewall, foi quando acessei a Rule da interface LAN e verifiquei que na primeira rule (regra) ao clicar no "e" de editar me dava a opção de alterar a porta de acesso, ou seja se o acesso era feito somente utilizando o IP era porque estava utilizando a porta 80, e ai qualquer um da rede poderia acessar a tela de login, então na seção webConfigurator especificamente na caixa de edição TCP Port eu coloquei a porta 10 salvei e shazannn!!! eu acessava restritamente utilizando um porta privada que se eu alterasse para uma porta alta demoraria o usuário descobrir a não ser que rodasse um portscan na rede, mas até ai tudo bem, eu não satisfeito fui lá novamente e alterei a bendita porta para 7 esquecendo que as portas baixas são utilizadas por processos de qualquer sistema, FIQUEI SEM ACESSO!
É por isso que não se deve fazer configurações a esmo, sem atentar aos protocolos e normas existentes, como nesse caso, pois ao verificar a porta 10 ainda aceitou o acesso porque nem consta na lista padrão de utilização de portas TCP/UDP, já a porta 7 ela é utilizada para "echo" do sistema.
confira a lista completa AQUI!


Pensei em utilizar os backups que havia feito anteriormente, como eu tinha acesso SSH habilitado GRAÇAS A DEUS! eu acessei o sistema via SSH, então eu me perguntei: por que eu vou resetar meu sistema se eu possuo acesso por terminal, sem falar que depois que é restaurado o Backup o sistema demora quase uma hora reinstalando todos os complementos instalados anteriormente como proxy-cache, filtro de pacote, detre outros, então resolvi fazer aquele tour via linha de comando pelas entranhas do UNIX, claro! porque pelo que eu saiba o pfSense é somente aquela graça gráfica que foi criada por cima do UNIX FreeBSD, e como eu já utilizo o Linux a mais de 12 anos comecei procurando uma forma de resolver meu problema, fiz o acesso via ssh:
=====================================================

 0) Logout (SSH only)                     8) Shell
 1) Assign Interfaces                     9) pfTop
 2) Set interface(s) IP address           10) Filter Logs
 3) Reset webConfigurator password        11) Restart webConfigurator
 4) Reset to factory defaults             12) pfSense Developer Shell
 5) Reboot system                         13) Upgrade from console
 6) Halt system                           14) Disable Secure Shell (sshd)
 7) Ping host                      

Enter an option:
======================================================

Escolhi a opção 8 e recebi este prompt:

[2.0.1-RELEASE][root@localrede.org.br]/root(1):

======================================================

 então comecei com o comando "ls" que costumo chamá-lo de minha lanterna no shell de comando, porque com ele eu vejo o que antes não enxergava e conseguia somente ver isso:

.cshrc                         .part_mount
.first_time                    .profile
.gitsync_merge.sample          .shrc
.hushlogin                     .tcshrc
.lesshst                        2.0.1-RELEASE.captiveportal.inc.backup
.login                          packetcapture.cap
[2.0.1-RELEASE][root@localrede.org.br]/root(2):

O sistema já me dá os arquivos ocultos do root então eu quis ir mais fundo, se dentro da pasta do root não existia arquivo algum relacionado as configuração que precisava alterar e fui para a raiz com o comando "cd /" já o comando "cd" eu costumo chamá-lo de minha chave no shell de comando, porque com ele eu abro caminho para onde eu quero, utilizei mais uma vez minha lanterna dentro da rais do sistema e encontrei isso:


.rnd         boot         conf.default kernels      mnt          usr
.snap        boot.config  dev          lib          root         var
COPYRIGHT    cf           etc          libexec      sbin
bin          conf         home         lost+found   tmp
[2.0.1-RELEASE][root@localrede.org.br]/(10):



======================================================
Notei logo que existia um arquivo que se destacava em meu cérebro pois "config"uração era o que eu precisava para resolver meu problema, acessei o arquivo com o comando:
[2.0.1-RELEASE][root@localrede.org.br]/(10): vi conf

Mas de nada adiantou, mas minhas esperanças não se acabaram porque liguei minha lanterna no diretório "cf" e me deparei com isso:

[2.0.1-RELEASE][root@localrede.org.br]/(38): ls cf
conf

Reparem que há um diretório com as mesmas características que meu cérebro estava procurando, foi ai que entrei:
[2.0.1-RELEASE][root@localrede.org.br]/(39): cd cf/conf
[2.0.1-RELEASE][root@localrede.org.br]/cf/conf(40):


Dentro do diretório acendi minha lanterna com o comando "ls" e encontrei isto:

[2.0.1-RELEASE][root@localrede.org.br]/cf/conf(40): ls
backup     config.xml


Fiquei muito animado porque lembrei que o pfSense trabalha com configuração em arquivos XML, mas como sou muito curioso liguei minha lanterna no diretório backup e confirmei que estava no caminho certo:


[2.0.1-RELEASE][root@localrede.org.br]/cf/conf(41): ls backup
backup.cache          config-1335959190.xml config-1335961299.xml
config-1335958482.xml config-1335959292.xml config-1335961467.xml
config-1335958559.xml config-1335959294.xml config-1335961771.xml
config-1335958596.xml config-1335959326.xml config-1335961837.xml
config-1335958608.xml config-1335959653.xml config-1335963885.xml
config-1335958616.xml config-1335959659.xml config-1335963894.xml
config-1335958694.xml config-1335959669.xml config-1335963895.xml
config-1335958722.xml config-1335960235.xml config-1335963908.xml
config-1335958800.xml config-1335960273.xml config-1335963909.xml
config-1335958802.xml config-1335960283.xml
config-1335959188.xml config-1335961189.xml


Aqui estavam todos os meus backups realizados, tratei logo de analisar o arquivo config.xml utilizando a única ferramenta que conheço disponível em um UNIX e que já é padrão em qualquer sistema de camadas do padrão POSIX, então digitei.
[2.0.1-RELEASE][root@localcrbnacional.org.br]/cf/conf(42): vi config.xml

Eu não queria saber de nada, a não ser alterar a configuração que me interessava e ela se parecia muito com o número "7" rsrsrs.
Dentro do aquivo digitei o comando que faz pesquisas utilizando o vi, a barra inversa "/", utilizando desta forma /7 - então o vi começou a me mostrar tudo que continha o número "7" até que me retornou estas tags:

</user>
                <nextuid>2003</nextuid>
                <nextgid>2001</nextgid>
                <timezone>America/Sao_Paulo</timezone>
                <time-update-interval/>
                <timeservers>a.st1.ntp.br 0.pfsense.pool.ntp.org</timeservers>
                <webgui>
                        <protocol>http</protocol>
                        <ssl-certref>4f96908f451a1</ssl-certref>
                        <port>7</port>
                        <max_procs>2</max_procs>
Eu tive que me conter, porque a vontade era de dar um grito bem forte para aliviar aquela tensão de ter que refazer um monte de coisa novamente, e pior a rede estava a todo vapor eu só não conseguia acessar o serviço, se precisasse resolver algo urgente, eu estava f...., alterei o "7" por um "80" podendo deixá-lo até em branco, mas não quis, para evitar mais surpresas rsrs.

Então coloquei 80 e pressionei "x" para apagar o "7", pressionei "ESC" digitei dois pontos ":" e depois "wq".
ESC= sai do modo de edição do vi
: = entra no modo de comando do vi
w = escreve e grava a alteração (write)
q = sai (quit)

Para saber se realmente havia resolvido eu precisava reiniciar o sistema, já que a função de Reload só é feita pelo Php na Dashboard eu precisei sai da linha de comando:
=======================================================
[2.0.1-RELEASE][root@localcrbnacional.org.br]/cf/conf(44): exit
exit
*** Welcome to pfSense 2.0.1-RELEASE-pfSense (i386) on localcrbnacional ***

  WAN (wan)                 -> xl1        -> III.III.PPP.PPP
  LAN (lan)                 -> xl0        -> 192.168.III.PPP
  DMZWIRELESS (opt1)        -> re0        -> 192.168.III.PPP


 0) Logout (SSH only)                     8) Shell
 1) Assign Interfaces                     9) pfTop
 2) Set interface(s) IP address           10) Filter Logs
 3) Reset webConfigurator password        11) Restart webConfigurator
 4) Reset to factory defaults             12) pfSense Developer Shell
 5) Reboot system                         13) Upgrade from console
 6) Halt system                           14) Disable Secure Shell (sshd)
 7) Ping host                      

Enter an option: 5
======================================================
Escolhi a opção 5 para reiniciar o sistema, ao final tudo estava resolvido e não foi preciso utilizar a opção 4 deste menu, o que sairia mais caro que utilizar a linha de comando para resolver um probleminha de um BYTE.

Moral do problema:
Não aprenda somente aquilo que você acha que vai ser mais facil para você como gerenciar sistemas como se tivesse utilizando um Windows da vida, ESTUDE, APRENDA e APROFUNDE em comandos shell, a maioria utiliza sintaxes muito parecidas, principalmente os sistemas do padrão POSIX.
Vou contar mais uma coisa, como já foi dito eu sou muito curioso, eu acessei o terminal server "linha de comando do Windows 2008", mesmo ele não sendo, pelo menos que eu saiba não é um sistema do padrão POSIX, sua shell de comando utiliza muitas sintaxes do UNIX/LINUX.

6 comentários:

  1. Olá Wanderson,

    Posso lhe dizer que passei pela mesma experiência, mas graças a este post consegui reverter a situação.

    Parabéns pelo post.

    ResponderExcluir
  2. Olá Wanderson,

    Na verdade, após a mudança do arquivo config.xml você não precisa reiniciar o servidor.
    Basta apagar o arquivo /tmp/config.cache e aplicar a opção 11 na console para reler o arquivo de configuração.

    Parabéns pelo post.

    ResponderExcluir
  3. Legal, muito bom o post, parabéns! Trabalho com redes e estou começando a conhecer o mundo pfsense. Abraço.

    ResponderExcluir
  4. Obrigado a todos vocês. Vocês não tem ideia o quanto me ajudou, eu não conseguia acesso de maneira alguma no web configurador do pfsense, já esta desistindo e já estava preparando uma nova instalação.

    Obrigado.

    ResponderExcluir
  5. Olá, entrei numa empresa dai o ex-técnico de rede mudou o login e a senha do fd sense e eu não sei como quedrar essa senha, tem alguma possibilidade de fazer isso sem perder os arquivos?

    Desde já agradeço a atenção...

    ResponderExcluir
  6. vc pode bloquear o acesso nas rules, permitindo somente determinado ip/host acessar a rela do console.

    ResponderExcluir