_| | |
__| __ | __| _ _ | __|
__ | | __|_____| | ( | ( | |__
____/ .__/ _| __|___/ ___/ _|____/
_|
Des outils simples pour garder les enregistrements SPF TXT rangement afin de combattre 10 recherches DNS maximales.
Le nom de domaine SPF-Tools.eu.org est utilisé pour les tests maintenant.
SPF-TOOLS Étant donné que la version SPF-TOOLS / SPF-TOOLS @ F4F51F7 ne publie pas seulement les enregistrements ip4
et ip6
, mais conservez également ptr
et exists
d'origine.
Votre enregistrement TXT d'origine qui provoque plus de 10 recherches DNS doit être enregistré comme un enregistrement TXT de sous-domaine autrement inutilisé (par exemple spf-orig.spf-tools.eu.org
).
Créer un fichier de configuration:
cat > ~/.spf-toolsrc <<EOF
DOMAIN=spf-tools.eu.org
ORIG_SPF=spf-orig.spf-tools.eu.org
DESPF_SKIP_DOMAINS=_spf.domain1.com:spf.domain2.org
DNS_TIMEOUT=5
DNS_SERVER=
EOF
Maintenant, appelez simplement l'un des scripts décrit ci-dessous.
Usage: despf.sh [OPTION]... [DOMAIN]...
Decompose SPF records of a DOMAIN. Optionaly can
sort and unique them.
DOMAIN may be specified in an environment variable.
Available options:
-s DOMAIN[:DOMAIN...] skip domains, i.e. leave include
without decomposition
-t N set DNS timeout to N seconds
-h display this help and exit
despf.sh
est un outil qui résout tous les blocs ip4
et ip6
trouvés dans n'importe quel sous-domaine SPF inclus. Il imprime tous ces blocs sort(1)
ED et uniq(1)
ED à STDOUT, un par ligne. Une autre sortie ( Getting ...
) est sur STDERR.
Exemple:
./despf.sh google.com
Getting _spf.google.com
Getting _netblocks.google.com
Getting _netblocks2.google.com
Getting _netblocks3.google.com
ip4:173.194.0.0/16
ip4:74.125.0.0/16
...
ip6:2a00:1450:4000::/36
ip6:2c0f:fb50:4000::/36
La variable de configuration DNS_TIMEOUT
définit le nombre de secondes pour la commande host -W SECS
(la même chose que l'option -t
, voir l'aide).
L'outil mkblocks.sh
est destiné à analyser une liste de blocs produits par Despf.sh et préparer le contenu des enregistrements TXT qui s'adaptent tous dans un paquet UDP, en divisant en plus d'enregistrements TXT si nécessaire.
Un enregistrement TXT par ligne de sortie standard.
./despf.sh | ./normalize.sh | ./simplify.sh | ./mkblocks.sh
Les enregistrements SPF actuels peuvent être vérifiés en exécutant compare.sh
. Si les enregistrements TXT ont besoin d'une mise à jour, il exécutera automatiquement les autres outils pour imprimer ou copier dans PasteBuffer les nouveaux enregistrements TXT dans l'ordre inverse.
La meilleure pratique consiste à mettre ces lignes dans DNS en commençant par la dernière. C'est pourquoi xsel.sh
inverse l'entrée recueillie sur mkblocks.sh
.
Le dernier enregistrement à mettre à jour est l'enregistrement de Root Domain qui contient juste un inclure. Il doit être toujours mis à jour comme le dernier et le préfixe alterné entre les préfixes spf
et _spf
lors du changement de enregistrements, donc les enregistrements sont tous cohérents jusqu'à ce que la racine soit modifiée.
Afin de semi-automatisé la tâche de mise à jour des enregistrements, tuyau la sortie de mkblocks.sh
à xsel.sh
Ce script s'occupe des gammes CIDR correctes. Pour le moment, seulement IPv4.
Exemple:
$ ./normalize.sh <<EOF
> ip4:207.68.169.173/30
> ip4:207.68.169.175/30
> ip4:65.55.238.129/26
> EOF
ip4:207.68.169.172/30
ip4:207.68.169.172/30
ip4:65.55.238.128/26
Ce script élimine les adresses IPv4 individuelles qui sont déjà contenues dans les plages CIDR.
$ ./simplify.sh <<EOF
> ip4:192.168.0.1
> ip4:192.168.0.0/24
> EOF
ip4:192.168.0.0/24
Dépendances: jq, awk, sed, grep
Script pour mettre à jour les enregistrements SPF TXT préexistants pour un domaine en fonction du format d'entrée dans la zone DNS à l'aide de l'API de CloudFlare.
Pour utiliser ce script, le fichier .spf-toolsrc
dans $HOME
Directory doit contenir une définition de variable TOKEN
qui est ensuite utilisée pour se connecter à l'API CloudFlare. Le fichier doit également contenir des variables DOMAIN
et ORIG_SPF
qui représentent le domaine SPF cible (par exemple spf-tools.eu.org
) et l'enregistrement SPF d'origine avec incluse (par exemple spf-orig.spf-tools.eu.org
) afin d'utiliser pour utiliser runspftools.sh
sans modifier le script.
Le script est écrit contre V4 de https://api.cloudflare.com/
Les seules autorisations nécessaires pour un jeton API personnalisé sont:
Usage:
./despf.sh | ./normalize.sh | ./simplify.sh | ./iprange.sh | ./cloudflare.sh
Dépendances: jq, aws, awk, sed, grep
Usage: route53.sh [OPTION]... [HOSTED_ZONE_ID]
Script to update pre-existing TXT SPF records for
a domain according to the input in DNS zone format.
Available options:
-t TTL set Time To Live for DNS records
-a TXT RECORD set aditional TXT record to domain (can be used multiple times)
Default values:
TTL = 300
Script pour mettre à jour les enregistrements SPF TXT préexistants pour un domaine en fonction du format d'entrée dans la zone DNS.
Le CLI AWS peut être configuré à l'aide de ~/.aws/credentials
ou à l'aide de variables d'environnement: AWS_ACCESS_KEY_ID
et AWS_SECRET_ACCESS_KEY
(trouvez plus de détails dans la configuration de la documentation AWS CLI.
Exemple:
./despf.sh | ./simplify.sh | ./mkblocks.sh |
./route53.sh -a "google-site-verification=deadbeef" DEADBEEF
Dépendances supplémentaires: iprange
Ce script optimise la sortie du bloc d'adresse IPv4 (similaire à, mais plus que simplify.sh
car il peut rejoindre plusieurs réseaux en un plus grand).
Usage:
./despf.sh | ./iprange.sh
Exemple:
$ ./despf.sh cont.spf-tools.eu.org
ip4:13.111.0.0/24
ip4:13.111.1.0/24
ip4:13.111.2.0/24
ip4:13.111.3.0/24
$ ./despf.sh cont.spf-tools.eu.org | ./iprange.sh
ip4:13.111.0.0/22
./despf.sh | ./normalize.sh | ./simplify.sh | ./iprange.sh
| ./mkblocks.sh | ./xsel.sh
Alors que nous utilisons avec succès un domaine EU.org gratuit, nous sommes fiers de passer le mot: Domaines libres: http://www.eu.org/
Copyright 2015-2019 spf-tools team (see AUTHORS)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.