Outils pour utilisateurs

Outils du site


anthony_messe:ansible:playbook

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
anthony_messe:ansible:playbook [2018/05/16 14:11]
Anthony Messé
anthony_messe:ansible:playbook [2018/05/28 16:03] (Version actuelle)
Anthony Messé
Ligne 1: Ligne 1:
-Lien vers l'[[anthony_messe:​anthony_messe|accueil]]+Lien vers [[anthony_messe:​anthony_messe|l'accueil]]
  
 ====== Utiliser les playbooks dans Ansible ====== ====== Utiliser les playbooks dans Ansible ======
Ligne 30: Ligne 30:
      ​ansible_become:​ yes      ​ansible_become:​ yes
   tasks:   tasks:
-  ​- name: Suppression du fichier sources.list +- name: Suppression du fichier sources.list 
-    file: +  file: 
-      path: /​etc/​apt/​sources.list +    path: /​etc/​apt/​sources.list 
-      state: absent +    state: absent 
-  - name: Création du fichier sources.list +- name: Création du fichier sources.list 
-    copy: +  copy: 
-      content: "deb http://​deb.debian.org/​debian stretch main contrib non-free\ndeb-src http://​deb.debian.org/​debian stretch main contrib non-free\n\ndeb http://​deb.debian.org/​debian stretch-updates main contrib non-free\ndeb-src http://​deb.debian.org/​debian stretch-updates main contrib non-free\n\ndeb http://​security.debian.org/​debian-security/​ stretch/​updates main contrib non-free\ndeb-src http://​security.debian.org/​debian-security/​ stretch/​updates main contrib non-free"​ +    content: "deb http://​deb.debian.org/​debian stretch main contrib non-free\ndeb-src http://​deb.debian.org/​debian stretch main contrib non-free\n\ndeb http://​deb.debian.org/​debian stretch-updates main contrib non-free\ndeb-src http://​deb.debian.org/​debian stretch-updates main contrib non-free\n\ndeb http://​security.debian.org/​debian-security/​ stretch/​updates main contrib non-free\ndeb-src http://​security.debian.org/​debian-security/​ stretch/​updates main contrib non-free"​ 
-      dest: /​etc/​apt/​sources.list +    dest: /​etc/​apt/​sources.list 
-      force: no +    force: no 
-  - name: Installation du paquet aptitude +- name: Installation du paquet aptitude 
-    apt: pkg=aptitude state=installed update_cache=true +  apt: pkg=aptitude state=installed update_cache=true 
-  - name: Mise à jour de la liste des paquets +- name: Mise à jour de la liste des paquets 
-    apt: update_cache=yes +  apt: update_cache=yes 
-  - name: Mise à jour des paquets +- name: Mise à jour des paquets 
-    apt: upgrade=yes +  apt: upgrade=yes 
-  - name: Installation du paquet ​wireless-tools +- name: Installation du paquet ​ntp 
-    apt: pkg=wireless-tools ​state=installed update_cache=true +  apt: pkg=ntp state=installed update_cache=true 
-  - name: Installation du paquet ​ntp +- name: Installation du paquet ​wireless-tools 
-    apt: pkg=ntp state=installed update_cache=true +  apt: pkg=wireless-tools ​state=installed update_cache=true 
-  - name: Installation du paquet wpasupplicant +- name: Installation du paquet wpasupplicant 
-    apt: pkg=wpasupplicant state=installed update_cache=true +  apt: pkg=wpasupplicant state=installed update_cache=true 
-  - name: Installation du paquet hostapd +- name: Installation du paquet hostapd 
-    apt: pkg=hostapd state=installed update_cache=true +  apt: pkg=hostapd state=installed update_cache=true 
-  - name: Suppression du fichier de configuration /​etc/​hostapd/​hostapd.conf +- name: Suppression du fichier de configuration /​etc/​hostapd/​hostapd.conf 
-    file: +  file: 
-      path: /​etc/​hostapd/​hostapd.conf +    path: /​etc/​hostapd/​hostapd.conf 
-      state: absent +    state: absent 
-  - name: Création du fichier de configuration /​etc/​hostapd/​hostapd.conf +- name: Création du fichier de configuration /​etc/​hostapd/​hostapd.conf 
-    copy: +  copy: 
-      content: "#​L'​interface wifi\ninterface=wlx503eaa3d7d6c\n#Le SSID (le nom du point d'​accès wifi)\nssid=🐧 OPEN WIFI 🐧\n#Le driver wifi\ndriver=nl80211\n#On choisit le channel\nchannel=6\n#​Mettre le paramètre à \"​g\"​ pour la bande à 2.4Ghz, et à \"​a\"​ pour la bande à 5Ghz\nhw_mode=g\n\n#​Vous pouvez décommenter les paramètres suivants pour utiliser l'​authentification\n#wpa=2\n#​wpa_passphrase=votre_mot_de_passe\n#​wpa_key_mgmt=WPA-PSK\n#​wpa_pairwise=CCMP\n#​rsn_pairwise=CCMP\n\n#​On log le trafic\nlogger_syslog=-1\nlogger_syslog_level=1\nlogger_stdout=-1\nlogger_stdout_level=2\n\n#​ Levels (minimum value for logged events):​\n# ​ 0 = verbose debugging\n# ​ 1 = debugging\n# ​ 2 = informational messages\n# ​ 3 = notification\n# ​ 4 = warning\n# ​ -1 = all" +    content: "#​L'​interface wifi\ninterface={ wlan_interface }\n#Le SSID (le nom du point d'​accès wifi)\nssid=🐧 OPEN WIFI 🐧\n#Le driver wifi\ndriver= ​{ wifi_driver }\n#On choisit le channel\nchannel=6\n#​Mettre le paramètre à \"​g\"​ pour la bande à 2.4Ghz, et à \"​a\"​ pour la bande à 5Ghz\nhw_mode=g\n\n#​Vous pouvez décommenter les paramètres suivants pour utiliser l'​authentification\nwpa=2\nwpa_passphrase=votre_mot_de_passe\nwpa_key_mgmt=WPA-PSK\nwpa_pairwise=CCMP\nrsn_pairwise=CCMP\n\n#​On log le trafic\nlogger_syslog=-1\nlogger_syslog_level=1\nlogger_stdout=-1\nlogger_stdout_level=2\n\n#​ Levels (minimum value for logged events):​\n# ​ 0 = verbose debugging\n# ​ 1 = debugging\n# ​ 2 = informational messages\n# ​ 3 = notification\n# ​ 4 = warning\n# ​ -1 = all\n#Pour nous permettre d'​obtenir la liste des stations connectées\nctrl_interface=/​var/​run/​hostapd\nctrl_interface_group=0
-      dest: /​etc/​hostapd/​hostapd.conf +    dest: /​etc/​hostapd/​hostapd.conf 
-      force: no +    force: no 
-  - name: Install Tor +- name: Install Tor 
-    apt: pkg=tor state=installed update_cache=true +  apt: pkg=tor state=installed update_cache=true 
-  - name: Suppression du fichier de configuration /​etc/​tor/​torrc +- name: Suppression du fichier de configuration /​etc/​tor/​torrc 
-    file: +  file: 
-      path: /​etc/​tor/​torrc +    path: /​etc/​tor/​torrc 
-      state: absent +    state: absent 
-  - name: Création du fichier de configuration /​etc/​tor/​torrc +- name: Création du fichier de configuration /​etc/​tor/​torrc 
-    copy: +  copy: 
-      content: "#​Adresse virtualle de Tor (voir le man pour plus d'​infos)\nVirtualAddrNetworkIPv4 10.192.0.0/​10\n#Pour résoudre les noms de domaine via Tor\nAutomapHostsOnResolve 1\n#Port vers lequel on va rediriger le trafic\nTransPort 10.255.255.254:​9040\n#​Port vers lequel on va rediriger les requêtes DNS\nDNSPort 10.255.255.254:​5353"​ +    content: "#​Adresse virtualle de Tor (voir le man pour plus d'​infos)\nVirtualAddrNetworkIPv4 10.192.0.0/​10\n#​Port vers lequel on va rediriger le trafic\nTransPort 10.255.255.254:​9040\n#​Port vers lequel on va rediriger les requêtes DNS\nDNSPort 10.255.255.254:​5353"​ 
-      dest: /​etc/​tor/​torrc +    dest: /​etc/​tor/​torrc 
-      force: no +    force: no 
-  - name: Suppression du fichier de configuration /​etc/​network/​interfaces +- name: Suppression du fichier de configuration /​etc/​network/​interfaces 
-    file: +  file: 
-      path: /​etc/​network/​interfaces +    path: /​etc/​network/​interfaces 
-      state: absent +    state: absent 
-  - name: Création du fichier de configuration /​etc/​network/​interfaces +- name: Création du fichier de configuration /​etc/​network/​interfaces 
-    copy: +  copy: 
-      content: "​source /​etc/​network/​interfaces.d/​*\n#​ The loopback network interface\nauto lo\niface lo inet loopback\n\n#​ The primary network interface\nallow-hotplug eth0\niface eth0 inet dhcp\n# This is an autoconfigured IPv6 interface\niface eth0 inet6 auto"​ +    content: "​source /​etc/​network/​interfaces.d/​*\n#​ The loopback network interface\nauto lo\niface lo inet loopback\n\n#​ The primary network interface\nallow-hotplug eth0\niface eth0 inet dhcp\n# This is an autoconfigured IPv6 interface\niface eth0 inet6 auto"​ 
-      dest: /​etc/​network/​interfaces +    dest: /​etc/​network/​interfaces 
-      force: no +    force: no 
-  - name: Création du fichier de configuration /​etc/​network/​interfaces.d/​interface_ap +- name: Création du fichier de configuration /​etc/​network/​interfaces.d/​interface_ap 
-    copy: +  copy: 
-      content: "​auto ​wlx503eaa3d7d6c\niface ​wlx503eaa3d7d6c ​inet static\nhostapd /​etc/​hostapd/​hostapd.conf\naddress 10.255.255.254\nnetmask 255.0.0.0"​ +    content: "​auto ​{ wlan_interface }\niface ​{ wlan_interface } inet static\nhostapd /​etc/​hostapd/​hostapd.conf\naddress 10.255.255.254\nnetmask 255.0.0.0"​ 
-      dest: /​etc/​network/​interfaces.d/​interface_ap +    dest: /​etc/​network/​interfaces.d/​interface_ap 
-      force: no +    force: no 
-  - name: Installation du paquet dnsmasq +- name: Installation du paquet dnsmasq 
-    apt: pkg=dnsmasq state=installed update_cache=true +  apt: pkg=dnsmasq state=installed update_cache=true 
-  - name: Suppression du fichier de configuration /​etc/​dnsmasq.conf +- name: Suppression du fichier de configuration /​etc/​dnsmasq.conf 
-    file: +  file: 
-      path: /​etc/​dnsmasq.conf +    path: /​etc/​dnsmasq.conf 
-      state: absent +    state: absent 
-  - name: Création du fichier de configuration /​etc/​dnsmasq.conf +- name: Création du fichier de configuration /​etc/​dnsmasq.conf 
-    copy: +  copy: 
-       ​content: "​interface={{ wlan_interface ​ }}\nno-dhcp-interface=lo,​ eth0\ndhcp-range=10.255.255.10,​10.255.255.50,​255.0.0.0,​12h\nport = 0\ndhcp-option=6,​10.255.255.254\n"​ +     ​content: "#L'interface ​wifi sur laquelle on va distribuer les adresses\ninterface={ wlan_interface }\n#Les interfaces sur lesquelles on ne distribue pas d'​adresses\nno-dhcp-interface=lo,​ eth0\n#La plage d'​adresses distribuées\ndhcp-range=10.0.0.10,​10.255.255.250,​255.0.0.0,​12h\n#On désactive le serveur DNS de dnsmasq (activé par défaut)\nport = 0\n#On donne le serveur DNS (quelle que soit l'​adresse,​ les requêtes seront redirigées vers Tor)\ndhcp-option=6,​10.255.255.254\n#On active les logs\nlog-queries\nlog-facility=/​var/​log/​syslog
-       ​dest: /​etc/​dnsmasq.conf +     ​dest: /​etc/​dnsmasq.conf 
-       ​force: no +     ​force: no 
-  - name: Création du script iptables +- name: Création du script iptables 
-    copy: +  copy: 
-       ​content: "#​!/​bin/​sh\n#​Variables\n_trans_port=\"​9040\"​\n_dns_port=\"​5353\"​\n_interface_wifi=\"​wlx503eaa3d7d6c\"​\n_tor_uid=`id -u debian-tor`\n_router=\"​10.255.255.254\"​ #Adresse du router(adresse de la machine ayant le point d'​accès wifi)\n_reseau_wifi=\"​10.0.0.0/​8\"​\n_unreachable=\"​192.168.16.20/​24\"​ #Adresse dont on empêche l'​accès\n_eth0_ip=`ip -4 addr show eth0 | grep -oP \'​(?<​=inet\\s)\\d+(\\.\\d+){3}\'​`\n\n#​On efface toutes les règles iptables\niptables -F\niptables -X\niptables -t nat -F\niptables -t nat -X\niptables -t mangle -F\niptables -t mangle -X\n\n#On met les policy\niptables -P INPUT DROP\niptables -P FORWARD DROP\niptables -P OUTPUT DROP\nip6tables -P INPUT DROP\nip6tables -P FORWARD DROP\nip6tables -P OUTPUT DROP\n\n#On redirige le traffic TCP vers Tor\niptables -t nat -A PREROUTING -i $_interface_wifi -p tcp --syn -j REDIRECT --to-ports $_trans_port\n#​On redirige les requêtes DNS vers Tor\niptables -t nat -A PREROUTING -i $_interface_wifi -p udp --dport 53 -j REDIRECT --to-ports $_dns_port\n\n#​On log le trafic entrant\niptables -A INPUT -i $_interface_wifi -m state --state NEW -j LOG --log-prefix \"New input connection: \"​\n#​On autorise les requêtes DHCP à entrer\niptables -A INPUT -i $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT\n#On autorise les connexion SSH\niptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -j ACCEPT\n#On autorise les connexions déja établies\niptables -A INPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT\n#On autorise la boucle locale\niptables -A INPUT -i lo -j ACCEPT\n#On autorise les requêtes vers le routeur et le port DNS\niptables -A INPUT -d $_router -i $_interface_wifi -p udp -m udp --dport $_dns_port -j ACCEPT\n#On autorise les requêtes vers le routeur pour le traffic TCP\niptables -A INPUT -d $_router -i $_interface_wifi -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,​SYN,​RST,​ACK SYN -j ACCEPT\n\n#​On log le trafic sortant\niptables -I OUTPUT -m owner --uid-owner $_tor_uid -j LOG --log-prefix \"New output connection: \"​\n#​On drop le paquet si il n est pas dans l état new, established,​ ou related\niptables -A OUTPUT -m state --state INVALID -j DROP\n#On autorise ls connexions déja établies\niptables -A OUTPUT -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT\n#On autorise les requêtes DHCP à sortir\niptables -A OUTPUT -o $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT\n#On autorise le traffic issu de la carte\niptables -A OUTPUT ! -s $_reseau_wifi -m owner --uid-owner 0 -j ACCEPT"​ +     ​content: "#​!/​bin/​sh\n#​Variables\n_trans_port=\"​9040\"​\n_dns_port=\"​5353\"​\n_interface_wifi=\"​{ wlan_interface }\"​\n_tor_uid=`id -u debian-tor`\n_router=\"​10.255.255.254\"​ #Adresse du router(adresse de la machine ayant le point d'​accès wifi)\n_reseau_wifi=\"​10.0.0.0/​8\"​\n_unreachable=\"​192.168.16.20/​24\"​ #Adresse dont on empêche l'​accès\n_eth0_ip=`ip -4 addr show eth0 | grep -oP \'​(?<​=inet\\s)\\d+(\\.\\d+){3}\'​`\n\n#​On efface toutes les règles iptables\niptables -F\niptables -X\niptables -t nat -F\niptables -t nat -X\niptables -t mangle -F\niptables -t mangle -X\n\n#On met les policy\niptables -P INPUT DROP\niptables -P FORWARD DROP\niptables -P OUTPUT DROP\nip6tables -P INPUT DROP\nip6tables -P FORWARD DROP\nip6tables -P OUTPUT DROP\n\n#On redirige le traffic TCP vers Tor\niptables -t nat -A PREROUTING -i $_interface_wifi -p tcp --syn -j REDIRECT --to-ports $_trans_port\n#​On redirige les requêtes DNS vers Tor\niptables -t nat -A PREROUTING -i $_interface_wifi -p udp --dport 53 -j REDIRECT --to-ports $_dns_port\n\n#​On log le trafic entrant\niptables -A INPUT -i $_interface_wifi -m state --state NEW -j LOG --log-prefix \"New input connection: \"​\n#​On autorise les requêtes DHCP à entrer\niptables -A INPUT -i $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT\n#On autorise les connexion SSH\niptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -j ACCEPT\n#On autorise les connexions déja établies\niptables -A INPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT\n#On autorise la boucle locale\niptables -A INPUT -i lo -j ACCEPT\n#On autorise les requêtes vers le routeur et le port DNS\niptables -A INPUT -d $_router -i $_interface_wifi -p udp -m udp --dport $_dns_port -j ACCEPT\n#On autorise les requêtes vers le routeur pour le traffic TCP\niptables -A INPUT -d $_router -i $_interface_wifi -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,​SYN,​RST,​ACK SYN -j ACCEPT\n\n#​On log le trafic sortant\niptables -I OUTPUT -m owner --uid-owner $_tor_uid -j LOG --log-prefix \"New output connection: \"​\n#​On drop le paquet si il n est pas dans l état new, established,​ ou related\niptables -A OUTPUT -m state --state INVALID -j DROP\n#On autorise ls connexions déja établies\niptables -A OUTPUT -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT\n#On autorise les requêtes DHCP à sortir\niptables -A OUTPUT -o $_interface_wifi -p udp --dport 67:68 --sport 67:68 -j ACCEPT\n#On autorise le traffic issu de la carte et venant de root\niptables -A OUTPUT ! -s $_reseau_wifi -m owner --uid-owner 0 -j ACCEPT"​ 
-       ​dest: /root/iptables.sh +     ​dest: /usr/local/​sbin/​iptables_access_point.sh 
-       ​force: no +     ​force: no 
-       ​group: sys +     ​group: sys 
-       ​owner: root +     ​owner: root 
-       ​mode: 0777 +     ​mode: 0777 
-  - name: Création du fichier service iptables +- name: Création du fichier service iptables 
-    copy: +  copy: 
-       ​content: "​[Unit]\nDescription=Setup firewall\nAfter=network.target local-fs.target\n[Service]\nRemainAfterExit=true\nExecStart=/​root/iptables.sh\n[Install]\nWantedBy=multi-user.target"​ +     ​content: "​[Unit]\nDescription=Setup firewall\nAfter=network.target local-fs.target\n[Service]\nRemainAfterExit=true\nExecStart=/​usr/local/​sbin/​iptables_access_point.sh\n[Install]\nWantedBy=multi-user.target"​ 
-       ​dest: /​etc/​systemd/​system/​iptables.service +     ​dest: /​etc/​systemd/​system/​iptables.service 
-       ​force: no +     ​force: no 
-  - name: Activation du service iptables +- name: Activation du service iptables 
-    systemd: +  systemd: 
-       ​name: iptables +     ​name: iptables 
-       ​enabled: yes +     ​enabled: yes 
-       ​masked: no +     ​masked: no 
-  - name: Activation ​du forwarding IPv4 +- name: Installation ​du paquet rsyslog-relp 
-    ​lineinfile: +  aptpkg=rsyslog-relp state=installed update_cache=true 
-      dest: /​etc/​sysctl.conf +- name: Suppression du fichier ​de configuration /​etc/​rsyslog.conf 
-      regexp: '​^#​\s*net.ipv4.ip_forward=1.*$'​ +  file: 
-      line: '​net.ipv4.ip_forward=1' +    path: /etc/rsyslog.conf 
-      ​backrefs:​ yes +    state: absent 
-  ​- name: Suppression du script ​de logs +- name: Création du fichier ​de configuration /​etc/​rsyslog.conf 
-    file: +  copy: 
-      path: /root/logs_analyzer.sh +     ​content: "module(load=\"​imuxsock\"​) ​provides support for local system logging\nmodule(load=\"​imklog\"​) ​  # provides kernel logging support\n\n# Use traditional timestamp format.\n$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat\n\n#​ Set the default permissions for all log files.\n$FileOwner root\n$FileGroup adm\n$FileCreateMode 0640\n$DirCreateMode 0755\n$Umask 0022\n\n# Where to place spool and state files\n$WorkDirectory ​/var/spool/rsyslog\n\n#On charge le module relp (output)\nmodule(load=\"omrelp\")\n#On log avec le protocole relp vers une adresse et un port précis\naction(type=\"omrelp\"​ target=\"​192.168.16.11\" ​port=\"20514\" tls=\"off\")
-      state: absent +     ​dest: /etc/rsyslog.conf 
-  - name: Création du script ​de logs +     ​force: no 
-    copy: +     ​group: sys 
-       ​content: "#!/bin/sh\n_date=`date +%Y-%m-%d`\nmkdir -p /​root/​logs_wifi\necho \"\nRécupération des logs...\"\ncat /var/log/syslog | grep -e hostapd -e DST| grep -v CRON > /​tmp/​$_date.log\ncd /tmp\necho \"Compression...\"\ngzip $_date.log -f\necho \"Copie...\"\ncp $_date.log.gz /​root/​logs_wifi/​\nrm $_date.log.gz\nrm /​var/​log/​syslog\ntouch /​var/​log/​syslog+     ​owner: root 
-       ​dest: /root/logs_analyzer.sh +     ​mode: 0777 
-       ​force: no +- name: Redémarrage des hosts 
-       ​group: sys +  become: yes 
-       ​owner: root +  shell: sleep 2 && /​sbin/​shutdown -r now 
-       ​mode: 0777 +  async: 1 
-  - cron: +  poll: 0
-      name: "​ap_logs"​ +
-      state: absent +
-  - cron: +
-      name: "​ap_logs"​ +
-      minute: "​0"​ +
-      hour: "​1"​ +
-      job: "/​bin/​sh /​root/​logs_analyzer.sh"​ +
-  ​- name: Redémarrage des hosts +
-    become: yes +
-    shell: sleep 2 && /​sbin/​shutdown -r now "​Ansible system package upgraded"​ +
-    async: 1 +
-    poll: 0+
 </​code>​ </​code>​
  
anthony_messe/ansible/playbook.1526472694.txt.gz · Dernière modification: 2018/05/16 14:11 par Anthony Messé