ESM 구축-실습

2025. 7. 31. 10:24·Network

 

 

문제

rockylinux1(firewall1)
ens160 192.168.50.120/24
ens224 100.100.100.254/24
ens160 200.200.200.254/24
rockylinux2(firewall2)
ens160 100.100.100.100/24
ens224 150.150.150.254/24
rockylinux3(server)
ens160 150.150.150.150/24
CentOS(ESM)
eth0 200.200.200.200/24

1. 모든 장비 네트워크 설정(서로간에 통신 가능하도록 설정)
2. server, ESM이 전부 인터넷 통신 가능하도록 설정(www.naver.com)
3. server에 WEB 서버 구축(index.html),FTP 서버 구축(passive 모드 설정, root 접속 허용)
4. firewall2에 DNS 서버 구축(www.kh.com, ftp.kh.com)(반복질의 비허용)
5. firewall1의 모든 기본 정책 DROP
7. server, ESM이 전부 인터넷 통신 가능하도록 허용 정책 설정
8. esm이 web, dns, ftp에 접속 가능하도록 허용 정책 설정
9. firewall2의 모든 기본 정책 ACCEPT
9.1 누구든 WEB 통신 시 로그정책
9.2 누구든 DNS 통신 시 로그정책
9.3 누구든 ftp root 로 접속 시 로그 정책
9.4 누구든 ftp ktest로 접속 시 로그 정책
9.5 해당 방화벽 발생 로그 /var/log/iptables.log로 저장
10. ESM 구축(elasticsearch 및 kibana 설치)
11. firewall2에 filebeat와 logstash 설치
(저장 index는 iptables)하여 iptables.log 데이터 수집 및 가공
12. 가공된 데이터 ESM으로 전송 및 ESM에 저장
13. kibana로 최종 확인

1.모든 장비의 ip주소 설정완료

2. 인터넷 가능하게 하기위해 ip route add 주소 via 주소설정. 외부통신 가능한 주소로 라우팅 걸기 + sysctl net.ipv4.ip_forward=1, nat

 

3.  FTP만 적어봄. 서버 구축

 

listen=YES

listen_ipv6=NO


pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50030

 

root 접속 허용을 위해 list root 비활성화

 

4.DNS 서버 구축 - 반복질의만 비허용

->

 

5. 기본 정책 all drop

7. server, ESM이 전부 인터넷 통신 가능하도록 허용 정책 설정
8. esm이 web, dns, ftp에 접속 가능하도록 허용 정책 설정

(6번이 없네?)

 

9. firewall2의 모든 기본 정책 ACCEPT

9.1 누구든 WEB 통신 시 로그정책
9.2 누구든 DNS 통신 시 로그정책
9.3 누구든 ftp root 로 접속 시 로그 정책
9.4 누구든 ftp ktest로 접속 시 로그 정책

 

 

 

!/bin/bash

sysctl net.ipv4.ip_forward=1

iptables -F
iptables -t nat -F

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -A FORWARD -p tcp -m multiport --dports 80,443 -m limit --limit 5/m -j LOG --log-prefix "[WEB ACCESS] "
iptables -A FORWARD -p tcp --dport 53 -j LOG --log-prefix "[DNS ACCESS] "
iptables -A FORWARD -p tcp --dport 21 -m string --algo kmp --string "root" -j LOG --log-prefix "[FTP root ACCESS] "
iptables -A FORWARD -p tcp --dport 21 -m string --algo kmp --string "ktest" -j LOG --log-prefix "[FTP KTEST ACCESS] "

 

9.5 해당 방화벽 발생 로그 /var/log/iptables.log로 저장

 

systemctl restart rsyslog

 

10. ESM 구축(elasticsearch 및 kibana 설치)

-rdate -s time.bora.net (필수!!!)

 

JDK 설치
cd /usr/local/src
mv /root/바탕화면/jdk-8u191-linux-x64.rpm .
rpm -ivh jdk-8u191-linux-x64.rpm



Elastic Search 설치 및 설정
 cd /usr/local/src
 mv /root/바탕화면/elasticsearch-6.3.2.rpm .
 rpm -ivh elasticsearch-6.3.2.rpm
 vim /etc/elasticsearch/elasticsearch.yml
->  Cluster / Node 설정/ Network 설정 (17,23,55,56,60,61)
 cluster.name :"esm-server" -  esm서버명
node.name:"kh100"  -데이터를 검색및 저장하는 프로세스
network.host:"0.0.0.0"  -외부접근 주소
transport.host:"localhost" -노드 간 내부통신용
http.port:"9200"  -외부접근 포트주소
transport.tcp.port:"9300" -노드 간 내부통신용 포트주소

 

-elasticsearch (cluster,node)

-elasticsearch (network)

 

-kibana

 Kibana 설치
cd /usr/local/src
mv /root/바탕화면/kibana-6.3.2-linux-x86_64.tar.gz .
tar -zxvf kibana-6.3.2-linux-x86_64.tar.gz



vim config/kibana.yml



외부접근 ip주소 및 포트 설정, Elasticsearch 경로 정보 설정
2,7,28
server.port: 5601
server.host:"0.0.0.0"
elasticsearch.url: "http://localhost:9200"



Kibana 실행 성공 여부확인
bin/kibana

 

ipv6비활성화 하기

 IPv6 비활성화
sysctl net.ipv6.conf.all.disable_ipv6=1
sysctl net.ipv6.conf.default.disable_ipv6=1
 sysctl net.ipv6.conf.lo.disable_ipv6=1


11. firewall2에 filebeat와 logstash 설치

filebeat 설치

