기술노트

기술노트

게시물 상세
Fortigate 방화벽 정책 엑셀파일로 변환(CSV)
작성자 : 관리자(wooy0515@ehostidc.co.kr)  작성일 : 2022-07-07   조회수 : 3374

 

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 파일 확인

 

 

이전글 netdata 모니터링 설치
다음글 IIS 자체 인증서 설치