아무것도 아닌데, 모르니까 너무 어렵네요.

snmp-exporter에 mib를 등록하려는데, 정확히 어떻게 해야 한다가 없어서 올립니다.

 

fortigate에서 snmp 다운로드 받기

1. snmp 설정 및 MIB file 다운로드

 

2. SNMP의 source-ip 설정

utm # config system snmp community 

utm (community) # show
config system snmp community
    edit 1
        set name "test"
        config hosts
            edit 1
                set source-ip 192.168.0.1
                set ip 192.168.0.2 255.255.255.255
            next
        end
        set query-v1-status disable
        set trap-v1-status disable
    next
end

 

3. 인터페이스의 SNMP 설정 적용

 

fortigate에서 syslog를 logserver에서 전송하려는데 계속 아래와 같은 오류가 발생하네요.

 

이 메시지가 발생할 경우 아래와 같이 설정을 해 주니 정상적으로 적용됩니다.

 

위의 명령어를 실행해도 cli로 설정 값을 확인하면 표시되지는 않아요.

1f-utm (setting) # show
config log syslogd setting
    set status enable
    set server "192.168.000.000"
    set source-ip "192.168.000.001"
end

 

무선의 업무망과 게스트망을 분리하려고 합니다.

SSID의 설정에 VLAN을 부여하고, VLAN에 따른 정책에 따라 네트워크의 통신을 관리하려고 합니다.

특이사항으로 VLAN 1도 별도의 인터페이스를 설정해줘야 하는군요.

이 특이사항이 없었다면, 글 남기지 않았을 겁니다.

 

VLAN 인터페이스 상태

  • VLAN을 설정하는 물리적인 인터페이스에는 별도의 IP를 설정하지 않아도 됩니다.
  • wireless에 별도의 IP를 사용하셔도 문제없이 통신이 됩니다.

 

위 캡쳐된 interface에 대한 정보입니다.

  • 192.168.001.1/24 / VLAN 설정 안한 통신
  • 192.168.002.1/24 / VLAN 1 설정한 통신
  • 192.168.003.1/24 / VLAN 10 설정한 통신

 

fortigate # show system interface 
port7   static   0.0.0.0 0.0.0.0  0.0.0.0 0.0.0.0  up   disable   physical  disable   
port8   static   0.0.0.0 0.0.0.0  0.0.0.0 0.0.0.0  up   disable   physical  disable   
wireless   static   0.0.0.0 0.0.0.0  192.168.001.1 255.255.255.0  up   disable   hard-switch  disable   
wireless_guest   static   0.0.0.0 0.0.0.0  192.168.002.1 255.255.255.0  up   disable   vlan  disable   
wireless_work   static   0.0.0.0 0.0.0.0  192.168.003.1 255.255.255.0  up   disable   vlan  disable   

fortigate #

 

내부 네트워크 장비에 대한 NTP 서버 설정을 적용하기 위해서 설정했습니다.

 

NTP 서버 설정 적용하기

fortigate # show system ntp 
###########여기서부터 아래 내용 붙여넣기 하면 바로 적용 입니다###########
config system ntp
    set ntpsync enable
    set type custom
    set syncinterval 1440
    config ntpserver
        edit 1
            set server "time.google.com"
        next
        edit 2
            set server "1.kr.pool.ntp.org"
        next
    end
    # NTP 업데이트가 안되면 아래 옵션 적용해주세요. IP에 WAN IP 입력해주세요.
    set source-ip 000.000.000.000 
    set server-mode enable
    # NTP 서버 적용할 인터페이스를 선택해 주시면 됩니다.
    set interface "dmz" "ha" "mgmt"
end

###########여기까지###########
fortigate #

 

  • 설정 하신 후에는 장비에서 NTP 서버의 주소를 "set interface ..."에 지정한 인터페이스의 IP로 설정하시면 됩니다.

 

NT 서버 통신 확인하기

fortigate # diag sys ntp status
# synchronized가 no 이면 문제가 있는 겁니다. 이럴때 설정에 source-ip 주소를 입력해주세요.
synchronized: yes, ntpsync: enabled, server-mode: enabled

ipv4 server(1.kr.pool.ntp.org) 132.226.17.96 -- reachable(0xc0) S:4 T:0 
        server-version=4, stratum=2
        reference time is e91939c0.aae2385e -- UTC Tue Dec  5 05:55:12 2023
        clock offset is 0.004056 sec, root delay is 0.059402 sec
        root dispersion is 0.057693 sec, peer dispersion is 1 msec

ipv6 server(time.google.com) 2001:4860:4806:c:: -- reachable(0xc0) S:4 T:0 
         no data
ipv6 server(time.google.com) 2001:4860:4806:8:: -- reachable(0xc0) S:4 T:0 
         no data
ipv6 server(time.google.com) 2001:4860:4806:4:: -- reachable(0xc0) S:4 T:0 
         no data
