윈도우 서버간 통신을 자동스크립트를 생성하여 파일 배포 및 명령어 실행 시 패스워드를 하드코딩해서 넣으면 보안취약점으로 지적을 받습니다.

이때 패스워드를 파일로 암호화하여 저장해 두고, 변수로 선언하여 사용하는 방법이 있네요.

 

암호화 파일 만들기

PS C:\WINDOWS\system32> Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File -FilePath c:\cred.txt
************* # 패스워드 입력
PS C:\WINDOWS\system32>

 

cred.txt 내용 보기

01000000d08c9ddf0115d1118c7a00c04fc297eb010000000b464dafe9afab4a8b426b3595128ba00000000002000000000003660000c000000010000000be62cdae82fc8a4f2cd7bf2ea3089ac60000000004800000a000000010000000a2b5f4768a73d76011a84bc70dd5e9c610000000c73efee628af3c133ad0e42befb36257140000001d386d28f83d911c3b4aac2f323d824a1627c2a6

 

암호화된 파일 읽어오기

$cred = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
$cred = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($cred)
$cred = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($cred)

 

다른 서버에서 cred.txt 파일을 복호화 하니까 오류가 나네요.

PS C:\Users\Administrator> $cred = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
ConvertTo-SecureString : Key not valid for use in specified state.
At line:1 char:53
+ ...  = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
+                                                    ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
    + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.Conv
   ertToSecureStringCommand

PS C:\Users\Administrator>

 

활용 방안

#powhershell에서만 적용
# 변수에 저장된 패스워드 파일로 해당 서버의 자격증명을 생성
cmdkey /generic:192.168.000.000 /user:administrator /pass:$cred

# 생성한 자격증명의 서버에 패스워드 없이 접속하기
mstsc /v 192.168.000.000

'기술 노트 > Windows' 카테고리의 다른 글

Windows 로그인 OTP 적용하기  (1) 2024.10.10
출력문에서 필드 변수 선언하기  (0) 2024.01.18
virtualbox 설치하기  (0) 2023.09.27
Windows PC 시간 예약해서 끄기  (0) 2023.06.23
가상 OS 설치하기  (0) 2023.05.10

하나씩 따라하시면 됩니다!

제가 설정한 모델은 1830 24G PoE+ (JL813A) 입니다.

 

HPE OfficeConnect Switch 1820 시리즈와 UI만 다를 뿐, 거의 같네요.

 

웹 페이지 접속하기 (내 PC IP를 192.168.1.2 ~ 192.168.1.254 중 선택)

스위치의 기본 IP는 192.168.1.1 입니다.

초기 설정을 위해 웹을 접속하기 위해서는 내 PC의 IP를 "192.168.1.2 ~ 192.168.1.254" 중 IP를 설정

 

http://192.168.1.1에 접속하니 아래와 같이 나옵니다.

  • For local management의 "CONNECT" 클릭
  • 혹시라도 로그인 화면이 나오지 않는다면 수동으로 http://192.168.1.1 로 로그인 해 주세요.

  • ID/PW: admin / 없음

처음 로그인할 경우 ID/PW 설정 절차 팝업 메뉴가 뜹니다.

기본으로 설정된 계정 정보 및 패스워드를 변경합니다.

  • 기본적으로 정보보안측면에서는 기본 계정 및 "admin" 같은 유추가 쉬운 계정은 사용이 불가합니다.
  • 기본적으로 설정된 패스워드가 없어서, 반드시 접속을 위한 패스워드를 설정하셔야 합니다.

 

스위치 설정하기 (Setup Network → Get Connected)

  • 스위치 관리를 위한 IP 설정합니다.
  • 웹 접속을 위한 HTTP/HTTPS 접속을 설정합니다. (HTTP: Disable, HTTPS: Enable)

 

장비 log 설정 및 Syslog 설정하기 (Diagnostics → Logging)

  • 기본설정으로는 장비의 log가 설정되어 있어, 장비 상태를 파악할 수 있습니다.
    (Buffered Logging: Disabled → Enabled / Serverity Threshold: Info)
  • 별도의 로그 서버가 있는 경우 syslog 설정으로 로그 관리가 가능합니다.

 

VLAN 추가하기 (VLAN → VLAN Configuration → VLAN Configuration)

