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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*