Tema: Re: IP adresai
Autorius: lingus
Data: 2011-04-10 22:59:31
Panašiai darau, bet kai daugiau nei 80 portas tai fw pusę minutės 
persikraudinėja. Reiks sprręsti kažkaip kitaip.

WHITELIST:

YEAR=`date +%Y`
FILENAME=`date +delegated-ripencc-%Y%m%d`
wget -c ftp://ftp.ripe.net/ripe/stats/$YEAR/$FILENAME.bz2
bzip2 -d $FILENAME.bz2
grep -i "|LT|ipv4|" $FILENAME |  awk -F"|" '{print $4 "/" int(32 - 
log($5)/log(2))}' > whitelist.txt

#------------------------------------------------------


PORTS="80 443"   # 80-http 88-nagios 1194-openvpn
echo "4. Atidaromi portai $PORTS pagal whitelist.txt"
for IP in $WHITELIST
         do
         for PORT in $PORTS
                 do
                 /sbin/iptables -A INPUT  -s $IP -p tcp --dport $PORT -j 
ACCEPT
                 /sbin/iptables -A OUTPUT -d $IP -p tcp --sport $PORT -j 
ACCEPT
                 /sbin/iptables -A FORWARD -s $IP -p tcp --sport $PORT 
-j ACCEPT
                 done
         done




On 02/28/2011 07:58 PM, ABLomas wrote:
> On 2011.02.28 15:20, Info wrote:
>> Ar yra kazkoks budas uzdropinti visus ip adresus, iskyrus tik
>> lietuvos, pvz. noriu uzblokuoti 80 porta, kad tik is lietuvos ip
>> galetu jungtis 80 portu.
>
> Na tai žinoma kad yra....
>
>> kokia iptables taisykle naudoti...
>
> Vien su iptables išsiversi, bet paskui užsipi$i mantainint....
>
> O ne paprasčiau yra kad ir su kokiu perlo skriptuku, kuris konvertina iš
> RIPE paduodamo formato pasigamint ipset rinkinį, kurį paskui jau
> paprasta tvarkyt? Pvz. kad ir taip:
>
> #!/usr/bin/perl
> use Net::Netmask;
>
> my $ipset = "/usr/sbin/ipset"; # Naudojau ir savo kompilinta versija
> my $lt_net = "lt_networks"; # potinklio, kur bus sudedami visi lt
> networkai pavadinimas
> my $net = "ALLOCATED PA"; # Skiriamasis pozymis RIPE DB
>
> system "$ipset --destroy $lt_net";
> system "$ipset --create $lt_net nethash";
> open ALIST, "<", "alloclist.txt" or die $!;
> while(<ALIST>)
> {
> $text .= $_;
> }
> close(ALIST);
> $ltnet= $1 if $text =~ m|^lt\.(.*)^lt\.|ms;
> @nets = split(/\n/, $ltnet);
> foreach (@nets) {
> if ($_ =~ m/$net$/){
> split;
> $sysnet = new Net::Netmask ($_[1]);
> system "$ipset --add $lt_net $sysnet";
> }
> }
>
> (sąrašus gali iš RIPE FTP pasiimt su wget, ar kad ir tuo pačiu perl'u:
> Use LWP::Simple;
> getstore("ftp://ftp.ripe.net/pub/stats/ripencc/membership/alloclist.txt", "alloclist.txt")
>
> )
>
> O toliau jau paprasta...
>
> iptables -I OUTPUT -p icmp -m set --set \! lt_networks dst -j LOG
> --log-prefix "NOT LT NET: "
> iptables -I OUTPUT -p icmp -m set --set lt_networks dst -j LOG
> --log-prefix "LT NETWORK: "
>
> Ką daryt su gatavom ipset rūšiavimo taisyklėm manau susiprasi...