Security/네트워크 보안

정보보안 스터디 - 13주차 2일 - Sophos UTM 시스템 구성

wonder12 2023. 1. 6. 23:03

 

☞ snort

 

local.rules 룰 작성을 할거면 나머지 제공되는 룰은 주석처리해줘야 중복되어 실행되지 않습니다.

vi local.rules
smap 탐지
## tcp syn half-open scan
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"## tcp syn half-open scan ##"; flag:S,12; threshold:type both, track by_src, count 20, seconds 5; flow:to_server, not_established; sid:3000012; rev:1;)

## fin scan
alert tcp any any -> $HOME_NET any (msg:"## fin scan ##"; flag:F,12; threshold:type limit, track by_src, count 20, seconds 5; flow:not_established; sid:3000013; rev:1; )

## xmas scan
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"## xmas scan ##"; flag:UPF; threshold:type threshold, track by_src, count 20, seconds 5; sid:30000014; rev:1; )

## null scan
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"## xmas scan ##"; flag:0,12; threshold:type both, track by_src, count 20, seconds 5; sid:3000015; rev:1;)
DOS, DDOS flooding 공격 탐지
## icmp flooding
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"## icmp flooding ##"; itype:8;icode:0;threshold:type both, track by_dst, count 100, seconds 1; sid:30000016; rev:1; )

## ip fragments:ip 프로토콜 아무거나 more fragments 데이터가 있으면 됨
alert ip $EXTERNAL_NET any -> $HOME_NET any (msg:"## ip fragments ##"; fragbits: M; threshold:type both, track by_dst, count 100, seconds 1; sid:30000022; rev:1; )
icmp, tcp, udp 모두 가능


## ping of death: icmp에 데이터 추가
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"## ping of death ##"; itype:8;icode:0; content:"|5858585858585858|";threshold:type both, track by_dst, count 100, seconds 1; sid:30000017; rev:1; )
icmp만 가능

## land attack
alert ip $EXTERNAL_NET any -> $HOME_NET any (msg:"## land attack ##"; sameip; threshold:type both, track by_dst, count 100, seconds 1; sid:30000018; rev:1; )
icmp, tcp, udp 모두 가능

## smurf attack
alert ip $EXTERNAL_NET any -> $HOME_NET any (msg:"## smurf attack ##"; threshold:type both, track by_dst, count 100, seconds 1; sid:30000019; rev:1; )
icmp, tcp, udp 모두 가능

## tcp syn flooding
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"## tcp syn flooding ##"; flow:statelsess; flags:S, 12; threshold:type both, track by_dst, count 3000, seconds 1; sid:30000020; rev:1; )

## udp flooding
alert udp $EXTERNAL_NET any -> $HOME_NET any (msg:"## udp flooding ##";  threshold:type both, track by_dst, count 100, seconds 1; sid:30000021; rev:1; )

웹 sqli 공격 탐지
## 
web attack

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"## web attack ##"; content:"GET /cmd.exe"; nocase; sid:3000023; rev:1; )

 

옵션설명

threshold type
both
가장 적게 로그를 띄웁니다.
limit
threshold
가장 많이 로그를 띄웁니다. 오는 것마다 거의 다 띄웁니다.

count: 10 second: 4
4초당 10개 메세지까지만 로그에 띄웁니다.
그이상으로 메세지는 무시합니다.

이렇게 설정하면 원래있던 정상적으로 하나씩 뜨는 접속은 카운트하지 않게 됩니다.
신규로 나오는 패턴에 대해서만 탐지하고 
접속 패킷이 있을 때마다 로그를 띄우면 부하가 생기기 때문에 그러지는 않고
초당 제한하는 만큼의 메세지 개수만 띄우도록 설정 합니다.

 

콘솔 로그를 계속 확인하고 있을 수는 없으니 

보통 탐지가 되면 차단을 하고 관리자의 이메일로 메세지가 보내지는 경우가 대부분입니다.

 

service snort restart
snort -q -A console -b -c /etc/snort/snort.conf
콘솔을 실행해줍니다.
공격을 실시합니다.
nmap -sS 192.168.20.200

nmap -sF 192.168.20.200
nmap -sX 192.168.20.200
nmap -sN 192.168.20.200


icmp flooding
hping3 -I eth0 --icmp 192.168.20.200 -a 1.2.3.4 --flood 

