15 Commits
Author SHA1 Message Date
Steven Foerster cb2be0a7b0 suricata rsyslog 2021-02-22 19:42:12 -05:00
Steven Foerster f1f06910b1 put off docker rules 2021-02-22 18:11:38 -05:00
Steven Foerster 259befc961 MISTBORN-DOCKER-USER chain 2021-02-22 17:07:02 -05:00
Steven Foerster f8d09291e1 set -e 2021-02-20 12:40:47 -05:00
Steven Foerster b1ffc5bc1d source 2021-02-20 12:37:00 -05:00
Steven Foerster 8287d7bc15 libjansson 2021-02-20 12:33:22 -05:00
Steven Foerster f35dc04942 suricata first 2021-02-20 12:13:03 -05:00
Steven Foerster f99184b199 basic iptables suricata rules 2021-02-20 11:09:18 -05:00
Steven Foerster 379567aca0 install -y 2021-02-20 10:30:45 -05:00
Steven Foerster 66dfe7cb1b MISTBORN_INT_LOG_DROP 2021-02-20 10:28:25 -05:00
Steven Foerster d069d53a27 executable 2021-02-20 10:21:48 -05:00
Steven Foerster ac14b5f242 suricata iptables rules 2021-02-20 10:16:26 -05:00
Steven Foerster 7badb6ea19 splitting iptables scripts 2021-02-19 22:53:24 -05:00
Steven Foerster 1036ca8808 Merge branch 'v1' into 135-suricata 2021-02-16 23:30:55 -05:00
Steven Foerster b02aa61b2d suricata script 2021-02-15 07:35:27 -05:00
9 changed files with 157 additions and 59 deletions
+2
View File
@@ -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
View File
@@ -102,7 +102,11 @@ source ./scripts/subinstallers/platform.sh
echo "Setting up firewall (iptables)"
if [ ! -f "/etc/iptables/rules.v4" ]; then
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
echo "iptables rules exist. Leaving alone."
fi
+31
View File
@@ -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
+9 -58
View File
@@ -4,6 +4,8 @@ set -e
figlet "Mistborn: Configuring Firewall"
source ./scripts/subinstallers/vars.sh
echo "stop iptables wrappers"
if [ "$DISTRO" == "ubuntu" ]; then
# Disable UFW
@@ -11,27 +13,27 @@ if [ "$DISTRO" == "ubuntu" ]; then
sudo systemctl disable ufw || true
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
sudo iptables -F
sudo iptables -t nat -F
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_FORWARD 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_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 -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
# 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
sudo iptables -N MISTBORN_WIREGUARD_INPUT
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
#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
+34
View File
@@ -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
+20
View File
@@ -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
+3
View File
@@ -5,13 +5,16 @@
UNAME=$(uname | tr "[:upper:]" "[:lower:]")
DISTRO=""
VERSION_ID=""
VERSION_CODENAME=""
# If Linux, try to determine specific distribution
if [ "$UNAME" == "linux" ]; then
# use /etc/os-release to get distro
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_CODENAME=$(cat /etc/os-release | awk -F= '/^VERSION_CODENAME=/{print $2}' | tr -d '"')
fi
figlet "UNAME: $UNAME"
figlet "DISTRO: $DISTRO"
figlet "VERSION: $VERSION_ID"
figlet "CODENAME: $VERSION_CODENAME"
+46
View File
@@ -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
+7
View File
@@ -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}')