저는 무선 연결을 위하여 구매한 장비입니다. VLAN 설정으로 SSID별 통신 영역을 구분하기 위하여 설정했습니다.

  • 일반 통신(업무망): VLAN 1
  • 업무망 통신 이외: VLAN 10

  • 위 화면에서 "Add"를 누르면 아래의 화면처럼 나옵니다.
  • VLAN를 위한 숫자를 기입하시고 "Apply"를 누르시면 됩니다.

 

VLAN 포트 맵핑하기 (VLAN → VLAN Configuration → VLAN Membership - By VLAN)

  • Tagging 라인을 보시면 됩니다. VLAN에 대한 포트별 사용 설정입니다.
    • Tagged: 2개 이상의 vlan 통신이 가능
    • Untagged: 1개의 vlan 통신이 가능
    • Excluded: 사용 불가
    • Port1 ~ Port23, TRK1: VLAN1(Tagged) 사용가능하도록 설정
    • Port24는 Trunk Port로 설정할 예정
    [VLAN1]
  • 포트별 롤 설정입니다.

  • [VLAN10] 포트도 VLAN1과 동일하게 Port 롤을 설정 합니다.

 

TRUNK 포트 설정하기 (Switching → Trunk Configuration)

  • TRK1에 Port 24를 Members에 넣어줍니다.

'기술 노트 > NETWORK' 카테고리의 다른 글

GNS3에 랜 추가하기  (0) 2024.10.13
HPE 1820 8G PoE+ (J9982A) 설정하기  (1) 2023.12.06
UTM 2대를 내부 통신으로 연결하기  (1) 2023.06.08
CBW 140AC 설정하기  (0) 2023.02.23

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

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 #

 

하나씩 따라하시면 됩니다!

제가 설정한 모델은 1820 8G PoE+ (J9982A) 입니다.

 

웹 페이지 접속하기 (내 PC IP를 192.168.1.2 ~ 192.168.1.254 중 선택)

스위치의 기본 IP는 192.168.1.1 입니다.

초기 설정을 위해 웹을 접속하기 위해서는 내 PC의 IP를 "192.168.1.2 ~ 192.168.1.254" 중 IP를 설정
  ㅇ URL: http://192.168.1.1
  ㅇ ID/PW: admin / 없음

 

스위치 IP 설정하기 (Setup Network → Get Connected)

  • 스위치 관리를 위한 IP 설정입니다.

 

ID/PW 변경하기 (Maintenance → Password Manager)

기본으로 설정된 계정 정보 및 패스워드를 변경합니다.

  • 기본적으로 정보보안측면에서는 기본 계정 및 "admin" 같은 유추가 쉬운 계정은 사용이 불가합니다.
  • 기본적으로 설정된 패스워드가 없어서, 반드시 접속을 위한 패스워드를 설정하셔야 합니다.

 

장비 log 설정 및 Syslog 설정하기 (Diagnostics → Log Configuration)

  • 기본설정으로는 장비의 log가 설정되어 있지 않아, 장비 상태를 파악할 수가 없습니다.
    (Buffered Logging: Disabled → Enabled)
  • 별도의 로그 서버가 있는 경우 syslog 설정으로 로그 관리가 가능합니다.

 

VLAN 추가하기 (VLAN → Configuration)

저는 무선 연결을 위하여 구매한 장비입니다. VLAN 설정으로 SSID별 통신 영역을 구분하기 위하여 설정했습니다.

  • 일반 통신(업무망): VLAN 1
  • 업무망 통신 이외: VLAN 10

  • 위 화면에서 "Add"를 누르면 아래의 화면처럼 나옵니다.
  • VLAN를 위한 숫자를 기입하시고 "Apply"를 누르시면 됩니다.

 

VLAN 포트 맵핑하기 (VLAN → Port Membership)

추가한 VLAN에 대한 포트별 사용 설정입니다.

상단에 보이는 VLAN별 사용 포트의 역할들을 지정하는 것입니다.

Port 8은 Trunk 설정으로 비활성화가 되었습니다.

포트별 롤 설명입니다.

  • Tagged: 2개 이상의 vlan 통신이 가능
  • Untagged: 1개의 vlan 통신이 가능
  • Excluded: 사용 불가
  • Port1 ~ Port7, TRK1: VLAN1(Tagged) 사용가능하도록 설정 (Port 8 설정이 보이는 건 무시하세요.)

[VLAN1]

 

[VLAN10]

  • P ort1 ~ Port7, TRK1: VLAN1(Tagged) 사용가능하도록 설정 (Port 8에 설정이 보이는 건 무시하세요.)

 

