레이블이 fortigate인 게시물을 표시합니다. 모든 게시물 표시
레이블이 fortigate인 게시물을 표시합니다. 모든 게시물 표시

2020-01-23

[ELK] Fortigate Firewall 로그 수집 및 분석 - Logstash filter


이번시간에는 ELK 를 활용하여  Fortigate 방화벽 로그를 수집하고 구성하는 방법에 대해서 알아보도록 하겠습니다.
 로그 수집시 중요한 것은 장비 밴더사나 로그 특성등에 따라서 형식이 다 다르기 때문에 수집한 로그에 대해서 적절한 필터링을 통해 정형화 해 주어야 로그 분석 및 탐지가 용이하게 됩니다. 
 여기서는 방화벽에서 ELK Stack으로 로그를 전송을 Logstash.conf 필터를 통해서 로그 데이터 파싱하고 인덱싱하는 부분에 대해서 살펴보도록 하겠습니다. .
1. Fortigate 방화벽 Syslog 설정.
  우선 Fortigate 방화벽 장비 CLI 접속하여 Logstash 서버로 로그 데이터를 전송하도록 설정을 해 줍니다.
  syslog 설정은 최대 4개까지 설정이 가능하며, Fortigate Web UI 에서는 첫번채 syslogd 만 세팅이 가능하여 중복설정등이 필요할 경우 CLI를 통해 설정하는 것을 추천 드립니다. 
config log syslogd2 setting
 set status enable
 set server "192.168.0.100"    
 set port 5514  
 저는 syslogd2에 설정하였으며, 로그 수집 서버 IP와 포트를 지정을 해 주고 enable 활성화 해 주시면 됩니다.
 syslog 포트는 default 514(udp) 인데 udp 514는 다른 로그 수집용 포트로 사용하고 있어서 구분을 위해서 5514로 지정하였습니다. 
  - syslog 설정 확인.
Fortigate # config log syslogd3 setting

Fortigate (setting) # show
config log syslogd3 setting
    set status enable
    set server "192.168.0.100"
    set port 5514
end

Fortigate (setting) # 

2. ELK 로그 서버 Logstash.conf 필터 설정
  방화벽에서 로그 전송 설정을 했으면 이제 Logstash.conf 설정 파일을 통해 로그를 수집하여 필터링 해 주시면 됩니다.
  logstash.conf 파일은 /etc/logstash/conf.d/logstash.conf 에 만들었으며 아래와 같은 형식으로 만들었습니다.  
Input
  - udp 플러그인을 사용.
  - 0.0.0.0 네트워크 바인딩.
  - 5514 포트 활성화
  - 로그 수집시 Tag 필드에 에 "FWlog" 생성. ( Kibana 대시보드 구성시 tag를 활용하여 로그 데이터 구분 )
input { 
    udp { 
        tags => "FWlog" 
        host => "0.0.0.0" 
        port =>  5514 
        #codec => "json" 
    } 
} 

Filter 
 -  필터에는 다양한 플러그인 이 있으며, 아래와 같이 grok, data, mutate, geoip 등 플러그인을 활용하여 로그 데이터 변환을 해 주었습니다. 
filter { 

    if "FWlog" in [tags] { 
        grok { 
            match => ["message", "%{SYSLOG5424PRI:syslog_index}%{GREEDYDATA:message}"] 
            overwrite => [ "message" ] 
        } 

        date { 
            match => ["timestamp" , "yyyy-MM-dd'T'HH:mm:ss.SSSZ"] 
            target => "@timestamp" 
            #add_field => { "debug" => "timestampMatched"} 
        } 

        kv { 
            source => "message" 
            exclude_keys => [ "type", "tags"] 
        } 

        geoip { source => "dst" } 
        geoip { source => "dstip" } 
        geoip { source => "src" } 
        geoip { source => "srcip" } 

        mutate { 
            rename => [ "dst", "dst_ip" ] 
            rename => [ "dstip", "dst_ip" ] 
            rename => [ "dstport", "dst_port" ] 
            rename => [ "devname", "device_id" ] 
            rename => [ "status", "action" ] 
            rename => [ "src", "src_ip" ] 
            rename => [ "srcip", "src_ip" ] 
            rename => [ "zone", "src_intf" ] 
            rename => [ "srcintf", "src_intf" ] 
            rename => [ "srcport", "src_port" ] 
            rename => [ "rcvd", "byte_recieved" ] 
            rename => [ "rcvdbyte", "bytes_recieved" ] 
            rename => [ "sentbyte", "bytes_sent" ] 
            rename => [ "sent", "bytes_sent" ] 
            rename => [ "cpu", "cpu_usage" ] 
            rename => [ "mem", "mem_usage" ] 
            rename => [ "disk", "disk_usage" ] 
            convert => ["bytes_recieved", "integer"] 
            convert => ["bytes_sent", "integer"] 
            convert => ["cpu_usage", "integer"] 
            convert => ["mem_usage", "integer"] 
            convert => ["disk_usage", "integer"] 
            convert => ["disklograte", "integer"] 
        } 
    } 
} 

