Fortigate ¹æÈ­º® Á¤Ã¥ ¿¢¼¿ÆÄÀÏ·Î º¯È¯(CSV)

   Á¶È¸ 24218   Ãßõ 0    

http://www.aiocp.co.kr (9299)
https://www.ehostidc.co.kr/cscenter/consulting.php (8817)





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 4/28
2022-12   44295   ÃѾËź»ç³ªÀÌ
2022-12   38554   ±¤ÁÖµ¿Å°È£Å×
2022-12   33577   µö·¯´×¼­¹ö
2022-11   37120   µö·¯´×¼­¹ö
2022-11   44129   µö·¯´×¼­¹ö
2022-11   48651   ocarina
2022-10   42864   µö·¯´×¼­¹ö
2022-10   36147   È­Á¤Å¥»ï
2022-10   33280   ¹Ú¹®Çü
2022-10   34515   µö·¯´×¼­¹ö
2022-10   21299   ¹Ú¹®Çü
2022-09   16403   µö·¯´×¼­¹ö
2022-09   33088   µö·¯´×¼­¹ö
2022-08   24943   ¹ÌÄ£°¨ÀÚ
2022-08   26653   ÄíÀö
2022-08   30568   µö·¯´×¼­¹ö
2022-08   36709   ¹Ú¹®Çü
2022-08   26619   ¹Ú¹®Çü
2022-07   23297   µö·¯´×¼­¹ö
2022-07   24219   µö·¯´×¼­¹ö