Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # VARS
- SERVER_IP="37.59.67.100"
- NET_DEV="eth0"
- IPT="/sbin/iptables"
- MAX_NEW_PER_SECOND="20" # MAX NEUE Verbindungen je Sekunde. 5 dürfte hier Gesund sein. Alles unter 100 sollte der Server Verkraften. (Antihammer)
- HTTP_PORT="21 80 90 100"
- OPENVPN_PORTS_UDP="28931 30399 31479 32197 34791 36113" # Frei udp Ports für Openvpn. Falls ohne Openvpn hier einfach leer lassen.
- OPENVPN_PORTS_TCP="" # Freo tcp Ports für Openvpn. -- " --
- OPENVPN_TUN_NICE="tun0 tun1 tun2 tun3 tun4 tun10"
- OPENVPN_TUN_JAIL="tun5"
- OSCAM_WEBIF="8888 8889" # Oscam Webif darf rein, mehrere ports möglich BEISPIEL ="8888 12000"
- OSCAM_PORTS_TCP="61618 1024 1026 24024 24025" # Oscam CS Ports. Wähle weise! Hier ist kein Ratelimit / Connection Limit drauf. Je weniger desto gut!
- OSCAM_PORTS_UDP="" #
- basement () {
- # meister propper
- $IPT -F
- $IPT -X
- # Du kommst hier net rein
- $IPT -P INPUT DROP
- $IPT -P OUTPUT DROP
- $IPT -P FORWARD DROP
- # lo darf natürlich alles
- $IPT -A INPUT -i lo -j ACCEPT
- $IPT -A OUTPUT -o lo -j ACCEPT
- # Ausgehenden Verkehr gestatten
- $IPT -A OUTPUT -o $NET_DEV -j ACCEPT
- }
- ratelimit_all () {
- # Alle Verbindungen unterliegen dem festgelegten Limit von XXX Verbindungen je Sekunde
- $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- $IPT -A INPUT -p udp -m udp --dport 0:65535 -m state --state NEW -m recent --set --name UDP --rsource
- $IPT -A INPUT -p udp -m udp --dport 0:65535 -m state --state NEW -m recent --update --seconds 1 --hitcount $MAX_NEW_PER_SECOND --name UDP --rsource -j DROP
- $IPT -A INPUT -p tcp -m tcp --dport 0:65535 -m state --state NEW -m recent --set --name TCP --rsource
- $IPT -A INPUT -p tcp -m tcp --dport 0:65535 -m state --state NEW -m recent --update --seconds 1 --hitcount $MAX_NEW_PER_SECOND --rttl --name TCP --rsource -j DROP
- }
- allow_all_tun () {
- for tun in $OPENVPN_TUN_NICE;do
- $IPT -A INPUT -i $tun -j ACCEPT
- $IPT -A OUTPUT -o $tun -j ACCEPT
- $IPT -A FORWARD -i $tun -o tun+ -j ACCEPT
- done
- for tun in $OPENVPN_TUN_JAIL;do
- $IPT -A INPUT -i $tun -j ACCEPT
- $IPT -A OUTPUT -o $tun -j ACCEPT
- $IPT -A FORWARD -i $tun -o tun+ -j DROP
- done
- }
- limited_ssh () {
- # ssh darf rein aber nur 5 Verbindungen gleichzeitig
- #$IPT -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 2 -j DROP
- /sbin/iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 5 -j REJECT
- $IPT -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
- $IPT -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 443 --dport 513:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
- }
- limited_http () {
- # http geöffnet limit ist 20 Verbindungen gleichzeitig
- if [ -n "$HTTP_PORT" ];then
- for port in $HTTP_PORT;do
- $IPT -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport $port -m state --state NEW,ESTABLISHED -j ACCEPT
- $IPT -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport $port --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT
- $IPT -A INPUT -p tcp --syn --dport $port -m connlimit --connlimit-above 5 -j DROP
- done
- fi
- }
- everything_oscam () {
- # Oscam Wbif 5con/ip
- if [ -n "$OSCAM_WEBIF" ];then
- for port in $OSCAM_WEBIF;do
- $IPT -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport $port -m state --state NEW,ESTABLISHED -j ACCEPT
- $IPT -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport $port --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT
- done
- fi
- # Oscam CS Ports TCP
- if [ -n "$OSCAM_PORTS_TCP" ];then
- for port in $OSCAM_PORTS_TCP;do
- $IPT -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport $port -m state --state NEW,ESTABLISHED -j ACCEPT
- $IPT -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport $port --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT
- done
- fi
- # Oscam CS PORTS UDP
- if [ -n "$OSCAM_PORTS_UDP" ];then
- for port in $OSCAM_PORTS_UDP;do
- $IPT -A INPUT -p udp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport $port -m state --state NEW,ESTABLISHED -j ACCEPT
- $IPT -A OUTPUT -p udp -s $SERVER_IP -d 0/0 --sport $port --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT
- done
- fi
- }
- limited_openvpn () {
- # Eingehende Openvpn Verbindungen sind erlaubt
- if [ -n "$OPENVPN_PORTS_UDP" ];then
- for port in $OPENVPN_PORTS_UDP;do
- $IPT -A INPUT -p udp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport $port -m state --state NEW,ESTABLISHED -j ACCEPT
- $IPT -A OUTPUT -p udp -s $SERVER_IP -d 0/0 --sport $port --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT
- done
- fi
- if [ -n "$OPENVPN_PORTS_TCP" ];then
- for port in $OPENVPN_PORTS_TCP;do
- $IPT -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport $port -m state --state NEW,ESTABLISHED -j ACCEPT
- $IPT -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport $port --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT
- done
- fi
- }
- gw_vpn () {
- $IPT -A INPUT -i tun4 -j ACCEPT
- $IPT -A FORWARD -i tun4 -j ACCEPT
- $IPT -A FORWARD -i tun4 -o $NET_DEV -m state --state RELATED,ESTABLISHED -j ACCEPT
- $IPT -A FORWARD -i $NET_DEV -o tun4 -m state --state RELATED,ESTABLISHED -j ACCEPT
- $IPT -t nat -A POSTROUTING -s 10.8.5.0/24 -o $NET_DEV -j MASQUERADE
- }
- fw_off () {
- # meister propper
- $IPT -F
- $IPT -X
- # Du kommst hier net rein
- $IPT -P INPUT ACCEPT
- $IPT -P OUTPUT ACCEPT
- $IPT -P FORWARD ACCEPT
- # lo darf natürlich alles
- $IPT -A INPUT -i lo -j ACCEPT
- $IPT -A OUTPUT -o lo -j ACCEPT
- }
- [ "$1" = "off" ] && fw_off && echo jo
- [ "$1" = "off" ] && gw_vpn
- basement # DROPALL / REENABLE OUT & LO
- ratelimit_all # ANTI SYN
- limited_ssh # SSH 5/par/ip
- limited_http # http 20/par/ip
- everything_oscam # oscam darf alles
- limited_openvpn # Einwahl per openvpn erlauben OPENVPN
- allow_all_tun # Weiterleitungen und ein- / ausgänge für OPENVPN
- gw_vpn
- # STFU - allway the last block
- $IPT -A INPUT -j DROP
- $IPT -A OUTPUT -j DROP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement