Skip to content

Instantly share code, notes, and snippets.

@dgavshin
Last active August 18, 2021 10:40
Show Gist options
  • Save dgavshin/98beeb8379720b1876cb89b7b9448115 to your computer and use it in GitHub Desktop.
Save dgavshin/98beeb8379720b1876cb89b7b9448115 to your computer and use it in GitHub Desktop.
Install and configure suricata as IPS from binaries
#!/bin/bash
SURICATA_LOGS=/var/log/suricata
SURICATA_CONF=/etc/suricata/suricata.yaml
SURICATA_RULES=/etc/suricata/rules
apt-get update
apt-get install net-tools wget git
read_ports() {
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
}
# SURICATA.YAML
edit_config () {
# Отключаем логирование в eve.json, слишком жирный получается
sed -iz "s/eve-log:\n enabled: yes/eve-log:\n enabled: no/g" $SURICATA_CONF
# Объявляем переменную в конфиге с защищаемыми портами
sed -i "/port-groups:/a \ \ \ \ SERVICE_PORTS: \"[$PORTS]\"" $SURICATA_CONF
}
# IPTABLES
configure_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
}
# SURICATA RULES
configure_rules () {
mv $SURICATA_RULES $SURICATA_RULES-old
mkdir -p $SURICATA_RULES
# Добавляем собственные правила
sed -i "/rule-files:/a\ - custom.rules" $SURICATA_CONF
cd /tmp
git clone https://gist.github.com/b4efde33ab1055baf838e9d2075ab7f9.git
mv b4efde33ab1055baf838e9d2075ab7f9/custom.rules $SURICATA_RULES/custom.rules
}
# PPA REPOSITORY
ubuntu_install () {
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update -y
apt-get install suricata -y
}
debian_install () {
apt-get update
apt-get install suricata
}
source /etc/*-release
if [[ "$NAME" == "Ubuntu" ]]; then
ubuntu_install
elif [[ "$NAME" == "Debian GNU/Linux" ]]; then
debian_install
else
echo "ERROR: $NAME os does not supported"
fi
read_ports
edit_config
configure_iptables
configure_rules
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment