do not panic administrator pfsense
Autor: Wanderson | Publicado: 2012-05-02T12:00:00-03:00

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&nbsp;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:
=====================================================

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

Enter an option:

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

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

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



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

&nbsp;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 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .part_mount
.first_time &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.profile
.gitsync_merge.sample &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.shrc
.hushlogin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .tcshrc
.lesshst &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.0.1-RELEASE.captiveportal.inc.backup
.login &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;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&nbsp;raiz com o comando "cd /"&nbsp;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 &nbsp; &nbsp; &nbsp; &nbsp; boot &nbsp; &nbsp; &nbsp; &nbsp; conf.default kernels &nbsp; &nbsp; &nbsp;mnt &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;usr
.snap &nbsp; &nbsp; &nbsp; &nbsp;boot.config &nbsp;dev &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;root &nbsp; &nbsp; &nbsp; &nbsp; var
COPYRIGHT &nbsp; &nbsp;cf &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; etc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;libexec &nbsp; &nbsp; &nbsp;sbin
bin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;conf &nbsp; &nbsp; &nbsp; &nbsp; home &nbsp; &nbsp; &nbsp; &nbsp; lost+found &nbsp; 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&nbsp;precisava&nbsp;para resolver meu problema,&nbsp;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&nbsp;características&nbsp;que meu&nbsp;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 &nbsp; &nbsp; config.xml



Fiquei muito animado&nbsp;porque&nbsp;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 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;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&nbsp;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&nbsp;/7 -&nbsp;então o vi começou a me mostrar tudo que continha o número "7" até que me retornou estas tags:

&lt;/user&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;nextuid&gt;2003&lt;/nextuid&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;nextgid&gt;2001&lt;/nextgid&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;timezone&gt;America/Sao_Paulo&lt;/timezone&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;time-update-interval/&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;timeservers&gt;a.st1.ntp.br 0.pfsense.pool.ntp.org&lt;/timeservers&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;webgui&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;protocol&gt;http&lt;/protocol&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ssl-certref&gt;4f96908f451a1&lt;/ssl-certref&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;port&gt;7&lt;/port&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;max_procs&gt;2&lt;/max_procs&gt;

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&nbsp;conseguia&nbsp;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 ***



&nbsp;&nbsp;WAN (wan) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; xl1 &nbsp; &nbsp; &nbsp; &nbsp;-&gt; III.III.PPP.PPP
&nbsp; LAN (lan) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; xl0 &nbsp; &nbsp; &nbsp; &nbsp;-&gt; 192.168.III.PPP
&nbsp; DMZWIRELESS (opt1) &nbsp; &nbsp; &nbsp; &nbsp;-&gt; re0 &nbsp; &nbsp; &nbsp; &nbsp;-&gt; 192.168.III.PPP





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

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.