java기반이므로 jdk파일을 다운
locky linux는 방화벽으로 구축 (jdk, logstash(데이터가공), beats(데이터 실시간 수집))
cent Os 는 ESM구축(jdk,elasticsearch(저장하는 곳+검색가능), kibana(보여주는 곳))
| 순서 | 실행 대상 | 이유 |
| -- | --------------- | --------------------------------------------- |
| ① | Elasticsearch | 가장 기본 저장소이자 종착지, 제일 먼저 켜야 함 |
| ② | Logstash (선택사항) | Filebeat가 Elasticsearch 대신 Logstash로 보낼 경우 필요 |
| ③ | Kibana | Elasticsearch에 연결해서 시각화 도구로 사용 |
| ④ | Filebeat | 로그 수집 도구 → 마지막에 실행해야 연결 실패 없음 |
Cent OS
네트워크를 바꾸는 위치
vim /etc/udev/rules.d/70-persistent-net.rules
위에 있던 것을 지워주고 아래는 이름을 eth0으로 변경 후 저장
rpm -ivh jdk-8u191-linux-x64.rpm
시간 동기화
rdate -s time.bora.net
date
elasticsearch 프로그램 설치
rpm -ivh elasticsearch-6.3.2.rpm
elasticsearch 설정
vim /etc/elasticsearch/elasticsearch.yml
ipv6 설정
-기본적으로 elasticsearch는 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
서비스 시작
service elasticsearch start
netstat -antup | grep java
+snort 로 구현한다면?
vim config/snort-log.conf
input {
beats {
port => "5044"
}
}
filter{
csv{
columns => ["timestamp","msg","proto","src","srcport","dst","dstport"]
}
}
output{
elasticsearch{
hosts => ["192.168.50.50:9200"]
index => "snort"
}
}
Locky Linux
파일이동
cd /usr/local/src
mv '/var/run/vmblock-fuse/blockdir/hzdhHH/jdk-8u191-linux-x64.rpm' .
mv '/var/run/vmblock-fuse/blockdir/hzdhHH/filebeat-6.3.2-linux-x86_64.tar.gz' .
mv '/var/run/vmblock-fuse/blockdir/hzdhHH/logstash-6.3.2.tar.gz' .
rpm -ivh jdk-8u191-linux-x64.rpm
tar -zxvf logstash-6.3.2.tar.gz
rpm,tar차이
logstash시작
bin/logstash -e 'input { stdin {}} output { stdout{}}'
아래 이렇게 뜨면 성공한 것
test를 입력하여 logstash가 동작하는지 확인
종료: ctrl + c
데이터 가공 설정
데이터가공을 위해서는 원본데이터가 필요하다
3가지 정보가 필요.
누구한테 받을 건지(beats), 어떻게 가공할 것인지(grok파싱(해석) 프로그램 사용), 가공된 데이터를 누구에게 넘겨줄 지 결정(elasticsearch)
/usr/local/src/logstash-6.3.2
vim config/iptables-log.conf
input{
beats {
port => "5044"
}
}
filter{
grok{
match => { "message" => "%{IPTABLES}" }
}
}
output{
elasticsearch{
hosts => ["192.168.50.50:9200"]
index =>"iptables"
}
}
~
~
~
grok도 규칙에 따라 가공을 해주는 것이기 때문에 규칙을 만들어줘야 한다.
규칙패턴을 공부해야 한다.
Grok Debugger | Autocomplete and Live Match Highlghting
grokdebugger.com
정규표현식, 구문분석(파싱parse-grok, 패턴공부)
grok 설정
vim vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/iptales.grok
IPTABLES %{IPTABLES_ETHERNET} %{IPTABLES_IP}
IPTABLES_ETHERNET %{DATA:msg} IN=%{DATA:iface} OUT=(%{DATA:oface})?(MAC=%{NETFILTERMAC})?
NETFILTERMAC %{MAC:dest_mac}:%{MAC:src_mac}:%{ETHTYPE:ethtype}
ETHTYPE (?:(?:[A-Fa-f0-9]{2}):(?:[A-Fa-f0-9]{2}))
IPTABLES_IP %{IPTABLES_IP_START} %{IPTABLES_IP_PAYLOAD}
IPTABLES_IP_START SRC=%{IP:src_ip} DST=%{IP:dest_ip} LEN=%{INT:length} TOS=%{BASE16NUM:tos} PREC=%{BASE16NUM:prec} TTL=%{INT:ttl} ID=%{INT:ip_id}(?: %{IPTABLES_IP_FRAGFLAG:flags})?(?: FRAG: %{INT:fragment})?
IPTABLES_IP_FRAGFLAG ((?<= )(CE|DF|MF))*
IPTABLES_IP_PAYLOAD %{IPTABLES_PROTOCOL} (%{IPTABLES_PORT_PAIR} %{IPTABLES_TCP_DETAILS})?(%{IPTABLES_ICMP_DETAILS})?
IPTABLES_PROTOCOL PROTO=%{WORD:proto}
IPTABLES_PORT_PAIR SPT=%{INT:src_port} DPT=%{INT:dest_port}
IPTABLES_TCP_DETAILS WINDOW=%{INT:tcp_window} RES=%{BASE16NUM:res} %{IPTABLES_TCP_FLAGS:tcp_flags}
IPTABLES_TCP_FLAGS ((?<= )CWR|ECE|URG|ACK|PSH|RST|SYN|FIN)
IPTABLES_ICMP_DETAILS TYPE=%{INT:icmp_type} CODE=%{INT:icmp_code} ID=%{INT:icmp_id} SEQ=%{INT:seq}
filebeat 설치
cd ..
tar -zxf filebeat-6.3.2-linux-x86_64.tar.gz
설치 후 이동
권한 설정 (-R은 하위 파일 전부 권한 변경)
chmod 744 filebeat
chmod 644 filebeat.yml
chmod -R 644 modules.d
vim filebeat.yml
원본데이터를 그대로 보내겠다는 설정-> logstash로 보낼 거니까 전부 비활성화
반대로 보낼 거니까 설정
포트는 위에 input설정할 때와 동일 활성화만 해주기
나가고
방화벽 설정
iptables -A INPUT -p icmp -j LOG --log-prefix "[ICMP_DETECT] "
iptables -A OUTPUT -p icmp -j LOG --log-prefix "[ICMP_DETECT] "
로그 위치 변경
vim /etc/rsyslog.conf
systemctl restart rsyslog.service
tail -f /var/log/iptables.log
시간 설정 필수!
vim /etc/chrony.conf
맨 마지막에
server time.bora.net iburst
systemctl restart chronyd
-> 시간 설정을 만약 안 하고 log파일을 만들었다면, log파일 지우고 rsyslog 재시작 후 다시 확인해보기
설정 후, logstash 활성화하기
cd /usr/local/src/logstash-6.3.2/
bin/logstash -f config/iptables-log.conf --config.reload.automatic
마지막에 성공뜨면 ok
filebeats 실행
cd /usr/local/src/filebeat-6.3.2-linux-x86_64/
./filebeat -e -c filebeat.yml -d "publish"
새로은 터미널 창에서 ping을 쳤을 때 filebeat에서 동작하는 것을 확인할 수 있다
cent OS에서 확인하기
curl -X GET "localhost:9200/_cat/indices?v"
kibana 실행
tar -zxf kibana-6.3.2-linux-x86_64.tar.gz
cd kibana-6.3.2-linux-x86_64
vim config/kibana.yml
저장 후
bin/kibana
실행
실행이 잘 되었다는 뜻
원도우로 접속을 해본다
management >Index Patterns >iptables > nextstep> 생성
+ 오류 발생.. 로그 가공이 제대로 되지 않는다
->해결: iptables 정책 설정할 때 띄어쓰기 하기
데이터를 하나로 인식함. 띄어쓰기로 나눠줘야 함
curl -X DELETE "localhost:9200/iptables?pretty"
'Linux' 카테고리의 다른 글
칼리 리눅스 초기 설정(네트워크 설정, 로그인, 한글) + GVM 설치 및 설정 (1) | 2025.07.15 |
---|---|
pam 모듈 별 역할, 설정 (0) | 2025.06.16 |
접근 통제, SElinux 사용방법 (0) | 2025.06.13 |
실습 /web,ftp, iptables,db (0) | 2025.05.28 |
crontab (예약작업 프로그램) (0) | 2025.05.26 |