Skip Navigation LinksStrona główna->Publikacje->BIND - Ustawa Hazardowa

 

Ustawa Hazardowa PL - Konfiguracja BIND'a - Blokowanie Url zakazanych - automatyczne pobieranie XML ze strony MF


Do pliku /etc/bind/named.conf dodaj:

 

 

include "/etc/bind/named.conf.hazard-redirect";

Stwórz pliki:

 

 

 

 

 

touch /opt/hazardBind.pl

touch /etc/cron.d/hazardBind

touch /etc/bind/named.conf.hazard-redirect

touch /etc/bind/db.hazard-redirect

Do pliku /opt/hazardBind.pl dodaj (ew. zmień pod siebie "USTAWIENIA"):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#!/usr/bin/perl

use XML::Simple;

use LWP::UserAgent;

use IO::Socket::SSL;

use POSIX qw(strftime);

 ## START ## USTAWIENIA

 

my $urlHazardXML = "https://hazard.mf.gov.pl/api/Register";             # baza stron hazardowych

my $addressIP = "145.237.235.240";                                      # adres IP na który mają być kierowane zapytania

my $pathFile = "/etc/bind/named.conf.hazard-redirect";                  # ścieżka do pliku, w której będą domeny hazardowe

my $pathFileZone = "/etc/bind/db.hazard-redirect";                      # ścieżka do pliku ze strefą dla domen hazardowych

my $runCommend = "/etc/init.d/bind9 reload 1> /dev/null 2> /dev/null";  # komenda która będzie uruchamiana, jeśli zostanie coś zmodyfikowane w bazie stron

 

## KONIEC ## USTAWIENIA

 

 

 

my $ua = LWP::UserAgent->new;

$ua->default_header('Accept-Language' => "pl");

$ua->ssl_opts(%{{'verify_hostname' => 0, 'SSL_verify_mode' => SSL_VERIFY_NONE}});

 

my $response = $ua->get($urlHazardXML);

 

   if($response->is_success) {

    my $xml = new XML::Simple;

    $data = $xml->XMLin($response->content);

 

    my $dataNew = "";

    my %isAdd;

       foreach my $domain (@{$data->{'PozycjaRejestru'}}) {

           if(!$isAdd{$domain->{'AdresDomeny'}}) {

               if($domain->{'DataWykreslenia'}) {

                $dataNew .= "# Lp: ".$domain->{'Lp'}."   # dodano: ".$domain->{'DataWpisu'}."   # wykreslono: ".$domain->{'DataWykreslenia'}."\n";

                $dataNew .= "# zone \"".$domain->{'AdresDomeny'}."\" { type master; file \"$pathFileZone\"; };\n\n";

               } else {

                $dataNew .= "# Lp: ".$domain->{'Lp'}."   # dodano: ".$domain->{'DataWpisu'}."\n";

                $dataNew .= "zone \"".$domain->{'AdresDomeny'}."\" { type master; file \"$pathFileZone\"; };\n\n";

               }

            $isAdd{$domain->{'AdresDomeny'}} = $domain->{'AdresDomeny'};

           }

       }

    $dataNew =~ s/^\s+//;

    $dataNew =~ s/\s+$//;

 

    my $dataOld = "";

       if(-e $pathFile) {

        open(UCHWYT, $pathFile);

          while (my $row = <UCHWYT>) { if(!($row =~ /^##\sOstatnia\saktualizacja/)) { $dataOld .= $row; } }

        close (UCHWYT);

        $dataOld =~ s/^\s+//;

        $dataOld =~ s/\s+$//;

       }

 

       if($dataOld ne $dataNew) {

        open(UCHWYT, '>', $pathFile) or die "Nie można otworzyć $pathFile: $!";

        print UCHWYT "## Ostatnia aktualizacja: ".strftime('%d-%m-%Y %H:%M:%S',localtime(time))."\n\n".$dataNew;

        close UCHWYT;

        #system("chown root:root $pathFile 1> /dev/null 2> /dev/null");

           if($runCommend) { system($runCommend); }

       }

 

       if($pathFileZone) {

        my $zoneNew = "\$TTL    7200\n";

           $zoneNew .= "@       IN      SOA     localhost. root.localhost. (\n";

           $zoneNew .= "                              1         ; Serial\n";

           $zoneNew .= "                         604800         ; Refresh\n";

           $zoneNew .= "                          86400         ; Retry\n";

           $zoneNew .= "                        2419200         ; Expire\n";

           $zoneNew .= "                         604800 )       ; Negative Cache TTL\n";

           $zoneNew .= "@       IN      NS      localhost.\n";

           $zoneNew .= "@       IN      A       $addressIP\n";

 

        my $zoneOld = "";

           if(-e $pathFileZone) {

            open(UCHWYT, $pathFileZone);

              while (my $row = <UCHWYT>) { if(!($row =~ /^##\sOstatnia\saktualizacja/)) { $zoneOld .= $row; } }

            close (UCHWYT);

            $zoneOld =~ s/^\s+//;

            $zoneOld =~ s/\s+$//;

           }

 

           if($zoneOld ne $zoneNew) {

            open(UCHWYT, '>', $pathFileZone) or die "Nie można otworzyć $pathFileZone: $!";

            print UCHWYT $zoneNew;

            close UCHWYT;

            #system("chown root:root $pathFileZone 1> /dev/null 2> /dev/null");

           }

       }

 

   } else {

    print STDERR "Error: ".$response->status_line."\n";

   }

Do pliku /etc/cron.d/hazardBind dodaj:

 

 

 

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

0 */2 * * *   root    perl /opt/hazardBind.pl

Aby sprawdzić poprawność działania, wklej poniższą line w terminalu:

 

 

perl /opt/hazardBind.pl





 monitoring pozycji - ASP.NET   © 2017 - Centralny Serwer Warszawa