ip fragments
hping3 -I eth0 --icmp 192.168.20.200 -a 1.2.3.4 --flood -d 50000
hping3 -I eth0 --tcp 192.168.20.200 -a 1.2.3.4 --flood -d 50000
hping3 -I eth0 --udp 192.168.20.200 -a 1.2.3.4 --flood -d 50000

death of ping
hping3 -I eth0 --icmp 192.168.20.200 -a 1.2.3.4 --flood -d 50000

land attack
hping3 -I eth0 --icmp 192.168.20.200 -a 192.168.20.200 --flood

smurf
hping3 -I eth0 --icmp 192.168.20.255 -a 192.168.20.200 --flood

tcp syn flooding
hping3 -I eth0 --syn -p 80 192.168.20.200 -a 1.2.3.4 --flood

udp flooding
hping3 -I eth0 --udp -p 53 192.168.20.200 -a 1.2.3.4 --flood

curl http://192.168.20.200/page?cmd="GET /cmd.exe"

 

 

 

 UTM 시스템 구성

unified treath management

 

 

IPS(IDS 기능 포함), 방화벽, 라우터 기능을 모두 포함하기 위해서 UTM으로 통합합니다.

 

UTM을 실제 장비를 구매하는 대신 가상 시스템을 구축합니다.

 

 

Sophos utm(suse linux) 이미지를 가지고 와서 vmware 머신을 새롭게 만듭니다.

 

cpu 4코어에 램2기가를 해주고

inline구조이기 때문에 network adapter는 내부, 외부로 (eth0 eth1) 두가지를 생성해줘야합니다.

20.1 2.100으로 맞춰줍니다. 

 

 

 

 

원래는 snort서비스에 rules를 만들어서 적용하거나 ddos, backdoor 등 있긴하지만 제대로 통합적으로 지원 업데이트가 되었다고 볼 수 없습니다.

그렇기때문에  

sophos utm 이미지에서 rules는 거의 구축이 다 되어있는 것을 사용하면 됩니다.

그래픽기반으로 설정할 수 있기 때문에 편리합니다. 대부분의 utm은 이런 구조라고 생각하면됩니다. 

 

 처음에 설정은

셸 엑세스 패스워드 설정 root/toor

웹 관리자서버 패스워드 설정 admin/toor

 

C&C 서버

취약한 피해자 서버를 공격하기위해서 공격자가 직접 공격하지 않고 봇넷을 이용하여 공격합니다.

그럴 때 C&C 명령어를 내릴 수 있는 서버가 공격자 서버입니다.

처음 초기설정할 때 C&C 서버에 대해서 탐지하는 기능도 있습니다.

 

 

 

 

 

네트워크 정의, 서비스 정의를 해주고 

방화벽> 새규칙으로 허용합니다. 

 

기본적으로 방화벽이 되어있습니다.

외부 > 내부로 오는 접근을 기본적으로 차단합니다.

icmp, tcp http 웹접근, udp 모두 접속을 하지 못합니다.

하지만 필요한건 허용해줍니다.

 

이런것도 그래픽기반으로 방화벽 설정이 가능합니다.

any > 192.168.20.200 (web traffic: http+ https) 허용합니다.

 

 

 

 

 

 

 

 

내부네트워크에서 직원 아무에게나 접근가능하도록 열어 놓는 경우도 있습니다. 외부에서도 접근가능하도록하여 어디에서든 관리할 수 있도록 하는 취지에서 관리자들은 이런 접근을 차단하지 않는 경우가 많습니다. 하지만 ip를 어떻게 알아내서 무작위 대입공격으로 쉽게 관리자 계정을 크랙킹할 수 도 있으니 꼭 막아줘야합니다. > 허용된 네트워크에 관리자 네트워크 추가

 

 

utm 자체가 게이트웨이로 작동되기 때문에 처음에 게이트웨이를 설정할 필요가 없습니다.

 

내부> utm DNS 게이트웨이 > forwarder DNS kt

내부에서 nslookup 을 했을 때 dns서버가 모른다면 forwarder DNS서버에게 넘겨 ip주소를 할당받아옵니다.

 

 

 

특정 국가 ip 에대해서 송수신 선택해서 차단이 가능합니다.

중국- 바이두, 일본 -야후 를 차단했습니다.

송신차단은 처음부터 내부에서 접근을 막습니다.

수신차단은 보낼수는 있지만 오는 응답을 받을 수는 없기 때문에 마찬가지로 접속이 안됩니다.

왜그런지 모르겠지만 20.1 같은 네트워크인 실제 pc에서는 바이두, 일본 사이트에 접속이 가능합니다.