ipv4 server(time.google.com) 216.239.35.8 -- reachable(0xc0) S:4 T:0 
        server-version=4, stratum=1
        reference time is e9194110.9a7516df -- UTC Tue Dec  5 06:26:24 2023
        clock offset is -0.000076 sec, root delay is 0.000000 sec
        root dispersion is 0.000061 sec, peer dispersion is 0 msec

ipv4 server(time.google.com) 216.239.35.12 -- reachable(0xc0) S:4 T:0 
        server-version=4, stratum=1
        reference time is e9194110.a5737c49 -- UTC Tue Dec  5 06:26:24 2023
        clock offset is -0.000400 sec, root delay is 0.000000 sec
        root dispersion is 0.000061 sec, peer dispersion is 0 msec

ipv4 server(time.google.com) 216.239.35.0 -- reachable(0xc0) S:4 T:0 
        server-version=4, stratum=1
        reference time is e9194110.99dedc76 -- UTC Tue Dec  5 06:26:24 2023
        clock offset is -0.002956 sec, root delay is 0.000000 sec
        root dispersion is 0.000076 sec, peer dispersion is 0 msec

ipv6 server(time.google.com) 2001:4860:4806:: -- reachable(0xc0) S:4 T:0 
         no data
ipv4 server(time.google.com) 216.239.35.4 -- reachable(0xc0) S:4 T:0 
        server-version=4, stratum=1
        reference time is e9194110.a568bb94 -- UTC Tue Dec  5 06:26:24 2023
        clock offset is -0.000377 sec, root delay is 0.000000 sec
        root dispersion is 0.000076 sec, peer dispersion is 1 msec

ipv6 server(1.kr.pool.ntp.org) unresolved -- unreachable(0xff) S:0 T:6 
         no data
ipv4 server(1.kr.pool.ntp.org) 211.233.40.78 -- reachable(0xc0) S:4 T:0 
        server-version=4, stratum=2
        reference time is e9193db2.114b97d2 -- UTC Tue Dec  5 06:12:02 2023
        clock offset is -0.000330 sec, root delay is 0.008011 sec
        root dispersion is 0.033081 sec, peer dispersion is 57 msec


fortigate #

전제조건으로 sslvpn의 계정 생성 시, RADIUS 서비스를 이용한 계정 생성이 필수입니다.

 

RADIUS를 사용할 경우 sslvpn portal 설정의 ip-mode를 변경하여 고정 IP를 부여 할 수 있습니다.

당연하게도 fortigate는 유용한 기능은 CLI 모드에서만 적용이 가능합니다.

 

FORTIGATE # show vpn ssl web portal full-access-static-ip
config vpn ssl web portal
    edit "full-access-static-ip"
        set tunnel-mode enable
        set web-mode enable
        set ip-mode user-group # 해당 옵션이 RADIUS에서 고정 IP를 부여하는 옵션입니다.
        set ip-pools "SSLVPN_TUNNEL_ADDR1"
        set split-tunneling disable
        config bookmark-group
            edit "gui-bookmarks"
            next
        end
    next
end
FORTIGATE (full-access-stat~-ip) # set ip-mode  
range         Use the IP addresses available for all SSL-VPN users as defined by the SSL settings command.
user-group    Use the IP addresses associated with individual users or user groups (usually from external auth servers).
dhcp          Use IP addresses obtained from external DHCP server.
 
FORTIGATE (full-access-stat~-ip) #

보통 일반적인 설정으로 사용하는 ip-mode는 range 입니다.

 

Fortigate 설정 시 Portal Mapping 입니다.

 

아래의 게시글은 계정에 IP를 고정하는 설정입니다.

https://dirt-spoon.tistory.com/163

 

※ IP를 고정할 때에는 반드시 "SSLVPN_TUNNEL_ADDR1" 대역에 포함되는 IP로 설정해야 합니다.

  - SSLVPN_TUNNEL_ADDR1: SSLVPN에 사용되는 IP RANGE 주소 입니다.

sslvpn의 공격 접속 시도는 어마무시 합니다.

그래서 패스워드 3회 입력 실패 시 기본 60초를 600초로 변경합니다.

 

fortigate # config vpn ssl settings
fortigate (settings) # set 
# 다른 내용은 표시하지 않음
login-block-time                 Time for which a user is blocked from logging in after too many failed login attempts (0 - 86400 sec, default = 60).

fortigate (settings) # set login-block-time 600
fortigate (settings) # get
# 다른 내용은 표시하지 않음
login-block-time    : 600
fortigate (settings) # end

fortigate의 관리자 권한 접근 시 패스워드를 3번 틀릴경우, 기본적으로 잠김 시간은 60초 입니다.

너무 약하다 싶어 패스워드 입력 실패를 5회로, 기본 잠김 시간은 600초로 변경했습니다.

 

fortigate # config system global

