Automatize o pfSense com o PHP Shell

php-shell-pfsense

O pfSense possui uma interface de usuário completamente redesenhada com várias versões (consulte nosso guia de instalação). Todas as configurações podem ser facilmente encontradas e ajustadas com esta interface. O painel facilmente configurável também é uma coisa boa. No entanto, às vezes há o caso que você deseja configurar por meio de uma API ou linha de comando. O pfSense atualmente não possui uma API, estará disponível apenas nas próximas versões. Até ai, você pode usar o shell do desenvolvedor pfSense , também chamado PHP Shell .

Acessando o PHP Shell

A maneira mais rápida de acessar o shell do desenvolvedor é conectar-se ao firewall pfSense através do SSH ou se conectar diretamente ao firewall. Se o SSH ainda não estiver ativado, você poderá habilitar na interface web em Sistema → Avançado.

Habilitando shell

É melhor proibir o login com uma senha e permitir apenas o login com um certificado.

Se o acesso SSH estiver ativado, você poderá efetuar login com o usuário administrador (definir IP):

 $ ssh admin@192.168.1.254

CLI do pfSense

Na opção 12 você encontrará o shell do desenvolvedor, que é basicamente um shell do PHP.

Comandos de exemplo para shell php

Aqui estão alguns exemplos de comandos para ver como usar o shell. Cada entrada é um código PHP normal e deve ser preenchido com exec;.

Mostrar configurações de DHCP

pfSense shell: print_r($config["dhcpd"]);
pfSense shell: exec;
Array
(
[lan] => Array
(
[range] => Array
(
[from] => 10.0.1.7
[to] => 10.0.255.245
)

)

)

Definir domínio

pfSense shell: $config['system']['domain'] = 'mydomain.com';
pfSense shell: write_config();
pfSense shell: exec;

Executar comandos no shell

Dentro do shell do PHP, você também pode executar comandos normais do shell, colocando um “!” Na sua frente:

pfSense shell: ! cat /etc/version
pfSense shell: exec;
2.4.3-RELEASE

Comandos “Record” e “Play”

Com o php shell, você também pode “gravar” vários comandos e “reproduzi-los” posteriormente. Essas sessões são úteis para tarefas recorrentes. Exemplo:

pfSense shell: record echoTest
Recording of echoTest started.
pfSense shell: echo "This\n";
pfSense shell: echo "is\n";
pfSense shell: echo "a\n";
pfSense shell: ! echo "test\n"
pfSense shell: exec;
pfSense shell: stoprecording
Recording stopped.

As entradas são salvas em /etc/phpshellsessions / e podem ser editadas,  se necessário.

A “gravação” agora pode ser reproduzida da seguinte forma:

pfSense shell: playback echoTest

Playback of file echoTest started.

The
is
a
test

pfSense shell:


ou diretamente do shell raiz:

$ pfSsh.php playback echoTest

Conclusão

O pfSsh.php é uma ferramenta útil para automatizar o pfSense com scripts ou fazer personalizações. Especialmente se você gerenciar várias instâncias ou precisar de uma certa configuração repetidamente, o shell php é muito útil. Por exemplo, você pode juntar todas as configurações (ou seja, código PHP) em um arquivo, salvá-las em /etc/phpshellsessions / e executá-las ou encaminhar a saída diretamente para shell php:

$ ssh [email protected] '/usr/local/sbin/pfSsh.php' < configuracao.txt

Deixe um comentário