Sophos Firewall - executar script sem cronjob
Este artigo mostra como executar um script numa Sophos Firewall sem usar um cronjob, uma vez que a Sophos Firewall não permite criar cronjobs.
Porquê executar um script na Sophos Firewall?
Em determinadas situações pode ser necessário executar um script personalizado na Sophos Firewall. Isto pode servir, por exemplo, para ajustar definições de rede, enviar regularmente sinais de heartbeat para serviços de monitorização ou alterar regras de firewall. Muitas vezes, esta funcionalidade também deve permanecer ativa após um reinício da firewall, o que significa que é necessário ajustar a configuração standard da Sophos Firewall.
Ativar permissões de escrita no sistema de ficheiros
Por predefinição, o sistema de ficheiros da Sophos Firewall está protegido contra escrita. Para alterar scripts, primeiro tem de ser montado com permissões de escrita:
mount -no remount,rw /
Criar ou editar o script
Em seguida, pode criar um script ou editar um script existente. Neste exemplo, é criado um script personalizado que define determinadas regras de rede:
vi /scripts/system/clientpref/customization_application_startup.sh
Adicione o seguinte conteúdo:
#!/bin/shiptables -t mangle -D POSTROUTING -d 172.19.0.0/16 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 900exit 0;
Este comando remove uma regra existente e define uma nova regra para limitar o tamanho máximo de segmento (MSS) das ligações TCP a 900 bytes.
#!/usr/bin/expect -f
spawn ssh -l admin
expect "password:"
send "\r"
expect "Select Menu Number \\\[0-7\\\]:"
send "7\r"
expect "Shutdown(S/s) or Reboot(R/r) Device (S/s/R/r): No (Enter) >"
send "r\r"
expect eof
exit
Este comando garante que a Sophos Firewall reinicia todas as noites.
Guardar alterações e voltar a proteger o sistema de ficheiros
Depois de editar o script, as alterações devem ser guardadas e a proteção contra escrita do sistema de ficheiros deve ser novamente ativada:
mount -no remount,ro /
Para garantir que o script também é executado após um reinício da firewall, tem de ser integrado no procedimento de arranque da firewall. O script editado anteriormente (customization_application_startup.sh) é executado em cada arranque da firewall e garante que as definições pretendidas são aplicadas.
Exemplo de script de heartbeat
Se for necessário enviar um heartbeat para um serviço de monitorização como o Uptimerobot, pode usar o exemplo seguinte:
- Crie um novo script:
touch /var/script.sh
- Edite o script:
vi /var/script.sh
- Adicione o conteúdo pretendido, aqui num exemplo:
#!/bin/sh
while [ 1 ];
do
curl --insecure https://heartbeat.uptimerobot.com/xxxxxxx-20cf67c87a3c0a318820d201f19483e06c99c9f7 >/dev/null 2>&1
sleep 60 ;
done
- Torne o script executável:
chmod 755 /var/script.sh
- Execute o script:
/var/script.sh >> /dev/null 2>&1 &
- Para executar o script automaticamente também após um reinício, adicione a linha seguinte ao ficheiro
customization_application_startup.sh:
/var/script.sh >> /dev/null 2>&1 &
Notas importantes
- High Availability (HA) Cluster: ao usar um HA cluster, o script tem de ser aplicado em ambos os nós.
- Persistência após reinícios: se o script deve ser executado a cada reinício da firewall, os passos descritos para integração no procedimento de arranque têm de ser realizados.
- Riscos: alterações aos scripts de arranque da firewall devem ser feitas com cuidado, pois configurações incorretas podem afetar a funcionalidade da firewall.