#!/bin/bash
# EASY-fw.sh
# VPS-server.RU edition
# ver 0.1 Beta :o) 07 Feb 2019
#-----------------------------------------------------------------------------
# Set variables :o)
#-----------------------------------------------------------------------------
# IP for admins
Admin="62.75.0.0/16 46.160.0.0/16 87.250.250.242"
# Open Ports
Ports="80 443 8083"
# To Disable Ping set 0
AllowPing=1
#-----------------------------------------------------------------------------
ipt=`which iptables`
if [ ! -n "$ipt"  ]; then
        echo "Error: Iptables not found!"; exit 0;
fi
implode() { A=($1); ret=$(IFS=", "; echo "${A[*]}"); echo $ret; }
myip=`ip addr | sed -En 's/127.0.0//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | xargs`
dns=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}' | xargs`

$ipt -F
$ipt -X
$ipt -P INPUT DROP
$ipt -P FORWARD ACCEPT
$ipt -P OUTPUT ACCEPT

$ipt -A INPUT -i lo -j ACCEPT
$ipt -A OUTPUT -o lo -j ACCEPT
$ipt -A INPUT -p tcp -s 127.0.0.1/8 -j ACCEPT

# Allow my IPs
$ipt -A INPUT -p tcp -s $(implode "$myip") -j ACCEPT

# PORTS
$ipt -A INPUT -p tcp -m multiport --dports $(implode "$Ports") -j ACCEPT
$ipt -A INPUT -p tcp --match multiport --dports 40000:65534 -j ACCEPT

# Admins allow
$ipt -A INPUT -p tcp -s $(implode "$Admin") -j ACCEPT

# DNS allow
$ipt -A INPUT -p all -s $(implode "$dns") -j ACCEPT

if [[ $AllowPing -ne 0 ]]; then
        # Allow ping
        $ipt -A INPUT -p icmp -j ACCEPT
fi
# Print result :o)
$ipt -L -n


