update radius
This commit is contained in:
parent
baec7c22e8
commit
8c94ca0d09
26 changed files with 2154 additions and 33 deletions
|
|
@ -2,6 +2,7 @@
|
|||
host_key_checking = False
|
||||
inventory = hosts
|
||||
interpreter_python = auto_silent
|
||||
vault_password_file = ~/.ansible-vault-pass
|
||||
|
||||
[ssh_connection]
|
||||
pipelining = true
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
ansible_host: 204.110.191.248
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
ansible_ssh_common_args: '-o StrictHostKeyChecking=accept-new'
|
||||
|
||||
firewall_allow_rules:
|
||||
- port: 1812
|
||||
proto: udp
|
||||
comment: RADIUS Auth
|
||||
- port: 1812
|
||||
proto: tcp
|
||||
comment: RADIUS Auth
|
||||
- port: 1813
|
||||
proto: udp
|
||||
comment: RADIUS Accounting
|
||||
- port: 1813
|
||||
proto: tcp
|
||||
comment: RADIUS Accounting
|
||||
- port: 3306
|
||||
proto: tcp
|
||||
comment: MySQL
|
||||
104
ansible/host_vars/radius.vntx.net/vars.yml
Normal file
104
ansible/host_vars/radius.vntx.net/vars.yml
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
---
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
ansible_ssh_common_args: '-o StrictHostKeyChecking=accept-new'
|
||||
|
||||
firewall_trusted_subnets:
|
||||
- subnet: 100.64.0.0/10
|
||||
comment: Tailscale
|
||||
- subnet: 204.110.188.0/22
|
||||
comment: VNTX
|
||||
- subnet: 10.0.0.0/8
|
||||
comment: Internal
|
||||
- subnet: 192.168.0.0/16
|
||||
comment: Internal
|
||||
- subnet: 172.0.0.0/15
|
||||
comment: VNTX
|
||||
- subnet: 216.180.128.0/20
|
||||
comment: VNTX
|
||||
- subnet: 3.228.90.246
|
||||
comment: Gaiia AWS
|
||||
|
||||
firewall_allow_rules:
|
||||
- port: 1812
|
||||
proto: udp
|
||||
comment: RADIUS Auth
|
||||
- port: 1812
|
||||
proto: tcp
|
||||
comment: RADIUS Auth
|
||||
- port: 1813
|
||||
proto: udp
|
||||
comment: RADIUS Accounting
|
||||
- port: 1813
|
||||
proto: tcp
|
||||
comment: RADIUS Accounting
|
||||
- port: 3306
|
||||
proto: tcp
|
||||
from_ip: 10.0.0.0/8
|
||||
comment: MySQL (internal)
|
||||
- port: 3306
|
||||
proto: tcp
|
||||
from_ip: 204.110.188.0/22
|
||||
comment: MySQL (VNTX/Gaiia)
|
||||
- port: 3306
|
||||
proto: tcp
|
||||
from_ip: 3.228.90.246
|
||||
comment: MySQL (Gaiia AWS)
|
||||
- port: 3799
|
||||
proto: udp
|
||||
from_ip: 3.228.90.246
|
||||
comment: RADIUS CoA/Disconnect (Gaiia AWS)
|
||||
|
||||
# FreeRADIUS role — user will manually import seed data after deploy
|
||||
freeradius_load_user_data: false
|
||||
|
||||
# RADIUS clients (CoA/management systems)
|
||||
freeradius_clients:
|
||||
- name: localhost
|
||||
ipaddr: "127.0.0.1"
|
||||
secret: "{{ vault_freeradius_localhost_secret | default('testing123') }}"
|
||||
shortname: localhost
|
||||
nas_type: other
|
||||
- name: gaiia
|
||||
ipaddr: "3.228.90.246"
|
||||
secret: "{{ vault_freeradius_gaiia_secret }}"
|
||||
shortname: gaiia
|
||||
nas_type: other
|
||||
|
||||
# NAS clients (secrets from vault.yml in this directory)
|
||||
freeradius_nas_clients:
|
||||
- nasname: "204.110.188.31"
|
||||
shortname: "380"
|
||||
secret: "{{ vault_nas_380_secret }}"
|
||||
- nasname: "204.110.188.254"
|
||||
shortname: "Verona"
|
||||
secret: "{{ vault_nas_verona_secret }}"
|
||||
- nasname: "204.110.188.62"
|
||||
shortname: "Climax"
|
||||
secret: "{{ vault_nas_climax_secret }}"
|
||||
- nasname: "204.110.188.158"
|
||||
shortname: "Culleoka"
|
||||
secret: "{{ vault_nas_culleoka_secret }}"
|
||||
- nasname: "204.110.188.190"
|
||||
shortname: "NewHope"
|
||||
secret: "{{ vault_nas_newhope_secret }}"
|
||||
- nasname: "204.110.188.222"
|
||||
shortname: "LowryCrossing"
|
||||
secret: "{{ vault_nas_lowrycrossing_secret }}"
|
||||
- nasname: "204.110.188.126"
|
||||
shortname: "982"
|
||||
secret: "{{ vault_nas_982_secret }}"
|
||||
- nasname: "204.110.191.190"
|
||||
shortname: "yorkshire"
|
||||
secret: "{{ vault_nas_yorkshire_secret }}"
|
||||
- nasname: "204.110.188.94"
|
||||
shortname: "494"
|
||||
secret: "{{ vault_nas_494_secret }}"
|
||||
- nasname: "204.110.191.185"
|
||||
shortname: "Core"
|
||||
secret: "{{ vault_nas_core_secret }}"
|
||||
- nasname: "204.110.191.252"
|
||||
shortname: "Concatenator"
|
||||
secret: "{{ vault_nas_concatenator_secret }}"
|
||||
- nasname: "10.254.254.103"
|
||||
shortname: "Yorkshire-mgmt"
|
||||
secret: "{{ vault_nas_yorkshire_secret }}"
|
||||
39
ansible/host_vars/radius.vntx.net/vault.yml
Normal file
39
ansible/host_vars/radius.vntx.net/vault.yml
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
$ANSIBLE_VAULT;1.1;AES256
|
||||
65323864356364393135623533323261663562363831646562366138373331383030346535633461
|
||||
6363633761363631393136663630613334303034623230300a386661383931313138333165396535
|
||||
61626130353839323335646366383435323365663232356338383236316632343331323139363962
|
||||
6630663737393337660a396361313439313663636634353465393333373233363961663136393561
|
||||
64663130383362613330316439346536646235343831366138373864646433653131613734613131
|
||||
30613266666661653030383937323639666435323163666338353835626265313862643066623334
|
||||
35646236343062376635313339626366356265313032363763623066636466346363363838613938
|
||||
37653238346635343637656535373436356135356335653030323639386530386234326332333534
|
||||
63313365346265653130636635386465643966613666316532383563653534386366363762343939
|
||||
61393365663763323437303637343635326232643833336432393836363733633330663634333362
|
||||
63356338653864653363663533383430663236643335303862353133646637653232363736626532
|
||||
66316138633133663837396436633439313264613436656135383934393861363630396138616635
|
||||
32643663373232326433363834346161343832336135393830303134396539633437366466663139
|
||||
64393339623436646666326236633662636364663730376230636334663733616334633064316364
|
||||
62626166626138303165363038653930643966303334383265326331383766396332336561633636
|
||||
63643038373635326539643061313063393839356439303339386661343964303034363937363263
|
||||
37373463326530336664643134626630643839366634346432393964316366316363373461653863
|
||||
34303865303563373563386339353433613766333233626131626265623935613239373730333661
|
||||
31313836626535393934373636363863616139613866383232323931623866626336323131373136
|
||||
64373534396535666433636566613834643466353764386431303362663433333731333731613038
|
||||
65383435323738643837343538383366633766636463353963373336333033393062343734616664
|
||||
65336632613662373636336464653930346533643839623833393437316239353062386238333661
|
||||
39646433376437366234376164356337353433613938613636353235383230323738616434376439
|
||||
66393662316330663966353236383438616662656437393064353465633666326433356536366139
|
||||
37386137353464363163636664323266353064383666396537363331373334616433316433333362
|
||||
62353761613462383239653034656466383365373065376632623637366235356265313831303766
|
||||
39623236396663303333323430613233396239636638393839636462633438353334366631316432
|
||||
34396135663062383065323534643235316461336534333666636665343463323266666131356334
|
||||
63623535656433613237353432393433313362663061643237306138656663313734653962356638
|
||||
36656536356131336338336162653062663466643161346661326334363132346533653064346163
|
||||
35366536643938366265313065353230643331363034303462336534643065373634323861306236
|
||||
66646637303239393561646662383836633735623066353634643732633337626231623731663664
|
||||
61313738376337626337336334656562393664316138383235353630343233373264636631386439
|
||||
66653065396534316565666262623331653461633862396430313938616233636361633166656533
|
||||
32393735646565613835303466633639303139393461613634333835326439323664633333333030
|
||||
38656437363036303434656436343364323730363765646234366363353561343030326264333462
|
||||
62313665373162343437386133616362346539646666633736303337313366616562393562646439
|
||||
3865376334636231363639343833663863303765396131633839
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[vntx_servers]
|
||||
logs.vntx.net
|
||||
radius.vntx.net
|
||||
#radius.vntx.net
|
||||
vpn.vntx.net
|
||||
netbox.vntx.net
|
||||
#ntp.vntx.net
|
||||
|
|
@ -60,7 +60,9 @@ db.w5isp.com
|
|||
[irc_limited]
|
||||
ca.manero.org
|
||||
|
||||
#[radius_servers]
|
||||
#radius.vntx.net
|
||||
|
||||
[irc_servers]
|
||||
us.manero.org ansible_host=manero-us
|
||||
ca.manero.org ansible_host=manero-ca
|
||||
|
||||
|
|
|
|||
|
|
@ -381,6 +381,16 @@
|
|||
- role: grafana
|
||||
tags: grafana
|
||||
|
||||
- name: Configure FreeRADIUS servers
|
||||
hosts: radius_servers
|
||||
become: true
|
||||
gather_facts: true
|
||||
tags:
|
||||
- radius
|
||||
- freeradius
|
||||
roles:
|
||||
- freeradius
|
||||
|
||||
- name: Configure IRC servers
|
||||
hosts: irc_servers
|
||||
become: true
|
||||
|
|
|
|||
|
|
@ -60,11 +60,42 @@
|
|||
label: "{{ item.name }}"
|
||||
when: item.state | default('present') == 'absent'
|
||||
|
||||
- name: Collect unique GitHub usernames for key fetch
|
||||
ansible.builtin.set_fact:
|
||||
_gh_usernames: >-
|
||||
{{ managed_users | default([])
|
||||
| map(attribute='authorized_keys', default=[])
|
||||
| flatten
|
||||
| selectattr('type', 'defined')
|
||||
| selectattr('type', 'equalto', 'github')
|
||||
| map(attribute='value')
|
||||
| unique
|
||||
| list }}
|
||||
when: managed_users | default([]) | length > 0
|
||||
|
||||
- name: Fetch GitHub SSH keys
|
||||
ansible.builtin.uri:
|
||||
url: "https://github.com/{{ item }}.keys"
|
||||
return_content: true
|
||||
loop: "{{ _gh_usernames | default([]) }}"
|
||||
register: _gh_fetched
|
||||
delegate_to: localhost
|
||||
run_once: true
|
||||
become: false
|
||||
when: _gh_usernames | default([]) | length > 0
|
||||
|
||||
- name: Build GitHub keys lookup dict
|
||||
ansible.builtin.set_fact:
|
||||
_gh_keys: "{{ _gh_keys | default({}) | combine({item.item: item.content}) }}"
|
||||
loop: "{{ _gh_fetched.results | default([]) }}"
|
||||
when: _gh_fetched.results | default([]) | length > 0
|
||||
no_log: true
|
||||
|
||||
- name: Install authorized keys from GitHub
|
||||
ansible.posix.authorized_key:
|
||||
user: "{{ item.0.name }}"
|
||||
state: "{{ item.1.state | default('present') }}"
|
||||
key: "https://github.com/{{ item.1.value }}.keys"
|
||||
key: "{{ _gh_keys[item.1.value] }}"
|
||||
manage_dir: "{{ item.1.manage_dir | default(true) }}"
|
||||
exclusive: "{{ item.1.exclusive | default(false) }}"
|
||||
loop: "{{ managed_users | default([]) | subelements('authorized_keys', skip_missing=True) }}"
|
||||
|
|
|
|||
|
|
@ -44,3 +44,11 @@
|
|||
state: present
|
||||
regexp: '^tmpfs\s+/run/shm\s+'
|
||||
line: "tmpfs /run/shm tmpfs defaults,noexec,nosuid 0 0"
|
||||
|
||||
- name: "Ensure SSH listens on both IPv4 and IPv6"
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: '^#?AddressFamily'
|
||||
line: "AddressFamily any"
|
||||
state: present
|
||||
notify: restart ssh
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@
|
|||
- ansible_facts['os_family'] == "Debian"
|
||||
- firewall_enabled | default(true)
|
||||
- firewall_allow_rules | length > 0
|
||||
- _fw_ufw_rules.skipped | default(true) or (item.port | string + '/' + item.proto) not in _fw_ufw_rules.stdout
|
||||
- _fw_ufw_rules.skipped | default(true) or (item.from_ip | default('any') + ' ' + item.port | string + '/' + item.proto) not in _fw_ufw_rules.stdout
|
||||
|
||||
- name: Enable IP forwarding
|
||||
ansible.posix.sysctl:
|
||||
|
|
|
|||
50
ansible/roles/freeradius/defaults/main.yml
Normal file
50
ansible/roles/freeradius/defaults/main.yml
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
# FreeRADIUS v3 role for Debian
|
||||
|
||||
freeradius_config_dir: /etc/freeradius/3.0
|
||||
freeradius_service_name: freeradius
|
||||
|
||||
# Packages to install (Debian)
|
||||
freeradius_packages:
|
||||
- freeradius
|
||||
- freeradius-mysql
|
||||
- freeradius-utils
|
||||
- mariadb-server
|
||||
- python3-pymysql
|
||||
|
||||
# MySQL connection
|
||||
freeradius_db_host: localhost
|
||||
freeradius_db_port: 3306
|
||||
freeradius_db_name: radius
|
||||
freeradius_db_user: radius
|
||||
|
||||
# SQL dialect
|
||||
freeradius_sql_dialect: mysql
|
||||
freeradius_sql_driver: "rlm_sql_{{ freeradius_sql_dialect }}"
|
||||
|
||||
# Whether to read clients from nas table
|
||||
freeradius_read_clients: true
|
||||
freeradius_client_table: nas
|
||||
|
||||
# NAS clients — define in host_vars
|
||||
# Each entry: { nasname, shortname, type, ports, secret, server, community, description }
|
||||
freeradius_nas_clients: []
|
||||
|
||||
# RADIUS clients.conf entries — define in host_vars
|
||||
# Each entry: { name, ipaddr, secret, shortname, nas_type }
|
||||
freeradius_clients:
|
||||
- name: localhost
|
||||
ipaddr: "127.0.0.1"
|
||||
secret: "{{ vault_freeradius_localhost_secret | default('testing123') }}"
|
||||
shortname: localhost
|
||||
nas_type: other
|
||||
|
||||
# Whether to seed the DB schema
|
||||
freeradius_seed_db: true
|
||||
|
||||
# Whether to seed NAS table from freeradius_nas_clients
|
||||
freeradius_seed_nas: true
|
||||
|
||||
# Whether to load user data from a SQL dump file
|
||||
freeradius_load_user_data: false
|
||||
freeradius_user_data_file: ""
|
||||
393
ansible/roles/freeradius/files/queries.conf
Normal file
393
ansible/roles/freeradius/files/queries.conf
Normal file
|
|
@ -0,0 +1,393 @@
|
|||
{# Managed by Ansible — do not edit manually. #}
|
||||
# -*- text -*-
|
||||
#
|
||||
# main/mysql/queries.conf -- MySQL configuration for default schema (schema.sql)
|
||||
#
|
||||
# $Id: b31ae9c3a1bf41f030a2112d31bf3a678e76f23c $
|
||||
|
||||
safe_characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
|
||||
|
||||
sql_user_name = "%{User-Name}"
|
||||
|
||||
event_timestamp_epoch = "%{%{integer:Event-Timestamp}:-%l}"
|
||||
event_timestamp = "FROM_UNIXTIME(${event_timestamp_epoch})"
|
||||
|
||||
class {
|
||||
column_name = # ", class"
|
||||
packet_xlat = # ", '%{Class}'"
|
||||
reply_xlat = # ", '%{reply:Class}'"
|
||||
}
|
||||
|
||||
client_query = "\
|
||||
SELECT id, nasname, shortname, type, secret, server \
|
||||
FROM ${client_table}"
|
||||
|
||||
authorize_check_query = "\
|
||||
SELECT id, username, attribute, value, op \
|
||||
FROM ${authcheck_table} \
|
||||
WHERE username = '%{SQL-User-Name}' \
|
||||
ORDER BY id"
|
||||
|
||||
authorize_reply_query = "\
|
||||
SELECT id, username, attribute, value, op \
|
||||
FROM ${authreply_table} \
|
||||
WHERE username = '%{SQL-User-Name}' \
|
||||
ORDER BY id"
|
||||
|
||||
group_membership_query = "\
|
||||
SELECT groupname \
|
||||
FROM ${usergroup_table} \
|
||||
WHERE username = '%{SQL-User-Name}' \
|
||||
ORDER BY priority"
|
||||
|
||||
authorize_group_check_query = "\
|
||||
SELECT id, groupname, attribute, \
|
||||
Value, op \
|
||||
FROM ${groupcheck_table} \
|
||||
WHERE groupname = '%{${group_attribute}}' \
|
||||
ORDER BY id"
|
||||
|
||||
authorize_group_reply_query = "\
|
||||
SELECT id, groupname, attribute, \
|
||||
value, op \
|
||||
FROM ${groupreply_table} \
|
||||
WHERE groupname = '%{${group_attribute}}' \
|
||||
ORDER BY id"
|
||||
|
||||
simul_count_query = "\
|
||||
SELECT COUNT(*) \
|
||||
FROM ${acct_table1} a \
|
||||
LEFT OUTER JOIN nasreload n USING (nasipaddress) \
|
||||
WHERE username = '%{SQL-User-Name}' \
|
||||
AND acctstoptime IS NULL \
|
||||
AND (a.acctstarttime > n.reloadtime OR n.reloadtime IS NULL)"
|
||||
|
||||
simul_verify_query = "\
|
||||
SELECT \
|
||||
radacctid, acctsessionid, username, nasipaddress, nasportid, framedipaddress, \
|
||||
callingstationid, framedprotocol \
|
||||
FROM ${acct_table1} a \
|
||||
LEFT OUTER JOIN nasreload n USING (nasipaddress) \
|
||||
WHERE username = '%{SQL-User-Name}' \
|
||||
AND acctstoptime IS NULL \
|
||||
AND (a.acctstarttime > n.reloadtime OR n.reloadtime IS NULL)"
|
||||
|
||||
accounting {
|
||||
reference = "%{tolower:type.%{%{Acct-Status-Type}:-%{Request-Processing-Stage}}.query}"
|
||||
|
||||
column_list = "\
|
||||
acctsessionid, acctuniqueid, username, \
|
||||
realm, nasipaddress, nasportid, \
|
||||
nasporttype, acctstarttime, acctupdatetime, \
|
||||
acctstoptime, acctsessiontime, acctauthentic, \
|
||||
connectinfo_start, connectinfo_stop, acctinputoctets, \
|
||||
acctoutputoctets, calledstationid, callingstationid, \
|
||||
acctterminatecause, servicetype, framedprotocol, \
|
||||
framedipaddress, framedipv6address, framedipv6prefix, \
|
||||
framedinterfaceid, delegatedipv6prefix ${..class.column_name}"
|
||||
|
||||
type {
|
||||
accounting-on {
|
||||
query = "\
|
||||
UPDATE ${....acct_table1} \
|
||||
SET \
|
||||
acctstoptime = ${....event_timestamp}, \
|
||||
acctsessiontime = '${....event_timestamp_epoch}' \
|
||||
- UNIX_TIMESTAMP(acctstarttime), \
|
||||
acctterminatecause = '%{%{Acct-Terminate-Cause}:-NAS-Reboot}' \
|
||||
WHERE acctstoptime IS NULL \
|
||||
AND nasipaddress = '%{NAS-IP-Address}' \
|
||||
AND acctstarttime <= ${....event_timestamp}"
|
||||
|
||||
-query = "\
|
||||
INSERT INTO nasreload \
|
||||
SET \
|
||||
nasipaddress = '%{NAS-IP-Address}', \
|
||||
reloadtime = ${....event_timestamp} \
|
||||
ON DUPLICATE KEY UPDATE reloadtime = ${....event_timestamp}"
|
||||
}
|
||||
|
||||
accounting-off {
|
||||
query = "${..accounting-on.query}"
|
||||
}
|
||||
|
||||
post-auth {
|
||||
query = "\
|
||||
INSERT INTO ${....acct_table1} \
|
||||
(${...column_list}) \
|
||||
VALUES(\
|
||||
'%{Acct-Session-Id}', \
|
||||
'%{Acct-Unique-Session-Id}', \
|
||||
'%{SQL-User-Name}', \
|
||||
'%{Realm}', \
|
||||
'%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}', \
|
||||
NULLIF('%{%{NAS-Port-ID}:-%{NAS-Port}}', ''), \
|
||||
'%{NAS-Port-Type}', \
|
||||
${....event_timestamp}, \
|
||||
${....event_timestamp}, \
|
||||
NULL, \
|
||||
0, \
|
||||
'', \
|
||||
'%{Connect-Info}', \
|
||||
NULL, \
|
||||
0, \
|
||||
0, \
|
||||
'%{Called-Station-Id}', \
|
||||
'%{Calling-Station-Id}', \
|
||||
'', \
|
||||
'%{Service-Type}', \
|
||||
NULL, \
|
||||
'', \
|
||||
'', \
|
||||
'', \
|
||||
'', \
|
||||
'' \
|
||||
${....class.packet_xlat})"
|
||||
|
||||
query = "\
|
||||
UPDATE ${....acct_table1} SET \
|
||||
AcctStartTime = ${....event_timestamp}, \
|
||||
AcctUpdateTime = ${....event_timestamp}, \
|
||||
ConnectInfo_start = '%{Connect-Info}', \
|
||||
AcctSessionId = '%{Acct-Session-Id}' \
|
||||
WHERE UserName = '%{SQL-User-Name}' \
|
||||
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
||||
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
||||
AND NASPortType = '%{NAS-Port-Type}' \
|
||||
AND AcctStopTime IS NULL"
|
||||
}
|
||||
|
||||
start {
|
||||
query = "\
|
||||
INSERT INTO ${....acct_table1} \
|
||||
(${...column_list}) \
|
||||
VALUES \
|
||||
('%{Acct-Session-Id}', \
|
||||
'%{Acct-Unique-Session-Id}', \
|
||||
'%{SQL-User-Name}', \
|
||||
'%{Realm}', \
|
||||
'%{NAS-IP-Address}', \
|
||||
'%{%{NAS-Port-ID}:-%{NAS-Port}}', \
|
||||
'%{NAS-Port-Type}', \
|
||||
${....event_timestamp}, \
|
||||
${....event_timestamp}, \
|
||||
NULL, \
|
||||
'0', \
|
||||
'%{Acct-Authentic}', \
|
||||
'%{Connect-Info}', \
|
||||
'', \
|
||||
'0', \
|
||||
'0', \
|
||||
'%{Called-Station-Id}', \
|
||||
'%{Calling-Station-Id}', \
|
||||
'', \
|
||||
'%{Service-Type}', \
|
||||
'%{Framed-Protocol}', \
|
||||
'%{Framed-IP-Address}', \
|
||||
'%{Framed-IPv6-Address}', \
|
||||
'%{Framed-IPv6-Prefix}', \
|
||||
'%{Framed-Interface-Id}', \
|
||||
'%{Delegated-IPv6-Prefix}' \
|
||||
${....class.packet_xlat})"
|
||||
|
||||
-query = "\
|
||||
UPDATE ${....acct_table1} \
|
||||
SET \
|
||||
AcctSessionId = '%{Acct-Session-Id}', \
|
||||
AcctUniqueId = '%{Acct-Unique-Session-Id}', \
|
||||
AcctAuthentic = '%{Acct-Authentic}', \
|
||||
ConnectInfo_start = '%{Connect-Info}', \
|
||||
ServiceType = '%{Service-Type}', \
|
||||
FramedProtocol = '%{Framed-Protocol}', \
|
||||
framedipaddress = '%{Framed-IP-Address}', \
|
||||
framedipv6address = '%{Framed-IPv6-Address}', \
|
||||
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
||||
framedinterfaceid = '%{Framed-Interface-Id}', \
|
||||
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
||||
AcctStartTime = ${....event_timestamp}, \
|
||||
AcctUpdateTime = ${....event_timestamp} \
|
||||
WHERE UserName = '%{SQL-User-Name}' \
|
||||
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
||||
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
||||
AND NASPortType = '%{NAS-Port-Type}' \
|
||||
AND AcctStopTime IS NULL"
|
||||
|
||||
query = "\
|
||||
UPDATE ${....acct_table1} SET \
|
||||
acctstarttime = ${....event_timestamp}, \
|
||||
acctupdatetime = ${....event_timestamp}, \
|
||||
connectinfo_start = '%{Connect-Info}' \
|
||||
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
|
||||
}
|
||||
|
||||
interim-update {
|
||||
query = "\
|
||||
UPDATE ${....acct_table1} \
|
||||
SET \
|
||||
acctupdatetime = (@acctupdatetime_old:=acctupdatetime), \
|
||||
acctupdatetime = ${....event_timestamp}, \
|
||||
acctinterval = ${....event_timestamp_epoch} - \
|
||||
UNIX_TIMESTAMP(@acctupdatetime_old), \
|
||||
framedipaddress = '%{Framed-IP-Address}', \
|
||||
framedipv6address = '%{Framed-IPv6-Address}', \
|
||||
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
||||
framedinterfaceid = '%{Framed-Interface-Id}', \
|
||||
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
||||
acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \
|
||||
acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
||||
acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Output-Octets}:-0}' \
|
||||
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
|
||||
|
||||
query = "\
|
||||
INSERT INTO ${....acct_table1} \
|
||||
(${...column_list}) \
|
||||
VALUES \
|
||||
('%{Acct-Session-Id}', \
|
||||
'%{Acct-Unique-Session-Id}', \
|
||||
'%{SQL-User-Name}', \
|
||||
'%{Realm}', \
|
||||
'%{NAS-IP-Address}', \
|
||||
'%{%{NAS-Port-ID}:-%{NAS-Port}}', \
|
||||
'%{NAS-Port-Type}', \
|
||||
FROM_UNIXTIME(${....event_timestamp_epoch} - %{%{Acct-Session-Time}:-0}), \
|
||||
${....event_timestamp}, \
|
||||
NULL, \
|
||||
%{%{Acct-Session-Time}:-NULL}, \
|
||||
'%{Acct-Authentic}', \
|
||||
'%{Connect-Info}', \
|
||||
'', \
|
||||
'%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', \
|
||||
'%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}', \
|
||||
'%{Called-Station-Id}', \
|
||||
'%{Calling-Station-Id}', \
|
||||
'', \
|
||||
'%{Service-Type}', \
|
||||
'%{Framed-Protocol}', \
|
||||
'%{Framed-IP-Address}', \
|
||||
'%{Framed-IPv6-Address}', \
|
||||
'%{Framed-IPv6-Prefix}', \
|
||||
'%{Framed-Interface-Id}', \
|
||||
'%{Delegated-IPv6-Prefix}' \
|
||||
${....class.packet_xlat})"
|
||||
|
||||
-query = "\
|
||||
UPDATE ${....acct_table1} \
|
||||
SET \
|
||||
AcctSessionId = '%{Acct-Session-Id}', \
|
||||
AcctUniqueId = '%{Acct-Unique-Session-Id}', \
|
||||
AcctAuthentic = '%{Acct-Authentic}', \
|
||||
ConnectInfo_start = '%{Connect-Info}', \
|
||||
ServiceType = '%{Service-Type}', \
|
||||
FramedProtocol = '%{Framed-Protocol}', \
|
||||
framedipaddress = '%{Framed-IP-Address}', \
|
||||
framedipv6address = '%{Framed-IPv6-Address}', \
|
||||
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
||||
framedinterfaceid = '%{Framed-Interface-Id}', \
|
||||
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
||||
AcctUpdateTime = ${....event_timestamp}, \
|
||||
AcctSessionTime = %{%{Acct-Session-Time}:-NULL}, \
|
||||
AcctInputOctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
||||
AcctOutputOctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Output-Octets}:-0}' \
|
||||
WHERE UserName = '%{SQL-User-Name}' \
|
||||
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
||||
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
||||
AND NASPortType = '%{NAS-Port-Type}' \
|
||||
AND AcctStopTime IS NULL"
|
||||
}
|
||||
|
||||
stop {
|
||||
query = "\
|
||||
UPDATE ${....acct_table2} SET \
|
||||
acctstoptime = ${....event_timestamp}, \
|
||||
acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \
|
||||
acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
||||
acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Output-Octets}:-0}', \
|
||||
acctterminatecause = '%{Acct-Terminate-Cause}', \
|
||||
connectinfo_stop = '%{Connect-Info}' \
|
||||
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
|
||||
|
||||
query = "\
|
||||
INSERT INTO ${....acct_table2} \
|
||||
(${...column_list}) \
|
||||
VALUES \
|
||||
('%{Acct-Session-Id}', \
|
||||
'%{Acct-Unique-Session-Id}', \
|
||||
'%{SQL-User-Name}', \
|
||||
'%{Realm}', \
|
||||
'%{NAS-IP-Address}', \
|
||||
'%{%{NAS-Port-ID}:-%{NAS-Port}}', \
|
||||
'%{NAS-Port-Type}', \
|
||||
FROM_UNIXTIME(${....event_timestamp_epoch} - %{%{Acct-Session-Time}:-0}), \
|
||||
${....event_timestamp}, \
|
||||
${....event_timestamp}, \
|
||||
%{%{Acct-Session-Time}:-NULL}, \
|
||||
'%{Acct-Authentic}', \
|
||||
'', \
|
||||
'%{Connect-Info}', \
|
||||
'%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', \
|
||||
'%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}', \
|
||||
'%{Called-Station-Id}', \
|
||||
'%{Calling-Station-Id}', \
|
||||
'%{Acct-Terminate-Cause}', \
|
||||
'%{Service-Type}', \
|
||||
'%{Framed-Protocol}', \
|
||||
'%{Framed-IP-Address}', \
|
||||
'%{Framed-IPv6-Address}', \
|
||||
'%{Framed-IPv6-Prefix}', \
|
||||
'%{Framed-Interface-Id}', \
|
||||
'%{Delegated-IPv6-Prefix}' \
|
||||
${....class.packet_xlat})"
|
||||
|
||||
-query = "\
|
||||
UPDATE ${....acct_table1} \
|
||||
SET \
|
||||
AcctSessionId = '%{Acct-Session-Id}', \
|
||||
AcctUniqueId = '%{Acct-Unique-Session-Id}', \
|
||||
AcctAuthentic = '%{Acct-Authentic}', \
|
||||
ConnectInfo_start = '%{Connect-Info}', \
|
||||
ServiceType = '%{Service-Type}', \
|
||||
FramedProtocol = '%{Framed-Protocol}', \
|
||||
framedipaddress = '%{Framed-IP-Address}', \
|
||||
framedipv6address = '%{Framed-IPv6-Address}', \
|
||||
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
||||
framedinterfaceid = '%{Framed-Interface-Id}', \
|
||||
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
||||
AcctStopTime = ${....event_timestamp}, \
|
||||
AcctUpdateTime = ${....event_timestamp}, \
|
||||
AcctSessionTime = %{Acct-Session-Time}, \
|
||||
AcctInputOctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
||||
AcctOutputOctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
||||
<< 32 | '%{%{Acct-Output-Octets}:-0}', \
|
||||
AcctTerminateCause = '%{Acct-Terminate-Cause}', \
|
||||
ConnectInfo_stop = '%{Connect-Info}' \
|
||||
WHERE UserName = '%{SQL-User-Name}' \
|
||||
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
||||
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
||||
AND NASPortType = '%{NAS-Port-Type}' \
|
||||
AND AcctStopTime IS NULL"
|
||||
}
|
||||
|
||||
accounting {
|
||||
query = "SELECT true"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post-auth {
|
||||
query = "\
|
||||
INSERT INTO ${..postauth_table} \
|
||||
(username, pass, reply, authdate ${..class.column_name}) \
|
||||
VALUES ( \
|
||||
'%{SQL-User-Name}', \
|
||||
'%{%{User-Password}:-%{Chap-Password}}', \
|
||||
'%{reply:Packet-Type}', \
|
||||
'%S.%M' \
|
||||
${..class.reply_xlat})"
|
||||
}
|
||||
130
ansible/roles/freeradius/files/schema.sql
Normal file
130
ansible/roles/freeradius/files/schema.sql
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
-- FreeRADIUS v3 MySQL schema
|
||||
-- Managed by Ansible
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radacct (
|
||||
radacctid bigint(21) NOT NULL auto_increment,
|
||||
acctsessionid varchar(64) NOT NULL default '',
|
||||
acctuniqueid varchar(32) NOT NULL default '',
|
||||
username varchar(64) NOT NULL default '',
|
||||
realm varchar(64) default '',
|
||||
nasipaddress varchar(15) NOT NULL default '',
|
||||
nasportid varchar(32) default NULL,
|
||||
nasporttype varchar(32) default NULL,
|
||||
acctstarttime datetime NULL default NULL,
|
||||
acctupdatetime datetime NULL default NULL,
|
||||
acctstoptime datetime NULL default NULL,
|
||||
acctinterval int(12) default NULL,
|
||||
acctsessiontime int(12) unsigned default NULL,
|
||||
acctauthentic varchar(32) default NULL,
|
||||
connectinfo_start varchar(128) default NULL,
|
||||
connectinfo_stop varchar(128) default NULL,
|
||||
acctinputoctets bigint(20) default NULL,
|
||||
acctoutputoctets bigint(20) default NULL,
|
||||
calledstationid varchar(50) NOT NULL default '',
|
||||
callingstationid varchar(50) NOT NULL default '',
|
||||
acctterminatecause varchar(32) NOT NULL default '',
|
||||
servicetype varchar(32) default NULL,
|
||||
framedprotocol varchar(32) default NULL,
|
||||
framedipaddress varchar(15) NOT NULL default '',
|
||||
framedipv6address varchar(45) NOT NULL default '',
|
||||
framedipv6prefix varchar(45) NOT NULL default '',
|
||||
framedinterfaceid varchar(44) NOT NULL default '',
|
||||
delegatedipv6prefix varchar(45) NOT NULL default '',
|
||||
class varchar(64) default NULL,
|
||||
PRIMARY KEY (radacctid),
|
||||
UNIQUE KEY acctuniqueid (acctuniqueid),
|
||||
KEY username (username),
|
||||
KEY framedipaddress (framedipaddress),
|
||||
KEY framedipv6address (framedipv6address),
|
||||
KEY framedipv6prefix (framedipv6prefix),
|
||||
KEY framedinterfaceid (framedinterfaceid),
|
||||
KEY delegatedipv6prefix (delegatedipv6prefix),
|
||||
KEY acctsessionid (acctsessionid),
|
||||
KEY acctsessiontime (acctsessiontime),
|
||||
KEY acctstarttime (acctstarttime),
|
||||
KEY acctinterval (acctinterval),
|
||||
KEY acctstoptime (acctstoptime),
|
||||
KEY nasipaddress (nasipaddress),
|
||||
KEY class (class)
|
||||
) ENGINE = INNODB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radcheck (
|
||||
id int(11) unsigned NOT NULL auto_increment,
|
||||
username varchar(64) NOT NULL default '',
|
||||
attribute varchar(64) NOT NULL default '',
|
||||
op char(2) NOT NULL DEFAULT '==',
|
||||
value varchar(253) NOT NULL default '',
|
||||
PRIMARY KEY (id),
|
||||
KEY username (username(32))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radgroupcheck (
|
||||
id int(11) unsigned NOT NULL auto_increment,
|
||||
groupname varchar(64) NOT NULL default '',
|
||||
attribute varchar(64) NOT NULL default '',
|
||||
op char(2) NOT NULL DEFAULT '==',
|
||||
value varchar(253) NOT NULL default '',
|
||||
PRIMARY KEY (id),
|
||||
KEY groupname (groupname(32))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radgroupreply (
|
||||
id int(11) unsigned NOT NULL auto_increment,
|
||||
groupname varchar(64) NOT NULL default '',
|
||||
attribute varchar(64) NOT NULL default '',
|
||||
op char(2) NOT NULL DEFAULT '=',
|
||||
value varchar(253) NOT NULL default '',
|
||||
PRIMARY KEY (id),
|
||||
KEY groupname (groupname(32))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radreply (
|
||||
id int(11) unsigned NOT NULL auto_increment,
|
||||
username varchar(64) NOT NULL default '',
|
||||
attribute varchar(64) NOT NULL default '',
|
||||
op char(2) NOT NULL DEFAULT '=',
|
||||
value varchar(253) NOT NULL default '',
|
||||
PRIMARY KEY (id),
|
||||
KEY username (username(32))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radusergroup (
|
||||
id int(11) unsigned NOT NULL auto_increment,
|
||||
username varchar(64) NOT NULL default '',
|
||||
groupname varchar(64) NOT NULL default '',
|
||||
priority int(11) NOT NULL default '1',
|
||||
PRIMARY KEY (id),
|
||||
KEY username (username(32))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS radpostauth (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
username varchar(64) NOT NULL default '',
|
||||
pass varchar(64) NOT NULL default '',
|
||||
reply varchar(32) NOT NULL default '',
|
||||
authdate timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
class varchar(64) default NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY username (username),
|
||||
KEY class (class)
|
||||
) ENGINE = INNODB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS nas (
|
||||
id int(10) NOT NULL auto_increment,
|
||||
nasname varchar(128) NOT NULL,
|
||||
shortname varchar(32),
|
||||
type varchar(30) DEFAULT 'other',
|
||||
ports int(5),
|
||||
secret varchar(60) DEFAULT 'secret' NOT NULL,
|
||||
server varchar(64),
|
||||
community varchar(50),
|
||||
description varchar(200) DEFAULT 'RADIUS Client',
|
||||
PRIMARY KEY (id),
|
||||
KEY nasname (nasname)
|
||||
) ENGINE = INNODB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS nasreload (
|
||||
nasipaddress varchar(15) NOT NULL,
|
||||
reloadtime datetime NOT NULL,
|
||||
PRIMARY KEY (nasipaddress)
|
||||
) ENGINE = INNODB;
|
||||
521
ansible/roles/freeradius/files/seed-data.sql
Normal file
521
ansible/roles/freeradius/files/seed-data.sql
Normal file
|
|
@ -0,0 +1,521 @@
|
|||
|
||||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.11.18-MariaDB, for Linux (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: radius
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.11.18-MariaDB-log
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `radcheck`
|
||||
--
|
||||
|
||||
LOCK TABLES `radcheck` WRITE;
|
||||
/*!40000 ALTER TABLE `radcheck` DISABLE KEYS */;
|
||||
INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES (29581,'joseortiz','Cleartext-Password',':=','J2WEYT7782UJ'),
|
||||
(29578,'perlachavez2','Cleartext-Password',':=','U4BBTBMCJZST'),
|
||||
(29575,'thomashernandez','Cleartext-Password',':=','X6BZLA7SC3XM'),
|
||||
(29572,'williamarmstead','Cleartext-Password',':=','SAQ4XEKXDC58'),
|
||||
(29570,'julierose','Cleartext-Password',':=','MLM8R2WAGY52'),
|
||||
(29571,'derrickmccausland','Cleartext-Password',':=','ETNLKZHACGF7'),
|
||||
(29567,'sherrifredrick','Cleartext-Password',':=','7P52BVMTSNN6'),
|
||||
(29565,'shelbyburris','Cleartext-Password',':=','3YAL9DWFZUPT'),
|
||||
(29564,'priscillacrenshaw','Cleartext-Password',':=','AXBDLXSGXMLR'),
|
||||
(29561,'korybiggs','Cleartext-Password',':=','4FJC7DXAW5RV'),
|
||||
(29563,'kristinjimenez','Cleartext-Password',':=','9FAYXMRDU69T'),
|
||||
(29558,'jessicaweddle','Cleartext-Password',':=','VV96G36AEEDA'),
|
||||
(29557,'yolandamedrano','Cleartext-Password',':=','R948UL4KZRA4'),
|
||||
(29555,'williambowland','Cleartext-Password',':=','K7HYNWGE25XX'),
|
||||
(29554,'marcuspatton','Cleartext-Password',':=','GEUXX27VLZXK'),
|
||||
(29553,'shacaciabillings','Cleartext-Password',':=','8AZLJCDFYFYV'),
|
||||
(29552,'guadalupelugo','Cleartext-Password',':=','DQG8XCMFMVH5'),
|
||||
(29551,'brandonhardesty','Cleartext-Password',':=','KMRHVPEXBEZ8'),
|
||||
(29550,'nancyavellaneda','Cleartext-Password',':=','CXATYV7NGZN2'),
|
||||
(29549,'matthewgoodwin','Cleartext-Password',':=','VSPM7N9UNU6Y'),
|
||||
(29545,'donmckinney','Cleartext-Password',':=','C6AQ6UVD6R7R'),
|
||||
(29544,'natashaelmore','Cleartext-Password',':=','8G5QJ8R7MK8Q'),
|
||||
(29543,'shamsbashir','Cleartext-Password',':=','WLBGY4JMN4VA'),
|
||||
(29541,'douglasglover','Cleartext-Password',':=','9Y6H9X3HCG3D'),
|
||||
(29538,'carolstrickland','Cleartext-Password',':=','547P6AQ8RCD4'),
|
||||
(29537,'carmenlopez','Cleartext-Password',':=','TPLND3H2FWTQ'),
|
||||
(29534,'johnlooper','Cleartext-Password',':=','ZPL8LRY2TGRH'),
|
||||
(29535,'davidroesch','Cleartext-Password',':=','ZHB2BS968DTU'),
|
||||
(29531,'daycor','Cleartext-Password',':=','U45YBPSARH7N'),
|
||||
(29530,'derekrodriguez','Cleartext-Password',':=','AP7Z594DMR7E'),
|
||||
(29522,'joshuasoliz','Cleartext-Password',':=','PE7MHRZWUEQM'),
|
||||
(29521,'tiffanyyarley-olenak','Cleartext-Password',':=','98HTZ9Q8FARG'),
|
||||
(29514,'ericbarrett','Cleartext-Password',':=','5S2CV9FEFMKG'),
|
||||
(29513,'marysmelser','Cleartext-Password',':=','ZS74NS5BBPX3'),
|
||||
(29506,'nicolemaenn','Cleartext-Password',':=','B7KS27WL5WSN'),
|
||||
(29503,'yolandajudge','Cleartext-Password',':=','6V8RLNK75LM8'),
|
||||
(29501,'craighovde','Cleartext-Password',':=','AVZXWBX8GQTC'),
|
||||
(29498,'joselucas','Cleartext-Password',':=','ZHMW9TE8QHRX'),
|
||||
(29488,'douggarber','Cleartext-Password',':=','WXP9J5SRJWEJ'),
|
||||
(29482,'carmencleghorn','Cleartext-Password',':=','VH3CBTJZAJ2Y'),
|
||||
(29472,'rubenreyez','Cleartext-Password',':=','66384Y7B4WR4'),
|
||||
(29464,'tiffanystewart','Cleartext-Password',':=','3EGVCS6RMF3Z'),
|
||||
(29449,'dejadodson','Cleartext-Password',':=','FLR4DJHPX6TG'),
|
||||
(29447,'coreyball','Cleartext-Password',':=','3JAUWZNAR9MB'),
|
||||
(29442,'toniyoung','Cleartext-Password',':=','RJ24VTRM7JA9'),
|
||||
(29434,'melanieweddle','Cleartext-Password',':=','XQ5L7PUM9RP6'),
|
||||
(29431,'zackknuckey','Cleartext-Password',':=','VP5CCX8LTE47'),
|
||||
(29425,'christinehamparyan','Cleartext-Password',':=','WEYX9R5P7J5L'),
|
||||
(29422,'joespeciale','Cleartext-Password',':=','UH6ZCM9WLGRQ'),
|
||||
(29420,'rogerbatt','Cleartext-Password',':=','KGDJZ7V66QQK'),
|
||||
(29419,'kalebjames','Cleartext-Password',':=','KMQDGPD5XB6Z'),
|
||||
(29416,'stevemolina','Cleartext-Password',':=','BLLHWPY9RCTC'),
|
||||
(29414,'mariatrejo','Cleartext-Password',':=','EYPWCQKKWYZH'),
|
||||
(29410,'kenhall','Cleartext-Password',':=','LX897BGJNMK5'),
|
||||
(29407,'deewilliams','Cleartext-Password',':=','R8AGX3E8WAHN'),
|
||||
(29406,'johnvayo','Cleartext-Password',':=','DJJNUEEHGAW5'),
|
||||
(29398,'anthonythompson','Cleartext-Password',':=','WB4E4MPJVHTB'),
|
||||
(29608,'stevecombest','ClearText-Password',':=','STVN23552Wt'),
|
||||
(29606,'mariacastanon','ClearText-Password',':=','iu297gkid9'),
|
||||
(29395,'vanessagomez1','Cleartext-Password',':=','J5JEW3HEBVAF'),
|
||||
(29607,'luisvelira','ClearText-Password',':=','uygo875491!'),
|
||||
(29609,'keithtucker','ClearText-Password',':=','14FYJSNUU48'),
|
||||
(29610,'angelatrevino','ClearText-Password',':=','KJGU39565'),
|
||||
(29611,'brittannieredden1','ClearText-Password',':=','TYFTUEZ7429'),
|
||||
(29612,'amymontelongo','ClearText-Password',':=','ig76f7fuvu'),
|
||||
(29613,'michaelasmith','ClearText-Password',':=','MS21353GHY'),
|
||||
(29614,'samanthatheis','ClearText-Password',':=','kf6u8djigk'),
|
||||
(29615,'janisstewart','ClearText-Password',':=','JD834HCUW1C'),
|
||||
(29616,'irenegaribay','ClearText-Password',':=','uky75dkc'),
|
||||
(29383,'leonardocoronel','Cleartext-Password',':=','TXPC494'),
|
||||
(29374,'alejandrolimon','Cleartext-Password',':=','MM4BSQS7FRTD'),
|
||||
(29368,'crystalharney','Cleartext-Password',':=','A7W26H834WLJ'),
|
||||
(29647,'radiantlifeministries','Cleartext-Password',':=','12FDIUNF5L7vM'),
|
||||
(29648,'krisdougherty','Cleartext-Password',':=','rweh75uj38'),
|
||||
(29355,'olgagutierrez','Cleartext-Password',':=','WERWRMUDBZ85'),
|
||||
(29353,'greghummel','Cleartext-Password',':=','JV84HSVAK6XR'),
|
||||
(29349,'bettymitchell','Cleartext-Password',':=','8CHHCNBWQLRV'),
|
||||
(29341,'wandadavis','Cleartext-Password',':=','JXQXXZ9MKFX6'),
|
||||
(29338,'scottanderson','Cleartext-Password',':=','RJ49A43SG3RA'),
|
||||
(29335,'jenniferboon','Cleartext-Password',':=','28ESU8ELVELP'),
|
||||
(29331,'marialopez','Cleartext-Password',':=','P3FNSPT7MEYM'),
|
||||
(29329,'cynthiasandlin','Cleartext-Password',':=','MCDTLMVFQXAV'),
|
||||
(29328,'bethanybell','Cleartext-Password',':=','3UUC5X27PETS'),
|
||||
(29323,'garrettojeda','Cleartext-Password',':=','U5PRQYZE2MM3'),
|
||||
(29325,'rayschaak','Cleartext-Password',':=','XSNLP62EK6VZ'),
|
||||
(29327,'carlaswearingen','Cleartext-Password',':=','E6DQ4B2T9JZD'),
|
||||
(29320,'lesliebewley','Cleartext-Password',':=','55KFSJMEDYLK'),
|
||||
(29317,'delainawaite','Cleartext-Password',':=','EM7TWHUS4SYU'),
|
||||
(29307,'esparanzagarza','Cleartext-Password',':=','VLL9ZNPRSTG5'),
|
||||
(29653,'midvalleyconcrete','Cleartext-Password',':=','BD58JYT2PJ6A'),
|
||||
(29273,'glendabeauchamp','Cleartext-Password',':=','RKA3J8WSPYJP'),
|
||||
(29256,'glindarichter','Cleartext-Password',':=','VXMLMDAFLNJ3'),
|
||||
(29251,'nhumorrison','Cleartext-Password',':=','EC32VDFKB9CB'),
|
||||
(29245,'brittanyworley','Cleartext-Password',':=','NBKYERRBSBH4'),
|
||||
(29661,'janiscable','Cleartext-Password',':=','JHC7U554JBTR'),
|
||||
(29243,'dustynfisher','Cleartext-Password',':=','XASFU3DBPZ5M'),
|
||||
(29237,'stephenbeegle','Cleartext-Password',':=','RU5GZVTVACRC'),
|
||||
(29229,'roseanndellavalle','Cleartext-Password',':=','5GAF6JHUWWYP'),
|
||||
(29231,'duanewright','Cleartext-Password',':=','VXK4FBLVFE7F'),
|
||||
(29222,'pablohernandez','Cleartext-Password',':=','P3YB6A4JGEDF'),
|
||||
(29217,'pavelavanesov','Cleartext-Password',':=','KP8ZSGC2DG2U'),
|
||||
(29216,'wanxiaxong','Cleartext-Password',':=','BER4NEK9M7NA'),
|
||||
(29215,'bryangoulart','Cleartext-Password',':=','DTNQFE4CXSFX'),
|
||||
(29204,'sandrahoughton','Cleartext-Password',':=','5XR4QMPBXVWY'),
|
||||
(29203,'adamstaeben','Cleartext-Password',':=','GP7RANJ8UCYP'),
|
||||
(29190,'russmott','Cleartext-Password',':=','J8ZN888UQSLR'),
|
||||
(29189,'karenstewart','Cleartext-Password',':=','JSKTFAJ2JYDX'),
|
||||
(29185,'heatherwomack','Cleartext-Password',':=','89W7S5Q7UAHP'),
|
||||
(29183,'wyndijames','Cleartext-Password',':=','CPSDNRQU95HJ'),
|
||||
(29182,'angelicacuayahuitl','Cleartext-Password',':=','VK8PZW3LK5F3'),
|
||||
(29181,'chasewilliams','Cleartext-Password',':=','W6AMPQEPY3BC'),
|
||||
(29176,'kevinarana','Cleartext-Password',':=','JAJYSEG75UZS'),
|
||||
(29166,'chrisclayton','Cleartext-Password',':=','BFJ462PLHJFV'),
|
||||
(29162,'billyhorton','Cleartext-Password',':=','MPTX573ZUYYG'),
|
||||
(29151,'chisediquezada','Cleartext-Password',':=','RJBYQ2NUB829'),
|
||||
(29649,'donwilhelmus','Cleartext-Password',':=','2V4NEL87RM39'),
|
||||
(29147,'angelmerlo','Cleartext-Password',':=','EWWAPXN9Z2YS'),
|
||||
(29656,'kavalleriefarm','Cleartext-Password',':=','8DFNNTPBPZGY'),
|
||||
(29113,'kerryblack','Cleartext-Password',':=','9D5S9ZD2FCBV'),
|
||||
(29110,'cliffordjennings','Cleartext-Password',':=','5GC7M65H9VGT'),
|
||||
(29098,'carlakimberling','Cleartext-Password',':=','SS4KRJYKTV7B'),
|
||||
(29088,'richardconklin','Cleartext-Password',':=','WEUNG5H3K8BB'),
|
||||
(29089,'leandrabeshea','Cleartext-Password',':=','7V8BZU4G83VF'),
|
||||
(29640,'kellygarza','Cleartext-Password',':=','4696591662'),
|
||||
(29660,'1stchoiceliving','Cleartext-Password',':=','YVWJWRPEVYNH'),
|
||||
(29067,'robertfinch','Cleartext-Password',':=','D7FMTT455GBB'),
|
||||
(29058,'ericcoffman','Cleartext-Password',':=','MMEBXQYLZWNU'),
|
||||
(29050,'nathanaelfinch','Cleartext-Password',':=','JVNC68FV7N6B'),
|
||||
(29047,'gabrielasereno','Cleartext-Password',':=','KCH82WCRA2YR'),
|
||||
(29045,'georginacovarrubias','Cleartext-Password',':=','8QT57NUV8C7R'),
|
||||
(29035,'thomascline','Cleartext-Password',':=','E523BKVU5MJP'),
|
||||
(29034,'susanlewis','Cleartext-Password',':=','R7TZFZEGLNRW'),
|
||||
(29025,'tammywelborn','Cleartext-Password',':=','RMC482WNBS7'),
|
||||
(29023,'haleymuela','Cleartext-Password',':=','BS7X3DTKW8TH'),
|
||||
(29018,'christelles','Cleartext-Password',':=','WL2TKLFG8G2H'),
|
||||
(29017,'mauricioantonio','Cleartext-Password',':=','6QJW7RAPDBWB'),
|
||||
(29013,'vincentlimon','Cleartext-Password',':=','YDDXKFABUZY7'),
|
||||
(29655,'tech','Cleartext-Password',':=','brussels-crucial-smashing'),
|
||||
(29634,'jeffreyharder','ClearText-Password',':=','YUV565D67RT'),
|
||||
(29635,'pablomartinez','ClearText-Password',':=','2766581BER'),
|
||||
(29636,'krystalmendez','ClearText-Password',':=','6FTCKU6S56'),
|
||||
(29637,'davidvandagriff','Cleartext-Password',':=','UTRC53865F9'),
|
||||
(29638,'carolynwalker','Cleartext-Password',':=','trjxtyx75!'),
|
||||
(28979,'claygilbert','Cleartext-Password',':=','3E6XFDHXCAG7'),
|
||||
(28978,'jmichaelculverhouse','Cleartext-Password',':=','2147099521'),
|
||||
(28971,'diegosereno','Cleartext-Password',':=','2CE9F5YSPQHX'),
|
||||
(28970,'ashleysmith','Cleartext-Password',':=','F8D3FVCZB7PD'),
|
||||
(28954,'dougstowe','Cleartext-Password',':=','5D35LFD6GEAZ'),
|
||||
(28936,'timbronschidle','ClearText-Password',':=','3ZVLCWSAE3EW1'),
|
||||
(28935,'chrislewis1','Cleartext-Password',':=','V9DS4E4Y7UTT'),
|
||||
(28928,'cynthiajones','Cleartext-Password',':=','KC7ESYHEZGNR'),
|
||||
(28917,'crankkeith','Cleartext-Password',':=','kcrank10615'),
|
||||
(29646,'kimberlyrichards','Cleartext-Password',':=','7PQA6J8RPZ9Z'),
|
||||
(28867,'bobbymack','Cleartext-Password',':=','UDUBTCXXF8VV'),
|
||||
(28848,'americatrejo','Cleartext-Password',':=','3B63TLTT9WE4'),
|
||||
(28832,'tjbanschbach','Cleartext-Password',':=','8WTWTXACGG5N'),
|
||||
(28811,'luiscabrera','Cleartext-Password',':=','RWUQ94XT9A9Z'),
|
||||
(28810,'rosahernandez','Cleartext-Password',':=','JSGUXKWEMSVN'),
|
||||
(28807,'carlosgomez','Cleartext-Password',':=','J22RS7F3LGG2'),
|
||||
(28800,'kennethcampbell','Cleartext-Password',':=','!9727342446!'),
|
||||
(28763,'jeridrutledge','Cleartext-Password',':=','GJ3CZTRJJW2M'),
|
||||
(28748,'timthomas','Cleartext-Password',':=','NY223RQJD7PN'),
|
||||
(28715,'carolbates','Cleartext-Password',':=','J3UBUCMYDX64'),
|
||||
(28710,'shirleyelmore','Cleartext-Password',':=','D8Y64N9L4R9W'),
|
||||
(28703,'grahammcintire2','Cleartext-Password',':=','U5Y3hA3g*14L'),
|
||||
(28702,'chrissyeagle2','Cleartext-Password',':=','NJPCGPBNFB'),
|
||||
(28698,'swedlund','Cleartext-Password',':=','swedlund494'),
|
||||
(28695,'wendysanders','Cleartext-Password',':=','RYG9L43NWDZV'),
|
||||
(28693,'robbymccollom','Cleartext-Password',':=','RMC482WNBS7'),
|
||||
(28671,'melodymccarty','Cleartext-Password',':=','U3WLEGEB'),
|
||||
(28664,'heatherbrister2','Cleartext-Password',':=','KK37V8W9ZD9Z'),
|
||||
(28663,'ryanlloyd','Cleartext-Password',':=','HWEMKNWX55RF'),
|
||||
(28661,'amyrodriguez','Cleartext-Password',':=','WX3QRT2U6L4X'),
|
||||
(28660,'thecountrycutter','Cleartext-Password',':=','YXpScFIneePm'),
|
||||
(28659,'bradwilson','Cleartext-Password',':=','ZFAXA9AK63AH'),
|
||||
(28654,'edrater','Cleartext-Password',':=','FRY4823N'),
|
||||
(28642,'barbihardin','Cleartext-Password',':=','ZENETJ75TEVQ'),
|
||||
(28637,'vikyacosta','Cleartext-Password',':=','Z4SMV49SAH72'),
|
||||
(28633,'terrimack','Cleartext-Password',':=','B9HNTSN7ASQ4'),
|
||||
(28628,'jackworthy','Cleartext-Password',':=','2VUR7AAFWZZQ'),
|
||||
(28617,'luisarellano','Cleartext-Password',':=','GVNWBQMM3S7U'),
|
||||
(28609,'dorisavalos','Cleartext-Password',':=','DLKMJS88AF2W'),
|
||||
(29654,'ryanrodriguez','Cleartext-Password',':=','9DFYWJ47YWUP'),
|
||||
(28597,'jackierollier','Cleartext-Password',':=','TSFNN8DVDSPR'),
|
||||
(28588,'charlesmccreary','Cleartext-Password',':=','88J6XS6TXRMA'),
|
||||
(28548,'jamessmith','Cleartext-Password',':=','LRVU6RVG5SP8'),
|
||||
(28546,'davidwhitefoot','Cleartext-Password',':=','PYHTZMHJU8R8-'),
|
||||
(28542,'michaelray2','Cleartext-Password',':=','jjPgDcotL6rtY'),
|
||||
(28536,'patriciavasquez','Cleartext-Password',':=','P88256487V'),
|
||||
(28535,'adrianmcdaniel','Cleartext-Password',':=','U4TGDH2PSAB4'),
|
||||
(28526,'justinvoga','Cleartext-Password',':=','URHVCX7SFSFU'),
|
||||
(28518,'jenniferlittle','Cleartext-Password',':=','8EAUUDQPXSQX'),
|
||||
(28510,'bradslate','Cleartext-Password',':=','AF4KVQ2P44M7'),
|
||||
(28494,'irisdelira','Cleartext-Password',':=','L6XGQA583DG6'),
|
||||
(28491,'richardbarragan','Cleartext-Password',':=','WJBS86MMJBFH'),
|
||||
(28476,'jensenhall','Cleartext-Password',':=','F8XM9U8SC6LL'),
|
||||
(28466,'paulcomella','Cleartext-Password',':=','YTZDMBZCMPX4'),
|
||||
(29639,'saidaacosta','Cleartext-Password',':=','V29897X4'),
|
||||
(28458,'kennethcampbell2','Cleartext-Password',':=','V5TKW8L6RXFF'),
|
||||
(28449,'amberkrings','Cleartext-Password',':=','5NWBR3JLV6N8'),
|
||||
(28438,'mauriciosoto','Cleartext-Password',':=','DJ7YP7W7AA8M'),
|
||||
(28435,'jimcrank','Cleartext-Password',':=','PLA7XNX2F4Y3'),
|
||||
(28425,'summerbeazley','Cleartext-Password',':=','D4S4YRB8Y3KA'),
|
||||
(28426,'davidarmstrong','Cleartext-Password',':=','MPEZGG53KQSZ'),
|
||||
(29651,'jackiehendricks','Cleartext-Password',':=','UQR5HGFCJ4XX'),
|
||||
(28395,'stevenspurgers','Cleartext-Password',':=','YS5Q785J2HGZ'),
|
||||
(28388,'connercoleman','Cleartext-Password',':=','6108RANDOMREDDOG'),
|
||||
(28367,'judithfierro','Cleartext-Password',':=','FUZ33LB6SFFC'),
|
||||
(28359,'tonyasipes','Cleartext-Password',':=','N5VEZR8Q5M86'),
|
||||
(28358,'stephenday','Cleartext-Password',':=','MSVGQ8X38YLN'),
|
||||
(28347,'kathysmith','Cleartext-Password',':=','SJ53PSYCZLPR'),
|
||||
(28344,'cherieeshelman','Cleartext-Password',':=','BRUV99PN6Y7L'),
|
||||
(29644,'buddyswan','Cleartext-Password',':=','N7XUYUD7J9SD'),
|
||||
(28296,'cinthiapereira1','Cleartext-Password',':=','9WSGXM9LBXGZ'),
|
||||
(28289,'ronberger','Cleartext-Password',':=','Ronb499H7ALW'),
|
||||
(28267,'sandracrouch','Cleartext-Password',':=','V4N3764R5J'),
|
||||
(28263,'abbieandrews','Cleartext-Password',':=','YQSJ499H7ALW'),
|
||||
(28253,'perlachavez','Cleartext-Password',':=','ZWR9PXVFFYBS'),
|
||||
(28246,'susanking','Cleartext-Password',':=','N2KUYLPDNXJP'),
|
||||
(28241,'terrybachran','Cleartext-Password',':=','NG9VMH25LCTC'),
|
||||
(28240,'lanaygaunce','Cleartext-Password',':=','MJCNZAJHK9H3'),
|
||||
(28190,'heatherbrister','Cleartext-Password',':=','6XPLC545G6HW'),
|
||||
(28184,'jenniferdunaway','Cleartext-Password',':=','343V5CT2R7HZ'),
|
||||
(28159,'elviraquezada','Cleartext-Password',':=','HXAS29VRX33V'),
|
||||
(28154,'jordainpatton','Cleartext-Password',':=','J8P4TPF7QS2A'),
|
||||
(28140,'mattkosarek','Cleartext-Password',':=','RJ4BQUZJY'),
|
||||
(28117,'shannonclark','Cleartext-Password',':=','F5XESMCJ'),
|
||||
(28107,'jacquelinewilder','Cleartext-Password',':=','HEY36LUGYCUQ'),
|
||||
(28098,'kevincostanzo','Cleartext-Password',':=','244VGMVMH66D'),
|
||||
(28093,'kenpatrick','Cleartext-Password',':=','V7U3XBAPTSV3'),
|
||||
(28083,'briangallimore','Cleartext-Password',':=','39V285NX'),
|
||||
(28072,'amberprater','Cleartext-Password',':=','RP42B7AYDLAP'),
|
||||
(28068,'marilynfowler','Cleartext-Password',':=','MarilynVG72P8H'),
|
||||
(28065,'douglaswilson','Cleartext-Password',':=','HP97HG9XPYC3'),
|
||||
(28034,'terrygortney','Cleartext-Password',':=','GQUGR3VJUXBR'),
|
||||
(28031,'gizellebutler','Cleartext-Password',':=','HMZTX66RTPVX'),
|
||||
(28029,'bradgurney','Cleartext-Password',':=','7A6LRZWT82DX'),
|
||||
(28024,'darrylchavis','Cleartext-Password',':=','TDGUUNXGMYRC'),
|
||||
(28025,'kathymazzola','Cleartext-Password',':=','5MVS8VUF9QL2'),
|
||||
(27994,'austinwatkins','Cleartext-Password',':=','S7M4UD8QUTDP'),
|
||||
(27988,'oscarrodriguez','Cleartext-Password',':=','TGPCF3Y2ABXS'),
|
||||
(27986,'erinthompson','Cleartext-Password',':=','69TQZ797'),
|
||||
(27983,'brianhardesty','Cleartext-Password',':=','8D4P34N8'),
|
||||
(27976,'cathyday','Cleartext-Password',':=','FAXMKENV8FCT'),
|
||||
(27956,'fredheckel','Cleartext-Password',':=','HUVZSE8RGD65'),
|
||||
(27949,'charlesboone','Cleartext-Password',':=','Ccbn78wdfksB'),
|
||||
(27948,'rachelguzzardi','Cleartext-Password',':=','R87wgerf8bsG'),
|
||||
(27939,'reynamoore','Cleartext-Password',':=','R92nbskba7iM'),
|
||||
(27936,'juanalonzo','Cleartext-Password',':=','745GF0JK5!W'),
|
||||
(27930,'kristinamurphy','Cleartext-Password',':=','oPXFrylqKf'),
|
||||
(27926,'johnnygoble','Cleartext-Password',':=','J829fhf7G'),
|
||||
(27923,'keithbarber','Cleartext-Password',':=','K73bvd54tB'),
|
||||
(27917,'doreengrubb','Cleartext-Password',':=','DOR32SVT1234'),
|
||||
(27916,'steveraia','Cleartext-Password',':=','DRR648DFTMSE4'),
|
||||
(27912,'blancadiaz','Cleartext-Password',':=','B548gdu55D'),
|
||||
(27896,'twcowley','Cleartext-Password',':=','TW486TW'),
|
||||
(27888,'joepatton','Cleartext-Password',':=','L7luYzSKSu'),
|
||||
(27873,'timfisher','Cleartext-Password',':=','Thd73gdf5eF'),
|
||||
(27847,'kileigheven','Cleartext-Password',':=','K9872gdf8E'),
|
||||
(27838,'consueloluna1830','Cleartext-Password',':=','C8736gfd0'),
|
||||
(27833,'deannecook','Cleartext-Password',':=','Dc872cobnC'),
|
||||
(27830,'kacyharrison','Cleartext-Password',':=','7Ozr7el6K1'),
|
||||
(27822,'milliganwater','Cleartext-Password',':=','8NjGMNsTXd'),
|
||||
(27813,'michaelnewby','Cleartext-Password',':=','TM5M3HU877'),
|
||||
(27808,'ladonnaclark','Cleartext-Password',':=','YQReVH9men'),
|
||||
(27800,'jamesmooney','Cleartext-Password',':=','QNUqD2tSzq'),
|
||||
(29657,'branchrvpark','Cleartext-Password',':=','XfKxVZIKmm'),
|
||||
(27783,'tamythomas','Cleartext-Password',':=','TT4699520858tt'),
|
||||
(27781,'pambanschbach','Cleartext-Password',':=','Q2p68#*9vwF2'),
|
||||
(27780,'josephcruz','Cleartext-Password',':=','Z06oxJXrNd'),
|
||||
(27761,'franceskirby','Cleartext-Password',':=','FK8179391152fk'),
|
||||
(27759,'chadwhitsell','Cleartext-Password',':=','79374B75phGy'),
|
||||
(29641,'gordonhamilton','Cleartext-Password',':=','c3495Rpuq5Sh'),
|
||||
(27754,'ruthfengler','Cleartext-Password',':=','8q8MX6NQP3b6'),
|
||||
(27751,'bobbyfisher','Cleartext-Password',':=','salvagejuggle'),
|
||||
(27748,'eddieyarbrough','Cleartext-Password',':=','89298ChZWzMy'),
|
||||
(27744,'chrissyeagle','Cleartext-Password',':=','9vkX97426Sgt'),
|
||||
(27739,'victoriaobier','Cleartext-Password',':=','M57B288P9'),
|
||||
(27736,'bernardheer','Cleartext-Password',':=','BH33682019BER'),
|
||||
(27734,'garycable','Cleartext-Password',':=','M2w6z5Y73'),
|
||||
(27735,'coyungemach','Cleartext-Password',':=','MhS569N84e7a'),
|
||||
(27733,'michaelmccauley','Cleartext-Password',':=','CPORADIO98'),
|
||||
(27731,'lessruble','Cleartext-Password',':=','9U35SXxM2H8y'),
|
||||
(27730,'marknunnelee','Cleartext-Password',':=','833j2Ymm4yfV'),
|
||||
(27729,'elizabethchristian','Cleartext-Password',':=','Webg22nj'),
|
||||
(27724,'mikebell','Cleartext-Password',':=','BHF538HSEBDLY4'),
|
||||
(27713,'krystabates','Cleartext-Password',':=','KB2145445824kb'),
|
||||
(29658,'sensibleheatsystems','Cleartext-Password',':=','SHQWERY23'),
|
||||
(27708,'chrisfrancis','Cleartext-Password',':=','DR45QC74M'),
|
||||
(29659,'lambandlion','Cleartext-Password',':=','LL9727363567ll'),
|
||||
(27701,'markfisher','Cleartext-Password',':=','32fd8P&rw8s7'),
|
||||
(27696,'kirkvanmeter','Cleartext-Password',':=','J2sR9g^83M33'),
|
||||
(27694,'dananance','Cleartext-Password',':=','23SP$e!ug232'),
|
||||
(27690,'keithcrank','Cleartext-Password',':=','2zt3T5w72T3A'),
|
||||
(27687,'scottarmstrong','Cleartext-Password',':=','2SV58M55'),
|
||||
(27683,'floydday','Cleartext-Password',':=','Tfdd3254tfD'),
|
||||
(27680,'mariacortes','Cleartext-Password',':=','MC2145858276mc'),
|
||||
(27668,'christianlummus','ClearText-Password',':=','K6dbr631ddL'),
|
||||
(27666,'marklindsey','Cleartext-Password',':=','ML9727346434ml'),
|
||||
(27658,'joeywhitfield','Cleartext-Password',':=','BV758qXne446'),
|
||||
(27654,'taekim','Cleartext-Password',':=','SAN11837TCK'),
|
||||
(27652,'teresarobinson','Cleartext-Password',':=','T645trdf87fR'),
|
||||
(27651,'nathanmctee','Cleartext-Password',':=','N32462uu8rM'),
|
||||
(27646,'rebekahmoore','Cleartext-Password',':=','R756346tfg4M'),
|
||||
(27643,'monicatrevino','Cleartext-Password',':=','MT2145877143mt'),
|
||||
(27640,'rachelfuller','Cleartext-Password',':=','R8364hbst'),
|
||||
(27639,'choonpang','Cleartext-Password',':=','CP2143855677cp'),
|
||||
(27638,'shannonbrown','Cleartext-Password',':=','S9725298223b'),
|
||||
(27637,'allentaylor','Cleartext-Password',':=','A6346gge8T1'),
|
||||
(27632,'kristenaustin','Cleartext-Password',':=','KA8017916972ka'),
|
||||
(27630,'colinhopper','Cleartext-Password',':=','TYVU65445IUB'),
|
||||
(29642,'mattbud','Cleartext-Password',':=','kjklfda79sd'),
|
||||
(27621,'richardhill','Cleartext-Password',':=','RH9729788124rh'),
|
||||
(27619,'srireddy','Cleartext-Password',':=','ycHAvetmF0'),
|
||||
(27618,'tammieventris','Cleartext-Password',':=','DR45QC74M'),
|
||||
(27615,'almaacosta','Cleartext-Password',':=','ENKC5DGV'),
|
||||
(27614,'chrispassonno','Cleartext-Password',':=','C8766thf96P'),
|
||||
(27613,'seanbaxter','Cleartext-Password',':=','SB4696679337sb'),
|
||||
(27612,'collinhartman','Cleartext-Password',':=','B886tg98jt9L'),
|
||||
(27608,'michaeltalbot','Cleartext-Password',':=','Mjj1276rt99T'),
|
||||
(27606,'anagonzalez','Cleartext-Password',':=','WNAHDMwWoE'),
|
||||
(27604,'leonardlewis','Cleartext-Password',':=','L1877ef32L'),
|
||||
(27598,'jerryjohnson','Cleartext-Password',':=','J177895aa98J'),
|
||||
(27594,'pamtoler','Cleartext-Password',':=','NfxcgYQUbj'),
|
||||
(27589,'jodymccluskey','Cleartext-Password',':=','JM4696883349jm'),
|
||||
(27579,'donnance','Cleartext-Password',':=','9727346814'),
|
||||
(27577,'chrisvannatta','Cleartext-Password',':=','!4694502484!'),
|
||||
(27575,'mariomerlo','Cleartext-Password',':=','!2149579585!'),
|
||||
(27572,'williamarmstrong','Cleartext-Password',':=','!2145510334!'),
|
||||
(27571,'trecedaschmid','Cleartext-Password',':=','!4692075942!'),
|
||||
(27570,'ronlewis','Cleartext-Password',':=','JDkf1AL942'),
|
||||
(27567,'sherryerichardson','Cleartext-Password',':=','DR6528BCD3S2'),
|
||||
(27566,'joannarodriguez','Cleartext-Password',':=','394X3YR9'),
|
||||
(27561,'dannycampbell','Cleartext-Password',':=','!9726589541!'),
|
||||
(27560,'howardcomstock','Cleartext-Password',':=','!3365494230!'),
|
||||
(27555,'terrymiesen','Cleartext-Password',':=','!4697420828!'),
|
||||
(27550,'michaelray','Cleartext-Password',':=','primitivedefinitionstoredinner'),
|
||||
(27545,'terrybates','Cleartext-Password',':=','!2145786644!'),
|
||||
(27538,'gregmcintire','Cleartext-Password',':=','v9368$E9mx9m'),
|
||||
(27543,'beverlyerwin','Cleartext-Password',':=','MOOLAH'),
|
||||
(27518,'helenlumpkin','Cleartext-Password',':=','Heehhejd0N'),
|
||||
(27508,'stevechristiaens','Cleartext-Password',':=','zY272m258*vJ'),
|
||||
(27505,'judydevine','Cleartext-Password',':=','OD4697669725od'),
|
||||
(27501,'jonnytaylor','Cleartext-Password',':=','Zb6677&4!yky'),
|
||||
(27500,'rhondabolton','Cleartext-Password',':=','RB2145786030rb'),
|
||||
(27492,'rickbeckham','Cleartext-Password',':=','tVj7ZI5QA0'),
|
||||
(29652,'jenniferreed','Cleartext-Password',':=','683P7V7R'),
|
||||
(27490,'vancepeltonen','Cleartext-Password',':=','V66rdf43aaP'),
|
||||
(27486,'jacobwilliams','Cleartext-Password',':=','jnlka9994jkfldsa'),
|
||||
(29650,'irvinbarojas','Cleartext-Password',':=','yDeEJzYY08'),
|
||||
(27478,'classicshear','Cleartext-Password',':=','KARENALDERSON'),
|
||||
(27477,'davekiowski','Cleartext-Password',':=','FNW63KXSAPT7'),
|
||||
(27458,'paulsammataro','Cleartext-Password',':=','P2n74V7P8g4S'),
|
||||
(27460,'janetkern','Cleartext-Password',':=','j42252^Bhf44'),
|
||||
(27457,'carlossalaises','Cleartext-Password',':=','28E358y$JFB9'),
|
||||
(27453,'obedsandoval','Cleartext-Password',':=','*H78z9xy84C&'),
|
||||
(27455,'dianewiley','Cleartext-Password',':=','Diane03t4&adTL'),
|
||||
(27444,'tammylove','Cleartext-Password',':=','f65NS4Ct6$29'),
|
||||
(27438,'floydallen','Cleartext-Password',':=','V3864VB2'),
|
||||
(27436,'clayrobertson2','Cleartext-Password',':=','C2147288546R'),
|
||||
(27432,'hortenciaalvarez','Cleartext-Password',':=','WHTABORG3593JKS'),
|
||||
(27424,'timbagert','Cleartext-Password',':=','CF18n42cY7'),
|
||||
(27425,'davidbaker','Cleartext-Password',':=','DB764g1d87rtB'),
|
||||
(27421,'janicealexander','Cleartext-Password',':=','AG57TSH89L9'),
|
||||
(27423,'timgilbert','Cleartext-Password',':=','73xi0r600Sz%'),
|
||||
(27417,'donniecampbell','Cleartext-Password',':=','6a2671bc0c1'),
|
||||
(27418,'alanwyatt','Cleartext-Password',':=','i1412r53MYr'),
|
||||
(27413,'jesusrios','Cleartext-Password',':=','8Di6QMs7%7m1'),
|
||||
(27409,'veronabaptist','Cleartext-Password',':=','DAY753LIGHT253'),
|
||||
(27406,'whiteywhite','Cleartext-Password',':=','45z6r*H4418n'),
|
||||
(27404,'grahammcintire','Cleartext-Password',':=','U5Y3hA3g*14L'),
|
||||
(27402,'louislafon','Cleartext-Password',':=','RFTRE4825CVKL'),
|
||||
(27397,'ausencioluna','Cleartext-Password',':=','ABN765MNL'),
|
||||
(27374,'davidvillanueva','Cleartext-Password',':=','DV5489CRPMWBQ'),
|
||||
(29620,'sayedahaque','ClearText-Password',':=','YR4Sytbu'),
|
||||
(29621,'coryrees','ClearText-Password',':=','yt5c6ujhvu'),
|
||||
(29622,'brianamartinez','ClearText-Password',':=','ktydr6428'),
|
||||
(29623,'khushbooagarwal','ClearText-Password',':=','UUTFVUCTC446'),
|
||||
(29624,'elisasanders','ClearText-Password',':=','OYTCu3276'),
|
||||
(29625,'josemedrano','ClearText-Password',':=','UYVITRUR24'),
|
||||
(29645,'karengreen','Cleartext-Password',':=','UTKCYI674'),
|
||||
(29627,'nicholasterry','ClearText-Password',':=','VUTYVL746'),
|
||||
(29628,'leslieperalta','ClearText-Password',':=','RYC66747'),
|
||||
(29629,'khushbooagarwal2','ClearText-Password',':=','iytf65gkj'),
|
||||
(29630,'sriahobilamuth','ClearText-Password',':=','RTCESW24'),
|
||||
(29631,'royrogers','ClearText-Password',':=','TYDGVBNC'),
|
||||
(29632,'arturoprieto','ClearText-Password',':=','1653APVN877'),
|
||||
(29633,'ericamorris','ClearText-Password',':=','E16488VN387'),
|
||||
(29617,'belindamillener','ClearText-Password',':=','Uiyu7280'),
|
||||
(29618,'kailynnbarnfield','ClearText-Password',':=','HAkuguuvoy1'),
|
||||
(29619,'thomasgraham','ClearText-Password',':=','YUiygiiu4'),
|
||||
(27315,'debravega','Cleartext-Password',':=','RCG8618BDUMSR'),
|
||||
(29582,'davidlanman','Cleartext-Password',':=','2BMMRYQ2PHEA'),
|
||||
(29583,'anthonylongo','Cleartext-Password',':=','9MLG8HVME4J3'),
|
||||
(29584,'konradwoelffer','Cleartext-Password',':=','BCQ8NRFVNA3R'),
|
||||
(29585,'marthaflores','Cleartext-Password',':=','KG2QEG36348V'),
|
||||
(29586,'connorspicer','Cleartext-Password',':=','6U2BWJKGCX8G'),
|
||||
(29588,'korybiggsshop','Cleartext-Password',':=','JA4SXBGKHFUL'),
|
||||
(29589,'ednagriffin','Cleartext-Password',':=','AXA8EZEAN7DJ'),
|
||||
(29590,'richardrosson','Cleartext-Password',':=','9J5L6MEH4Y7Y'),
|
||||
(29603,'allentaylor2','ClearText-Password',':=','NCJW87FW8723'),
|
||||
(29604,'alextovias','ClearText-Password',':=','7VSgrVO1WX'),
|
||||
(29605,'mikecurrence','ClearText-Password',':=','MKH23FG79C'),
|
||||
(29594,'terryrector','Cleartext-Password',':=','QUPP83ZUUSGL'),
|
||||
(29595,'donnacampbell','Cleartext-Password',':=','KYCNTWS3929N'),
|
||||
(29600,'billmctee','ClearText-Password',':=','Bdge6388M'),
|
||||
(29643,'kimberlyrichards2','Cleartext-Password',':=','K84f7r10GT108');
|
||||
/*!40000 ALTER TABLE `radcheck` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Dumping data for table `radreply`
|
||||
--
|
||||
|
||||
LOCK TABLES `radreply` WRITE;
|
||||
/*!40000 ALTER TABLE `radreply` DISABLE KEYS */;
|
||||
INSERT INTO `radreply` (`id`, `username`, `attribute`, `op`, `value`) VALUES (632,'grahammcintire','Framed-IP-Address','=','204.110.188.225'),
|
||||
(639,'vancepeltonen','Framed-IP-Address','=','204.110.188.229'),
|
||||
(648,'michaelray','Framed-IP-Address','=','204.110.188.38'),
|
||||
(650,'ronlewis','Framed-IP-Address','=','204.110.188.237'),
|
||||
(655,'leonardlewis','Framed-IP-Address','=','204.110.188.199'),
|
||||
(657,'taekim','Framed-IP-Address','=','204.110.188.42'),
|
||||
(658,'joeywhitfield','Framed-IP-Address','=','204.110.188.233'),
|
||||
(660,'kirkvanmeter','Framed-IP-Address','=','204.110.188.230'),
|
||||
(661,'lambandlion','Framed-IP-Address','=','204.110.188.168'),
|
||||
(662,'sensibleheatsystems','Framed-IP-Address','=','204.110.188.161'),
|
||||
(664,'elizabethchristian','Framed-IP-Address','=','204.110.188.197'),
|
||||
(665,'coyungemach','Framed-IP-Address','=','204.110.188.202'),
|
||||
(668,'branchrvpark','Framed-IP-Address','=','204.110.188.142'),
|
||||
(671,'austinwatkins','Framed-IP-Address','=','204.110.188.235'),
|
||||
(672,'marilynfowler','Framed-IP-Address','=','204.110.188.131'),
|
||||
(673,'ronberger','Framed-IP-Address','=','204.110.188.200'),
|
||||
(675,'mauriciosoto','Framed-IP-Address','=','100.64.4.1'),
|
||||
(677,'jamessmith','Framed-IP-Address','=','204.110.188.164'),
|
||||
(680,'jackierollier','Framed-IP-Address','=','204.110.188.135'),
|
||||
(681,'barbihardin','Framed-IP-Address','=','204.110.188.231'),
|
||||
(682,'gabrielasereno','Framed-IP-Address','=','204.110.188.143'),
|
||||
(684,'billyhorton','Framed-IP-Address','=','204.110.188.141'),
|
||||
(685,'janiscable','Framed-IP-Address','=','204.110.188.196'),
|
||||
(687,'radiantlifeministries','Framed-IP-Address','=','204.110.188.134'),
|
||||
(688,'rogerbatt','Framed-IP-Address','=','204.110.188.40'),
|
||||
(689,'dejadodson','Framed-IP-Address','=','204.110.188.236'),
|
||||
(690,'johnlooper','Framed-IP-Address','=','204.110.188.144'),
|
||||
(691,'marcuspatton','Framed-IP-Address','=','204.110.188.170'),
|
||||
(692,'scottanderson','Framed-IP-Address','=','100.64.48.1'),
|
||||
(693,'terrymiesen','Framed-IP-Address','=','100.64.144.1');
|
||||
/*!40000 ALTER TABLE `radreply` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Dumping data for table `radusergroup`
|
||||
--
|
||||
|
||||
LOCK TABLES `radusergroup` WRITE;
|
||||
/*!40000 ALTER TABLE `radusergroup` DISABLE KEYS */;
|
||||
INSERT INTO `radusergroup` (`username`, `groupname`, `priority`) VALUES ('shannellrichards','delinquent',1),
|
||||
('joaniestanley','delinquent',1),
|
||||
('marlenvillanueva','delinquent',1),
|
||||
('brucejordan','delinquent',1),
|
||||
('dominiquegreen','delinquent',1);
|
||||
/*!40000 ALTER TABLE `radusergroup` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Dumping data for table `radgroupcheck`
|
||||
--
|
||||
|
||||
LOCK TABLES `radgroupcheck` WRITE;
|
||||
/*!40000 ALTER TABLE `radgroupcheck` DISABLE KEYS */;
|
||||
INSERT INTO `radgroupcheck` (`id`, `groupname`, `attribute`, `op`, `value`) VALUES (1,'daloRADIUS-Disabled-Users','Auth-Type',':=','Reject'),
|
||||
(2,'daloRADIUS-Disabled-Users','Auth-Type',':=','Reject');
|
||||
/*!40000 ALTER TABLE `radgroupcheck` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Dumping data for table `radgroupreply`
|
||||
--
|
||||
|
||||
LOCK TABLES `radgroupreply` WRITE;
|
||||
/*!40000 ALTER TABLE `radgroupreply` DISABLE KEYS */;
|
||||
INSERT INTO `radgroupreply` (`id`, `groupname`, `attribute`, `op`, `value`) VALUES (128,'delinquent','Mikrotik-Rate-Limit',':=','1M 1M 1M 1 9 1'),
|
||||
(129,'delinquent','Fall-Through','=','No'),
|
||||
(138,'inactive','Mikrotik-Rate-Limit',':=','1M 1M 1M 1 9 1'),
|
||||
(137,'inactive','Fall-Through','=','No'),
|
||||
(136,'delinquent-temp','Mikrotik-Rate-Limit',':=','100M 100M 100M 1 9 1');
|
||||
/*!40000 ALTER TABLE `radgroupreply` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-11 14:24:49
|
||||
15
ansible/roles/freeradius/handlers/main.yml
Normal file
15
ansible/roles/freeradius/handlers/main.yml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
- name: restart freeradius
|
||||
ansible.builtin.service:
|
||||
name: "{{ freeradius_service_name }}"
|
||||
state: restarted
|
||||
|
||||
- name: reload freeradius
|
||||
ansible.builtin.service:
|
||||
name: "{{ freeradius_service_name }}"
|
||||
state: reloaded
|
||||
|
||||
- name: restart mariadb
|
||||
ansible.builtin.service:
|
||||
name: mariadb
|
||||
state: restarted
|
||||
270
ansible/roles/freeradius/tasks/main.yml
Normal file
270
ansible/roles/freeradius/tasks/main.yml
Normal file
|
|
@ -0,0 +1,270 @@
|
|||
---
|
||||
- name: Install FreeRADIUS and MySQL packages
|
||||
ansible.builtin.apt:
|
||||
name: "{{ freeradius_packages }}"
|
||||
state: present
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Set MariaDB to listen on all interfaces
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/mysql/mariadb.conf.d/50-server.cnf
|
||||
regexp: '^bind-address'
|
||||
line: 'bind-address = 0.0.0.0'
|
||||
notify: restart mariadb
|
||||
|
||||
- name: Deploy MariaDB tuning config
|
||||
ansible.builtin.template:
|
||||
src: mariadb-tuning.cnf.j2
|
||||
dest: /etc/mysql/mariadb.conf.d/99-freeradius-tuning.cnf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: restart mariadb
|
||||
|
||||
- name: Create radius database
|
||||
ansible.mysql.mysql_db:
|
||||
name: "{{ freeradius_db_name }}"
|
||||
state: present
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
when: freeradius_seed_db | bool
|
||||
|
||||
- name: Create radius database user
|
||||
ansible.mysql.mysql_user:
|
||||
name: "{{ freeradius_db_user }}"
|
||||
password: "{{ vault_freeradius_db_password }}"
|
||||
priv: "{{ freeradius_db_name }}.*:SELECT,INSERT,UPDATE,DELETE"
|
||||
host: localhost
|
||||
state: present
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
when: freeradius_seed_db | bool
|
||||
|
||||
- name: Copy schema SQL to server
|
||||
ansible.builtin.copy:
|
||||
src: schema.sql
|
||||
dest: /tmp/radius-schema.sql
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0640'
|
||||
when: freeradius_seed_db | bool
|
||||
|
||||
- name: Seed radius database schema
|
||||
ansible.mysql.mysql_db:
|
||||
name: "{{ freeradius_db_name }}"
|
||||
state: import
|
||||
target: /tmp/radius-schema.sql
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
when: freeradius_seed_db | bool
|
||||
|
||||
- name: Clean up schema SQL
|
||||
ansible.builtin.file:
|
||||
path: /tmp/radius-schema.sql
|
||||
state: absent
|
||||
when: freeradius_seed_db | bool
|
||||
|
||||
- name: Ensure freeradius config directory exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ freeradius_config_dir }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0750'
|
||||
|
||||
- name: Ensure mods-enabled directory exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ freeradius_config_dir }}/mods-enabled"
|
||||
state: directory
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0750'
|
||||
|
||||
- name: Ensure sites-enabled directory exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ freeradius_config_dir }}/sites-enabled"
|
||||
state: directory
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0750'
|
||||
|
||||
- name: Ensure sql config directories exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ freeradius_config_dir }}/mods-config/sql/main/{{ freeradius_sql_dialect }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0750'
|
||||
|
||||
- name: Deploy radiusd.conf
|
||||
ansible.builtin.template:
|
||||
src: radiusd.conf.j2
|
||||
dest: "{{ freeradius_config_dir }}/radiusd.conf"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy clients.conf
|
||||
ansible.builtin.template:
|
||||
src: clients.conf.j2
|
||||
dest: "{{ freeradius_config_dir }}/clients.conf"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy SQL module config
|
||||
ansible.builtin.template:
|
||||
src: sql.j2
|
||||
dest: "{{ freeradius_config_dir }}/mods-available/sql"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy SQL queries.conf
|
||||
ansible.builtin.copy:
|
||||
src: queries.conf
|
||||
dest: "{{ freeradius_config_dir }}/mods-config/sql/main/{{ freeradius_sql_dialect }}/queries.conf"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy cache module config
|
||||
ansible.builtin.template:
|
||||
src: cache.j2
|
||||
dest: "{{ freeradius_config_dir }}/mods-available/cache"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy default virtual server
|
||||
ansible.builtin.template:
|
||||
src: default.j2
|
||||
dest: "{{ freeradius_config_dir }}/sites-available/default"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy inner-tunnel virtual server
|
||||
ansible.builtin.template:
|
||||
src: inner-tunnel.j2
|
||||
dest: "{{ freeradius_config_dir }}/sites-available/inner-tunnel"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy CoA virtual server
|
||||
ansible.builtin.template:
|
||||
src: coa.j2
|
||||
dest: "{{ freeradius_config_dir }}/sites-available/coa"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Deploy proxy.conf
|
||||
ansible.builtin.template:
|
||||
src: proxy.conf.j2
|
||||
dest: "{{ freeradius_config_dir }}/proxy.conf"
|
||||
owner: root
|
||||
group: freerad
|
||||
mode: '0640'
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Enable SQL module
|
||||
ansible.builtin.file:
|
||||
src: "{{ freeradius_config_dir }}/mods-available/sql"
|
||||
dest: "{{ freeradius_config_dir }}/mods-enabled/sql"
|
||||
state: link
|
||||
force: true
|
||||
owner: root
|
||||
group: freerad
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Enable cache module
|
||||
ansible.builtin.file:
|
||||
src: "{{ freeradius_config_dir }}/mods-available/cache"
|
||||
dest: "{{ freeradius_config_dir }}/mods-enabled/cache"
|
||||
state: link
|
||||
force: true
|
||||
owner: root
|
||||
group: freerad
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Enable default site
|
||||
ansible.builtin.file:
|
||||
src: "{{ freeradius_config_dir }}/sites-available/default"
|
||||
dest: "{{ freeradius_config_dir }}/sites-enabled/default"
|
||||
state: link
|
||||
force: true
|
||||
owner: root
|
||||
group: freerad
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Enable CoA site
|
||||
ansible.builtin.file:
|
||||
src: "{{ freeradius_config_dir }}/sites-available/coa"
|
||||
dest: "{{ freeradius_config_dir }}/sites-enabled/coa"
|
||||
state: link
|
||||
force: true
|
||||
owner: root
|
||||
group: freerad
|
||||
notify: restart freeradius
|
||||
|
||||
- name: Seed NAS clients from ansible vars
|
||||
ansible.mysql.mysql_query:
|
||||
login_db: "{{ freeradius_db_name }}"
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
query: >-
|
||||
INSERT INTO nas (nasname, shortname, type, ports, secret, server, community, description)
|
||||
VALUES ('{{ item.nasname }}', '{{ item.shortname }}', '{{ item.type | default('other') }}',
|
||||
{{ item.ports | default(0) }}, '{{ item.secret }}',
|
||||
{{ ("'" + item.server + "'") if item.server is defined and item.server else 'NULL' }},
|
||||
{{ ("'" + item.community + "'") if item.community is defined and item.community else 'NULL' }},
|
||||
{{ ("'" + item.description + "'") if item.description is defined and item.description else 'NULL' }})
|
||||
ON DUPLICATE KEY UPDATE
|
||||
shortname = VALUES(shortname), type = VALUES(type),
|
||||
secret = VALUES(secret), server = VALUES(server),
|
||||
community = VALUES(community), description = VALUES(description)
|
||||
loop: "{{ freeradius_nas_clients }}"
|
||||
when: freeradius_seed_nas | bool and freeradius_nas_clients | length > 0
|
||||
|
||||
- name: Copy user data SQL to server
|
||||
ansible.builtin.copy:
|
||||
src: seed-data.sql
|
||||
dest: /tmp/radius-seed-data.sql
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0640'
|
||||
when: freeradius_load_user_data | bool
|
||||
|
||||
- name: Load user data from SQL dump
|
||||
ansible.mysql.mysql_db:
|
||||
name: "{{ freeradius_db_name }}"
|
||||
state: import
|
||||
target: /tmp/radius-seed-data.sql
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
when: freeradius_load_user_data | bool
|
||||
|
||||
- name: Clean up user data SQL
|
||||
ansible.builtin.file:
|
||||
path: /tmp/radius-seed-data.sql
|
||||
state: absent
|
||||
when: freeradius_load_user_data | bool
|
||||
|
||||
- name: Remove default symlinks that conflict with our config
|
||||
ansible.builtin.file:
|
||||
path: "{{ freeradius_config_dir }}/mods-enabled/{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- sql
|
||||
when: false # only enable when needed
|
||||
|
||||
- name: Start and enable freeradius
|
||||
ansible.builtin.service:
|
||||
name: "{{ freeradius_service_name }}"
|
||||
state: started
|
||||
enabled: true
|
||||
28
ansible/roles/freeradius/templates/cache.j2
Normal file
28
ansible/roles/freeradius/templates/cache.j2
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## mods-available/cache -- Attribute cache (reduces SQL load)
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
|
||||
cache {
|
||||
driver = "rlm_cache_rbtree"
|
||||
|
||||
key = "%{User-Name}"
|
||||
|
||||
# Cache entries for 24 hours
|
||||
ttl = 86400
|
||||
|
||||
add_stats = no
|
||||
|
||||
update {
|
||||
# Cache the Cleartext-Password so PAP/CHAP/MS-CHAP work without SQL
|
||||
&control:Cleartext-Password += &control:Cleartext-Password
|
||||
|
||||
# Cache group membership
|
||||
&control:SQL-Group += &control:SQL-Group
|
||||
|
||||
# Cache all reply attributes (Framed-IP-Address, rate limits, etc.)
|
||||
&reply: += &reply:[*]
|
||||
}
|
||||
}
|
||||
38
ansible/roles/freeradius/templates/clients.conf.j2
Normal file
38
ansible/roles/freeradius/templates/clients.conf.j2
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## clients.conf -- FreeRADIUS client definitions
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
{% for client in freeradius_clients %}
|
||||
client {{ client.name }} {
|
||||
ipaddr = {{ client.ipaddr }}
|
||||
proto = *
|
||||
secret = {{ client.secret }}
|
||||
{% if client.shortname is defined %}
|
||||
shortname = {{ client.shortname }}
|
||||
{% endif %}
|
||||
require_message_authenticator = no
|
||||
{% if client.nas_type is defined %}
|
||||
nas_type = {{ client.nas_type }}
|
||||
{% else %}
|
||||
nas_type = other
|
||||
{% endif %}
|
||||
{% if client.virtual_server is defined %}
|
||||
virtual_server = {{ client.virtual_server }}
|
||||
{% endif %}
|
||||
{% if client.limit is defined %}
|
||||
limit {
|
||||
{% for k, v in client.limit.items() %}
|
||||
{{ k }} = {{ v }}
|
||||
{% endfor %}
|
||||
}
|
||||
{% else %}
|
||||
limit {
|
||||
max_connections = 16
|
||||
lifetime = 0
|
||||
idle_timeout = 30
|
||||
}
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
||||
53
ansible/roles/freeradius/templates/coa.j2
Normal file
53
ansible/roles/freeradius/templates/coa.j2
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## sites-available/coa -- Receive CoA/Disconnect and proxy to NAS
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
## gaiia sends CoA-Request or Disconnect-Request with User-Name
|
||||
## and/or Acct-Session-Id. This server looks up the active session
|
||||
## in radacct, finds the NAS, and proxies the request to it.
|
||||
##
|
||||
|
||||
listen {
|
||||
type = coa
|
||||
ipaddr = *
|
||||
port = 3799
|
||||
virtual_server = coa
|
||||
}
|
||||
|
||||
server coa {
|
||||
recv-coa {
|
||||
#
|
||||
# Try to find the NAS shortname from the active session.
|
||||
# Lookup by Acct-Session-Id first (most specific), then User-Name.
|
||||
#
|
||||
{% if freeradius_sql_dialect == 'mysql' -%}
|
||||
update control {
|
||||
&Tmp-String-0 := "%{sql:SELECT nas.shortname FROM radacct INNER JOIN nas ON radacct.nasipaddress = nas.nasname WHERE radacct.acctsessionid = '%{Acct-Session-Id}' AND radacct.AcctStopTime IS NULL LIMIT 1}"
|
||||
}
|
||||
if (control:Tmp-String-0 == "") {
|
||||
update control {
|
||||
&Tmp-String-0 := "%{sql:SELECT nas.shortname FROM radacct INNER JOIN nas ON radacct.nasipaddress = nas.nasname WHERE radacct.username = '%{User-Name}' AND radacct.AcctStopTime IS NULL LIMIT 1}"
|
||||
}
|
||||
}
|
||||
{% endif -%}
|
||||
|
||||
#
|
||||
# If we found a NAS, set the home_server_pool and proxy to it.
|
||||
#
|
||||
if (control:Tmp-String-0 != "") {
|
||||
update request {
|
||||
&Home-Server-Pool := "coa-pool-%{control:Tmp-String-0}"
|
||||
}
|
||||
}
|
||||
else {
|
||||
# No active session found — reject
|
||||
reject
|
||||
}
|
||||
}
|
||||
|
||||
send-coa {
|
||||
ok
|
||||
}
|
||||
}
|
||||
127
ansible/roles/freeradius/templates/default.j2
Normal file
127
ansible/roles/freeradius/templates/default.j2
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## sites-available/default -- default virtual server
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
|
||||
server default {
|
||||
|
||||
listen {
|
||||
type = auth
|
||||
ipaddr = *
|
||||
port = 0
|
||||
limit {
|
||||
max_connections = 16
|
||||
lifetime = 0
|
||||
idle_timeout = 30
|
||||
}
|
||||
}
|
||||
|
||||
listen {
|
||||
ipaddr = *
|
||||
port = 0
|
||||
type = acct
|
||||
limit {
|
||||
}
|
||||
}
|
||||
|
||||
listen {
|
||||
type = auth
|
||||
ipv6addr = ::
|
||||
port = 0
|
||||
limit {
|
||||
max_connections = 16
|
||||
lifetime = 0
|
||||
idle_timeout = 30
|
||||
}
|
||||
}
|
||||
|
||||
listen {
|
||||
ipv6addr = ::
|
||||
port = 0
|
||||
type = acct
|
||||
limit {
|
||||
}
|
||||
}
|
||||
|
||||
authorize {
|
||||
filter_username
|
||||
preprocess
|
||||
chap
|
||||
mschap
|
||||
digest
|
||||
suffix
|
||||
cache {
|
||||
ok = return
|
||||
}
|
||||
files
|
||||
sql
|
||||
expiration
|
||||
logintime
|
||||
pap
|
||||
}
|
||||
|
||||
authenticate {
|
||||
Auth-Type PAP {
|
||||
pap
|
||||
}
|
||||
Auth-Type CHAP {
|
||||
chap
|
||||
}
|
||||
Auth-Type MS-CHAP {
|
||||
mschap
|
||||
}
|
||||
mschap
|
||||
digest
|
||||
}
|
||||
|
||||
preacct {
|
||||
preprocess
|
||||
acct_unique
|
||||
suffix
|
||||
files
|
||||
}
|
||||
|
||||
accounting {
|
||||
detail
|
||||
unix
|
||||
-sql
|
||||
exec
|
||||
attr_filter.accounting_response
|
||||
}
|
||||
|
||||
session {
|
||||
sql
|
||||
}
|
||||
|
||||
post-auth {
|
||||
if (session-state:User-Name && reply:User-Name && request:User-Name && (reply:User-Name == request:User-Name)) {
|
||||
update reply {
|
||||
&User-Name !* ANY
|
||||
}
|
||||
}
|
||||
update {
|
||||
&reply: += &session-state:
|
||||
}
|
||||
-sql
|
||||
cache
|
||||
exec
|
||||
|
||||
Post-Auth-Type REJECT {
|
||||
-sql
|
||||
attr_filter.access_reject
|
||||
remove_reply_message_if_eap
|
||||
}
|
||||
|
||||
Post-Auth-Type Challenge {
|
||||
}
|
||||
}
|
||||
|
||||
pre-proxy {
|
||||
}
|
||||
|
||||
post-proxy {
|
||||
}
|
||||
|
||||
}
|
||||
74
ansible/roles/freeradius/templates/inner-tunnel.j2
Normal file
74
ansible/roles/freeradius/templates/inner-tunnel.j2
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## sites-available/inner-tunnel -- EAP inner tunnel virtual server
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
|
||||
server inner-tunnel {
|
||||
|
||||
listen {
|
||||
ipaddr = 127.0.0.1
|
||||
port = 18120
|
||||
type = auth
|
||||
}
|
||||
|
||||
authorize {
|
||||
filter_username
|
||||
suffix
|
||||
update control {
|
||||
&Proxy-To-Realm := LOCAL
|
||||
}
|
||||
sql
|
||||
chap
|
||||
mschap
|
||||
pap
|
||||
eap {
|
||||
ok = return
|
||||
}
|
||||
cache {
|
||||
ok = return
|
||||
}
|
||||
files
|
||||
expiration
|
||||
logintime
|
||||
}
|
||||
|
||||
authenticate {
|
||||
Auth-Type PAP {
|
||||
pap
|
||||
}
|
||||
Auth-Type CHAP {
|
||||
chap
|
||||
}
|
||||
Auth-Type MS-CHAP {
|
||||
mschap
|
||||
}
|
||||
mschap
|
||||
eap
|
||||
}
|
||||
|
||||
session {
|
||||
}
|
||||
|
||||
post-auth {
|
||||
-sql
|
||||
cache
|
||||
|
||||
Post-Auth-Type REJECT {
|
||||
-sql
|
||||
attr_filter.access_reject
|
||||
update outer.session-state {
|
||||
&Module-Failure-Message := &request:Module-Failure-Message
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pre-proxy {
|
||||
}
|
||||
|
||||
post-proxy {
|
||||
eap
|
||||
}
|
||||
|
||||
}
|
||||
33
ansible/roles/freeradius/templates/mariadb-tuning.cnf.j2
Normal file
33
ansible/roles/freeradius/templates/mariadb-tuning.cnf.j2
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# MariaDB performance tuning for FreeRADIUS
|
||||
# Managed by Ansible — do not edit manually.
|
||||
#
|
||||
[mariadbd]
|
||||
|
||||
# --- Connections ---
|
||||
max_connections = 100
|
||||
thread_cache_size = 16
|
||||
skip-name-resolve
|
||||
|
||||
# --- InnoDB ---
|
||||
# 512M is plenty — the radius DB is small but InnoDB benefits from headroom
|
||||
innodb_buffer_pool_size = 512M
|
||||
innodb_buffer_pool_instances = 1
|
||||
innodb_flush_log_at_trx_commit = 2
|
||||
innodb_log_file_size = 128M
|
||||
innodb_file_per_table = 1
|
||||
innodb_flush_method = fsync
|
||||
|
||||
# --- Tables ---
|
||||
table_open_cache = 256
|
||||
table_definition_cache = 400
|
||||
|
||||
# --- Query Cache ---
|
||||
# Disabled by default in MariaDB 10.6+ — leave off for FreeRADIUS
|
||||
# (most queries are single-row lookups, query cache adds overhead)
|
||||
query_cache_type = 0
|
||||
|
||||
# --- Binary Logging ---
|
||||
# Disable unless replication is needed — saves disk I/O
|
||||
# skip-log-bin is default in Debian, explicit for safety
|
||||
disable_log_bin
|
||||
56
ansible/roles/freeradius/templates/proxy.conf.j2
Normal file
56
ansible/roles/freeradius/templates/proxy.conf.j2
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## proxy.conf -- Proxy and home_server configuration
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
|
||||
# CoA/Disconnect home_server for each NAS
|
||||
{% for nas in freeradius_nas_clients %}
|
||||
home_server coa-{{ nas.shortname }} {
|
||||
type = coa
|
||||
ipaddr = {{ nas.nasname }}
|
||||
port = 3799
|
||||
secret = {{ nas.secret }}
|
||||
coa {
|
||||
irt = 2
|
||||
mrt = 16
|
||||
mrc = 5
|
||||
mrd = 30
|
||||
}
|
||||
}
|
||||
home_server_pool coa-pool-{{ nas.shortname }} {
|
||||
type = fail-over
|
||||
home_server = coa-{{ nas.shortname }}
|
||||
virtual_server = originate-coa-relay
|
||||
}
|
||||
{% endfor %}
|
||||
|
||||
# Originate CoA response handler virtual server
|
||||
server originate-coa-relay {
|
||||
post-proxy {
|
||||
switch &proxy-reply:Packet-Type {
|
||||
case CoA-ACK {
|
||||
ok
|
||||
}
|
||||
case CoA-NAK {
|
||||
ok
|
||||
}
|
||||
case Disconnect-ACK {
|
||||
ok
|
||||
}
|
||||
case Disconnect-NAK {
|
||||
ok
|
||||
}
|
||||
case {
|
||||
fail
|
||||
}
|
||||
}
|
||||
Post-Proxy-Type Fail-CoA {
|
||||
ok
|
||||
}
|
||||
Post-Proxy-Type Fail-Disconnect {
|
||||
ok
|
||||
}
|
||||
}
|
||||
}
|
||||
91
ansible/roles/freeradius/templates/radiusd.conf.j2
Normal file
91
ansible/roles/freeradius/templates/radiusd.conf.j2
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## radiusd.conf -- FreeRADIUS server configuration
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
|
||||
prefix = /usr
|
||||
exec_prefix = /usr
|
||||
sysconfdir = /etc
|
||||
localstatedir = /var
|
||||
sbindir = /usr/sbin
|
||||
logdir = ${localstatedir}/log/freeradius
|
||||
raddbdir = ${sysconfdir}/freeradius/3.0
|
||||
radacctdir = ${logdir}/radacct
|
||||
|
||||
name = radiusd
|
||||
|
||||
confdir = ${raddbdir}
|
||||
modconfdir = ${confdir}/mods-config
|
||||
certdir = ${confdir}/certs
|
||||
cadir = ${confdir}/certs
|
||||
run_dir = ${localstatedir}/run/${name}
|
||||
|
||||
db_dir = ${localstatedir}/lib/radiusd
|
||||
|
||||
libdir = /usr/lib/freeradius
|
||||
|
||||
pidfile = ${run_dir}/${name}.pid
|
||||
|
||||
max_request_time = 30
|
||||
cleanup_delay = 5
|
||||
max_requests = 16384
|
||||
|
||||
hostname_lookups = no
|
||||
|
||||
unlang {
|
||||
}
|
||||
|
||||
log {
|
||||
destination = files
|
||||
colourise = yes
|
||||
msg_denied = "You are already logged in - access denied"
|
||||
file = ${logdir}/radius.log
|
||||
syslog_facility = daemon
|
||||
stripped_names = no
|
||||
auth = yes
|
||||
auth_badpass = no
|
||||
auth_goodpass = no
|
||||
msg_goodpass = ""
|
||||
msg_badpass = ""
|
||||
}
|
||||
|
||||
checkrad = ${sbindir}/checkrad
|
||||
|
||||
ENV {
|
||||
}
|
||||
|
||||
security {
|
||||
max_attributes = 200
|
||||
reject_delay = 1
|
||||
status_server = yes
|
||||
allow_vulnerable_openssl = "CVE-2016-6304"
|
||||
}
|
||||
|
||||
proxy_requests = yes
|
||||
|
||||
$INCLUDE clients.conf
|
||||
$INCLUDE proxy.conf
|
||||
|
||||
thread pool {
|
||||
start_servers = 5
|
||||
max_servers = 32
|
||||
min_spare_servers = 3
|
||||
max_spare_servers = 10
|
||||
max_requests_per_server = 0
|
||||
auto_limit_acct = no
|
||||
}
|
||||
|
||||
modules {
|
||||
$INCLUDE mods-enabled/
|
||||
}
|
||||
|
||||
instantiate {
|
||||
}
|
||||
|
||||
policy {
|
||||
$INCLUDE policy.d/
|
||||
}
|
||||
|
||||
$INCLUDE sites-enabled/
|
||||
74
ansible/roles/freeradius/templates/sql.j2
Normal file
74
ansible/roles/freeradius/templates/sql.j2
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# -*- text -*-
|
||||
##
|
||||
## mods-available/sql -- SQL module configuration
|
||||
##
|
||||
## Managed by Ansible — do not edit manually.
|
||||
##
|
||||
|
||||
sql {
|
||||
dialect = "{{ freeradius_sql_dialect }}"
|
||||
driver = "{{ freeradius_sql_driver }}"
|
||||
|
||||
sqlite {
|
||||
filename = "/tmp/freeradius.db"
|
||||
busy_timeout = 200
|
||||
bootstrap = "${modconfdir}/${..:name}/main/sqlite/schema.sql"
|
||||
}
|
||||
|
||||
mysql {
|
||||
warnings = auto
|
||||
}
|
||||
|
||||
postgresql {
|
||||
send_application_name = yes
|
||||
}
|
||||
|
||||
mongo {
|
||||
appname = "freeradius"
|
||||
tls {
|
||||
certificate_file = /path/to/file
|
||||
certificate_password = "password"
|
||||
ca_file = /path/to/file
|
||||
ca_dir = /path/to/directory
|
||||
crl_file = /path/to/file
|
||||
weak_cert_validation = false
|
||||
allow_invalid_hostname = false
|
||||
}
|
||||
}
|
||||
|
||||
server = "{{ freeradius_db_host }}"
|
||||
port = {{ freeradius_db_port }}
|
||||
login = "{{ freeradius_db_user }}"
|
||||
password = "{{ vault_freeradius_db_password }}"
|
||||
|
||||
radius_db = "{{ freeradius_db_name }}"
|
||||
|
||||
acct_table1 = "radacct"
|
||||
acct_table2 = "radacct"
|
||||
postauth_table = "radpostauth"
|
||||
authcheck_table = "radcheck"
|
||||
groupcheck_table = "radgroupcheck"
|
||||
authreply_table = "radreply"
|
||||
groupreply_table = "radgroupreply"
|
||||
usergroup_table = "radusergroup"
|
||||
|
||||
delete_stale_sessions = yes
|
||||
|
||||
pool {
|
||||
start = ${thread[pool].start_servers}
|
||||
min = ${thread[pool].min_spare_servers}
|
||||
max = ${thread[pool].max_servers}
|
||||
spare = ${thread[pool].max_spare_servers}
|
||||
uses = 0
|
||||
retry_delay = 30
|
||||
lifetime = 0
|
||||
idle_timeout = 60
|
||||
}
|
||||
|
||||
read_clients = {{ 'yes' if freeradius_read_clients else 'no' }}
|
||||
client_table = "{{ freeradius_client_table }}"
|
||||
|
||||
group_attribute = "SQL-Group"
|
||||
|
||||
$INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
|
||||
}
|
||||
|
|
@ -128,10 +128,7 @@ systemd:
|
|||
ExecStartPre=/usr/bin/docker pull mvance/unbound:latest
|
||||
ExecStart=/usr/bin/docker run \
|
||||
--name unbound \
|
||||
-p 204.110.191.240:53:53/udp \
|
||||
-p 204.110.191.240:53:53/tcp \
|
||||
-p 127.0.0.1:8953:8953/tcp \
|
||||
-p 127.0.0.1:8080:8080/tcp \
|
||||
--network host \
|
||||
-v /etc/unbound:/opt/unbound/etc/unbound:ro \
|
||||
mvance/unbound:latest
|
||||
ExecStop=/usr/bin/docker stop unbound
|
||||
|
|
|
|||
|
|
@ -128,10 +128,7 @@ systemd:
|
|||
ExecStartPre=/usr/bin/docker pull mvance/unbound:latest
|
||||
ExecStart=/usr/bin/docker run \
|
||||
--name unbound \
|
||||
-p 204.110.191.250:53:53/udp \
|
||||
-p 204.110.191.250:53:53/tcp \
|
||||
-p 127.0.0.1:8953:8953/tcp \
|
||||
-p 127.0.0.1:8080:8080/tcp \
|
||||
--network host \
|
||||
-v /etc/unbound:/opt/unbound/etc/unbound:ro \
|
||||
mvance/unbound:latest
|
||||
ExecStop=/usr/bin/docker stop unbound
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue