From a34a5ff2b077d249462b1626b706d8dc21347f5a Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Tue, 26 Mar 2013 17:02:52 +0100 Subject: [PATCH] Ajout : vm_hosted : rule_nsd3_configure . --- etc/nsd3/nsd.conf | 28 ++++++ etc/nsd3/zone.d/heureux-cyclage.org.conf | 2 + etc/nsd3/zone.d/heureux-cyclage.org.zone.m4 | 81 +++++++++++++++++ vm_hosted | 99 +++++++++++++++------ 4 files changed, 182 insertions(+), 28 deletions(-) create mode 100644 etc/nsd3/nsd.conf create mode 100644 etc/nsd3/zone.d/heureux-cyclage.org.conf create mode 100644 etc/nsd3/zone.d/heureux-cyclage.org.zone.m4 diff --git a/etc/nsd3/nsd.conf b/etc/nsd3/nsd.conf new file mode 100644 index 0000000..1c83a0b --- /dev/null +++ b/etc/nsd3/nsd.conf @@ -0,0 +1,28 @@ +# chroot: "/etc/nsd3" +database: "/var/lib/nsd3/nsd.db" +# debug-mode: no +# difffile: "/var/lib/nsd3/ixfr.db" +hide-version: yes +# identify the server (CH TXT ID.SERVER entry). +# identity: "unidentified server" +# ip6-only: no +ipv4-edns-size: 4096 +# ipv6-edns-size: 4096 +# logfile: "/var/log/nsd.log" +# nsid: "aabbccdd" +pidfile: "/run/nsd3.pid" +port: 53 +rrl-ratelimit: 200 +rrl-size: 1000000 +rrl-whitelist-ratelimit: 2000 +server-count: 1 +statistics: 3600 +tcp-count: 10 +tcp-query-count: 0 +tcp-timeout: 120 +username: nsd +verbosity: 2 +# xfrd-reload-timeout: 10 +# xfrdfile: "/var/lib/nsd3/xfrd.state" +zone-stats-file: "/var/log/nsd.stats" +zonesdir: "/etc/nsd3" diff --git a/etc/nsd3/zone.d/heureux-cyclage.org.conf b/etc/nsd3/zone.d/heureux-cyclage.org.conf new file mode 100644 index 0000000..a785e19 --- /dev/null +++ b/etc/nsd3/zone.d/heureux-cyclage.org.conf @@ -0,0 +1,2 @@ + +# vim: ft=sh diff --git a/etc/nsd3/zone.d/heureux-cyclage.org.zone.m4 b/etc/nsd3/zone.d/heureux-cyclage.org.zone.m4 new file mode 100644 index 0000000..f61d990 --- /dev/null +++ b/etc/nsd3/zone.d/heureux-cyclage.org.zone.m4 @@ -0,0 +1,81 @@ +divert(-1) +dnl changecom(`;') + +* outils +define(`ALIAS', `define($1`_IP4', $2`'_IP4)') +define(`MAKE_GETTER', `define(`$1', $`'1`_'$`'0)') +MAKE_GETTER(`NAME') +MAKE_GETTER(`IP4') +define(`FQDN', `NAME($1).ZONE_DOMAIN') + +* ATELIERS +define(`ATELIERS_NAME', `ateliers') +define(`ATELIERS_IP4', `IP4(VM)') +define(`ATELIERS_NS_NAME', `ns') +ALIAS(`ATELIERS_NS', `ATELIERS') +define(`ATELIERS_MX_NAME', `mx') +ALIAS(`ATELIERS_MX', `ATELIERS') + +divert(0)dnl +; vim: ft=bindzone + +$TTL 1d ; TTL (Time To Live) par défaut pour les enregistrements + +; ENREGISTREMENT « SOA » (Start Of Authority). +@ SOA NAME(ATELIERS_NS) hostmaster ( + ZONE_SERIAL ; Serial number. + 1d ; Refresh. + 15m ; Retry. + 2592000 ; Expire. + 1d ; TTL (Time To Live) minimum. + ) + +; ENREGISTREMENTS « A » (DNS -> adresse IPv4) +NAME(ATELIERS) A IP4(ATELIERS) + +@ A IP4(ATELIERS) +git A IP4(ATELIERS) +imap A IP4(ATELIERS_MX) +mail A IP4(ATELIERS_MX) +mx A IP4(ATELIERS_MX) +ns A IP4(ATELIERS_NS) +remorque A IP4(ATELIERS) +smtp A IP4(ATELIERS_MX) +submission A IP4(ATELIERS_MX) +www A IP4(ATELIERS) + +; ENREGISTREMENTS « CNAME » (Canonical NAME) +; NOTE : l'utilisation de CNAME n'est judicieuse que si la ressource pointée +; n'est pas sous notre contrôle. Par exemple, +; foo.example.org. CNAME foo.example.com. +; Dans le cas contraire, le seul résultat est un traffic réseau accru, +; et l'emploi de macros est préférable. +; ```You keep using CNAME records. I do not think they mean what you think they mean.''' + +; ENREGISTREMENTS « MX » (Mail eXchange) +; NOTE : le reverse et le forward associés au nom donné à un enregistrement MX +; devraient correspondre. Certains antispams le vérifient, et certains (rares) admins +; bloquent même au niveau de la session SMTP si il ne correspond pas. +@ MX 10 NAME(ATELIERS_MX) + +; ENREGISTREMENTS « NS » (Name Server) +@ NS NAME(ATELIERS_NS) + +; ENREGISTREMENTS "PTR" (IPv* -> name) +; NOTE : Dans le cas d’hébergement massif de domaines virtuels derrière une même adresse IP, +; il est recommandé de ne pas appliquer sans discernement la règle un enregistrement PTR +; par enregistrement A (ou AAAA) : le nombre des champs PTR à renvoyer pouvant faire dépasser +; à la réponse la taille des paquets UDP et entraîner l’utilisation du protocole TCP +; (plus coûteux en resources) pour envoyer la réponse à la requête DNS ; +; cf. section "4.4 Usage and deployment considerations" du document : +; http://tools.ietf.org/html/draft-ietf-dnsop-reverse-mapping-considerations + +; ENREGISTREMENTS "SPF" (Sender Policy Framework) +@ 3600 IN SPF "v=spf1 mx -all" +@ 3600 IN TXT "v=spf1 mx -all" + +; ENREGISTREMENTS « SRV » (SeRVice) +_git._tcp.git 18000 IN SRV 0 0 9418 git + +; ENREGISTREMENTS « SSHFP » (Secure SHell FingerPrint) +esyscmd(sudo ssh-keygen -r $(hostname)) diff --git a/vm_hosted b/vm_hosted index 11dd8bb..91ec25a 100755 --- a/vm_hosted +++ b/vm_hosted @@ -780,34 +780,6 @@ rule_network_configure () { pre-down ip address delete $vm_ipv4/32 dev \$IFACE EOF } -rule_www_configure () { - rule adduser www \ - --disabled-login \ - --disabled-password \ - --group \ - --home /home/www \ - --shell /bin/false \ - --system - rule adduser log-www \ - --disabled-login \ - --disabled-password \ - --group \ - --home /home/www/log \ - --shell /bin/false \ - --system - #sudo adduser www www-data - sudo adduser www log-www - #sudo adduser log log-www - usermod --home /home/www/pub www-data - sudo install -d -m 751 -o www -g www \ - /home/www - sudo install -d -m 750 -o www -g www \ - /home/www/etc - sudo install -d -m 1771 -o www-data -g www-data \ - /home/www/pub - sudo install -d -m 1771 -o log-www -g log-www \ - /home/www/log - } rule_nginx_configure () { local -; set +f rule apt_get_install nginx @@ -889,6 +861,48 @@ rule_nginx_configure () { # de leurs groupes supplémentaires. sudo service nginx restart } +rule_nsd3_configure () { # NOTE: DNS autoritaire uniquement + local -; set +f + rule apt_get_install nsd m4 + sudo rm -rf \ + /etc/nsd3/zone.d + sudo install -d -m 750 -o root -g nsd \ + /etc/nsd3/zone.d + { + cat <<-EOF + server: + ip-address: $vm_ipv4 + ip4-only: yes + EOF + cat "$tool"/etc/nsd3/nsd.conf + local conf + for conf in "$tool"/etc/nsd3/zone.d/*.conf + do conf=${conf#"$tool"/etc/nsd3/zone.d/} + local domain=${conf%.conf} + if test -e "$tool"/etc/nsd3/zone.d/"$domain".zone.m4 + then m4 \ + --define=ZONE_DOMAIN=$domain \ + --define=ZONE_SERIAL=$(cd "$tool" && git log -1 --format="%ct" -- etc/nsd3/zone.d/"$domain".zone.m4) \ + --define=VM_IP4=$vm_ipv4 \ + "$tool"/etc/nsd3/zone.d/"$domain".zone.m4 + else cat "$tool"/etc/nsd3/zone.d/"$domain".zone + fi | + sudo install -m 440 -o root -g nsd /dev/stdin \ + /etc/nsd3/zone.d/"$domain".zone + sudo install -m 440 -o root -g nsd \ + "$tool"/etc/nsd3/zone.d/"$conf" \ + /etc/nsd3/zone.d/"$conf" + cat <<-EOF + zone: + name: $domain + zonefile: /etc/nsd3/zone.d/$domain.zone + EOF + done + } | + sudo install -m 640 -o root -g nsd /dev/stdin \ + /etc/nsd3/nsd.conf + sudo service nsd3 restart + } rule_php5_fpm_configure () { local -; set +f rule apt_get_install \ @@ -1395,6 +1409,34 @@ rule_user_root_configure () { do sudo gpg --import "$key" done } +rule_www_configure () { + rule adduser www \ + --disabled-login \ + --disabled-password \ + --group \ + --home /home/www \ + --shell /bin/false \ + --system + rule adduser log-www \ + --disabled-login \ + --disabled-password \ + --group \ + --home /home/www/log \ + --shell /bin/false \ + --system + #sudo adduser www www-data + sudo adduser www log-www + #sudo adduser log log-www + usermod --home /home/www/pub www-data + sudo install -d -m 751 -o www -g www \ + /home/www + sudo install -d -m 750 -o www -g www \ + /home/www/etc + sudo install -d -m 1771 -o www-data -g www-data \ + /home/www/pub + sudo install -d -m 1771 -o log-www -g log-www \ + /home/www/log + } rule_configure () { rule apt_configure rule git_configure @@ -1415,6 +1457,7 @@ rule_configure () { rule php5_fpm_configure rule nginx_configure #rule apache2_configure + rule nsd3_configure rule runit_configure } -- 2.20.1