Trunks 포트 설정하기 (Trunks → Configuration)

  • Port 8를 Trunk 포트로 설정하였습니다.

 

HTTPS 설정하기 (Security → Secure Connection)

  • 인증서의 상태가 Absent로 설정되어 있음 (Certificate Status: Absent)
  • 빨간 네모에 있는 톱니바퀴를 클릭

  • HTTPS Admin Mode 설정이 활성화 됨
  • Certificate Status: Absent → Present 로 변경됨

  • HTTP Admin Mode 설정을 변경함: Enabled → Disabled
  • HTTPS Admin Mode 설정을 변경함: Disabled → Enabled
  • Apply를 눌러 적용

'기술 노트 > NETWORK' 카테고리의 다른 글

GNS3에 랜 추가하기  (0) 2024.10.13
HPE 1830 24G PoE+ (JL813A) 설정하기  (1) 2023.12.07
UTM 2대를 내부 통신으로 연결하기  (1) 2023.06.08
CBW 140AC 설정하기  (0) 2023.02.23

내부 네트워크 장비에 대한 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 #

/etc/kibana/kibana.yml

logmgmt@syslogserver:~$ sudo cat /etc/kibana/kibana.yml
# For more configuration options see the configuration guide for Kibana in
# https://www.elastic.co/guide/index.html

# =================== System: Kibana Server ===================
# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "0.0.0.0"

# Enables you to specify a path to mount Kibana at if you are running behind a proxy.
# Use the `server.rewriteBasePath` setting to tell Kibana if it should remove the basePath
# from requests it receives, and to prevent a deprecation warning at startup.
# This setting cannot end in a slash.
#server.basePath: ""

# Specifies whether Kibana should rewrite requests that are prefixed with
# `server.basePath` or require that they are rewritten by your reverse proxy.
# Defaults to `false`.
#server.rewriteBasePath: false

# Specifies the public URL at which Kibana is available for end users. If
# `server.basePath` is configured this URL should end with the same basePath.
server.publicBaseUrl: "http://192.168.000.000:5601"

# The maximum payload size in bytes for incoming server requests.
#server.maxPayload: 1048576

# The Kibana server's name. This is used for display purposes.
server.name: "logserver"

# =================== System: Kibana Server (Optional) ===================
# Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively.
# These settings enable SSL for outgoing requests from the Kibana server to the browser.
#server.ssl.enabled: false
#server.ssl.certificate: /path/to/your/server.crt
#server.ssl.key: /path/to/your/server.key

# =================== System: Elasticsearch ===================
# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://192.168.000.000:9200"]

# If your Elasticsearch is protected with basic authentication, these settings provide
# the username and password that the Kibana server uses to perform maintenance on the Kibana
# index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
# is proxied through the Kibana server.
#elasticsearch.username: "kibana_system"
#elasticsearch.password: "pass"

# Kibana can also authenticate to Elasticsearch via "service account tokens".
# Service account tokens are Bearer style tokens that replace the traditional username/password based configuration.
# Use this token instead of a username/password.
# elasticsearch.serviceAccountToken: "my_token"

# Time in milliseconds to wait for Elasticsearch to respond to pings. Defaults to the value of
# the elasticsearch.requestTimeout setting.
#elasticsearch.pingTimeout: 1500

# Time in milliseconds to wait for responses from the back end or Elasticsearch. This value
# must be a positive integer.
#elasticsearch.requestTimeout: 30000

# The maximum number of sockets that can be used for communications with elasticsearch.
# Defaults to `Infinity`.
#elasticsearch.maxSockets: 1024

# Specifies whether Kibana should use compression for communications with elasticsearch
# Defaults to `false`.
#elasticsearch.compression: false

# List of Kibana client-side headers to send to Elasticsearch. To send *no* client-side
# headers, set this value to [] (an empty list).
#elasticsearch.requestHeadersWhitelist: [ authorization ]

# Header names and values that are sent to Elasticsearch. Any custom headers cannot be overwritten
# by client-side headers, regardless of the elasticsearch.requestHeadersWhitelist configuration.
#elasticsearch.customHeaders: {}

# Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable.
#elasticsearch.shardTimeout: 30000

# =================== System: Elasticsearch (Optional) ===================
# These files are used to verify the identity of Kibana to Elasticsearch and are required when
# xpack.security.http.ssl.client_authentication in Elasticsearch is set to required.
#elasticsearch.ssl.certificate: /path/to/your/client.crt
#elasticsearch.ssl.key: /path/to/your/client.key

