summaryrefslogtreecommitdiff
path: root/data/templates/ocserv/ocserv_config.j2
blob: 80ba357bc482b1bdd147c831322b1f06725494d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
### generated by vpn_openconnect.py ###

{% if listen_address is vyos_defined %}
listen-host = {{ listen_address }}
{% endif %}

tcp-port = {{ listen_ports.tcp }}
udp-port = {{ listen_ports.udp }}

run-as-user = nobody
run-as-group = daemon

{% if accounting.mode.radius is vyos_defined %}
acct = "radius [config=/run/ocserv/radiusclient.conf]"
{% endif %}

{% if "radius" in authentication.mode %}
auth = "radius [config=/run/ocserv/radiusclient.conf{{ ',groupconfig=true' if authentication.radius.groupconfig is vyos_defined else '' }}]"
{%     if authentication.identity_based_config.disabled is not vyos_defined %}
{%         if "group" in authentication.identity_based_config.mode %}
config-per-group = {{ authentication.identity_based_config.directory }}
default-group-config = {{ authentication.identity_based_config.default_config }}
{%         endif %}
{%     endif %}
{% elif "local" in authentication.mode %}
{%     if authentication.mode.local == "password-otp" %}
auth = "plain[passwd=/run/ocserv/ocpasswd,otp=/run/ocserv/users.oath]"
{%     elif authentication.mode.local == "otp" %}
auth = "plain[otp=/run/ocserv/users.oath]"
{%     else %}
auth = "plain[/run/ocserv/ocpasswd]"
{%     endif %}
{% else %}
auth = "plain[/run/ocserv/ocpasswd]"
{% endif %}

{% if "identity_based_config" in authentication %}
{%     if "user" in authentication.identity_based_config.mode %}
config-per-user = {{ authentication.identity_based_config.directory }}
default-user-config = {{ authentication.identity_based_config.default_config }}
{%     endif %}
{% endif %}

{% if ssl.certificate is vyos_defined %}
server-cert = /run/ocserv/cert.pem
server-key = /run/ocserv/cert.key
{%     if ssl.passphrase is vyos_defined %}
key-pin = {{ ssl.passphrase }}
{%     endif %}
{% endif %}

{% if ssl.ca_certificate is vyos_defined %}
ca-cert = /run/ocserv/ca.pem
{% endif %}

socket-file = /run/ocserv/ocserv.socket
occtl-socket-file = /run/ocserv/occtl.socket
use-occtl = true
isolate-workers = true
keepalive = 300
dpd = 60
mobile-dpd = 300
switch-to-tcp-timeout = 30
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"
auth-timeout = 240
idle-timeout = 1200
mobile-idle-timeout = 1800
min-reauth-time = 3
cookie-timeout = 300
rekey-method = ssl
try-mtu-discovery = true
cisco-client-compat = true
dtls-legacy = true
max-ban-score = 80
ban-reset-time = 300

# The name to use for the tun device
device = sslvpn

# DNS settings
{% if network_settings.name_server is vyos_defined %}
{%     for dns in network_settings.name_server %}
dns = {{ dns }}
{%     endfor %}
{% endif %}
{% if network_settings.tunnel_all_dns is vyos_defined %}
{%     if "yes" in network_settings.tunnel_all_dns %}
tunnel-all-dns = true
{%     else %}
tunnel-all-dns = false
{%     endif %}
{% endif %}

# IPv4 network pool
{% if network_settings.client_ip_settings.subnet is vyos_defined %}
ipv4-network = {{ network_settings.client_ip_settings.subnet }}
{% endif %}

# IPv6 network pool
{% if network_settings.client_ipv6_pool.prefix is vyos_defined %}
ipv6-network = {{ network_settings.client_ipv6_pool.prefix }}
ipv6-subnet-prefix = {{ network_settings.client_ipv6_pool.mask }}
{% endif %}

{% if network_settings.push_route is vyos_defined %}
{%     for route in network_settings.push_route %}
route = {{ route }}
{%     endfor %}
{% endif %}

{% if network_settings.split_dns is vyos_defined %}
{%     for tmp in network_settings.split_dns %}
split-dns = {{ tmp }}
{%     endfor %}
{% endif %}

{% if authentication.group is vyos_defined %}
# Group settings
{%     for grp in authentication.group %}
select-group = {{ grp }}
{%     endfor %}
{% endif %}


# HTTP security headers
included-http-headers = Strict-Transport-Security: max-age=31536000 ; includeSubDomains
included-http-headers = X-Frame-Options: deny
included-http-headers = X-Content-Type-Options: nosniff
included-http-headers = Content-Security-Policy: default-src ´none´
included-http-headers = X-Permitted-Cross-Domain-Policies: none
included-http-headers = Referrer-Policy: no-referrer
included-http-headers = Clear-Site-Data: "cache","cookies","storage"
included-http-headers = Cross-Origin-Embedder-Policy: require-corp
included-http-headers = Cross-Origin-Opener-Policy: same-origin
included-http-headers = Cross-Origin-Resource-Policy: same-origin
included-http-headers = X-XSS-Protection: 0
included-http-headers = Pragma: no-cache
included-http-headers = Cache-control: no-store, no-cache