Compare commits
15
Commits
oidc
...
135-suricata
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb2be0a7b0 | ||
|
|
f1f06910b1 | ||
|
|
259befc961 | ||
|
|
f8d09291e1 | ||
|
|
b1ffc5bc1d | ||
|
|
8287d7bc15 | ||
|
|
f35dc04942 | ||
|
|
f99184b199 | ||
|
|
379567aca0 | ||
|
|
66dfe7cb1b | ||
|
|
d069d53a27 | ||
|
|
ac14b5f242 | ||
|
|
7badb6ea19 | ||
|
|
1036ca8808 | ||
|
|
b02aa61b2d |
@@ -0,0 +1,2 @@
|
|||||||
|
$template SuricataTemplate, "<%PRI%>%syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
|
||||||
|
user.alert /var/log/suricata.log;SuricataTemplate
|
||||||
+5
-1
@@ -102,7 +102,11 @@ source ./scripts/subinstallers/platform.sh
|
|||||||
echo "Setting up firewall (iptables)"
|
echo "Setting up firewall (iptables)"
|
||||||
if [ ! -f "/etc/iptables/rules.v4" ]; then
|
if [ ! -f "/etc/iptables/rules.v4" ]; then
|
||||||
echo "Setting iptables rules..."
|
echo "Setting iptables rules..."
|
||||||
./scripts/subinstallers/iptables.sh
|
source ./scripts/subinstallers/suricata.sh
|
||||||
|
source ./scripts/subinstallers/iptables.sh
|
||||||
|
source ./scripts/subinstallers/ip6tables.sh
|
||||||
|
#source ./scripts/subinstallers/iptables_docker.sh
|
||||||
|
source ./scripts/subinstallers/iptables_cleanup.sh
|
||||||
else
|
else
|
||||||
echo "iptables rules exist. Leaving alone."
|
echo "iptables rules exist. Leaving alone."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Executable
+31
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# resetting ip6tables rules
|
||||||
|
sudo ip6tables -F
|
||||||
|
sudo ip6tables -t nat -F
|
||||||
|
sudo ip6tables -X MISTBORN_LOG_DROP 2>/dev/null || true
|
||||||
|
sudo ip6tables -X MISTBORN_INT_LOG_DROP 2>/dev/null || true
|
||||||
|
|
||||||
|
# ip6tables: log and drop chain (external threats)
|
||||||
|
sudo ip6tables -N MISTBORN_LOG_DROP
|
||||||
|
sudo ip6tables -A MISTBORN_LOG_DROP -m limit --limit 6/min -j LOG --log-prefix "[Mistborn-IPTables-Dropped]: " --log-level 4
|
||||||
|
sudo ip6tables -A MISTBORN_LOG_DROP -j DROP
|
||||||
|
|
||||||
|
# ip6tables: log and drop chain (internal threats)
|
||||||
|
sudo ip6tables -N MISTBORN_INT_LOG_DROP
|
||||||
|
sudo ip6tables -A MISTBORN_INT_LOG_DROP -m limit --limit 6/min -j LOG --log-prefix "[Mistborn-IPTables-Internal-Dropped]: " --log-level 4
|
||||||
|
sudo ip6tables -A MISTBORN_INT_LOG_DROP -j DROP
|
||||||
|
|
||||||
|
# ip6tables
|
||||||
|
echo "Setting ip6tables rules"
|
||||||
|
sudo ip6tables -P INPUT ACCEPT
|
||||||
|
sudo ip6tables -I INPUT -i lo -j ACCEPT
|
||||||
|
sudo ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
|
||||||
|
sudo ip6tables -A INPUT -j MISTBORN_LOG_DROP
|
||||||
|
|
||||||
|
sudo ip6tables -P INPUT DROP
|
||||||
|
sudo ip6tables -P FORWARD DROP
|
||||||
|
sudo ip6tables -P OUTPUT ACCEPT
|
||||||
|
|
||||||
@@ -4,6 +4,8 @@ set -e
|
|||||||
|
|
||||||
figlet "Mistborn: Configuring Firewall"
|
figlet "Mistborn: Configuring Firewall"
|
||||||
|
|
||||||
|
source ./scripts/subinstallers/vars.sh
|
||||||
|
|
||||||
echo "stop iptables wrappers"
|
echo "stop iptables wrappers"
|
||||||
if [ "$DISTRO" == "ubuntu" ]; then
|
if [ "$DISTRO" == "ubuntu" ]; then
|
||||||
# Disable UFW
|
# Disable UFW
|
||||||
@@ -11,27 +13,27 @@ if [ "$DISTRO" == "ubuntu" ]; then
|
|||||||
sudo systemctl disable ufw || true
|
sudo systemctl disable ufw || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# default interface
|
|
||||||
iface=$(ip -o -4 route show to default | egrep -o 'dev [^ ]*' | awk 'NR==1{print $2}')
|
|
||||||
|
|
||||||
# real public interface
|
|
||||||
riface=$(ip -o -4 route get 1.1.1.1 | egrep -o 'dev [^ ]*' | awk 'NR==1{print $2}')
|
|
||||||
|
|
||||||
# resetting iptables
|
# resetting iptables
|
||||||
sudo iptables -F
|
sudo iptables -F
|
||||||
sudo iptables -t nat -F
|
sudo iptables -t nat -F
|
||||||
sudo iptables -X MISTBORN_LOG_DROP 2>/dev/null || true
|
sudo iptables -X MISTBORN_LOG_DROP 2>/dev/null || true
|
||||||
|
sudo iptables -X MISTBORN_INT_LOG_DROP 2>/dev/null || true
|
||||||
sudo iptables -X MISTBORN_WIREGUARD_INPUT 2>/dev/null || true
|
sudo iptables -X MISTBORN_WIREGUARD_INPUT 2>/dev/null || true
|
||||||
sudo iptables -X MISTBORN_WIREGUARD_FORWARD 2>/dev/null || true
|
sudo iptables -X MISTBORN_WIREGUARD_FORWARD 2>/dev/null || true
|
||||||
sudo iptables -X MISTBORN_WIREGUARD_OUTPUT 2>/dev/null || true
|
sudo iptables -X MISTBORN_WIREGUARD_OUTPUT 2>/dev/null || true
|
||||||
sudo iptables -X MISTBORN_DOCKER_OUTPUT 2>/dev/null || true
|
sudo iptables -X MISTBORN_DOCKER_OUTPUT 2>/dev/null || true
|
||||||
sudo iptables -X MISTBORN_DOCKER_INPUT 2>/dev/null || true
|
sudo iptables -X MISTBORN_DOCKER_INPUT 2>/dev/null || true
|
||||||
|
|
||||||
# iptables: log and drop chain
|
# iptables: log and drop chain (external threats)
|
||||||
sudo iptables -N MISTBORN_LOG_DROP
|
sudo iptables -N MISTBORN_LOG_DROP
|
||||||
sudo iptables -A MISTBORN_LOG_DROP -m limit --limit 6/min -j LOG --log-prefix "[Mistborn-IPTables-Dropped]: " --log-level 4
|
sudo iptables -A MISTBORN_LOG_DROP -m limit --limit 6/min -j LOG --log-prefix "[Mistborn-IPTables-Dropped]: " --log-level 4
|
||||||
sudo iptables -A MISTBORN_LOG_DROP -j DROP
|
sudo iptables -A MISTBORN_LOG_DROP -j DROP
|
||||||
|
|
||||||
|
# iptables: log and drop chain (internal threats)
|
||||||
|
sudo iptables -N MISTBORN_INT_LOG_DROP
|
||||||
|
sudo iptables -A MISTBORN_INT_LOG_DROP -m limit --limit 6/min -j LOG --log-prefix "[Mistborn-IPTables-Internal-Dropped]: " --log-level 4
|
||||||
|
sudo iptables -A MISTBORN_INT_LOG_DROP -j DROP
|
||||||
|
|
||||||
# wireguard rules chains
|
# wireguard rules chains
|
||||||
sudo iptables -N MISTBORN_WIREGUARD_INPUT
|
sudo iptables -N MISTBORN_WIREGUARD_INPUT
|
||||||
sudo iptables -N MISTBORN_WIREGUARD_FORWARD
|
sudo iptables -N MISTBORN_WIREGUARD_FORWARD
|
||||||
@@ -73,54 +75,3 @@ sudo iptables -t nat -I POSTROUTING -o $iface -j MASQUERADE
|
|||||||
# sudo iptables -t nat -I POSTROUTING -o $riface -j MASQUERADE
|
# sudo iptables -t nat -I POSTROUTING -o $riface -j MASQUERADE
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
# resetting ip6tables rules
|
|
||||||
sudo ip6tables -F
|
|
||||||
sudo ip6tables -t nat -F
|
|
||||||
sudo ip6tables -X MISTBORN_LOG_DROP 2>/dev/null || true
|
|
||||||
|
|
||||||
# ip6tables: log and drop chain
|
|
||||||
sudo ip6tables -N MISTBORN_LOG_DROP
|
|
||||||
sudo ip6tables -A MISTBORN_LOG_DROP -m limit --limit 6/min -j LOG --log-prefix "[Mistborn-IPTables-Dropped]: " --log-level 4
|
|
||||||
sudo ip6tables -A MISTBORN_LOG_DROP -j DROP
|
|
||||||
|
|
||||||
# ip6tables
|
|
||||||
echo "Setting ip6tables rules"
|
|
||||||
sudo ip6tables -P INPUT ACCEPT
|
|
||||||
sudo ip6tables -I INPUT -i lo -j ACCEPT
|
|
||||||
sudo ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
|
|
||||||
sudo ip6tables -A INPUT -j MISTBORN_LOG_DROP
|
|
||||||
|
|
||||||
sudo ip6tables -P INPUT DROP
|
|
||||||
sudo ip6tables -P FORWARD DROP
|
|
||||||
sudo ip6tables -P OUTPUT ACCEPT
|
|
||||||
|
|
||||||
# iptables-persistent
|
|
||||||
if [ ! "$(dpkg-query -l iptables-persistent)" ]; then
|
|
||||||
echo "Installing iptables-persistent"
|
|
||||||
|
|
||||||
# answer variables
|
|
||||||
echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
|
|
||||||
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections
|
|
||||||
|
|
||||||
# install
|
|
||||||
sudo -E apt-get install -y iptables-persistent ipset
|
|
||||||
else
|
|
||||||
echo "Saving iptables rules"
|
|
||||||
sudo bash -c "iptables-save > /etc/iptables/rules.v4"
|
|
||||||
echo "Saving ip6tables rules"
|
|
||||||
sudo bash -c "ip6tables-save > /etc/iptables/rules.v6"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# IP forwarding
|
|
||||||
sudo sed -i 's/.*net.ipv4.ip_forward.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
|
|
||||||
|
|
||||||
# VM Overcommit Memory
|
|
||||||
sudo grep -i "vm.overcommit_memory" /etc/sysctl.conf && sudo sed -i 's/.*vm.overcommit_memory.*/vm.overcommit_memory=1/' /etc/sysctl.conf || echo "vm.overcommit_memory=1" | sudo tee -a /etc/sysctl.conf
|
|
||||||
|
|
||||||
# Force re-read of sysctl.conf
|
|
||||||
sudo sysctl -p /etc/sysctl.conf
|
|
||||||
|
|
||||||
# rsyslog to create /var/log/iptables.log
|
|
||||||
sudo cp ./scripts/conf/15-iptables.conf /etc/rsyslog.d/
|
|
||||||
sudo chown root:root /etc/rsyslog.d/15-iptables.conf
|
|
||||||
sudo systemctl restart rsyslog
|
|
||||||
|
|||||||
Executable
+34
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# iptables-persistent
|
||||||
|
if [ ! "$(dpkg-query -l iptables-persistent)" ]; then
|
||||||
|
echo "Installing iptables-persistent"
|
||||||
|
|
||||||
|
# answer variables
|
||||||
|
echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
|
||||||
|
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections
|
||||||
|
|
||||||
|
# install
|
||||||
|
sudo -E apt-get install -y iptables-persistent ipset
|
||||||
|
else
|
||||||
|
echo "Saving iptables rules"
|
||||||
|
sudo bash -c "iptables-save > /etc/iptables/rules.v4"
|
||||||
|
echo "Saving ip6tables rules"
|
||||||
|
sudo bash -c "ip6tables-save > /etc/iptables/rules.v6"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# IP forwarding
|
||||||
|
sudo sed -i 's/.*net.ipv4.ip_forward.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
|
||||||
|
|
||||||
|
# VM Overcommit Memory
|
||||||
|
sudo grep -i "vm.overcommit_memory" /etc/sysctl.conf && sudo sed -i 's/.*vm.overcommit_memory.*/vm.overcommit_memory=1/' /etc/sysctl.conf || echo "vm.overcommit_memory=1" | sudo tee -a /etc/sysctl.conf
|
||||||
|
|
||||||
|
# Force re-read of sysctl.conf
|
||||||
|
sudo sysctl -p /etc/sysctl.conf
|
||||||
|
|
||||||
|
# rsyslog to create /var/log/iptables.log
|
||||||
|
sudo cp ./scripts/conf/15-iptables.conf /etc/rsyslog.d/
|
||||||
|
sudo chown root:root /etc/rsyslog.d/15-iptables.conf
|
||||||
|
sudo systemctl restart rsyslog
|
||||||
Executable
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
source ./scripts/subinstallers/vars.sh
|
||||||
|
|
||||||
|
# start from scratch
|
||||||
|
sudo iptables -X MISTBORN-DOCKER-USER 2>/dev/null || true
|
||||||
|
|
||||||
|
sudo iptables -N DOCKER-USER || true
|
||||||
|
sudo iptables -N MISTBORN-DOCKER-USER || true
|
||||||
|
|
||||||
|
# default Mistborn Docker User chain
|
||||||
|
sudo iptables -A MISTBORN-DOCKER-USER -i $iface -s 10.0.0.0/8 -j RETURN
|
||||||
|
sudo iptables -A MISTBORN-DOCKER-USER -i $iface -s 172.16.0.0/12 -j RETURN
|
||||||
|
sudo iptables -A MISTBORN-DOCKER-USER -i $iface -s 192.168.0.0/16 -j RETURN
|
||||||
|
sudo iptables -A MISTBORN-DOCKER-USER -i $iface -j MISTBORN_INT_LOG_DROP
|
||||||
|
|
||||||
|
# add chain to DOCKER-USER
|
||||||
|
sudo iptables -I DOCKER-USER -j MISTBORN-DOCKER-USER
|
||||||
@@ -5,13 +5,16 @@
|
|||||||
UNAME=$(uname | tr "[:upper:]" "[:lower:]")
|
UNAME=$(uname | tr "[:upper:]" "[:lower:]")
|
||||||
DISTRO=""
|
DISTRO=""
|
||||||
VERSION_ID=""
|
VERSION_ID=""
|
||||||
|
VERSION_CODENAME=""
|
||||||
# If Linux, try to determine specific distribution
|
# If Linux, try to determine specific distribution
|
||||||
if [ "$UNAME" == "linux" ]; then
|
if [ "$UNAME" == "linux" ]; then
|
||||||
# use /etc/os-release to get distro
|
# use /etc/os-release to get distro
|
||||||
DISTRO=$(cat /etc/os-release | awk -F= '/^ID=/{print $2}')
|
DISTRO=$(cat /etc/os-release | awk -F= '/^ID=/{print $2}')
|
||||||
VERSION_ID=$(cat /etc/os-release | awk -F= '/^VERSION_ID=/{print $2}' | tr -d '"')
|
VERSION_ID=$(cat /etc/os-release | awk -F= '/^VERSION_ID=/{print $2}' | tr -d '"')
|
||||||
|
VERSION_CODENAME=$(cat /etc/os-release | awk -F= '/^VERSION_CODENAME=/{print $2}' | tr -d '"')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
figlet "UNAME: $UNAME"
|
figlet "UNAME: $UNAME"
|
||||||
figlet "DISTRO: $DISTRO"
|
figlet "DISTRO: $DISTRO"
|
||||||
figlet "VERSION: $VERSION_ID"
|
figlet "VERSION: $VERSION_ID"
|
||||||
|
figlet "CODENAME: $VERSION_CODENAME"
|
||||||
|
|||||||
Executable
+46
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# minimal dependencies
|
||||||
|
sudo -E apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev \
|
||||||
|
libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \
|
||||||
|
make libmagic-dev libjansson-dev
|
||||||
|
|
||||||
|
## recommended dependencies
|
||||||
|
#sudo -E apt-get -y install 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 \
|
||||||
|
# libgeoip-dev liblua5.1-dev libhiredis-dev libevent-dev \
|
||||||
|
# python-yaml rustc cargo
|
||||||
|
|
||||||
|
# iptables/nftables integration
|
||||||
|
sudo -E apt-get -y install libnetfilter-queue-dev libnetfilter-queue1 \
|
||||||
|
libnetfilter-log-dev libnetfilter-log1 \
|
||||||
|
libnfnetlink-dev libnfnetlink0
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$DISTRO" == "ubuntu" ]; then
|
||||||
|
echo "Installing Suricata Ubuntu PPA"
|
||||||
|
sudo -E add-apt-repository -y ppa:oisf/suricata-stable
|
||||||
|
sudo -E apt-get update
|
||||||
|
sudo -E apt-get install -y suricata
|
||||||
|
elif [ "$DISTRO" == "debian" ]; then
|
||||||
|
echo "deb http://http.debian.net/debian $VERSION_CODENAME-backports main" | \
|
||||||
|
sudo -E tee -a /etc/apt/sources.list.d/backports.list
|
||||||
|
sudo -E apt-get update
|
||||||
|
sudo -E apt-get install -y suricata -t ${VERSION_CODENAME}-backports
|
||||||
|
else
|
||||||
|
echo "Basic Suricata installation"
|
||||||
|
sudo -E apt-get install -y suricata
|
||||||
|
fi
|
||||||
|
|
||||||
|
# iptables
|
||||||
|
sudo iptables -A INPUT -j NFQUEUE
|
||||||
|
sudo iptables -I FORWARD -j NFQUEUE
|
||||||
|
sudo iptables -I OUTPUT -j NFQUEUE
|
||||||
|
|
||||||
|
# rsyslog to create /var/log/suricata.log
|
||||||
|
sudo cp ./scripts/conf/20-suricata.conf /etc/rsyslog.d/
|
||||||
|
sudo chown root:root /etc/rsyslog.d/20-suricata.conf
|
||||||
|
sudo systemctl restart rsyslog
|
||||||
Executable
+7
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# default interface
|
||||||
|
iface=$(ip -o -4 route show to default | egrep -o 'dev [^ ]*' | awk 'NR==1{print $2}')
|
||||||
|
|
||||||
|
# real public interface
|
||||||
|
riface=$(ip -o -4 route get 1.1.1.1 | egrep -o 'dev [^ ]*' | awk 'NR==1{print $2}')
|
||||||
Reference in New Issue
Block a user