Kod: Zaznacz cały
#!/bin/bash
IPT=/usr/local/bin/iptables
. /etc/eth.conf ( IDEV=eth0; LDEV=eth1 )
echo "Setting firewall:"
echo -n " firewall version: "
echo `$IPT --version`
# Get our ip address
DEBIAN_IP=`ifconfig $IDEV | grep inet | cut -f2 -d: | cut -f1 -d" "`
DEBIAN_LAN=192.168.0.0/24
DEBIAN_IP2=83.29.10.XX
echo " DEBIAN IP: $DEBIAN_IP"
echo -n "Firewall rules... "
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/5"
CLASS_E_RESERVED="240.0.0.0/5"
LOOPBACK="127.0.0.1/8"
# Ports
UNUSED_PORTS="1024:65535"
USED_PORTS="0:1023"
TR_SRC_PORTS="32769:65535"
TR_DST_PORTS="33434:33523"
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -Z
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
/sbin/modprobe -r ip_nat_ftp
/sbin/modprobe -r ip_conntrack_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
# Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Ignore broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Disable source routing
# Don't accept source routed packets. Attackers can use source routing to genera
# traffic pretending to be from inside your network, but which is routed back al
# the path from which it came, namely outside, so attackers can compromise your
# network. Source routing is rarely used for legitimate purposes.
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
# Disable icmp redirects
for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > ${interface}
done
for interface in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > ${interface}
done
# Turn on reverse path filtering. This helps make sure that packets use
# legitimate source addresses, by automatically rejecting incoming packets
# if the routing table entry for their source address doesn't match the network
# interface they're arriving on. This has security advantages because it prevent
# so-called IP spoofing, however it can pose problems if you use asymmetric rout
# (packets from you to a host take a different path than packets from that host
# or if you operate a non-routing host which has several IP addresses on differe
# interfaces. (Note - If you turn on IP forwarding, you will also get this).
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > ${interface}
done
# SYN-FLOODING protection
$IPT -N SYN-FLOOD
$IPT -A SYN-FLOOD -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A SYN-FLOOD -j DROP
$IPT -A INPUT -i $IDEV -p tcp --syn -m state --state ! RELATED -j SYN-FLOOD
$IPT -A FORWARD -i $IDEV -p tcp --syn -m state --state ! RELATED -j SYN-FLOOD
# Make sure NEW tcp connections are SYN packets
$IPT -A INPUT -i $IDEV -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A FORWARD -i $IDEV -p tcp ! --syn -m state --state NEW -j DROP
# SPOOFING
$IPT -A INPUT -i $IDEV -s $CLASS_A -j DROP
$IPT -A INPUT -i $IDEV -s $CLASS_B -j DROP
$IPT -A INPUT -i $IDEV -s $CLASS_C -j DROP
$IPT -A INPUT -i $IDEV -s $CLASS_D_MULTICAST -j DROP
$IPT -A INPUT -i $IDEV -s $CLASS_E_RESERVED -j DROP
$IPT -A INPUT -i $IDEV -d $CLASS_A -j DROP
$IPT -A INPUT -i $IDEV -d $CLASS_B -j DROP
$IPT -A INPUT -i $IDEV -d $CLASS_C -j DROP
$IPT -A INPUT -i $IDEV -d $CLASS_D_MULTICAST -j DROP
$IPT -A INPUT -i $IDEV -d $CLASS_E_RESERVED -j DROP
$IPT -A FORWARD -i $IDEV -s $CLASS_A -j DROP
$IPT -A FORWARD -i $IDEV -s $CLASS_B -j DROP
$IPT -A FORWARD -i $IDEV -s $CLASS_C -j DROP
$IPT -A FORWARD -i $IDEV -s $CLASS_D_MULTICAST -j DROP
$IPT -A FORWARD -i $IDEV -s $CLASS_E_RESERVED -j DROP
$IPT -A FORWARD -i $IDEV -d $CLASS_A -j DROP
$IPT -A FORWARD -i $IDEV -d $CLASS_B -j DROP
# LAN is 192.168.0.0/24 so we must ACCEPT them
# (NET'ed return traffic will be DNAT'ed to 172.22.22.X)
#$IPT -A FORWARD -i $IDEV -d $CLASS_C -j DROP
$IPT -A FORWARD -i $IDEV -d $CLASS_D_MULTICAST -j DROP
$IPT -A FORWARD -i $IDEV -d $CLASS_E_RESERVED -j DROP
$IPT -A INPUT -i $IDEV -s $DEBIAN_IP -j DROP
$IPT -A FORWARD -i $IDEV -s $DEBIAN_IP -j DROP
# Refuse packets claiming to be to the loopback interface.
# Refusing packets claiming to be to the loopback interface protects against
# source quench, whereby a machine can be told to slow itself down by an icmp so
# quench to the loopback.
$IPT -A INPUT -i $IDEV -d $LOOPBACK -j DROP
$IPT -A FORWARD -i $IDEV -d $LOOPBACK -j DROP
# Loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# secondary IP (DNS only)
$IPT -A INPUT -i $IDEV -d $DEBIAN_IP2 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j LOG
$IPT -A INPUT -i $IDEV -d $DEBIAN_IP2 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -i $IDEV -d $DEBIAN_IP2 -j DROP
# INET
$IPT -A INPUT -i $IDEV -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o $IDEV -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# SSH
$IPT -A INPUT -i $IDEV -p tcp --dport 22 -m state --state NEW -j LOG
$IPT -A INPUT -i $IDEV -p tcp --dport 22 -m state --state NEW -j ACCEPT
# TCP services
$IPT -A INPUT -i $IDEV -p tcp -m multiport --destination-ports 21,25,80,443 -m state --state NEW -j LOG
$IPT -A INPUT -i $IDEV -p tcp -m multiport --destination-ports 21,25,80,443 -m state --state NEW -j ACCEPT
# UDP services
#$IPT -A INPUT -i $IDEV -p udp -m multiport --destination-ports 53 -m state --state NEW -j LOG
$IPT -A INPUT -i $IDEV -p udp -m multiport --destination-ports 53 -m state --state NEW -j ACCEPT
# FTP
# active
#$IPT -A INPUT -i $IDEV -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
# TRACEROUTE
#$IPT -A INPUT -i $IDEV -p udp --dport 33434:33500 -m state
# icmp 3 - destination-unreachable
# icmp 11 - time-exceeded
#$IPT -A INPUT -i $IDEV -p icmp --icmp-type time-exceeded -j ACCEPT
#$IPT -A INPUT -i $IDEV -p icmp --icmp-type 3 -j ACCEPT
# ----------------------------------------------------------------------
# LAN
# ----------------------------------------------------------------------
$IPT -A INPUT -i $LDEV -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o $LDEV -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# LAN TCP services
$IPT -A INPUT -i $LDEV -p tcp -m multiport --destination-ports 21,22,25,80,110,143 -m state --state NEW -j LOG
$IPT -A INPUT -i $LDEV -p tcp -m multiport --destination-ports 21,22,25,80,443,110,143,8080 -m state --state NEW -j ACCEPT
# LAN UDP services
$IPT -A INPUT -i $LDEV -p UDP -m multiport --destination-ports 53 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $LDEV -p icmp --icmp-type echo-request -j ACCEPT
# ----------------------------------------------------------------------
# FORWARD
# ----------------------------------------------------------------------
$IPT -A FORWARD -i $IDEV -m state --state ESTABLISHED,RELATED -j ACCEPT
# ICMP
$IPT -A FORWARD -i $LDEV -p icmp --icmp-type echo-request -j ACCEPT
$IPT -A FORWARD -i $IDEV -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A FORWARD -i $LDEV -p icmp --icmp-type fragmentation-needed -j ACCEPT
$IPT -A FORWARD -i $IDEV -p icmp --icmp-type fragmentation-needed -j ACCEPT
# UDP services
$IPT -A FORWARD -i $LDEV -s $DEBIAN_LAN -p udp -m multiport --destination-ports 53,123 -m state --state NEW,ESTABLISHED -j ACCEPT
# VPN
$IPT -A FORWARD -i $LDEV -s $DEBIAN_LAN -p udp -d 88.XX.XX.XX -m multiport --destination-ports 500,4500,10000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# TCP services
$IPT -A FORWARD -i $LDEV -s $DEBIAN_LAN -p tcp -m multiport --destination-ports 21,25,80,110,119,143,443,995,16384:16484 -m state --state NEW,ESTABLISHED -j ACCEPT
# FTP (active)
$IPT -A FORWARD -i $LDEV -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
# FTP (passive)
$IPT -A FORWARD -i $LDEV -p tcp --dport $UNUSED_PORTS -m state --state ESTABLISHED,RELATED -j ACCEPT
# Required for DNAT
$IPT -A FORWARD -i $IDEV -p tcp -d 192.168.0.200 --dport 22 -m mark --mark 39 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i $LDEV -p tcp -s 192.168.0.200 --sport 22 -m state --state ESTABLISHED -j ACCEPT
# ----------------------------------------------------------------------
# NAT
# ----------------------------------------------------------------------
# SNAT
$IPT -t nat -A POSTROUTING -o $IDEV -s $DEBIAN_LAN -j SNAT --to-source $DEBIAN_IP
# DNAT
$IPT -t mangle -A PREROUTING -i $IDEV -p tcp --dport 30039 -j MARK --set-mark 39
$IPT -t nat -A PREROUTING -i $IDEV -p tcp --dport 30039 -j DNAT --to-destination 192.168.0.200:22
# Proxy redirect
$IPT -t nat -A PREROUTING -i $LDEV -s $DEBIAN_LAN -p tcp --dport 80 -j REDIRECT --to-port 8080
echo "DONE, Firewall set up!"
[Dodano: 2008-09-07, 18:13]
Już działa
sappa, problem już jest rozwiązany, wyłączyłem tylko ustawioną konfigurację proxy w przeglądarce. Mam jeszcze takie pytanie chciałbym zrobić dostęp zdalny do mojego komputera w sieci lan, na którym jest Debian.