Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: NAT a FORWARD  (Přečteno 2414 krát)

radeczech

  • Aktivní člen
  • *
  • Příspěvků: 165
NAT a FORWARD
« kdy: 03 Září 2006, 14:00:50 »
Pokouším se aplikovat již řešený firewall pomocí iptables na router a chtěl bych mít povolené jen některé porty. Příklad skripitu uvádím na konci.
Když jsem měl tento skript jen pro pracovní stanici, tak jsem si odchytával právě používané porty pomocí
"netstat -n --numeric-ports |more"
ale toto mi při forwardování nefunguje :-( je tedy nějaká možnost, jak zjistit, které právě používá porty některá stanice?
Další dotaz bych měl takový, že jsem se snažil zakázat všechny porty, kromě těch, co jsem chtěl povolit a výsledek byl takový, že se zakázalo téměř vše. Nebo spíše, když jsem pro forwardování povolil dns, tak mi používání názvů místo ip stejně nefungovalo a když jsem přidal povolení
"$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT"
nebo
"$IPTABLES -A FORWARD -p ALL -j ACCEPT"
tak mi vše jede. Co bych měl tedy ještě dopsat, abych měl pod kontrolou jen porty, které chci?
Díky

skript:

#!/bin/sh

# -> managed by radeczech

# ------------------------------------------------------------------------------
# nastaveni
# ------------------------------------------------------------------------------

# lokalni loopback rozhrani
LO_IP="127.0.0.1/32"

# vnejsi rozhrani (eth0, eth1)
INET_IFACE="eth0"
LAN_IFACE="eth1"

# cesta k programu iptables
IPTABLES="/sbin/iptables"

# logovani datagramu, ktere nejsou propusteny
LOGGING=1

# ------------------------------------------------------------------------------
# zakladni akce
# ------------------------------------------------------------------------------

# odstraneni pravidel
$IPTABLES -F
$IPTABLES -X

# implicitne jsou zakazany vsechny pakety
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# povoleni routovani paketu
echo "1" > /proc/sys/net/ipv4/ip_forward

# NAT
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# ------------------------------------------------------------------------------
# INPUT - prichozi pakety
# ------------------------------------------------------------------------------

# spojeni na lokalnim pocitaci
$IPTABLES -A INPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT

# servisni pakety
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE --icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE --icmp-type destination-unreachable -j ACCEPT

# ochrana proti ping of death, odfiltrovat pokusy o zahlceni icmp
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT

# pakety od navazanych spojeni jsou v poradku
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# odmitnuti auth serveru
$IPTABLES -A INPUT -p TCP --dport 113 -j REJECT --reject-with tcp-reset

# paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# ochrana pred ip spoofingem
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo "1" > ${interface}
done

$IPTABLES -N spoofing
$IPTABLES -A spoofing -s 192.168.0.0/16 -j DROP
$IPTABLES -A spoofing -s 172.16.0.0/12 -j DROP
$IPTABLES -A spoofing -s 10.0.0.0/8 -j DROP
$IPTABLES -A INPUT -i $INET_IFACE -j spoofing

# ochrana proti syn flooding, DoS utoku
$IPTABLES -N syn_flood
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --syn -j syn_flood
$IPTABLES -A syn_flood -m limit --limit 1/s --limit-burst 5 -j RETURN
$IPTABLES -A syn_flood -j DROP

# ------------------------------------------------------------------------------
# logovani
# ------------------------------------------------------------------------------

if [ "$LOGGING" ]
then
    $IPTABLES -A INPUT -m limit --limit 12/h --limit-burst 5 -j LOG --log-prefix "INPUT DROP: " --log-level 6
    $IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT DROP: "
fi

# ------------------------------------------------------------------------------
# FORWARD - smerovane pakety
# ------------------------------------------------------------------------------

$IPTABLES -A FORWARD -p tcp --dport 80 -j ACCEPT        #http
$IPTABLES -A FORWARD -p tcp --dport 443 -j ACCEPT       #https
$IPTABLES -A FORWARD -p tcp --dport 53 -j ACCEPT        #dns
$IPTABLES -A FORWARD -p udp --dport 53 -j ACCEPT        #dns
$IPTABLES -A FORWARD -p icmp -j ACCEPT                  #icmp

# ------------------------------------------------------------------------------
# OUTPUT - odchozi pakety
# ------------------------------------------------------------------------------

$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp --dport 443 -j ACCEPT         #https
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp --dport 22 -j ACCEPT          #ssh
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp --dport 53 -j ACCEPT          #dns
$IPTABLES -A OUTPUT -o $INET_IFACE -p udp --dport 53 -j ACCEPT          #dns
$IPTABLES -A OUTPUT -o $INET_IFACE -p icmp -j ACCEPT                    #icmp


$IPTABLES -A INPUT -i $LAN_IFACE -p ALL -j ACCEPT       #vse na LAN
$IPTABLES -A OUTPUT -o $LAN_IFACE -p ALL -j ACCEPT      #vse na LAN
THE ONLY WAY FORWARD IS TO GROW.
THE ONLY WAY TO GROW IS TO EXPAND BEYOND THE BOUNDARIES OF WHAT WE KNOW INTO UNCHARTED AREAS OF THE UNKNOWN.
THE UNKNOWN BEING THE ONLY SOURCE OF NEW KNOWLEDGE.

radeczech

  • Aktivní člen
  • *
  • Příspěvků: 165
NAT a FORWARD
« Odpověď #1 kdy: 18 Září 2006, 12:54:10 »
Už jsem si dohledal, co jsem potřeboval, takže nastavení firewallu jsem z velké části vyřešil a doplnil si nedostatky z dané problematiky. Z velké části však vděčím těmto článkům (http://www.root.cz/serialy/stavime-firewall/), je tam vše rozepsané, co jsem chtěl vědět... Až na zjišťování otevíraných portů -> časem :-)
THE ONLY WAY FORWARD IS TO GROW.
THE ONLY WAY TO GROW IS TO EXPAND BEYOND THE BOUNDARIES OF WHAT WE KNOW INTO UNCHARTED AREAS OF THE UNKNOWN.
THE UNKNOWN BEING THE ONLY SOURCE OF NEW KNOWLEDGE.

 

Provoz zaštiťuje spolek OpenAlt.