it-swarm.com.de

Blockieren Sie eine zufällige Domain, die auf meine dedizierte IP verweist

Ich habe einen zufälligen Domainnamen, dessen A-Eintrag zu meiner dedizierten IP-Adresse gehört. Deshalb Inhalte duplizieren. Gibt es eine Möglichkeit, die Domain auf IP-Ebene zu deaktivieren, möglicherweise in iptables?

Ich habe ein . Htaccess Setup, um zur Hauptdomäne umzuleiten, da es immer HTTPS erzwingt.

6
mldev

Ich begegne dieser Situation mit meiner virtuellen Host-Konfiguration. Unter Apache ist der erste virtuelle Host der "Standard" -Virtuelle Host. Ich konfiguriere es, um einen Fehler 404 mit der Nachricht zu dienen

404 Not Found - Hostname nicht erkannt

Dieser Server ist nicht für die Bereitstellung von Dokumenten für foo.example.com konfiguriert

Dann erstelle ich für jede meiner Sites spezifische virtuelle Hosts, die den richtigen Inhalt liefern, wenn der Hostname ist korrekt ist.

Hier ist meine standardmäßige virtuelle Host-Konfiguration, die mit 404.pl alle Anforderungen verarbeitet:

<VirtualHost *:80>
    Servername localhost.localdomain
    DocumentRoot /var/www/default
    <Directory /var/www/default/>
        Require all granted
        Options +ExecCGI
        AddHandler cgi-script .pl
        RewriteEngine on
        RewriteCond $1 !-f
        RewriteRule ^(.*)$ 404.pl
        AllowOverride None
    </Directory> 
</VirtualHost>

Und hier ist das 404.pl Skript, das die Meldung "Hostname nicht erkannt" ausgibt und Weiterleitungen für Domainnamen ausführt, die fast korrekt, aber nicht kanonisch sind:

#!/usr/bin/Perl

use strict;

# Put the Host names you actually use in here to enable redirects
# The left side should be the "main" domain name and the right should include the TLD
# This enables redirects for alternate TLDs.
my $hostnameredirects = {
  'example' => 'example.com',
  'foo' => 'foo.example.com',
};
my $hostname = `hostname --fqdn`;
chomp $hostname;

my $server = $ENV{'SERVER_NAME'};
$server = "" if (!$server);
$server =~ s/[^\-\_\.A-Za-z0-9]//g;
$server = lc($server);
my $uri = $ENV{'REQUEST_URI'};
$uri = "" if (!$uri);
$uri =~ s/[ \r\n]+//g;
$uri = "/$uri" if ($uri !~ /^\//);

&serverNameRedirect();
&noVirtualHostError();
&show404();

sub serverNameRedirect(){
    my $domain = &removeTld($server);
    while ($domain){
        if ($hostnameredirects->{$domain}){
            &redirect('http://'.$hostnameredirects->{$domain}.$uri);
        }
        $domain =~ s/^[^\.]*[\.]?//g;
    }
}

sub removeTld(){
    my ($domain) = @_;
    $domain =~ s/\.(([^\.]+)|((([A-Za-z]{2})|com|org|net)\.[A-Za-z]{2}))$//g;
    return $domain;
}

sub redirect(){
    my ($redirect) = @_;
    my $eRedirect = &escapeHTML($redirect);
    print "Status: 301 Moved Permanently\n";
    print "Location: $redirect\n";
    print "Content-type: text/html\n";
    print "\n";
    print "<html><body><p>Moved permanently: <a href=\"$eRedirect\">$eRedirect</a></p></body></html>\n";
    exit;
}

sub show404(){
    my $eServer = &escapeHTML($server);
    &errorPage(
        '404 Not Found',
        '404 Not Found -- Hostname Not Recognized',
        "This server is not configured to serve documents for '$eServer'"
    );
}

sub noVirtualHostError(){
    if ($server !~ /^\d+\.\d+\.\d+\.\d+$/){
        return;
    }
    &errorPage(
        '400 Bad request',
        '400 Bad Request -- No Hostname Sent',
        "This server only accepts requests with a domain name, not requests for an ip address such as $server"
    );
}

sub errorPage(){
    my ($status, $title, $message) = @_;
    print STDERR "$title\n";
    print STDERR "$message\n";
    print "Status: $status\n";
    print "Content-type: text/html\n";
    print "\n";
    print "<html>\n";
    print "<head>\n";
    print "<title>$title</title>\n";
    print "</head>\n";
    print "<body>\n";
    print "<h1>$title</h1>\n";
    print "ERROR: $message\n";
    print "</body>\n";
    print "</html>\n";
    exit;
}

# Convert <, >, & and " to their HTML equivalents.
sub escapeHTML {
     my $value = $_[0];
     $value =~ s/\&/\&amp;/g;
     $value =~ s/</\&lt;/g;
     $value =~ s/>/\&gt;/g;
     $value =~ s/"/\&quot;/g;
     return $value;
}
7

Ein weiteres geeignetes Instrument für den Umgang mit Black Hat-Websites, die Inhalte stehlen: ( kanonische URLs ):

<link rel="canonical" href="https://blog.example.com/green-dresses-are-awesome" />

Kriminelle können eine nicht autorisierte Kopie Ihrer Website erstellen und auf ihren eigenen Servern hosten, um die Vorteile Ihrer Inhalte zu nutzen (über Web Scraping ). Die Verwendung des kanonischen Link-Tags hilft, es sei denn, der Kriminelle ändert die Links so, dass sie nur auf seine eigene Domain verweisen. Ich weiß nicht, wie ich ihn in diesem Fall bekämpfen soll.

1
gavenkoa