Блог Синявского
  • Разделы
  • Метки
  • Все статьи

Лог аутентификации на другом сервере

1

На предприятии *** возникла необходимость, чтобы все логи аутентификации записывались в базу данных на сервере отличном от того, на котором хранятся данные авторизации. Для решения поставленной задачи очень хорошо подходят политики freeRadius

Создаем на необходимом сервере базу данных

# mysql -hhostname -uradius -psecret
> CREATE DATABASE radius CHARACTER SET utf8 COLLATE utf8_general_ci;
> use radius;
> CREATE TABLE 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 NOT NULL,
      PRIMARY KEY  (id)
  );
> exit

Переходим в каталог с freeRadius: # cd /usr/local/etc/raddb/

Создаем файл нашего модуля в папке с модулями modules/ freeRadius. Описание модуля начинается с sql, это означает что в модуле будут выполняться SQL запросы на сервер:

# ee modules/postauth_custom_module

sql postauth_custom_module {
        database = "mysql"
        driver = "rlm_sql_${database}"
        server = "hostname"
        login = "radius"
        password = "secret"
        radius_db = "radius"
        postauth_table = "radpostauth"
        sqltrace = yes
        sqltracefile = /var/log/postauthtrace.sql
        num_sql_socks = 5
        connect_failure_retry_delay = 60
        postauth_query = "INSERT INTO ${postauth_table} \
            (`username`, `pass`, `reply`, `authdate`, `callfrom`, \
            `callto`,`nasip`,`acctsessionid`,`msg`) \
            VALUES ( \
            '%{User-Name}', \
            '%{%{User-Password}:-%{Chap-Password}}', \
            '%{reply:Packet-Type}', '%S', '%{Calling-Station-Id}', \
            '%{Called-Station-Id}', '%{NAS-IP-Address}', \
            '%{Acct-Session-Id}', '%{reply:Reply-Message}');"
}

Создаем политику в файле policy.conf в блоке policy определяем новую политику

# ee policy.conf

policy {
    ...
    postauth_custom_policy{
        postauth_custom_module
    }
}

Меняем файл текущей конфигурации /sites-enabled/default для запуска политики и выполения модуля, для этого добавляем в блок post-auth назваение нашей политики в конец блока и в условный блок Post-Auth-Type REJECT (для ведения записей непрошедших авторизацию). Также необходимо закомментировать политику sql, чтобы сервер не использовал текущую базу данных.

# ee /sites-enabled/default

post-auth {
    ...

    #sql
    postauth_custom_policy

    Post-Auth-Type REJECT {
        # log failed authentications in SQL, too.
        update reply {
            Reply-Message = "UOPW"
        }

        #sql
        postauth_custom_policy

        attr_filter.access_reject
    }
}    

Сохраняем файлы и проверяем конфигурацию radiusd -C

Перезагружаем freeRadius service radiusd restart



  • туда →

comments powered by Disqus

Опубликовано

23.01.2013

Обновление

05.05.2022

Категории

radius

Тэги

  • freeradius 3
  • mysql 7
  • policy 2

Всегда на связи

  • Блог Синявского - Ничего не переносить на завтра, это тоже проблема с прокастинацией?
  • © Алексей Синявский, по лицензии CC BY-SA если не указано иное.
  • С использованием Pelican. Тема: Elegant от Talha Mansoor