Operating Systems/Linux
[ Linux ] SNORT 서버 설치
loopinger
2021. 11. 25. 18:59
1. CentOS7
[ SNORT 서버 ]
# epel repo 정보 다운로드
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# snort 의존성 파일 다운로드
yum install -y gcc flex bison zlib zlib-devel libpcap pcre pcre-devel libdnet libdnet-devel libpcap-devel tcpdump
yum install -y luajit luajit-devel openssl openssl-devel
yum install -y libnghttp2
yum install -y httpd
NET_INTERFACE=`ls /sys/class/net | grep -v lo | head -1`
SNORT_SERVER_IP=`ip route | grep -e ${NET_INTERFACE} | grep src | awk '{print $9}'`
ifconfig ${NET_INTERFACE} promisc
mkdir -p /app/install
mkdir -p /app/temp/daq/2.0.7
# daq(Data AcQuisition library) 설치
# snort 에서 하드웨어 패킷 캡쳐 구현을 위한 사용하는 라이브러리(pcap와 같은 기능)
# https://www.snort.org/ 참고
wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz -O /app/install/daq-2.0.7.tar.gz
wget https://www.snort.org/downloads/snort/snort-2.9.18.1.tar.gz -O /app/install/snort-2.9.18.tar.gz
tar xvfz /app/install/daq-2.0.7.tar.gz -C /app/temp/daq/2.0.7 --strip-components=1
mkdir -p /app/dkit/daq/2.0.7
cd /app/temp/daq/2.0.7
./configure --prefix=/app/dkit/daq/2.0.7
make
make install
mkdir -p /app/temp/snort/2.9.18
mkdir -p /app/tools/snort/2.9.18
tar xvfz /app/install/snort-2.9.18.tar.gz -C /app/temp/snort/2.9.18 --strip-components=1
cd /app/temp/snort/2.9.18
export PATH=$PATH:/app/dkit/daq/2.0.7/bin
./configure --enable-sourcefire --with-daq-includes=/app/dkit/daq/2.0.7/include --with-daq-libraries=/app/dkit/daq/2.0.7/lib --prefix=/app/tools/snort/2.9.18
make
make install
ln -Tfs /app/tools/snort/2.9.18 /app/tools/snort/release
ln -Tfs /app/tools/snort/release/bin/snort /usr/bin/snort
systemctl start httpd
systemctl stop firewalld
setenforce 0
snort --version
mkdir /var/log/snort
mkdir -p /app/tools/snort/rules
# by_dst : 정해진 시간 동안 정해진 패킷량이 동일한 목적지로 들어오는 경우
# type both : ip를 로그 발생 기준으로 삼음
# snort syn flooding attack 감지 룰 설정
cat <<SYN_FLOODING_RULES > /app/tools/snort/rules/syn_flooding_rule.rules
alert tcp any any -> ${SNORT_SERVER_IP} any (msg:"SYN Flooding"; flags:S; threshold:type both, track by_dst, count 20, seconds 1; sid:1000001;)
SYN_FLOODING_RULES
# snort syn flooding attack 감지
(snort -i ${NET_INTERFACE} -q -A console -c /app/tools/snort/rules/syn_flooding_rule.rules >> /var/log/snort/snort.log) &
# snort get flooding attack 감지 룰 설정
cat <<GET_FLOODING_RULES > /app/tools/snort/rules/get_flooding_rule.rules
alert tcp any any -> any any (msg:"Get Flooding attack"; content:"GET /"; nocase; threshold:type both, track by_src, count 50, seconds 1; sid:1000002;)
GET_FLOODING_RULES
# snort get flooding attack 감지
(snort -i ${NET_INTERFACE} -q -A console -c /app/tools/snort/rules/get_flooding_rule.rules >> /var/log/snort/snort.log) &
# snort udp flooding attack 감지 룰 설정
cat <<UDP_FLOODING_RULES > /app/tools/snort/rules/udp_flooding_rule.rules
alert udp any any -> ${SNORT_SERVER_IP} any (msg:"UDP flooding"; threshold:type threshold, track by_src, count 5, seconds 1; sid:1000003;)
UDP_FLOODING_RULES
(snort -i ${NET_INTERFACE} -q -A console -c /app/tools/snort/rules/udp_flooding_rule.rules >> /var/log/snort/snort.log) &
tail -f /var/log/snort/snort.log
[ 클라이언트 ]
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y hping3
yum install -y slowhttptest
SNORT_SERVER_IP=192.168.108.50
# SYN Flooding Attack
hping3 ${SNORT_SERVER_IP} -S --flood
# Get Flooding Attack
slowhttptest -c 4000 -g -o slowloris -i 10 -r 100 -t GET -x 3 -p 3 -u http://${SNORT_SERVER_IP}
# UDP Flooding Attack
hping3 ${SNORT_SERVER_IP} -2 --flood --rand-source -p 80 -d 1000