# Enables you to specify a path to the PEM file for the certificate
# authority for your Elasticsearch instance.
#elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ]

# To disregard the validity of SSL certificates, change this setting's value to 'none'.
#elasticsearch.ssl.verificationMode: full

# =================== System: Logging ===================
# Set the value of this setting to off to suppress all logging output, or to debug to log everything. Defaults to 'info'
#logging.root.level: debug

# Enables you to specify a file where Kibana stores log output.
logging:
  appenders:
    file:
      type: file
      fileName: /var/log/kibana/kibana.log
      layout:
        type: json
  root:
    appenders:
      - default
      - file
#  layout:
#    type: json

# Logs queries sent to Elasticsearch.
#logging.loggers:
#  - name: elasticsearch.query
#    level: debug

# Logs http responses.
#logging.loggers:
#  - name: http.server.response
#    level: debug

# Logs system usage information.
#logging.loggers:
#  - name: metrics.ops
#    level: debug

# =================== System: Other ===================
# The path where Kibana stores persistent data not saved in Elasticsearch. Defaults to data
#path.data: data

# Specifies the path where Kibana creates the process ID file.
pid.file: /run/kibana/kibana.pid

# Set the interval in milliseconds to sample system and process performance
# metrics. Minimum is 100ms. Defaults to 5000ms.
#ops.interval: 5000

# Specifies locale to be used for all localizable strings, dates and number formats.
# Supported languages are the following: English (default) "en", Chinese "zh-CN", Japanese "ja-JP", French "fr-FR".
#i18n.locale: "en"

# =================== Frequently used (Optional)===================

# =================== Saved Objects: Migrations ===================
# Saved object migrations run at startup. If you run into migration-related issues, you might need to adjust these settings.

# The number of documents migrated at a time.
# If Kibana can't start up or upgrade due to an Elasticsearch `circuit_breaking_exception`,
# use a smaller batchSize value to reduce the memory pressure. Defaults to 1000 objects per batch.
#migrations.batchSize: 1000

# The maximum payload size for indexing batches of upgraded saved objects.
# To avoid migrations failing due to a 413 Request Entity Too Large response from Elasticsearch.
# This value should be lower than or equal to your Elasticsearch cluster’s `http.max_content_length`
# configuration option. Default: 100mb
#migrations.maxBatchSizeBytes: 100mb

# The number of times to retry temporary migration failures. Increase the setting
# if migrations fail frequently with a message such as `Unable to complete the [...] step after
# 15 attempts, terminating`. Defaults to 15
#migrations.retryAttempts: 15

# =================== Search Autocomplete ===================
# Time in milliseconds to wait for autocomplete suggestions from Elasticsearch.
# This value must be a whole number greater than zero. Defaults to 1000ms
#unifiedSearch.autocomplete.valueSuggestions.timeout: 1000

# Maximum number of documents loaded by each shard to generate autocomplete suggestions.
# This value must be a whole number greater than zero. Defaults to 100_000
#unifiedSearch.autocomplete.valueSuggestions.terminateAfter: 100000

'기술 노트 > ubuntu' 카테고리의 다른 글

prometheus.yml 설정  (0) 2023.12.21
Prometheus 설치  (1) 2023.12.21
logstash 설정하기  (1) 2023.12.04
elasticsearch 설정하기  (0) 2023.12.04
rsyslog 설정하기  (1) 2023.12.04

OS가 centos에서 ubuntu로 변경되어 ubuntu에서도 logstash 설정하는 내용을 남깁니다.

 

설명을 위해서 fortigate log를 파싱하기 위한 logstash 설정 입니다.

내용 확인 후 활용하시면 좋을 것 같아요.

 

logstash 설정 파일 생성하기

logmgmt@syslogserver:~$ sudo cat /etc/logstash/conf.d/logstash.conf
input {
        file {
                path => "/var/log/rsyslog/192.168.000.000/*.log"
                start_position => "beginning"
                tags => ["fortigate"]
        }
}

