C'est bien ce que je pensais. Je me doutait que faire un doublon de variable dans un fichier de conf pourrait poser problème, même si je suppose que pour la plupart ces fichiers sont éxecuté comme des scripts.
PS : je parlais des scripts de configuration en général mais là où je butait surtout c'est ceux placés dans /etc/ssh/sshd.conf /etc/denyhosts.conf et d'autre même type.
Pour ta ligne de commande, je suis volontier preneur mais je ne connais pas sed et je n'utilise grep que via les pipes. Je voyais plutôt quelque chose du genre (non testé et surement faux) :
for x in 'cat fichier'doligne=$x|grep "ancienparametre"if[$ligne != -eq 0]then$ligne="nouveau parmètre=valeur"fiecho$ligne >> nvfichier
rm ancienfichier
cp nvfichier ancienfichier
rm nvfichier
done
je demandais pour l'ip source. J'ai eu un doute autorisant tout le traffic local puissant les trames internet passent par l'ip interne de la box… mais non, ca doit être une question de couche vu que le serveur voit bien les ip internet.
Sinon, il n'y a plus qu'à faire un script de routine pour ajouter les nouvelles ip de host.deny.
Et voila!
##*******************************************************************************************# Configuration du script FW serveur## Ip localeIP_LOCAL="192.168.1.100"## Réseau localRESEAU_LOCAL="192.168.1.0/24"## Interface réseau autoriséeINTERFACE="eth0"## Port SSHPORT_SSH="22"## Port traffic pour la passerelle internet via sshPORT_PASSERELLE="80,443"## Adresse DYNDNSDYNDNS="dyndns.org"###*******************************************************************************************# Suppression de toutes les chaînes pré-définies
iptables -t filter -F
iptables -t nat -F
ip6tables -t filter -F
# Suppression de toutes les chaînes utilisateur
iptables -t filter -X
iptables -t nat -X
ip6tables -t filter -X
# Politique de DROP par défaut
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
# Désactivation IPv6 (DROP)
ip6tables -t filter -P INPUT DROP
ip6tables -t filter -P OUTPUT DROP
ip6tables -t filter -P FORWARD DROP
# Déclaration des chaînes pour le log des DROPS
iptables -N LOGGING_IN
iptables -N LOGGING_OUT
iptables -N LOGGING_DDOS
iptables -N LOGGING_INVALID
iptables -A INPUT -m conntrack --ctstate INVALID -j LOGGING_INVALID
# Pour le debug#iptables -t filter -A INPUT -j ACCEPT#iptables -t filter -A OUTPUT -j ACCEPT# Anti-DDOS
iptables -t filter -A INPUT -m conntrack --ctstate NEW -m recent --set
iptables -t filter -A INPUT -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 10 -j LOGGING_DDOS
# DROP du multi-cast et UPnP
iptables -t filter -A INPUT -d 224.0.0.1 -j DROP
iptables -t filter -A OUTPUT -d 224.0.0.1 -j DROP
iptables -t filter -A INPUT -d 239.255.255.250 -j DROP
iptables -t filter -A OUTPUT -d 239.255.255.250 -j DROP
# DROP des IPs bloquées dans hosts.deny (avec denyhosts)#---------------------------------------------------------------------# Récupération des IPsfor x in `cat /etc/hosts.deny | grep -v ^# | cut -d ":" -f 2`;doecho"$x" >> blockip_iptables
done## Lecture des IPs et ajout des règles de bloquageif[ -f blockip_iptables ]thenwhileread BLOCK_IP
do
iptables -t filter -A INPUT -s $BLOCK_IP -j LOGGING_IN
iptables -t filter -A OUTPUT -d $BLOCK_IP -j LOGGING_OUT
done < blockip_iptables
rm blockip_iptables
fi#---------------------------------------------------------------------# Autorise le loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
# Autorise toutes les connexions sortantent en réseau locale
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -s $RESEAU_LOCAL -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise les envois vers dyndns.org pour le DNS Dynamic
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -s $DYNDNS -p tcp --sport 80 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $DYNDNS -p tcp --dport 80 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise le DNS
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -s $RESEAU_LOCAL -p udp --sport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p udp --dport 53 -j ACCEPT
# Autorise l'initialisation et la réception SSH# NEW : pour les deux car initialisation de l'exterieur comme de l'intérieur
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -p tcp --sport $PORT_SSH -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp --dport $PORT_SSH -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
# APPEL VNC direct ou via SSH, sur le reseau local
iptables -t filter -A INPUT -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p tcp --sport 5900 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p tcp --dport 5900 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p udp --sport 5900 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p udp --dport 5900 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise le traffic pour la passerelle internet via ssh
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -p tcp -m multiport --sports $PORT_PASSERELLE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp -m multiport --dports $PORT_PASSERELLE -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -p udp -m multiport --sports $PORT_PASSERELLE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p udp -m multiport --dports $PORT_PASSERELLE -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise tout ICMP sauf Redirection & divers
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 1 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 1 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 2 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 2 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 15 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 15 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 16 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 16 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 17 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 17 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 18 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 18 -j ACCEPT
# LOG DROP
iptables -A INPUT -j LOGGING_IN
iptables -A OUTPUT -j LOGGING_OUT
iptables -A LOGGING_IN -j LOG --log-prefix "IPTABLES-DROPPED-IN: " -m limit --limit 3/min --limit-burst 3 --log-level 4
iptables -A LOGGING_OUT -j LOG --log-prefix "IPTABLES-DROPPED-OUT: " -m limit --limit 3/min --limit-burst 3 --log-level 4
iptables -A LOGGING_DDOS -j LOG --log-prefix "IPTABLES-DROPPED-DDOS: " -m limit --limit 3/min --limit-burst 3 --log-level 4
iptables -A LOGGING_INVALID -j LOG --log-prefix "IPTABLES-DROPPED-INVALID: " -m limit --limit 3/min --limit-burst 3 --log-level 4
iptables -A LOGGING_IN -j DROP
iptables -A LOGGING_OUT -j DROP
iptables -A LOGGING_DDOS -j DROP
iptables -A LOGGING_INVALID -j DROP
# Sauvegarde
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Oui, j'ai lu que state était obselète mais qu'il appelait en réalité conntack et que si on n'avais pas besoin d'option spéciale de conntrack, on pouvait simplifier par state.
Pour les logs, effectivement j'ai retiré la limit pour faire un DEBUG, le temps de résoudre mes problème de bloquage.
Et concernant l'anti DDOS, oui il y a beaucoup mieux mais j'ai fait au plus simple. Pas grave si mon serveur est inccessible un certain temps, j'ai déjà d'autre attack SSH à régler déjà…
Non je ne suis pas une bille en réseau mais j'ignorait ces notions de ports internes à l'ordinateurs n'ayant eu qu'à ce jour à configurer des firewalls simplistes.
Pour info, mon fichier de config:
##*******************************************************************************************# Configuration du script FW serveur## Ip localeIP_LOCAL="192.168.1.100"## Réseau localRESEAU_LOCAL="192.168.1.0/24"## Interface réseau autoriséeINTERFACE="eth0"## Port SSHPORT_SSH="22"## Port traffic pour la passerelle internet via sshPORT_PASSERELLE="80,443"## Adresse DYNDNSDYNDNS="dyndns.org"###*******************************************************************************************# Suppression de toutes les chaînes pré-définies
iptables -t filter -F
iptables -t nat -F
ip6tables -t filter -F
# Suppression de toutes les chaînes utilisateur
iptables -t filter -X
iptables -t nat -X
ip6tables -t filter -X
# Politique de DROP par défaut
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
# Désactivation IPv6 (DROP)
ip6tables -t filter -P INPUT DROP
ip6tables -t filter -P OUTPUT DROP
ip6tables -t filter -P FORWARD DROP
# Déclaration des chaînes pour le log des DROPS
iptables -N LOGGING_IN
iptables -N LOGGING_OUT
iptables -N LOGACCEPT
# Pour le DEBUG#iptables -t filter -A INPUT -j LOGACCEPT#iptables -t filter -A OUTPUT -j LOGACCEPT# Anti-DDOS
iptables -t filter -A INPUT -m state --state NEW -m recent --set
iptables -t filter -A INPUT -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j LOGGING_OUT
# DROP du multi-cast et UPnP
iptables -t filter -A INPUT -p all -d 224.0.0.1 -j DROP
iptables -t filter -A OUTPUT -p all -d 224.0.0.1 -j DROP
iptables -t filter -A INPUT -p all -d 239.255.255.250 -j DROP
iptables -t filter -A OUTPUT -p all -d 239.255.255.250 -j DROP
# DROP des IPs bloquées dans hosts.deny (avec denyhosts)#---------------------------------------------------------------------# Récupération des IPsfor x in `cat /etc/hosts.deny | grep -v ^# | cut -d ":" -f 2`;doecho"$x" >> blockip_iptables
done## Lecture des IPs et ajout des règles de bloquageif[ -f blockip_iptables ]thenwhileread BLOCK_IP
do
iptables -t filter -A INPUT -s $BLOCK_IP -j LOGGING_IN
iptables -t filter -A OUTPUT -d $BLOCK_IP -j LOGGING_OUT
done < blockip_iptables
rm blockip_iptables
fi#---------------------------------------------------------------------# Autorise le loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
# Autorise toutes les connexions en réseau locale et conserve celles-déjà etablies# **** [[[[ A confirmer si ca fonctionne et si c'est sécuritaire ]]]] ****
iptables -t filter -A INPUT -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise les envois vers dyndns.org pour le DNS Dynamic
iptables -t filter -A INPUT -i $INTERFACE -s $DYNDNS -d $IP_LOCAL -p tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $DYNDNS -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise le DNS
iptables -t filter -A INPUT -i $INTERFACE -p udp --sport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -p udp --dport 53 -j ACCEPT
# Autorise l'initialisation et la réception SSH# NEW : pour les deux car initialisation de l'exterieur comme de l'intérieur
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -p tcp --dport $PORT_SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp --sport $PORT_SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# VNC via SSH
iptables -t filter -A INPUT -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p tcp --sport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p tcp --dport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p udp --sport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p udp --dport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise le traffic pour la passerelle internet via ssh
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -p tcp -m multiport --sports $PORT_PASSERELLE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp -m multiport --dports $PORT_PASSERELLE -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -d $IP_LOCAL -p udp -m multiport --sports $PORT_PASSERELLE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p udp -m multiport --dports $PORT_PASSERELLE -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# Autorise tout ICMP sauf Redirection & divers
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 1 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 1 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 2 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 2 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 15 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 15 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 16 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 16 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 17 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 17 -j ACCEPT
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 18 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 18 -j ACCEPT
# LOG DROP
iptables -A INPUT -j LOGGING_IN
iptables -A OUTPUT -j LOGGING_OUT
iptables -A LOGGING_IN -j LOG --log-prefix "IPTABLES-DROPPED-IN: " --log-level 4
iptables -A LOGGING_OUT -j LOG --log-prefix "IPTABLES-DROPPED-OUT: " --log-level 4
iptables -A LOGGING_IN -j DROP
iptables -A LOGGING_OUT -j DROP
# Pour DEBUG#iptables -A LOGACCEPT -j LOG#iptables -A LOGACCEPT -j ACCEPT
[^] # Re: for
Posté par Ovopack . En réponse au message [Résolu] Fichiers de configuration daemon. Évalué à 0.
Je crois avaoir compris :
grep '=' fichier.conf
Récupère les occurences paramètre= du fichier conf
&& sed -i 's/=.*/=/' fichier.conf
Envoie à sed avec backup et substitu ancienparamètre=.* par le nouveau
|| echo '=' >> fichier.conf
En cas d'erreur, on crée le fichier.
Je passe en résolu.
Merci à tous!
# for
Posté par Ovopack . En réponse au message [Résolu] Fichiers de configuration daemon. Évalué à 1. Dernière modification le 14 octobre 2014 à 22:39.
C'est bien ce que je pensais. Je me doutait que faire un doublon de variable dans un fichier de conf pourrait poser problème, même si je suppose que pour la plupart ces fichiers sont éxecuté comme des scripts.
PS : je parlais des scripts de configuration en général mais là où je butait surtout c'est ceux placés dans /etc/ssh/sshd.conf /etc/denyhosts.conf et d'autre même type.
Pour ta ligne de commande, je suis volontier preneur mais je ne connais pas sed et je n'utilise grep que via les pipes. Je voyais plutôt quelque chose du genre (non testé et surement faux) :
Est-ce que tu peux détailler la commande?
Merci pour les réponses!
[^] # Re: firmware-ralink
Posté par Ovopack . En réponse au message quelle carte wifi/bluetooth choisir pour un hp probook 450 g0 ?. Évalué à 3.
Pour les vieux noyaux : https://wiki.debian.org/rt3290
# firmware-ralink
Posté par Ovopack . En réponse au message quelle carte wifi/bluetooth choisir pour un hp probook 450 g0 ?. Évalué à 3.
J'avais une Ralink avant.
Ce packet ne pourrait-il pas t'aider? : firmware-ralink (non-free). Cela à fonctionner pour moi avec network-manager.
Par contre, j'ai eu un conflit que j'ai résolut en faisant un modprobe xxxxxx (je ne sais plus lequel mais j'ai trouvé dans la doc).
++
[^] # Re: rep
Posté par Ovopack . En réponse au message [Résolu] Pourquoi les ports internes changent-ils?. Évalué à 1.
je demandais pour l'ip source. J'ai eu un doute autorisant tout le traffic local puissant les trames internet passent par l'ip interne de la box… mais non, ca doit être une question de couche vu que le serveur voit bien les ip internet.
Sinon, il n'y a plus qu'à faire un script de routine pour ajouter les nouvelles ip de host.deny.
Et voila!
merci à tous
[^] # Re: Tuto réseau & iptables
Posté par Ovopack . En réponse au message [Résolu] Pourquoi les ports internes changent-ils?. Évalué à 1.
MDR!!!! la coincidence!!
J'étais justement sur ton site les deux derniers jours. Super en passant!
J'ai lu pour le moment uniquement les 2-3 pages sur la sécurité mais je comptais bien tout lire :P
[^] # Re: rep
Posté par Ovopack . En réponse au message [Résolu] Pourquoi les ports internes changent-ils?. Évalué à 1.
non c'est bon trouvé! :P
# rep
Posté par Ovopack . En réponse au message [Résolu] Pourquoi les ports internes changent-ils?. Évalué à 1.
Merci Marotte pour les améliorations. Je vais regarder ca de près.
Dernière question :
Les packets entrant est-ce qu'ils ont l'ip de ma box ou l'ip des sites webs?
# rep
Posté par Ovopack . En réponse au message [Résolu] Pourquoi les ports internes changent-ils?. Évalué à 1.
Oui, j'ai lu que state était obselète mais qu'il appelait en réalité conntack et que si on n'avais pas besoin d'option spéciale de conntrack, on pouvait simplifier par state.
Pour les logs, effectivement j'ai retiré la limit pour faire un DEBUG, le temps de résoudre mes problème de bloquage.
Et concernant l'anti DDOS, oui il y a beaucoup mieux mais j'ai fait au plus simple. Pas grave si mon serveur est inccessible un certain temps, j'ai déjà d'autre attack SSH à régler déjà…
# rep
Posté par Ovopack . En réponse au message [Résolu] Pourquoi les ports internes changent-ils?. Évalué à -2. Dernière modification le 02 octobre 2014 à 18:49.
Merci pour les réponses.
Non je ne suis pas une bille en réseau mais j'ignorait ces notions de ports internes à l'ordinateurs n'ayant eu qu'à ce jour à configurer des firewalls simplistes.
Pour info, mon fichier de config:
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6