Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
anthony_messe:ansible:roles [2018/06/01 09:13] Anthony Messé |
anthony_messe:ansible:roles [2018/06/14 13:02] (Version actuelle) Anthony Messé |
||
|---|---|---|---|
| Ligne 62: | Ligne 62: | ||
| │ └── main.yml | │ └── main.yml | ||
| ├── update_upgrade | ├── update_upgrade | ||
| + | │ ├── files | ||
| + | │ │ └── sources.list | ||
| │ └── tasks | │ └── tasks | ||
| │ └── main.yml | │ └── main.yml | ||
| Ligne 212: | Ligne 214: | ||
| #Vous pouvez décommenter les paramètres suivants pour utiliser l'authentification | #Vous pouvez décommenter les paramètres suivants pour utiliser l'authentification | ||
| - | #wpa=2 | + | wpa=2 |
| - | #wpa_passphrase=votre_mot_de_passe | + | wpa_passphrase=votre_mot_de_passe |
| - | #wpa_key_mgmt=WPA-PSK | + | wpa_key_mgmt=WPA-PSK |
| - | #wpa_pairwise=CCMP | + | wpa_pairwise=CCMP |
| - | #rsn_pairwise=CCMP | + | rsn_pairwise=CCMP |
| #Pour nous permettre d'obtenir la liste des stations connectées | #Pour nous permettre d'obtenir la liste des stations connectées | ||
| Ligne 251: | Ligne 253: | ||
| src: "{{ role_path }}/files/torrc" | src: "{{ role_path }}/files/torrc" | ||
| dest: /etc/tor/torrc | dest: /etc/tor/torrc | ||
| + | </code> | ||
| + | |||
| + | Dans le dossier /tor/files/ créez un fichier torrc et collez-y le contenu suivant | ||
| + | |||
| + | <code> | ||
| + | #Adresse virtualle de Tor (voir le man pour plus d'infos) | ||
| + | VirtualAddrNetworkIPv4 10.192.0.0/10 | ||
| + | #Pour résoudre les noms de domaine via Tor | ||
| + | AutomapHostsOnResolve 1 | ||
| + | #Port vers lequel on va rediriger le trafic | ||
| + | TransPort 10.255.255.254:9040 | ||
| + | #Port vers lequel on va rediriger les requêtes DNS | ||
| + | DNSPort 10.255.255.254:5353 | ||
| </code> | </code> | ||
| Ligne 276: | Ligne 291: | ||
| copy: | copy: | ||
| src: "{{ role_path }}/files/dnsmasq.conf" | src: "{{ role_path }}/files/dnsmasq.conf" | ||
| - | dest: /etc/dnsmasq/dnsmasq.conf | + | dest: /etc/dnsmasq.conf |
| </code> | </code> | ||
| + | |||
| + | Dans le dossier /dnsmasq/files/ créez un fichier dnsmasq.conf et collez-y le contenu suivant | ||
| + | |||
| + | <code> | ||
| + | #L'interface wifi sur laquelle on va distribuer les adresses | ||
| + | interface=wlx503eaa3d7d6c | ||
| + | #Les interfaces sur lesquelles on ne distribue pas d'adresses | ||
| + | no-dhcp-interface=lo, eth0 | ||
| + | #La plage d'adresses distribuées | ||
| + | dhcp-range=10.0.0.10,10.255.255.250,255.0.0.0,12h | ||
| + | #On désactive le serveur DNS de dnsmasq (activé par défaut) | ||
| + | port = 0 | ||
| + | #On active les logs | ||
| + | log-queries | ||
| + | log-facility=/var/log/syslog | ||
| + | #On donne le serveur DNS (quelle que soit l'adresse, les requêtes seront redirigées vers Tor) | ||
| + | dhcp-option=6,10.255.255.254 | ||
| + | </code> | ||
| === iptables === | === iptables === | ||
| Ligne 287: | Ligne 320: | ||
| src: "{{ role_path }}/files/iptables_access_point.sh" | src: "{{ role_path }}/files/iptables_access_point.sh" | ||
| dest: /usr/local/sbin/iptables_access_point.sh | dest: /usr/local/sbin/iptables_access_point.sh | ||
| + | owner: root | ||
| + | group: root | ||
| + | mode: 01777 | ||
| - name: Création du fichier service iptables | - name: Création du fichier service iptables | ||
| copy: | copy: | ||
| Ligne 293: | Ligne 329: | ||
| - name: Activation du service iptables | - name: Activation du service iptables | ||
| systemd: | systemd: | ||
| - | name: iptables | + | name: iptables_access_point |
| enabled: yes | enabled: yes | ||
| masked: no | masked: no | ||
| + | </code> | ||
| + | |||
| + | Dans le dossier /iptables/files/ créez un fichier iptables_access_point.sh et collez-y le contenu suivant | ||
| + | |||
| + | <code> | ||
| + | #!/bin/sh | ||
| + | #Variables | ||
| + | _trans_port="9040" | ||
| + | _dns_port="5353" | ||
| + | _interface_wifi="wlx503eaa3d7d6c" | ||
| + | _tor_uid=`id -u debian-tor` | ||
| + | _router="10.255.255.254" #Adresse du router (adresse de la machine ayant le point d'accès wifi) | ||
| + | _reseau_wifi="10.0.0.0/8" | ||
| + | _interface_phy="eth0" | ||
| + | |||
| + | #On efface toutes les règles iptables | ||
| + | iptables -F | ||
| + | iptables -X | ||
| + | iptables -t nat -F | ||
| + | iptables -t nat -X | ||
| + | iptables -t mangle -F | ||
| + | iptables -t mangle -X | ||
| + | |||
| + | #On met les policy | ||
| + | iptables -P INPUT DROP | ||
| + | iptables -P FORWARD DROP | ||
| + | iptables -P OUTPUT DROP | ||
| + | ip6tables -P INPUT DROP | ||
| + | ip6tables -P FORWARD DROP | ||
| + | ip6tables -P OUTPUT DROP | ||
| + | #On redirige le traffic TCP vers Tor | ||
| + | iptables -t nat -A PREROUTING -i $_interface_wifi -p tcp --syn -j REDIRECT --to-ports $_trans_port | ||
| + | #On redirige les requêtes DNS vers Tor | ||
| + | iptables -t nat -A PREROUTING -i $_interface_wifi -p udp --dport 53 -j REDIRECT --to-ports $_dns_port | ||
| + | |||
| + | #On log le trafic entrant | ||
| + | iptables -A INPUT -i $_interface_wifi -m state --state NEW -j LOG --log-prefix "New input connection: " | ||
| + | #On autorise les requêtes DHCP à entrer | ||
| + | iptables -A INPUT -i $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT | ||
| + | #On autorise les connexions déja établies | ||
| + | iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT | ||
| + | #On autorise la boucle locale | ||
| + | iptables -A INPUT -d $_router -i $_interface_wifi -p udp -m udp --dport $_dns_port -j ACCEPT | ||
| + | #On autorise les requêtes vers le routeur pour le traffic TCP | ||
| + | iptables -A INPUT -d $_router -i $_interface_wifi -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT | ||
| + | #On autorise le trafic vers eth0 | ||
| + | iptables -A INPUT -i $_interface_phy -j ACCEPT | ||
| + | ip6tables -A INPUT -i $_interface_phy -j ACCEPT | ||
| + | |||
| + | #On drop le paquet si il n'est pas dans l état new, established, ou related | ||
| + | iptables -A OUTPUT -m state --state INVALID -j DROP | ||
| + | #On autorise ls connexions déja établies | ||
| + | iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT | ||
| + | #On autorise les requêtes DHCP à sortir | ||
| + | iptables -A OUTPUT -o $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT | ||
| + | #On autorise le traffic issu de la carte | ||
| + | iptables -A OUTPUT -o $_interface_phy -j ACCEPT | ||
| + | ip6tables -A OUTPUT -o $_interface_phy -j ACCEPT | ||
| + | </code> | ||
| + | |||
| + | Dans le dossier /iptables/files/ créez un fichier iptables_access_point.service et collez-y le contenu suivant | ||
| + | |||
| + | <code> | ||
| + | [Unit] | ||
| + | Description=Setup firewall | ||
| + | After=network.target local-fs.target | ||
| + | |||
| + | [Service] | ||
| + | RemainAfterExit=true | ||
| + | ExecStart=/usr/local/sbin/iptables_access_point.sh | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | |||
| </code> | </code> | ||
| Ligne 324: | Ligne 434: | ||
| dest: /etc/rsyslog.conf | dest: /etc/rsyslog.conf | ||
| </code> | </code> | ||
| + | |||
| + | Dans le dossier /logs/files/ créez un fichier rsyslog.conf et collez-y le contenu suivant | ||
| + | |||
| + | <code> | ||
| + | module(load="imuxsock") # provides support for local system logging | ||
| + | module(load="imklog") # provides kernel logging support | ||
| + | |||
| + | # Use traditional timestamp format. | ||
| + | $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat | ||
| + | |||
| + | # Set the default permissions for all log files. | ||
| + | $FileOwner root | ||
| + | $FileGroup adm | ||
| + | $FileCreateMode 0640 | ||
| + | $DirCreateMode 0755 | ||
| + | $Umask 0022 | ||
| + | |||
| + | # Where to place spool and state files | ||
| + | $WorkDirectory /var/spool/rsyslog | ||
| + | |||
| + | #On charge le module relp (output) | ||
| + | module(load="omrelp") | ||
| + | #On log avec le protocole relp vers une adresse et un port précis | ||
| + | action(type="omrelp" target="192.168.16.11" port="20514" tls="on") | ||
| + | </code> | ||
| + | |||
| === ntp === | === ntp === | ||
| Ligne 353: | Ligne 489: | ||
| </code> | </code> | ||
| + | Dans le dossier /update_upgrade/files/ créez un fichier sources.list et collez-y le contenu suivant | ||
| + | |||
| + | <code> | ||
| + | deb http://deb.debian.org/debian stretch main contrib non-free | ||
| + | deb-src http://deb.debian.org/debian stretch main contrib non-free | ||
| + | |||
| + | deb http://deb.debian.org/debian stretch-updates main contrib non-free | ||
| + | deb-src http://deb.debian.org/debian stretch-updates main contrib non-free | ||
| + | |||
| + | deb http://security.debian.org/debian-security/ stretch/updates main contrib non-free | ||
| + | deb-src http://security.debian.org/debian-security/ stretch/updates main contrib non-free | ||
| + | </code> | ||
| Puis comme précédemment, on exécute le fichier ansible | Puis comme précédemment, on exécute le fichier ansible | ||
| ansible-playbook access_point.yml | ansible-playbook access_point.yml | ||