Last active
June 19, 2021 22:35
-
-
Save dgavshin/4625544223c2e4183e67591511511c51 to your computer and use it in GitHub Desktop.
Install suricata 6.0.2 and configure it as IPS NFQUEUE from sources, enable Attack&Defense rules
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
VERSION=6.0.2 | |
apt-get update | |
# netstat, ifconfig | |
apt-get install net-tools | |
apt-get install wget git | |
# Recomended packages for suricata | |
apt-get install -y libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev \ | |
libnet1-dev libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \ | |
libcap-ng-dev libcap-ng0 make libmagic-dev \ | |
libnss3-dev libgeoip-dev liblua5.1-dev libhiredis-dev libevent-dev \ | |
python3-yaml rustc cargo libjansson-dev liblz4-dev | |
# Extra for iptables/nftables IPS integration: | |
apt-get install -y libnetfilter-queue-dev libnetfilter-queue1 \ | |
libnetfilter-log-dev libnetfilter-log1 \ | |
libnfnetlink-dev libnfnetlink0 | |
# Скачиваем | |
cd /opt | |
if [ ! -d "/opt/suricata-$VERSION" ]; then | |
wget "http://www.openinfosecfoundation.org/download/suricata-$VERSION.tar.gz" | |
tar -xvf suricata-$VERSION.tar.gz | |
fi | |
cd suricata-$VERSION | |
# Включаем поддержку nfqueue и устанавливаем сурикату | |
./configure --enable-nfqueue | |
make | |
make install | |
make install-conf | |
mkdir -p /usr/local/var/lib/suricata/rules | |
touch /usr/local/var/lib/suricata/rules/suricata.rules | |
echo "Specify protected ports separated by comma (like: 1234,31337,8888)" | |
echo "currently used ports:" | |
netstat -tulpn | grep -Eo "[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}:[0-9]{2,}" | awk -F":" '{print $2}' | sort | uniq | sed -z "s/\n/ /g" | |
echo " " | |
read ports | |
# Отключаем логирование в eve.json, слишком жирный получается | |
sed -iz "s/eve-log:\n enabled: yes/eve-log:\n enabled: no/g" /usr/local/etc/suricata/suricata.yaml | |
# Объявляем переменную в конфиге с защищаемыми портами | |
sed -i "/port-groups:/a \ \ \ \ SERVICE_PORTS: \"[$ports]\"" /usr/local/etc/suricata/suricata.yaml | |
# Изменяем стандартный путь к правилам на свой | |
sed -i "s/ - suricata.rules/ - custom.rules/" /usr/local/etc/suricata/suricata.yaml | |
# IPTABLES | |
# Добавляем в NF очередь пакеты, которые сервер отправляет с указанных портов | |
# (например хотим чекнуть, нет ли там секретных данных? Такие случаи обрабатывают правила suricata) | |
iptables -I OUTPUT -p tcp -m multiport --source-ports $ports -j NFQUEUE | |
# Добавляем в очередь пакеты, которые получаем от клиентов на указанные порты | |
# (можем включить проверку на sql инъекции, например, и дропать такие пакеты) | |
iptables -I INPUT -p tcp -m multiport --destination-ports $ports -j NFQUEUE | |
# RULES | |
cd /opt | |
git clone https://gist.github.com/b4efde33ab1055baf838e9d2075ab7f9.git | |
mv b4efde33ab1055baf838e9d2075ab7f9/custom.rules /usr/local/var/lib/suricata/rules/custom.rules | |
rm -rf b4efde33ab1055baf838e9d2075ab7f9 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment