:::: MENU ::::

autobackup konfiguracji FortiGate na ftp

środowisko: FortiOS 5.4.x ESXi Debian Proftpd

CLI ForitGate umożliwia wykonanie pełnej kopii zapasowej konfiguracji używanego urządzenia, wraz z funkcjonalnością auto-script pozwala na zautomatyzowane tworzenie w określonych interwałach czasowych kopii zapasowych oraz ich odkładanie na serwerze tftp/ftp.
Przykład dotyczy zrzutu z jednej maszyny fizycznej, jednak minimalna modyfikacja w kliku miejscach umożliwia zwielokrotnienie obsługiwanych hostów.

Instalacja i konfiguracja serwera tfpt/ftp w tym przypadku proftpd ftp na maszynie o IPv4 10.0.3.4 (iptables-persistent może być pominięty)

apt-get update && apt-get -y install proftpd iptables-persistent

Modyfikacji konfiguracji p/etc/proftpd/proftpd.con, autentykacja z wykorzystaniem osobnych konto użytkowników ftp, wyłączenie PAM , zmiana domyślnego portu, ustawienie zakresu portów passiv

DefaultRoot ~
Port 57200
PassivePorts 57201 57215
Umask 066 077
AuthOrder mod_auth_file.c
AuthUserFile /srv/ftpd.passwd

Jeżeli nie rozszerzono listy znanych powłok w pliku /etc/shells o /bin/false należy dokonać modyfikacji ustawiając

RequireValidShell off

Katalogi użytkowników ftp będą traktowane jako typowe uploady

<Directory ~ >
 
  <Limit STOR STOU DIRS>
    AllowAll
  </Limit>
 
  <Limit ALL>
    DenyAll
  </Limit>
 
</Directory>

Utworzyć konto ftp dla uploadu konfiguracji

ftpasswd --passwd --name=fguser --uid=10001 --home=/srv/fgupload --shell=/bin/false

W CLI urządzenia ForiGate utworzony zostaje autoskrypt wysyłający co 24 godziny pełną kopię konfiguracji urządzenia na wcześniej przygotowany serwer ftp

config system auto-script
  edit "autoftpbackup"
    set interval 86400
    set repeat 0
    set start auto
    set script "execute backup full-config ftp fgatefull 10.10.3.4:57195 fguser \'ftp_password\'"
  next
end

Aby pliki nie były przechowywane w folderze serwera ftp możemy je automatycznie przenosić do repozytorium automatycznie rozszerzając nazwę o datę wygenerowania, w tym celu w katalogu /etc/cron.hourly można umieścić skrypt

#!/usr/bin/env bash
 
exec 1> >(/usr/bin/logger -t $(basename $0)) 2>&1
 
set -o errexit
set -o nounset
 
_fprefix='fgatefull'
_uplodir='/srv/fgupload'
_repodir='/sciezka/do/repo'
_owngr='root:adm'
_privl='640'
 
if [ -e ${_uplodir}/${_fprefix}} ]
then
  mv ${_uplodir}/${_fprefix} ${_repodir}/$(stat -c %y ${_uplodir}/${_fprefix} | cut -d' ' -f1|sed 's/-//g')-${_fprefix}
fi
 
chown ${_owngr} ${_repodir}/*
chmod ${_privl} ${_repodir}/*
 
exit 0

Dodatkowo prosty netfilter dopuszcza wybrane hosty do serwera ftp (10.10.3.4.254 to przykładowy IPv4 FortiGate`a) blokując pozostały ruch i logując połaczenia SYN oraz ruch icmp

ipatbles -P INPUT DROP
iptables -P FORWARD DROP
ipatbles -P OUTPUT ACCEPT
ipatbles -A INPUT -i eth0 -m state --state NEW,RELATED - -j LOG --log-prefix "nf-eth0 " --log-level 5
ipatbles -A INPUT -i eth0 -p icmp -j LOG --log-prefix "nf-eth0 " --log-level 5
ipatbles -A INPUT -d 10.10.3.4/32 -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
ipatbles -A INPUT -s 10.10.3.254/32 -d 10.10.3.4/32 -i eth0 -p tcp -m tcp --dport 57200:57215 -j ACCEPT
ipatbles -A INPUT -i lo -j ACCEPT

Po doinstalowaniu pakietu iptables-persistent może być umieszczony w /etc/iptables/rules.v4 i automatycznie przywracany przy starcie/restarcie systemu

iptables-save > /etc/iptables/rules.v4

Gotowe.