filter {
        if "fortigate" in [tags] {
                grok {
                        patterns_dir => ["/etc/logstash/pattern.d"]
                                match => { "message" => [ "%{FORTILOG} %{GREEDYDATA:sub_message}" ] }
                }
                kv {
                        source => "sub_message"
                        value_split => "="
                }
                mutate { remove_field => [ "message" ] }
                mutate { remove_field => [ "sub_message" ] }
                if "wan" in [srcintfrole] {
                        geoip {
                                source => "srcip"
                                target => "geoip_src"
                        }
                }
                if [sentbyte] != "" and [rcvdbyte] != "" {
                        bytes {
                                source => "rcvdbyte"
                                target => "receivedbyte"
                        }
                        bytes {
                                source => "sentbyte"
                                target => "sentedbyte"
                        }
                }
                mutate {
                        convert => {
                                "rcvdpkt" => "integer"
                                "sentpkt" => "integer"
                                "proto" => "integer"
                                "srcserver" => "integer"
                                "sessionid" => "integer"
                                "duration" => "integer"
                                "policyid" => "integer"
                                "HOUR" => "integer"
                                "MINUTE" => "integer"
                                "SECOND" => "integer"
                        }
                }
        }
}

output {
        if "fortigate" in [tags] {
                if "traffic" in [type] {
                        elasticsearch {
                                hosts => "http://192.168.000.000:9200"
                                index => "logstash-fortigate-traffic-index-%{+YYYY.MM.dd}"
                        }
                }
                else if "event" in [type] {
                        elasticsearch {
                                hosts => "http://192.168.000.000:9200"
                                index => "logstash-fortigate-event-index-%{+YYYY.MM.dd}"
                        }
                }
                else if "utm" in [type] {
                        elasticsearch {
                                hosts => "http://192.168.000.000:9200"
                                index => "logstash-fortigate-utm-index-%{+YYYY.MM.dd}"
                        }
                }
        }
}
logmgmt@syslogserver:~$

 

 

fortigate 패턴 파일 생성하기

logmgmt@syslogserver:~$ sudo cat /etc/logstash/pattern.d/fortigate.pattern
####################################
###Fortinet Syslog Pattern Types:###
####################################

FORTILOG (?<timestamp>^\w+\s+\d+\s+\d+\:\d+\:\d+)\s(?<log_send_dev>(?:%{IP}|\_gateway))
logmgmt@syslogserver:~$

 

logstash-filter-bytes 필터 설치하기

logmgmt@syslogserver:~$ sudo /usr/share/logstash/bin/logstash-plugin install logstash-filter-bytes
Using bundled JDK: /usr/share/logstash/jdk
Validating logstash-filter-bytes
Resolving mixin dependencies
Installing logstash-filter-bytes
Installation successful
logmgmt@syslogserver:~$

'기술 노트 > ubuntu' 카테고리의 다른 글

Prometheus 설치  (1) 2023.12.21
kibana 설정하기  (1) 2023.12.05
elasticsearch 설정하기  (0) 2023.12.04
rsyslog 설정하기  (1) 2023.12.04
우분투에서 IP 주소 확인하기  (1) 2023.12.04

/etc/elasticsearch/elasticsearch.yml