fortigate (global) # set 
# 다른 내용은 생략
admin-lockout-duration                      Amount of time in seconds that an administrator account is locked out after reaching the admin-lockout-threshold for repeated failed login attempts.
admin-lockout-threshold                     Number of failed login attempts before an administrator account is locked out for the admin-lockout-duration.

fortigate (global) # set admin-lockout-duration 600
fortigate (global) # set admin-lockout-threshold 5

fortigate (global) # get
# 다른 내용은 생략
admin-lockout-duration: 600
admin-lockout-threshold: 5

fortigate (global) # end

fortigate #

현재 사용 중인 fortigate 장비와 IPSec으로 연결된 다른 fortigate에 LDAP 서버를 설정하는데 계속 Connection 오류가 발생한 상황입니다.

정책이나 라우팅 정보는 제대로 설정이 되어 있는데, 안될 경우 LDAP 서버에 연결할 source-ip 설정을 해보시기 바랍니다.

 

 

DLAP 서버 설정의 connection 오류 발생

 

통신 확인 (기본 설정으로는 통신이 되지 않으나, 정책에서 허용되어 있는 인터페이스 IP로 출발지를 설정하니 정상 통신)

 

LDAP 서버 설정에서 출발지 IP 설정 적용 (GUI 환경에는 없어서 CLI 환경에서 작업 필요)

 

환경 설정 적용 확인

 

설정 완료

Active Directory를 fortigate의 LDAP 서버로 연결해보려고 합니다.

AD 서버가 구축이 되어 있다면 특별하게 설정할 것은 없습니다.

 

단지 ldap 계정을 한개 생성해줘야 합니다.

 

특별한 이슈는 없는데, AD를 LDAP 서버로 등록하려면 Common Name Identifier에 반드시 "sAMAccountName"으로 입력해야 AD의 ID를 사용할 수 있습니다.

 

아래는 Fortigate의 LDAP Server 설정 입니다.

 

AD에서 계정 정보 중 "특성 편집기"에서 확인한 sAMAccountName 필드 항목입니다.

 

혹시라도 "Common Name Identifier" 필드를 cn으로 입력한다면 ID는 이름이 됩니다.

 

아래는 Fortigate에서 User를 추가하는 화면 입니다.

아래의 ID 필드값을 cn으로 사용할지, sAMAccountName 으로 사용할지에 따라서 ID가 표시됩니다.

fortigate 6.X 와 7.X대 syslog가 변화가 있었네요.

7.X대 logstash 설정은 코드가 좀 더 업그레이드 되었습니다.

[root@tmplogsvr 192.168.x.x]# vi /etc/logstash/conf.d/logstash.conf

input {
        file {
                path => "/var/log/rsyslog/192.168.x.1/*.log"
                start_position => "beginning"
                tags => ["fortigate"]
        }
        file {
                path => "/var/log/rsyslog/192.168.x.2/*.log"
                start_position => "beginning"
                tags => ["fortigate"]
        }
}

filter {
        if "fortigate" in [tags] {
                grok {
                        patterns_dir => ["/etc/logstash/pattern.d"]
                        match => { "message" => [ "%{FORTILOG} %{GREEDYDATA:sub_message}" ] }
                        overwrite => [ "message" ]
                }
                kv {
                        value_split => "="
                }

                if "wan" in [srcintfrole] {
                        geoip {
                                source => "srcip"
                                target => "geoip_src"
                        }
                }

                if [sentbyte] != "" and [rcvdbyte] != "" {
                        bytes {
                                source => "rcvdbyte"
                                target => "rcvdbyte"
                        }
                        bytes {
                                source => "sentbyte"
                                target => "sentbyte"
                        }
                }
                mutate {
                        convert => {
                                "transport" => "integer"
                                "duration" => "integer"
                                "sentpkt" => "integer"
                                "rcvdpkt" => "integer"
                                "srcserver" => "integer"
                                "proto" => "integer"
                                "sessionid" => "integer"
                                "policyid" => "integer"
                                "crscore" => "integer"
                                "craction" => "integer"
                                "srcport" => "integer"
                                "dstport" => "integer"
                                "cpu" => "integer"
                                "mem" => "integer"
                                "totalsession" => "integer"
                                "disk" => "integer"
                                "setuprate" => "integer"
                                "disklograte" => "integer"
                                "fazlograte" => "integer"
                                "freediskstorage" => "integer"
                                "sysuptime" => "integer"
                        }
                }
        }
}

output {
        if "fortigate" in [tags] {
                elasticsearch {
                        hosts => "http://192.168.x.x:9200"
                        index => "logstash-fortigate-index-%{+YYYY.MM.dd}"
                        data_stream => "false"
                }
        }
}
[root@tmplogsvr pattern.d]# vi /etc/logstash/pattern.d/fortigate.pattern
FORTILOG (?<timestamp>^\w+\s+\d+\s+\d+\:\d+\:\d+)\s(?<log_send_dev>(?:%{IP}|\_gateway))

+ Recent posts