wonder

정보보안 스터디 - 13주차 1일 - IDS/IPS 장비 본문

Security/네트워크 보안

정보보안 스터디 - 13주차 1일 - IDS/IPS 장비

wonder12 2023. 1. 6. 03:59

 

 

☞ IDS/IPS 장비

 

기본적으로 방화벽은 라우터의 기능을 할 수 있기 때문에

이렇게 방화벽이 라우터 뒤에 놓여 사용하긴 하지만 

더 강력한 다른 탐지도구가 필요합니다.

 

 

이때까지 했던 외부자 공격, 내부자 공격을 막을 수는 있지만

그건 IP, TCP까지만 검사했던 거고

만약 IP, TCP 레이어에서는 정상적인데

더 자세하게 웹이라고치면 http 프로토콜 메세지, ftp 라고 치면 ftp 메세지 등

메세지측에서 악의적인 접근을 할 수 있습니다.

 

그부분을 검사하여 차단해주지 못하기 때문에(가능한 방법이 있지만 너무 제한적입니다.)

5계층 레이어를 검사할 수 있는 탐지도구가 필요합니다.

 

 

IDS instruction detection system 

탐지와 로그 기록하는 기능만 가능합니다.

endpoint 가능

 

 

IPS instruction prevention system

차단기능까지합니다.

 inline 여야합니다.

 

http 메세지만 전용으로 확인하고 분석하는
웹 방화벽, 즉 WAF라고 불리기도 합니다.

 

IPS가 차단까지하기 때문에 IDS쓰는 의미가없습니다. 

 

 

또한 라우터, 방화벽, IPS의 기능을 모두하는

UTM(unified treat mangement) 도 사용가능합니다.

통합 하면 비용이 절감됩니다.

요즘 트랜드는
통합하여 쓰는 UTM로 바꾸는 추세이지만
따로 쓰는 것이  안정성에는 더 좋습니다. 하나에 기능을 몰아두면 부하가 쉽게 일어나기 때문입니다.

 

 Snort 
솔루션업체의 대부분이 snort서비스 기반으로 방화벽을 구성합니다.

 

구조는
end point 에 있어서
패킷이 20.200에 정상적으로 교환되면서
snort에도 도착하는 것입니다. 

이 때 http 등 프로토콜 메세지를 점검하는데
endpoint에 있기 때문에 inline이 필수적인 IPS의 기능은 못합니다.

 

 Snort 서비스 설정

.conf 와 rules 파일 작성만 확실히 하면
사용방법은 아주 쉽습니다.

rules에 추가하려면 local.rules에 넣는 방법도 있겠지만
많아진다면 직접 rules파일을 만들고 conf에 추가합니다.

원래는 ddos, backdoor 등 기본설정된 기능을 사용하지만
지금은 테스트이므로 주석처리합니다.

 

vi local.rules

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SQL Injection-union"; content:"union"; nocase; http_uri; sid:3000001; rev:1;)
alert 
공격알림을 주고 로그를 기록합니다.
drop, reject 차단과 로그작성
등이있습니다.
tcp
프로토콜
$EXTERNAL_NET any -> $HOME_NET any
출발지 -> 목적지 로 패킷이 전송되는것에서 검사합니다.
192.168.20.200인 내부네트워크를 환경변수로 설정한 것입니다.

환경변수는 conf 설정파일에서 세팅합니다.
옵션
msg=" ";
SQLi-and 주석같이 사용합니다. 오류별로다르게 이름을 짓습니다.
content: " ";
포함된 내용을 검사합니다.
sid:;
아이디는 3백만 이전은 예약중인 번호인 규율이 있어 3백만 이후를 권장합니다.
nocase;
대소문자구분없이 검사합니다.

http_header
http_client_body
헤더/바디를 검사(패턴 매칭)합니다.
http_method=get
메소드가 get인 것을 검사합니다.

http_cookie
쿠키에서 검사합니다.
http_uri
메소드 뒤에 나오는 부분이며 url주소에서 검사합니다.

 

service snort restart
service snort stop
snort -q -A console -b -c /etc/snort/snort.conf
공격시도
curl http://192.168.20.200/page?cmd=union

콘솔창으로 넘어가 공격을 시도하면 검사하며 로그에 뜹니다.


해당 페이지가 없어서 웹에선 오류가 뜨지만
어쨋든 해당 조건이 맞기 때문에 패킷을 검사합니다. union이 포함되어있어 차단되었습니다.

 

 

참고로 http메세지에서

get방식이면 헤더에 기록되고

post방식이면 바디에 기록됩니다.

 

 

 

 

Comments