Fortigate ¹æȺ® Á¤Ã¥ ¿¢¼¿ÆÄÀÏ·Î º¯È¯(CSV)
http://www.aiocp.co.kr (9316)https://www.ehostidc.co.kr/cscenter/consulting.php (8835)
Fortigate 방화벽 정책을 엑셀파일(.csv)로 변환하는 방법입니다.
해당 매뉴얼은 perl 스크립트를 이용하여 변환하는 방식이며 윈도우용 perl 프로그램인 Strawberry Perl 을 설치하여 사용합니다.
(보통 리눅스 계열 OS의 경우 perl 이 기본으로 설치되어 있어서 리눅스 계열 OS를 가지고 있을 경우 해당 OS로 스크립트 및 정책 파일을 복사하여 perl 스크립트를 실행, 생성된 파일을 다운로드해도 됩니다.)
테스트 환경 : windows 10 / fortigate 100D
1. Strawberry Perl 설치 |
- 기본 설치 시 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); |
- c:\Strawberry\perl\bin> 위치로 스크립트 파일 이동 |
3. 방화벽 정책을 메모장에 복사 |
- 메모장을 “policy_rule.txt”로 저장 - c:\Strawberry\perl\bin> 위치로 정책 파일 이동 |
4. Perl 스크립트 실행 |
- policies-out.csv 파일이 생성됨 - csv 파일 확인 |
|