web-dev-qa-db-fra.com

Bloquer un domaine aléatoire pointant sur mon adresse IP dédiée

J'ai un nom de domaine aléatoire qui a un enregistrement sur mon adresse IP dédiée. Donc dupliquer le contenu. Existe-t-il un moyen de désactiver le domaine au niveau IP, peut-être dans iptables?

J'ai un . Htaccess configuration pour rediriger vers le domaine principal car il force toujours HTTPS.

6
mldev

Je traite ce type de situation en utilisant ma configuration d'hôte virtuel. Sous Apache, le premier hôte virtuel est l'hôte virtuel "par défaut". Je le configure pour servir une erreur 404 avec le message

404 Introuvable - Nom d'hôte non reconnu

Ce serveur n'est pas configuré pour servir des documents pour foo.example.com

Ensuite, je crée des hôtes virtuels spécifiques pour chacun de mes sites qui fournissent le contenu correct lorsque le nom d'hôte est correct.

Voici ma configuration d'hôte virtuel par défaut qui utilise 404.pl pour traiter les demandes toutes:

<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>

Et voici le script 404.pl qui imprime le message "nom d'hôte non reconnu", ainsi que les redirections pour les noms de domaine presque corrects mais non canoniques:

#!/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

Un autre instrument approprié pour traiter avec les sites Black Hat qui volent le contenu: ( RL canoniques ):

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

Les criminels peuvent créer une copie non autorisée de votre site et l'héberger sur leurs propres serveurs afin de tirer le meilleur parti de votre contenu (via Web scraping ). L'utilisation de la balise canonique est utile, sauf si le criminel modifie les liens pour ne pointer que vers son propre domaine. Je ne sais pas comment le combattre dans ce cas.

1
gavenkoa