rendered paste body#!/bin/bash
IPTABLES="/sbin/iptables"
INPUT="$IPTABLES --table filter --append INPUT"
FORWARD="$IPTABLES --table filter --append FORWARD"
LAN_INT="lan"
INTERNET_INT="internet"
INPUT_INT="$INPUT --in-interface $INTERNET_INT"
LAN_ADDR="192.168.0.0/24"
#allow loopback
$INPUT_INT --protocol all --source 127.0.0.1 --jump ACCEPT
#allow local traffic
$INPUT_INT --protocol all --source $LAN_ADDR --jump ACCEPT
#enable NAT#
$IPTABLES --table nat --out-interface internet --append POSTROUTING --jump MASQUERADE
$FORWARD --out-interface $INTERNET_INT -m state --state NEW,ESTABLISHED,RELATED --jump ACCEPT
$FORWARD --in-interface $INTERNET_INT -m state --state ESTABLISHED,RELATED --jump ACCEPT
##################
# Incoming Stuff #
##################
#allow icmp echo/ping
$INPUT_INT --protocol icmp --icmp-type echo-request --jump ACCEPT
$INPUT_INT --protocol icmp --icmp-type echo-reply --jump ACCEPT
#allow http
$INPUT_INT --protocol tcp --dport 80 --jump ACCEPT
#allow ident
$INPUT_INT --protocol tcp --dport 113 --jump ACCEPT
#incoming mail
$INPUT_INT --protocol tcp --dport 25 --jump ACCEPT
#allow ssh & provide protection #
#$INPUT_INT --protocol tcp --dport 22 -m state --state NEW --match recent --update --seconds 60 --hitcount 8 --rttl --name SSH --jump DROP
$INPUT_INT --protocol tcp --dport 22 --jump ACCEPT
#drop nfs
$INPUT_INT --protocol tcp --dport 111 --jump DROP
$INPUT_INT --protocol udp --dport 111 --jump DROP
$INPUT_INT --protocol tcp --dport 2049 --jump DROP
$INPUT_INT --protocol udp --dport 2049 --jump DROP
#probably safe to allow anything outside the first 1024 ports
$INPUT_INT --protocol tcp --dport 1025:65535 --jump ACCEPT
$INPUT_INT --protocol udp --dport 1025:65535 --jump ACCEPT
#drop anything else
$INPUT_INT --jump DROP