Output

 - 필터링된 데이터를 elasticsearch로 전송해 주는 설정입니다.
  - 로그 전송시 index를 day로 구분하도록 하였으며, 인덱스를 분산해 주시면 Elasticsearch에서 로그 검색 및 분석 성능 향상에 도움이 됩니다. 
output { 

       if "FWlog" in [tags] { 
           elasticsearch { 
             hosts => ["localhost:9200"] 
             index => "fwlog-%{+YYYY.MM.dd}" 
           } 
           stdout { codec => rubydebug } 
       } 
}

3. Logstash 시작
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf  --path.settings /etc/logstash &

4. Kibana 접속 및 로그 확인. 
 - Kibana 접속 후 discover 항목을 보면 아래 와 같이 fields(column) 로 구분되어 데이터가 수집이 되는 것을 확인 할 수 있습니다. 

2020-01-17

[EVE-NG] Eve-NG Fortigate Firewall 설치 및 사용


 Fortigate는 중기업 또는 대기업에서 널리 사용되고 있는 방화벽 장비 중 하나이다. 
 EVE-NG 에서도 Fortigate를 사용하여 가상 시뮬레이션을 돌려 Lab 및 테스트 등을 할 수 있다. 




< 사용 가능한 Fortigate 이미지들 >
 EVE-NG 에서 사용할 수 있는 Fortigate 이미지는 다음과 같다. ( 최신 버전 6.0 까지 지원이 가능하다 )



1. Fortigate KVM 이미지 준비.

   위의 이미지는 교육 목적으로 만 제공이 되며 이미지는 개인적으로 준비해야 한다. 
   Fortigate 라이선스 권한이 있다면 아래 웹사이트에서 다운로드 받을 수 있다.




Fortinet SSO

customersso1.fortinet.com

2. 준비한 이미지를 EVE-NG 에 업로드 한다.

 업로드는 Winscp, Filezilla 등을 사용하면 되며, 경로는 /opt/unetlab/addons/qemu/ 로 업로드 하면 된다.

  

3. 업로드한 파일 압축 해제

   -  unzip fortinet-FGT-v5-build1484.zip

root@eve-ng:/opt/unetlab/addons/qemu# unzip fortinet-FGT-v5-build1484.zipArchive: fortinet-FGT-v5-build1484.zipinflating: virtioa.qcow2root@eve-ng:/opt/unetlab/addons/qemu#


4. 이미지 파일명 변경

  -  mv fortios.qcow2 virtioa.qcow2

압축을 해제 하면  fortinet-FGT-v5-build1484 디렉토리 아래에  fortios.qcow2 라는 이미지 파일이 생성이 된다.    EVE-NG에서는 지원되는 파일 이미지 이름이 제한이 되어 있어서 이름을 변경을 해 주어야 한다.  


fortinet-FGT-v5-build1484# ls fortios.qcow2fortinet-FGT-v5-build1484#mv fortios.qcow2 virtioa.qcow2fortinet-FGT-v5-build1484# ls virtioa.qcow2/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

 EVE-NG 에서 지원되는 이미지 파일 이름에 대한 안내 참고 =>  QEMU images used under EVE


5. Permision 수정
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

6. EVE-NG 접속 후 이미지 추가 후 사용
   EVE-NG 접속 후 Node를 추가하면 Forinet Fortigate Template 가 활성화 된다. 


Forinet Fortigate선택 후 Ethernet 수, CPU, Ram 갑 세팅 후 저장 후에 사용하면 된다.



Elasticsearch Heap Size

  Elasticsearch는 Java 기반으로 동작을 합니다. Java는 가비시 컬렉터 (garbage-collected)에 의해서 관리가 되며, Java 객체는 힙(Heap) 이라고하는 메모리의 런타임 영역에 상주합니다.  Elasticsear...