All pastes #162892 Raw Edit

peredhil

public shellscript v1 · immutable
#162892 ·published 2006-09-06 23:23 UTC
rendered paste body
#!/bin/bash##################### Czesc konfigurowalna skryptu ####################### Podaj swoj interfejs wyjsciowy do intenetu, moze byc ppp0    UPLINK="eth0"# Jezeli nie chcemy rozdzielac internetu a chcemy samego firewall`a wpisujemy "no"    ROUTER="yes"# Podajemy swoje IP, jezeli mamy IP dynamiczne np neostrada wpisujemy "dynamic"    NAT="10.10.48.33"# Podajemy wszystkie interfejsy razem z lo    INTERFACES="lo eth0 eth1"# Podajemy nazwy servisow ktore chcemy miec dostepne na serverze z zewnatrz, sa to nazwy z /etc/services lub numery portow    SERVICES="21 60 80"#################### W tej czesci lepiej nic nie zmieniac jesli sie nie wie o co chodzi ######################    if [ "$1" = "start" ]; then    echo "Starting Firewall...done."# Budowe firewall`a zaczynamy od zablokowania wszystkiego    iptables -P INPUT DROP# Teraz przepuszczamy wszystko co zainicjowane jest z wewnatrz sieci, czyli nie idzie z internetu    iptables -A INPUT -i ! ${UPLINK} -j ACCEPT# Przepuszczamy polaczenia juz zestawione    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# Otwieramy porty servisow podanych wyzej    for x in ${SERVICES}    do    iptables -A INPUT -p tcp --dport ${x} -m state --state NEW -j ACCEPT    done# Poniewaz zablokowalismy caly ruch przychodzacy ze swiata nasz komputer nie odpowiada na standardowy "TCP reset"# i "ICMP port-unreachable response", w tym wypadku musimy dodac linijki naprawiajace ten blad    iptables -A INPUT -p tcp -i ${UPLINK} -j REJECT --reject-with tcp-reset    iptables -A INPUT -p udp -i ${UPLINK} -j REJECT --reject-with icmp-port-unreachable# Wylaczmy ECN    if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then    echo 0 > /proc/sys/net/ipv4/tcp_ecn    fi# Jezeli chcemy zeby nasz komputer odpowiadal na pingi#    iptables -A INPUT -i ${UPLINK} -p icmp -j ACCEPT# Wylaczamy spoofowanie na wszystkich interfejsach    for x in ${INTERFACES}    do    echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter    done# Wlaczamy forward pakietow    if [ "$ROUTER" = "yes" ]; then    echo 1 > /proc/sys/net/ipv4/ip_forward# Wlaczamy masquerade na statycznym badz dynamicznym IP    if [ "$NAT" = "dynamic" ]; then    echo "Starting MASQUERADE (dynamic IP)...done."    iptables -t nat -A POSTROUTING -o ${UPLINK} -j MASQUERADE    elif [ "$NAT" != "" ]; then    echo "Starting SNAT (static IP)...done."    iptables -t nat -A POSTROUTING -o ${UPLINK} -j SNAT -s 192.168.1.0/24 -d ! 192.168.1.0/24 --to ${NAT}# Jezeli chcemy przekierowac jakis port na komputer w lanie#    iptables -t nat -A PREROUTING -i ${UPLINK} -p tcp --dport 21 -j DNAT --to 192.168.1.2:21    fi    fi# Wylaczamy firewall`a    elif [ "$1" = "stop" ]; then    echo "Stoping Firewall...done."    iptables -F INPUT    iptables -P INPUT ACCEPT# Wylaczamy masquerade    iptables -t nat -F POSTROUTING    if [ "$NAT" = "dynamic" ]; then    echo "Stoping MASQUERADE...done."    elif [ "$NAT" != "" ]; then    echo "Stoping SNAT...done."    fifi# Koniec