cd usr/local/src
tar -zxvf filebeat-6.3.2-linux-x86_64.tar.gz
ls-l | grep filebeat
cd filebeat-6.3.2-linux-x86_64
chmod 744 filebeat   읽기(r=4), 쓰기(w=2), 실행(x=1) [소유자] [그룹] [기타 사용자]
chmod 644 filebeat.yml
chmod -R 644 modules.d   -R 모든 파일과 하위 디렉토리들에 대해
------
Filebeat 설치(Firewall 운영 설정파일 수정)
vim filebeat.yml (24)
enabled: true
143,145 #
153, 155 풀기

 

24

 

-elasticsearch로 바로 보내지 않고 logstash로 보내기 위한 설정

143,145
153,155

logstash

Logstash 설치(Firewall,IDS)
 cd /usr/local/src
tar -zxvf logstash-6.3.2.tar.gz
cd logstash-6.3.2
서비스정상확인을위한테스트
bin/logstash -e 'input { stdin { } } output { stdout { } }'
------
Logstash 설치- 설정파일생성(Firewall)
vim config/iptables-log.conf
input,filter,output

----
정규표현식 작성
vim logstash-6.3.2/vendor/bundle/jruby/2.3.0/gems/logstash-patterns
core-4.1.2/patterns/iptables.grok
-----
Logstash,filebeat 실행(Firewall,IDS)
bin/logstash -f config/iptables-log.conf --config.reload.automatic
./filebeat -e -c filebeat.yml -d "publish"
로그를 파일이 아닌 콘솔에 출력 -e
프로그램이 어떻게 동작하는지 내부 상황을 들여다보는 것:디버그 -d publish 엘라스틱서치로 보내는것 로그

 

bin/logstash -e 'input {stdin {} } output {stdout {} }'

 

logstash 설정파일 생성

 

vim config/iptables-log.conf

input {
        beats {
                port => "5044"
        }
}
filter{
        grok{
                match => {"message" => "%{IPTABLES}" }
        }
}
output{
        elasticsearch{
                hosts => ["200.200.200.200:9200"]
                index => "iptables"
        }
}
~                                                                               
~

 

bin/logstash -f config/iptables-log.conf --config.reload.automatic

./filebeat -e -c filebeat.yml -d "publish"


12. 가공된 데이터 ESM으로 전송 및 ESM에 저장

-firewall의 설정-> forward 허용 정책 넣기 9200/ 100<->200점대역 

5601/ 200<->192.168.50점대역

 

->이게 9200을 통해 beats의 정보를 -> logstash에게 넘기고(이건 같은 시스템)  elasticsearch로 넘겨야 하는데 200<->100이므로

-> 200점이 kibana가 있는 곳이고 여기에서 공인 ip로 전송해야 하므로 허용정책 넣기

 

iptables -A FORWARD -p tcp -m multiport --dports 80,443 -s 150.150.150.0/24 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dports 80,443 -s 200.200.200.0/24 -j ACCEPT

iptables -A FORWARD -p tcp -m multiport --sports 80,443 -d 150.150.150.0/24 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --sports 80,443 -d 200.200.200.0/24 -j ACCEPT

iptables -A FORWARD -p udp --dport 53 -s 200.200.200.0/24 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -d 200.200.200.0/24 -j ACCEPT

iptables -A FORWARD -p udp --dport 53 -s 150.150.150.0/24 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -d 150.150.150.0/24 -j ACCEPT

iptables -A FORWARD -p tcp -m multiport --sports 50000:50030,21 -d 200.200.200.0/24 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dports 50000:50030,21 -s 200.200.200.0/24 -j ACCEPT

iptables -A FORWARD -p tcp --dport 9200 -s 100.100.100.100 -j ACCEPT 
iptables -A FORWARD -p tcp --sport 9200 -d 100.100.100.100 -j ACCEPT 
iptables -A FORWARD -p tcp --dport 9200 -d 200.200.200.200 -j ACCEPT
iptables -A FORWARD -p tcp --sport 9200 -s 200.200.200.200  -j ACCEPT

iptables -A FORWARD -p tcp --dport 5601 -d 200.200.200.200 -s 192.168.50.0/24  -j ACCEPT
iptables -A FORWARD -p tcp --sport 5601 -s 200.200.200.200 -d 192.168.50.0/24 -j ACCEPT

iptables -t nat -L
iptables -L


13. kibana로 최종 확인

 

http://192.168.50.120:5601/app/kibana

 

 

저작자표시 비영리 변경금지 (새창열림)

'Network' 카테고리의 다른 글

모니터링 기능 sla/ track (선 두개 연결)  (1) 2025.07.28
LVS 로드 밸런싱  (3) 2025.07.25
이중화 VRRP  (1) 2025.07.24
vlan 설정 및 PVST설정  (1) 2025.07.24
L2 스위치 이중화의 문제점  (0) 2025.07.23
'Network' 카테고리의 다른 글
  • 모니터링 기능 sla/ track (선 두개 연결)
  • LVS 로드 밸런싱
  • 이중화 VRRP
  • vlan 설정 및 PVST설정
햅삐root
햅삐root
happyroot 님의 블로그 입니다. IT 보안 정리💛
  • 햅삐root
    햅삐한 root
    햅삐root
  • 전체
    오늘
    어제
    • 전체보기 IT (123)
      • Linux (21)
      • Network (23)
      • packet tracer& GNS3 (10)
      • Cryptology (7)
      • WEB (16)
      • DB (16)
      • Hacking (28)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    sqlinjection
    Hack
    injectionvector
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
햅삐root
ESM 구축-실습
상단으로

티스토리툴바