All pastes #352072 Raw Edit

Someone

public text v1 · immutable
·published 2007-02-12 16:02 UTC
rendered paste body
#!/bin/sh
#
# iptables rules for central de vendas em informatica ltda.
#

iptables=`which iptables`
modprobe=`which modprobe`

#
# some network definitions.
#
central_ext = "eth0"
central_ext_ip = "201.12.35.51"
central_int = "eth1"
central_int_net = "192.168.1.0/24"

odin_int = "192.168.1.134"
odin_ext = "201.12.35.52"

saint_int = "192.168.1.53"
saint_ext = "201.12.35.54"
saint_net = "200.230.207.0/24"

sicredi_ext_ip = "201.77.95.20"
sicredi_net = "172.16.0.0/12"

#
# Some proc definitions.
#

# Drop connections from non-routable IPs.
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do 
	echo 1 > $i
done

# Don't accept source routed packets.
for interface in /proc/sys/net/ipv4/conf/*/accept_source_route; do
	 echo 0 > $interface
done

# Enable syn-flood protection.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Log martians.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# Ignore ICMP redirect messages.
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Enable IP forwarding.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Reduce some timeouts.
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time

# Fix some issues with DNS.
echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout

# Set local port range.
echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range

#
# Flush iptables.
#

# Attempt to flush all rules in filter table.
$iptables -F
$iptables -X
  
# Flush built-in rules.
$iptables -F INPUT
$iptables -F OUTPUT
$iptables -F FORWARD
$iptables -t nat -F 2>/dev/null
$iptables -t nat -X 2>/dev/null
$iptables -t mangle -F 2>/dev/null
$iptables -t mangle -X 2>/dev/null

# Set default policy.
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT

$iptables -t nat -P POSTROUTING ACCEPT 2>/dev/null
$iptables -t nat -P PREROUTING ACCEPT 2>/dev/null

$iptables -t mangle -P OUTPUT ACCEPT 2>/dev/null
$iptables -t mangle -P PREROUTING ACCEPT 2>/dev/null

# Reset iptables counters.
$iptables -Z
$iptables -t nat -Z 2>/dev/null
$iptables -t mangle -Z 2>/dev/null

#
# Chain VALID - Check for invalid flags.
#

# Create the chain.
$iptables -N VALID

# Limit/Log first.

# (NMAP) FIN/URG/PSH.
$iptables -A VALID -p tcp --tcp-flags ALL FIN,URG,PSH \
-m limit --limit 3/m --limit-burst 5 -j LOG --log-level $LOGLEVEL --log-prefix "Stealth XMAS scan: "

# SYN/RST/ACK/FIN/URG.
$iptables -A VALID -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG \
-m limit --limit 3/m --limit-burst 5 -j LOG --log-level $LOGLEVEL --log-prefix "Stealth XMAS-PSH scan: "

# ALL/ALL.
$iptables -A VALID -p tcp --tcp-flags ALL ALL \
-m limit --limit 3/m --limit-burst 5 -j LOG --log-level $LOGLEVEL --log-prefix "Stealth XMAS-ALL scan: "

# NMAP FIN Stealth.
$iptables -A VALID -p tcp --tcp-flags ALL FIN \
-m limit --limit 3/m --limit-burst 5 -j LOG --log-level $LOGLEVEL --log-prefix "Stealth FIN scan: "

# SYN/RST.
$iptables -A VALID -p tcp --tcp-flags SYN,RST SYN,RST \
-m limit --limit 3/m --limit-burst 5 -j LOG --log-level $LOGLEVEL --log-prefix "Stealth SYN/RST scan: "

# SYN/FIN (probably).
$iptables -A VALID -p tcp --tcp-flags SYN,FIN SYN,FIN \
-m limit --limit 3/m --limit-burst 5 -j LOG --log-level $LOGLEVEL --log-prefix "Stealth SYN/FIN scan(?): "

# Null scan.
$iptables -A VALID -p tcp --tcp-flags ALL NONE \
-m limit --limit 3/m --limit-burst 5 -j LOG --log-level $LOGLEVEL --log-prefix "Stealth Null scan: "

# Bad flags.
$iptables -A VALID -p tcp --tcp-option 64 \
-m limit --limit 3/m --limit-burst 1 -j LOG --log-level $LOGLEVEL --log-prefix "Bad TCP flag(64): "
$iptables -A VALID -p tcp --tcp-option 128 \
-m limit --limit 3/m --limit-burst 1 -j LOG --log-level $LOGLEVEL --log-prefix "Bad TCP flag(128): "

# Drop them.

# NMAP FIN/URG/PSH.
$iptables -A VALID -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

# SYN/RST/ACK/FIN/URG.
$iptables -A VALID -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

# ALL/ALL Scan.
$iptables -A VALID -p tcp --tcp-flags ALL ALL -j DROP

# NMAP FIN Stealth.
$iptables -A VALID -p tcp --tcp-flags ALL FIN -j DROP

# SYN/RST.
$iptables -A VALID -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# SYN/FIN -- Scan(probably).
$iptables -A VALID -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# NMAP Null Scan.
$iptables -A VALID -p tcp --tcp-flags ALL NONE -j DROP

# Bad flags.
$iptables -A VALID -p tcp --tcp-option 64 -j DROP
$iptables -A VALID -p tcp --tcp-option 128 -j DROP