#!/bin/sh
-# postinst script for bind9-cn
-#
-# see: dh_installdeb(1)
set -e
-# summary of how this script can be called:
-# * <postinst> `configure' <most-recently-configured-version>
-# * <old-postinst> `abort-upgrade' <new version>
-# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-# <new-version>
-# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-# <failed-install-package> <version> `removing'
-# <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-#
-
-case "$1" in
- configure|reconfigure)
- # continue below
- ;;
-
- *)
- exit 0
- ;;
-esac
-
-# fix problem with permissions from the old package
-if dpkg --compare-versions "$2" lt "2:1.2.11-4"; then
- chown -f -Rh root:root /var/lib/iptables /etc/init.d/iptables \
- /etc/default/iptables >/dev/null 2>&1
-fi
+[ "$1" = "configure" ] || exit 0
+[ "$DEBIAN_SCRIPT_DEBUG" ] && set -vx
# remove old iptables init script
-if [ -e /etc/init.d/iptables ]; then
- rm -f /etc/init.d/iptables
- update-rc.d -f iptables remove
-fi
+update-rc.d -f iptables remove >/dev/null 2>&1 || true
+update-rc.d -f iptables-cn remove >/dev/null 2>&1 || true
-# check if old default file exists and import it
+# check if old default file exists and delete it
+if [ -e /etc/default/iptables-cn ]; then
+ rm -f /etc/default/iptables-cn
+fi
if [ -e /etc/default/iptables ]; then
- mv /etc/default/iptables /etc/default/iptables-cn
+ rm -f /etc/default/iptables
fi
-# check if there is any default netfilter policy and install default SSH
-# REJECT recent if there is none..
-# also, save current set of rules into active and inactive configuration
-if [ ! -e /var/lib/iptables/active ]; then
- . /usr/share/doc/iptables-cn/examples/ssh-bruteforce
- iptables-save > /var/lib/iptables/active
+# check to see if fail2ban is installed
+if dpkg-query -f '${Status}' -W fail2ban | grep -q installed; then
+ echo "CN: Detected Fail2Ban installation, will remove SSH bruteforce rules by default"
+ iptables -D SSH_Brute_Force -m recent ! --rcheck --seconds 90 \
+ --hitcount 3 --name SSH --rsource \
+ -j RETURN >/dev/null 2>&1 || true
+ iptables -D SSH_Brute_Force -p tcp -j REJECT \
+ --reject-with icmp-port-unreachable >/dev/null 2>&1 || true
+ iptables -D INPUT -p tcp -m tcp --dport 22 -m state \
+ --state NEW -m recent --set --name SSH --rsource \
+ -j SSH_Brute_Force >/dev/null 2>&1 || true
+ iptables -X SSH_Brute_Force >/dev/null 2>&1 || true
+
+ echo "CN: Saving current Netfilter rules to /etc/iptables/rules.v4"
+ iptables-save > /etc/iptables/rules.v4
+else
+ # check if there is any default netfilter policy and install default SSH
+ # REJECT recent if there is none..
+ # also, save current set of rules into active and inactive configuration
+ if [ ! -e /etc/iptables/rules.v4 ]; then
+ if ! iptables-save | grep '^-' >/dev/null; then
+ echo "CN: Netfilter rules empty: importing SSH bruteforce rules"
+ /usr/share/doc/iptables-cn/examples/ssh-bruteforce \
+ 1>/dev/null 2>&1 || true
+ fi
+ echo "CN: Saving current Netfilter rules to /etc/iptables/rules.v4"
+ iptables-save > /etc/iptables/rules.v4
+ fi
fi
-if [ ! -e /var/lib/iptables/inactive ]; then
- cp /var/lib/iptables/active /var/lib/iptables/inactive
-fi
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.