Sophos UTM Radus SMTP mit Freeradius
Damit meine Firewall die Relay authentication mit Radius am Mailserver machen kann, hab ich mir den Freeradius installiert und ihn an das MySQL backend angeschlossen.
apt-get install freeradius freeradius-mysql
Im Freeradius das SQL backend aktivieren.
cd /etc/freeradius/3.0/mods-enabled/
ln -s ../mods-available/sql sql
Dann die Zugangsdaten für Radius anpassen in der /etc/freeradius/3.0/mods-enabled/sql
Hierzu hab ich folgende Werte angepasst.
sql {
driver = "rlm_sql_mysql"
mysql {
}
server = "localhost"
port = 3306
login = "radius"
password = "RADUS_MYSQL_PASS"
radius_db = "froxlor"
authcheck_table = "mail_users"
Als nächstes hab ich meine Sophos UTM in die Radius Client eingetragen.
/etc/freeradius/3.0/clients.conf
client firewall {
ipaddr = IP-ADRESSE-DER-FW
secret = SUPER_GEHEIMES_PASSWORT
}
Anschließend noch die Queries in /etc/freeradius/3.0/mods-config/sql/main/sqlite/queries.conf anpassen.
Das hier ist der Abfrage Querie für die Mail Accounts
authorize_check_query = "\
SELECT id, username, 'Crypt-Password' as attribute, password_enc as value, ':=' as op \
FROM mail_users \
WHERE username = '%{SQL-User-Name}' \
ORDER BY id"
Falls das Encyptete Passwort noch mit dem sha256-crypt Info gespeichert wird, muss man das raus löschen. Da Freeradus nur das Passwort haben will. Das geht dann so
authorize_check_query = "\
SELECT id, username, 'Crypt-password' as attribute, SUBSTRING(password_enc, 15, 999) AS value , ':=' as op \
FROM mail_users \
WHERE username = '%{SQL-User-Name}' \
ORDER BY id"
In der neueren Froxlor Version wird das Passwort jetzt mit BLF-CRYPT gespeichert. Daher funktioniert der obrige query nicht mehr.
Aber es gibt auch dafür eine Lösung mittels Regex. Hier wird alles bis zum ersten $ rausgelöscht. Und mit dem Rest kann dann Freeradus was anfangen
authorize_check_query = "\
SELECT id, username, 'Crypt-password' as attribute, REGEXP_SUBSTR(password_enc, '{\*[$].+') AS value , ':=' as op \
FROM mail_users \
WHERE username = '%{SQL-User-Name}' \
ORDER BY id"
Dann hab ich noch das logging in die DB für authorize_reply und post-auth abgeschaltet
#authorize_reply_query = "\
# SELECT id, username, attribute, value, op \
# FROM ${authreply_table} \
# WHERE username = '%{SQL-User-Name}' \
# ORDER BY id"
.
.
.
.
#post-auth {
# Write SQL queries to a logfile. This is potentially useful for bulk inserts
# when used with the rlm_sql_null driver.
# logfile = ${logdir}/post-auth.sql
# query = "\
# INSERT INTO ${..postauth_table} \
# (username, pass, reply, authdate) \
# VALUES ( \
# '%{SQL-User-Name}', \
# '%{%{User-Password}:-%{Chap-Password}}', \
# '%{reply:Packet-Type}', \
# '%S')"
#}
zu guter Letzt noch in der /etc/freeradius/3.0/mods-enabled/pap das encryption_scheme = crypt hinzugefügt
pap {
# By default the server will use heuristics to try and automatically
# handle base64 or hex encoded passwords. This behaviour can be
# stopped by setting the following to "no".
# normalise = yes
encryption_scheme = crypt
}
Anschließend noch den Freeradius neu starten und die Zugangsdaten in die Sophos UTM eintragen.
service freeradius restart
Wenn alle richtig eingestellt ist. Können sich die SMTP Clients an der Sophos UTM anmelden und ihre E-Mail über dem SMTP Filter verschicken.
Schreibe einen Kommentar