■Fortigateのアドレス、サービス、ポリシーのCSVを作成するスクリプトを作ってみた。
私の場合、評価目的で使っているので、評価の度に環境を変えてしまいます。
LibreOfficeあたりで、静的にルールを保存しておきたいというのが目的です。
githubに置いておきましたが、多くの制限事項があります。
$ GIT_PJ="https://raw.githubusercontent.com/labunix/fortigate-80c-settings"; \
GIT_SH="/master/Fortigate_csv.sh"; \
wget ${GIT_PJ}${GIT_SH}
■「REMOTESSH」に指定するssh情報はパスワード無しでのログインを想定。
ただし、「terminal length 0」相当の下記は不要(パイプの「grep .」で代用)。
リードオンリーのアカウントでTrustedHostsを設定すれば、
それほど脆弱にはならないはず。
config system console
set output standard
end
■アドレスは「サブネット」のみに限定しているので、
自身で作成したオブジェクトが「サブネット」のみである必要がある。
config firewall address
edit "Cisco892J" <---
set subnet 192.168.102.254 255.255.255.255
next
end
■サービスはカテゴリ「Custom」に属している必要があるので、
自身で作成したオブジェクトはすべて「Custom」カテゴリに追加済みである必要がある。
config firewall service category
edit "Custom"
next
end
config firewall service custom
edit "MySSH_8022"
set category "Custom" <---
set tcp-portrange 8022
next
end
■ポリシーは全ルールの最大列が分かっていれば、
「MAXCOLUMNLINE」に指定したルールを最大列とした、
登場するルールにおいての最小列でうまくいく。
$ ssh admin@172.31.31.252 'show firewall policy | grep .' | \
sort | uniq -c | awk '($1<2){print}' | \
grep -v "addr\|intf\|service" | grep set
1 set ips-sensor "all_default"
1 set spamfilter-profile "default"
$ ssh admin@172.31.31.252 'show firewall policy | grep -f spamfilter-profile' | \
grep edit
edit 4
■フルポリシーと言いつつ、ポリシーはすべての列を出せなかったので、
「tcp-mss*」と「timeout-send-rst」はCSV化の対象外としている。
それで十分であれば問題無いと思う。