logmgmt@syslogserver:~$ sudo cat /etc/elasticsearch/elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
#       Before you set out to tweak and tune the configuration, make sure you
#       understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: es-cluster-1
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: logserver-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
network.host: 0.0.0.0
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["127.0.0.1", "[::1]"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
cluster.initial_master_nodes: ["logserver-1"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Allow wildcard deletion of indices:
#
#action.destructive_requires_name: false

#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 01-12-2023 03:44:21
#
# --------------------------------------------------------------------------------

# Enable security features
xpack.security.enabled: false

xpack.security.enrollment.enabled: false

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: false
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
#cluster.initial_master_nodes: ["localhost"]

# Allow HTTP API connections from anywhere
# Connections are encrypted and require user authentication
http.host: 0.0.0.0

# Allow other nodes to join the cluster from anywhere
# Connections are encrypted and mutually authenticated
#transport.host: 0.0.0.0

#----------------------- END SECURITY AUTO CONFIGURATION -------------------------

'기술 노트 > ubuntu' 카테고리의 다른 글

kibana 설정하기  (1) 2023.12.05
logstash 설정하기  (1) 2023.12.04
rsyslog 설정하기  (1) 2023.12.04
우분투에서 IP 주소 확인하기  (1) 2023.12.04
disk mount 하기  (0) 2023.12.01

우분투에 기본적으로 설치되어 있는지는 모르겠지만, 저는 설치가 되어 있어서 설정 부분만 안내합니다.

개인적으로는 syslog는 UDP Port 514로 로그를 수집하는 상황으로 설정합니다.

 

/etc/rsyslog.conf 설정하기

  • module(load="imudp") 라인의 주석 제거
  • input(type="imudp" port="514") 라인의 주석 제거
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
#module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
module(load="imudp") # 주석 제거
input(type="imudp" port="514") # 주석 제거

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")

# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

 

/etc/rsyslog.d/ 폴더에 원하는 conf 파일 생성

  • 저는 원격으로 syslog를 수집하기 때문에 10-remote.conf로 생성하였습니다.
logmgmt@syslogserver:/etc/rsyslog.d$ ls -al
total 28
drwxr-xr-x   2 root root  4096 12월  1 18:48 .
drwxr-xr-x 131 root root 12288 12월  1 18:46 ..
-rw-r--r--   1 root root   130 12월  1 18:48 10-remote.conf
-rw-r--r--   1 root root   314  9월 19  2021 20-ufw.conf
-rw-r--r--   1 root root  1122 12월  1 18:47 50-default.conf
logmgmt@syslogserver:/etc/rsyslog.d$

 

/etc/rsyslog.d/10-remote.conf

logmgmt@syslogserver:cat /etc/rsyslog.d$ cat 10-remote.conf
# syslog 수신 시 저장할 위치 및 파일 설정 템플릿
$template Remote,"/var/log/rsyslog/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log"

# syslog 수신 시 fromhost-ip가 127.0.0.1이 아닌 경우 템플릿 Remote 정책을 적용
:fromhost-ip, !isequal, "127.0.0.1" ?Remote

# 템플릿 Remote로 수신한 경우 로그 처리 중지
# 중지하지 않을 경우, OS에서 수집하는 syslog나 message에도 로그가 수집 됨 (중복 수집)
& stop
logmgmt@syslogserver:/etc/rsyslog.d$

'기술 노트 > ubuntu' 카테고리의 다른 글

logstash 설정하기  (1) 2023.12.04
elasticsearch 설정하기  (0) 2023.12.04
우분투에서 IP 주소 확인하기  (1) 2023.12.04
disk mount 하기  (0) 2023.12.01
kibana 설치하기  (0) 2023.12.01

우분투에는 ifconfig 명령어가 안 먹히네요.

우분투에서 IP Address 확인하는 방법과 ifconfig 설치 후 IP Address 확인하는 방법을 안내합니다.

 

우분투에서 IP Address 확인하기 (ip addr)

logmgmt@syslogserver:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether d4:ae:52:00:00:00 brd ff:ff:ff:ff:ff:ff
    altname enp2s0f0
    inet 192.168.000.000/24 brd 192.168.000.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether d4:ae:52:00:00:00 brd ff:ff:ff:ff:ff:ff
    altname enp2s0f1
logmgmt@syslogserver:~$

 

우분투에서 IP Address 확인하기 (ifconfig)

logmgmt@syslogserver:~$ sudo apt install net-tools
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  net-tools
0개 업그레이드, 1개 새로 설치, 0개 제거 및 8개 업그레이드 안 함.
204 k바이트 아카이브를 받아야 합니다.
이 작업 후 819 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu jammy/main amd64 net-tools amd64 1.60+git20181103.0eebece-1ubuntu5 [204 kB]
내려받기 204 k바이트, 소요시간 2초 (100.0 k바이트/초)
Selecting previously unselected package net-tools.
(데이터베이스 읽는중 ...현재 283267개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../net-tools_1.60+git20181103.0eebece-1ubuntu5_amd64.deb ...
Unpacking net-tools (1.60+git20181103.0eebece-1ubuntu5) ...
net-tools (1.60+git20181103.0eebece-1ubuntu5) 설정하는 중입니다 ...
Processing triggers for man-db (2.10.2-1) ...
logmgmt@syslogserver:~$ ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.000.000  netmask 255.255.255.0  broadcast 192.168.000.255
        ether d4:ae:52:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 2757378  bytes 3668986690 (3.6 GB)
        RX errors 0  dropped 16327  overruns 0  frame 0
        TX packets 159042  bytes 12797747 (12.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether d4:ae:52:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1684  bytes 162952 (162.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1684  bytes 162952 (162.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

logmgmt@syslogserver:~$

'기술 노트 > ubuntu' 카테고리의 다른 글

elasticsearch 설정하기  (0) 2023.12.04
rsyslog 설정하기  (1) 2023.12.04
disk mount 하기  (0) 2023.12.01
kibana 설치하기  (0) 2023.12.01
logstash 설치하기  (0) 2023.12.01

+ Recent posts