Freesco, NND, CDN, EOS http://forum.freesco.pl/ |
|
taki wlasny firewall... i nie wiem co dalej http://forum.freesco.pl/viewtopic.php?f=22&t=10375 |
Strona 1 z 1 |
Autor: | milupo [ wtorek, 20 grudnia 2005, 17:49 ] |
Tytuł: | taki wlasny firewall... i nie wiem co dalej |
Witam, Napisalem sobie takiego prostego firewalla na podstawie firewalla czerwo... testuje w nim blokowanie po macku #!/bin/sh # firewall adminet.pl . /etc/rc.conf . /etc/rc.d/functions . /etc/iptables/firewall.config i=`which iptables` case $1 in start) if [ -e /proc/sys/net/ipv4/tcp_ecn ];then echo 0 > /proc/sys/net/ipv4/tcp_ecn fi echo 1 > /proc/sys/net/ipv4/ip_forward if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then echo 1 > /proc/sys/net/ipv4/tcp_syncookies fi for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done $i -F $i -F -t nat $i -P INPUT DROP $i -P FORWARD DROP $i -P OUTPUT ACCEPT # interfejs lo $i -A INPUT -i lo -j ACCEPT $i -A FORWARD -o lo -j ACCEPT # Blaster i Saser if [ $wirus = 1 ]; then $i -A INPUT -p tcp --dst 0/0 --dport 135 -j LOG -m limit --limit 2/hour --log-prefix "Blaster z zewnatrz: " $i -A INPUT -p tcp --dst 0/0 --dport 135 -j LOG -m limit --limit 2/hour --log-prefix "Blaster z zewnatrz: " $i -A FORWARD -p tcp --dst 0/0 --dport 445 -j LOG -m limit --limit 2/hour --log-prefix "Saser z zewnatrz: " $i -A FORWARD -p tcp --dst 0/0 --dport 445 -j LOG -m limit --limit 2/hour --log-prefix "Saser z zewnatrz: " $i -A INPUT -p tcp --dst 0/0 -m multiport --dport 135,445 -j DROP $i -A FORWARD -p tcp --dst 0/0 -m multiport --dport 135,445 -j DROP fi # Adresy zabronione for IP in `cat /etc/iptables/ip_deny| cut -d "#" -f1`;do $i -A INPUT -s $IP -j DROP $i -A FORWARD -s $IP -j DROP $i -A INPUT -d $IP -j DROP $i -A FORWARD -d $IP -j DROP done # Adresy majace absolutny dostep do serwera, adresy zaufane for IP in `cat /etc/iptables/ip_all| cut -d "#" -f1`;do $i -A INPUT -s $IP -j ACCEPT done # Porty zablokowane dla wszystkich if [ "$TCP_IN_DENY" ];then $i -A INPUT -p tcp --dst 0/0 -m multiport --dport $TCP_IN_DENY -j DROP fi if [ "$UDP_IN_DENY" ];then $i -A INPUT -p udp --dst 0/0 -m multiport --dport $UDP_IN_DENY -j DROP fi # uslugi udostepnione dla polaczen z internetu if [ "$TCP_IN_ALLOW" ];then $i -A INPUT -p tcp -i $EXTIF -m multiport --dst 0/0 --dport $TCP_IN_ALLOW -j ACCEPT fi if [ "$UDP_IN_ALLOW" ];then $i -A INPUT -p udp -i $EXTIF -m multiport --dst 0/0 --dport $UDP_IN_ALLOW -j ACCEPT fi # zaplotkuj jesli nie chcesz udostepniac serwisu http do inetu if [ $WWW = 1 ]; then $i -A INPUT -p tcp -i $EXTIF --dport 80 -j ACCEPT fi # zaplotkuj jesli nie chcesz udostepniac serwisu https do inetu if [ $HTTPS = 1 ]; then $i -A INPUT -p tcp -i $EXTIF --dport 443 -j ACCEPT fi # zaplotkuj jesli nie chcesz udostepniac serwisu ftp do inetu if [ $FTP = 1 ]; then $i -A INPUT -p tcp -i $EXTIF --dport 20 -j ACCEPT $i -A INPUT -p tcp -i $EXTIF --dport 21 -j ACCEPT fi # zaplotkuj jesli nie chcesz udostepniac poczty do inetu if [ $MAIL = 1 ]; then $i -A INPUT -p tcp -i $EXTIF --dport 110 -j ACCEPT $i -A INPUT -p tcp -i $EXTIF --dport 25 -j ACCEPT fi # zaplotkuj jesli nie chcesz udostepniac SSH do inetu if [ $SSH = 1 ]; then $i -A INPUT -p tcp -i $EXTIF --dport 22 -j ACCEPT fi # zaplotkuj jesli nie chcesz udostepniac serwera IMAP do inetu if [ $IMAP = 1 ]; then $i -A INPUT -p tcp -i $EXTIF --dport 143 -j ACCEPT $i -A INPUT -p udp -i $EXTIF --dport 143 -j ACCEPT fi # zaplotkuj jesli nie chcesz udostepniac serwera IMAPS do inetu if [ $IMAPS = 1 ]; then $i -A INPUT -p tcp -i $EXTIF --dport 993 -j ACCEPT $i -A INPUT -p udp -i $EXTIF --dport 993 -j ACCEPT fi # Odrzucamy z komunikatem ICMP Port Unreachable polaczenia # na IDENT oraz SOCKS (czesto sprawdzane przez serwery IRC) # Jesli udostepniasz te uslugi zaplotkuj (#) odpowiedne linie $i -A INPUT -p tcp --dst 0/0 --dport 113 -j REJECT --reject-with icmp-port-unreachable $i -A INPUT -p tcp --dst 0/0 --dport 1080 -j REJECT --reject-with icmp-port-unreachable #Blokada gadu-gadu for IP in `cat /etc/iptables/ip_gg | cut -d "#" -f1` ;do $i -I FORWARD -s $IP -p tcp --dport 443 -j DROP $i -I FORWARD -s $IP -p tcp --dport 8074 -j DROP $i -t nat -A PREROUTING -d 217.17.46.250 -s $IP -p tcp --dport 80 -j DNAT --to $IPADDR1 done # pingi pozwalamy $i -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -m limit --limit 1/sec #TTL if [ $TTL = 1 ]; then $i -t mangle -A POSTROUTING -o $INTIF1 -j TTL --ttl-set 1 fi if [ $TTL = 2 ]; then for IP in `cat /etc/iptables/ip_ttl| cut -d "#" -f1`;do $i -t mangle -A POSTROUTING -d $IP -j TTL --ttl-set 1 done fi # Redirect wyswietlenie komunikatu o zablokowaniu dostepu do internetu # przy kazdej probie laczenia sie z innymi numerami IP niz lokalne. # Wymaga uruchomiena strony www na porcie 200 lub programu miniserv for IP in `cat /etc/iptables/ip_redirect | cut -d "#" -f1`;do $i -t nat -A PREROUTING -p tcp -s $IP -d ! $IPADDR1 -j REDIRECT --to-port 80 done # domyslnie wszystkim wyswietla sie napis o macku #$i -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -d ! 192.168.1.1 -j REDIRECT --to-port 80 # $i -A INPUT -i ! eth0 -s 192.168.1.0/24 -j REDIRECT --to-port 80 #limit polaczen echo "7200" >/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established for ip in `cat /etc/iptables/ip_polaczenia | cut -d "#" -f1`;do $i -A FORWARD -s $ip -p tcp --tcp-flags SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 -j DROP done #limit polaczen koniec $i -t nat -A POSTROUTING -s 195.182.164.0/24 -d 195.182.164.0/24 -j ACCEPT #Zezwalamy na wszystko co odbywa sie w ramach juz dozwolonych polaczen $i -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED $i -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED #Komendy uruchamiana po starcie firewalla if [ -x /etc/rc.d/mrtg ]; then /etc/rc.d/mrtg stop killall mrtg /etc/rc.d/mrtg start fi if [ -x /usr/stat/rc.stat ]; then cd /usr/stat/ sh rc.stat restart cd /etc/rc.d fi #KONIEC wynik ;; stop) $i -F INPUT $i -F FORWARD $i -F OUTPUT $i -P INPUT DROP $i -P FORWARD DROP $i -P OUTPUT DROP echo 0 > /proc/sys/net/ipv4/ip_forward wynik ;; esac potem dopialem dobie plik ktory generuje na podstawie mackow i ip takie wpisy dla firewalla: #!/bin/sh echo" ..." com=`which iptables` temp="./temp.tmp" i=1 echo "" > $temp for IP in `cat /etc/iptables/macip | cut -d "#" -f1 |awk '{print $1}'`; do tablica_ip[$i]=$IP i=$(expr $i + 1) done i=1 for MAC in `cat /etc/iptables/macip | cut -d "#" -f1 |awk '{print $2}'`; do tablica_mac[$i]=$MAC # input i forward echo $com -A INPUT -i ! eth0 -s ${tablica_ip[$i]} -j ACCEPT >> $temp #echo $com -A FORWARD -i ! eth0 -s ${tablica_ip[$i]} -j ACCEPT >> $temp # maskarada echo $com -t nat -A POSTROUTING -o eth0 -s ${tablica_ip[$i]} -j MASQUERADE >> $temp #echo $com -i eth1 -s ${tablica_ip[$i]} -m mac --mac-source ${tablica_mac[$i]} -j ACCEPT >> $temp echo $com -A FORWARD -m mac --mac-source ${tablica_mac[$i]} -s ${tablica_ip[$i]} -i ! eth0 -j ACCEPT >> $temp i=$(expr $i + 1) done i teraz mam problem.... jesli komus nie pasuje mac do ip to nie ma internetu... a jesli pasuje to ma internet... jak zrobic zeby dla tego komu nie pasuje mac wyskakiwala strona na porcie np 200 ze jego macka nie ma w bazie ? z gory dzieki za sugestje |
Autor: | stk [ środa, 21 grudnia 2005, 14:24 ] |
Tytuł: | |
dodajesz do dhcpd jeszcze jedna klase adresow ip np.192.168.200.0/24 i dajesz zeby przydzilal dynamicznie - w firewallu kierujesz caly ruch nowej klasy adresowej na dany port na ktorym masz stronke. |
Autor: | Koriolan [ czwartek, 22 grudnia 2005, 17:07 ] |
Tytuł: | |
Ładnie robi to firewall Zciecha: for IP in `cat /etc/firewall/IP_Redirect | cut -d "#" -f1`;do $i -t nat -A PREROUTING -p tcp -s $IP -d ! $IPADDR1 -j REDIRECT --to-port 84 done |
Autor: | milupo [ czwartek, 22 grudnia 2005, 17:23 ] |
Tytuł: | |
No dobra ale to jest zrobione na tej zasadzie ze w pliku sa napisane macki ktore maja byc przekierowane. Mi chodzi raczej o cos takiego: Mam plik z adresami IP i adresami MAC oddzielonych spacja. Jesli adres goscia znajduje sie w tym pliku i jesli pasuje do macka to ma internet. Jesli nie to przekierowuje go na jakis tam port na ktorym jest stronka ze jego IP nie pasuje do macka lub ma calkiem inne IP i nie moze miec ani gg ani nic. Jesli cos takiego by sie dalo zrobic to bylo by super |
Autor: | zciech [ czwartek, 22 grudnia 2005, 17:30 ] |
Tytuł: | |
Nie chce mi się analizowa tego wszystkiego, ale w regule przekierowujacej uzyj: --mac-source ! ${tablica_mac[$i]} -s ${tablica_ip[$i]} kazdy ip ktory zglosi sie z innym macem zostanie przekierowany. uwaga IP MUSI miec dojscie do uslugi lokalnej na porcie na ktorym ona dziala! |
Autor: | milupo [ czwartek, 22 grudnia 2005, 17:44 ] |
Tytuł: | |
u mnie dziala to tak: firewall sie uruchamia bez inputa, forwarda i maskarady potem uruchamia sie skrypt, ktory pobiera sobie z pliku adresy ip , macka i dla nich generuje regulki input, forward i maskarade ( jesli jest w pliku 5 takich adresow to generuje sie w sumie 15 regulek) Tym co ich IP nie znajduje sie na liscie lub nie pasuje mac to poprostu nie chodzi net (nie ma dla ich IP Inputa, Forwarda i maskarady) Nie bardzo wiem co masz na mysli zciech. Jesli wziac pod uwage twoja sugestie to musial bym przeleciec wszystkie 253 adresy... kurcze nie wiem czy dobrze rozumiem ![]() Cholerka nie wiem jak ruszyc z tym, a iptables to tak srednio pojmuje ![]() |
Autor: | nicek [ środa, 4 stycznia 2006, 18:38 ] |
Tytuł: | |
a co z przypadkiem kiedy w ip_redirect sa ip osob ktore zalegaja z oplatami, i ma sie dla nich wyswietlac strona off.htm a dla osob zupelnie z poza sieci (nie ujeci w pliku np hosts) maja miec wyswietlona strone z portu 200. bo w sumie na stronie off moga byc informacje o ip ktore ma nieoplacony miesiac a tego lepiej zeby nie czytal nikt z poza sieci. brak dhcp, ethers, stare nn. |
Strona 1 z 1 | Strefa czasowa UTC+2godz. |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |