Fortigate 방화벽 정책 엑셀파일로 변환(CSV)

   조회 22982   추천 0    

http://www.aiocp.co.kr (9173)
https://www.ehostidc.co.kr/cscenter/consulting.php (8680)





Fortigate 방화벽 정책을 엑셀파일(.csv)로 변환하는 방법입니다.
해당 매뉴얼은 perl 스크립트를 이용하여 변환하는 방식이며 윈도우용 perl 프로그램인 Strawberry Perl 을 설치하여 사용합니다.
(보통 리눅스 계열 OS의 경우 perl 이 기본으로 설치되어 있어서 리눅스 계열 OS를 가지고 있을 경우 해당 OS로 스크립트 및 정책 파일을 복사하여 perl 스크립트를 실행, 생성된 파일을 다운로드해도 됩니다.)

테스트 환경 : windows 10 / fortigate 100D


1. Strawberry Perl 설치






- https://strawberryperl.com 에서 프로그램 다운 및 설치

- 기본 설치 시 c:\Strawberry\perl\bin> 위치에서 perl 명령어 실행 가능




2. 스크립트 파일 생성


#!/usr/bin/perl

#


my $output = "policies-out.csv";


my $policyid = 0;

my $setting = "";

my %policies;

my %seen;

my $in_policy_block = 0;

my @order_keys;

my $order_key = 0;


open(OUTFILE,">$output") || die "Can't open file $output: $!\n";


while (<>) {

           if ($in_policy_block) {

                     if (/^\s*edit\s+(\d+)/i) {

                                # start of new policy

                                $policyid = $1;

                     } elsif (/^\s*set\s+(\S+)\s+(.*)$/i) {

                                # it's a setting

                                my ($key,$value) = ($1,$2);

                                $value =~ tr/\"\015\012\n\r//d;

                                $order_keys[$order_key++] = $key unless $seen{$key}++;

                                $policies{$policyid}{$key} = $value;

                     } elsif (/^\s*end/i) {

                                $in_policy_block = 0;

                     }

           } elsif (/^\s*config firewall policy/i) {

                     $in_policy_block = 1;

           }

}


# print out our header

print OUTFILE "id";

foreach my $key (@order_keys) {

           print OUTFILE ",$key";

}

print OUTFILE "\n";


# now print out each record

foreach my $policy (sort keys %policies) {

           print OUTFILE "$policy";

           foreach my $key (@order_keys) {

                     if (defined($policies{$policy}{$key})) {

                                print OUTFILE ",$policies{$policy}{$key}";

                     } else {

                                print OUTFILE ",";

                     }

           }

           print OUTFILE "\n";

}



close(OUTFILE);



- 메모장을 사용하여 상단 스크립트를 복사하고 “policy_script.pl” 로 저장

- c:\Strawberry\perl\bin> 위치로 스크립트 파일 이동




3. 방화벽 정책을 메모장에 복사









- Fortigate를 ssh로 접속, “show firewall policy” 명령어 입력 후 출력되는 내용을 메모장에 복사
(Fortigate Config파일 다운 후 파일 내 “config firewall policy” 줄 포함 하단의 정책을 복사해도 됩니다.)

- 메모장을 “policy_rule.txt”로 저장

- c:\Strawberry\perl\bin> 위치로 정책 파일 이동




4. Perl 스크립트 실행










- c:\Strawberry\perl\bin> 위치에서 “perl policy_script.pl policy_rule.txt” 명령어 실행

- policies-out.csv 파일이 생성됨

- csv 파일 확인





https://www.aiocp.co.kr/ ( 딥러닝,머신러닝 서버 판매 ,컨설팅) https://bigbangcloud.co.kr/ ( GPU 클라우드 서비스) ::: AI 서버의 모든것 ::: 인공지능의 시작~ (주)이호스트ICT
FortiOS 6.4.9 부터 json, csv export 기능 들어가기 시작 했습니다^^


제목Page 10/28
2016-08   23328   백만스물하나
2018-03   23292   제온프로
2022-06   23229   딥러닝서버
2017-07   23130   허인구마틴
2014-07   23084   황진우
2014-07   23002   주영진영아빠
2022-07   22983   딥러닝서버
2016-04   22853   몽탄
2019-03   22808   삼육공야드
2018-05   22717   TRUE
2020-09   22665   PCMaster
2020-06   22647   총알탄사나이
2017-06   22643   무아
2023-02   22560   딥러닝서버
2022-07   22387   딥러닝서버
2017-06   22350   화령
2016-03   22320   izegtob
2016-08   22249   키네시스
2018-05   22249   채영진
2017-04   22225   Ansyncic