summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuilhem Moulin <guilhem@fripost.org>2013-12-08 00:12:01 +0100
committerGuilhem Moulin <guilhem@fripost.org>2015-06-07 02:51:12 +0200
commit5b209a8e337f03683c45d0eb6029e2321cc3e82b (patch)
tree0f127d63468ae68927429313596ad3b470ccb205
parentc79f18ff9a04a7534dba3c288bc9606f17786b16 (diff)
Configure NTP.
We use a "master" NTP server, which synchronizes against stratum 1 servers (hence is a stratum 2 itself); all other clients synchronize to this master server through IPSec.
-rw-r--r--group_vars/all.yml1
-rw-r--r--roles/common/handlers/main.yml3
-rw-r--r--roles/common/tasks/main.yml1
-rw-r--r--roles/common/tasks/ntp.yml17
-rw-r--r--roles/common/templates/etc/iptables/services.j26
-rw-r--r--roles/common/templates/etc/ntp.conf.j259
6 files changed, 86 insertions, 1 deletions
diff --git a/group_vars/all.yml b/group_vars/all.yml
index b9e025f..26448c4 100644
--- a/group_vars/all.yml
+++ b/group_vars/all.yml
@@ -12,3 +12,4 @@ MTA_out: { IPv4: outgoing.fripost.org, port: 2525 }
LDA: { IPv4: lda.fripost.org, port: 2526 }
LDAP_provider: host1.libvirt.guilhem.org
+NTP_master: host1.libvirt.guilhem.org
diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml
index 54643ed..2f4f900 100644
--- a/roles/common/handlers/main.yml
+++ b/roles/common/handlers/main.yml
@@ -29,6 +29,9 @@
# pattern=init as a dummy assumption.
service: name=networking pattern=init state=reloaded
+- name: Restart ntp
+ service: name=ntp state=restarted
+
# TODO: should be in a separate file, since it's used by other roles
- name: Restart Postfix
service: name=postfix state=restarted
diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml
index 355b2df..76967e6 100644
--- a/roles/common/tasks/main.yml
+++ b/roles/common/tasks/main.yml
@@ -8,4 +8,5 @@
- include: fail2ban.yml tags=fail2ban
- include: ipsec.yml tags=strongswan,ipsec
- include: logging.yml tags=logging
+- include: ntp.yml tags=ntp
- include: mail.yml tags=mail,postfix
diff --git a/roles/common/tasks/ntp.yml b/roles/common/tasks/ntp.yml
new file mode 100644
index 0000000..94d7696
--- /dev/null
+++ b/roles/common/tasks/ntp.yml
@@ -0,0 +1,17 @@
+- name: Install ntp
+ apt: pkg=ntp
+
+- name: Configure ntp
+ template: src=etc/ntp.conf.j2
+ dest=/etc/ntp.conf
+ owner=root group=root
+ mode=0644
+ register: r
+ notify:
+ - Restart ntp
+
+- name: Start ntp
+ service: name=ntp state=started
+ when: not r.changed
+
+- meta: flush_handlers
diff --git a/roles/common/templates/etc/iptables/services.j2 b/roles/common/templates/etc/iptables/services.j2
index 5243ae1..2a36932 100644
--- a/roles/common/templates/etc/iptables/services.j2
+++ b/roles/common/templates/etc/iptables/services.j2
@@ -4,13 +4,17 @@
# direction protocol destination port source port
# (in|out|inout)[46]? (tcp|udp|..) (port|port:port|port,port) (port|port:port|port,port)
-inout udp 500 500 # ISAKMP
+inout udp 500 500 # ISAKMP
#inout udp 4500 4500 # IPSec NAT Traversal
out tcp 80,443 # HTTP/HTTPS
out udp 53 # DNS
out udp 67 # DHCP
+{% if 'NTP-master' in group_names %}
+out udp 123 123 # NTP
+{% endif %}
+
in tcp {{ ansible_ssh_port|default('22') }} # SSH
{% if 'MX' in group_names %}
in tcp 25 # SMTP
diff --git a/roles/common/templates/etc/ntp.conf.j2 b/roles/common/templates/etc/ntp.conf.j2
new file mode 100644
index 0000000..2f70cef
--- /dev/null
+++ b/roles/common/templates/etc/ntp.conf.j2
@@ -0,0 +1,59 @@
+# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
+
+driftfile /var/lib/ntp/ntp.drift
+
+
+# Enable this if you want statistics to be logged.
+#statsdir /var/log/ntpstats/
+
+statistics loopstats peerstats clockstats
+filegen loopstats file loopstats type day enable
+filegen peerstats file peerstats type day enable
+filegen clockstats file clockstats type day enable
+
+
+# You do need to talk to an NTP server or two (or three).
+{% if 'NTP-master' in group_names %}
+# Use Stratum One Time Servers:
+# http://support.ntp.org/bin/view/Servers/StratumOneTimeServers
+server ntp1.sp.se iburst
+server ntp2.sp.se iburst
+server ntp2.gbg.netnod.se iburst
+server ntp1.sth.netnod.se iburst
+server ntp2.sth.netnod.se iburst
+{% else %}
+# Sychronize to our (stratum 2) NTP server through IPSec, to ensure our
+# network has a consistent time.
+server {{ NTP_master }} iburst
+{% endif %}
+
+
+# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
+# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
+# might also be helpful.
+#
+# Note that "restrict" applies to both servers and clients, so a configuration
+# that might be intended to block requests from certain clients could also end
+# up blocking replies from your own upstream servers.
+
+# By default, exchange time with everybody, but don't allow configuration.
+restrict -4 default kod notrap nomodify nopeer noquery
+restrict -6 default kod notrap nomodify nopeer noquery
+
+# Local users may interrogate the ntp server more closely.
+restrict 127.0.0.1
+restrict ::1
+
+# Clients from this (example!) subnet have unlimited access, but only if
+# cryptographically authenticated.
+#restrict 192.168.123.0 mask 255.255.255.0 notrust
+
+
+# If you want to provide time to your local subnet, change the next line.
+# (Again, the address is an example only.)
+#broadcast 192.168.123.255
+
+# If you want to listen to time broadcasts on your local subnet, de-comment the
+# next lines. Please do this only if you trust everybody on the network!
+#disable auth
+#broadcastclient