Skip to content

Instantly share code, notes, and snippets.

@dgavshin
Last active June 19, 2021 22:35
Show Gist options
  • Save dgavshin/4625544223c2e4183e67591511511c51 to your computer and use it in GitHub Desktop.
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
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