Posted by : Rafael Holanda terça-feira, 17 de setembro de 2019

FreeRADIUS com banco de dados MySQL (MariaDB)



Parte 04

Para trabalhar com o banco de dados MySQL, o freeRADIUS fornece o pacote freeradius-mysql que contém o arquivo de configuração necessário e as consultas SQL. Temos que instalar o pacote freeradius-mysql com o pacote do servidor freeradius. Para verificar se o pacote freeradius-mysql está instalado ou não, faça o login no servidor CentOS com o usuário root e execute o seguinte comando no prompt de comando.
[root @ freeradius ~] # rpm -qa | grep freeradius
freeradius-utils-3.0.13-9.el7_5.x86_64
freeradius-perl-3.0.13-9.el7_5.x86_64
freeradius-3.0.13-9.el7_5.x86_64
freeradius-mysql-3.0.13-9.el7_5.x86_64

A lista acima está mostrando que o pacote freeradius-mysql está instalado com o servidor freeradius. Se você não encontrar o pacote freeradius-mysql nesta lista, execute o seguinte comando para instalar o pacote freeradius-mysql.
[root@freeradius ~]# yum install freeradius-mysql -y

O pacote freeradius-mysql está agora disponível no seu sistema. Na próxima seção, instalaremos e configuraremos o banco de dados MariaDB em nossa distribuição do CentOS 7 Linux.

Instalação e configuração do banco de dados MariaDB

O MariaDB é um servidor de banco de dados de código aberto mais popular e criado pelos desenvolvedores originais do MySQL, principalmente os desenvolvedores da Wikipedia, WordPress e Google. Para instalar o servidor de banco de dados MariaDB no seu CentOS Linux, digite o seguinte comando no seu terminal do CentOS 7.
[root@freeradius ~]# yum install mariadb mariadb-server –y

O pacote MariaDB será instalado dentro de alguns segundos. Para garantir que ele seja instalado com sucesso, execute o seguinte comando no prompt de comando.
[root@freeradius ~]# rpm -qa | grep mariadb
mariadb-server-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64
mariadb-5.5.60-1.el7_5.x86_64

É desejável que você encontre a lista acima. Nesse caso, inicie o serviço MariaDB e ative o início do serviço MariaDB automaticamente em cada reinicialização com o seguinte comando.
[root@freeradius ~]# systemctl start mariadb 
[root@freeradius ~]# systemctl enable mariadb

Você pode verificar seu status do MariaDB a qualquer momento com o seguinte comando.
[root@freeradius ~]# systemctl status mariadb

mariadb.service – MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor et: disabled)
Active: active (running) since Thu 2019-01-01 18:15:15 EST; 1 day 8h ago
Process: 21380 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 21348 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exite d, status=0/SUCCESS)
Main PID: 21379 (mysqld_safe)
Tasks: 20
CGroup: /system.slice/mariadb.service
├─21379 /bin/sh /usr/bin/mysqld_safe –basedir=/usr
└─21542 /usr/libexec/mysqld –basedir=/usr –datadir=/var/lib/mysq…


Para permitir acesso remoto ao seu servidor mysql (mariadb) com aplicativo de terceiros, você deve permitir o serviço mysql (para abrir a porta 3306) do seu firewall com o seguinte comando. Lembre-se de que isso abre a porta 3306 para todos os IPs.
[root@freeradius ~]# firewall-cmd --zone=public --add-service=mysql
[root@freeradius ~]# firewall-cmd --zone=public --add-service=mysql --permanent

Configurar senha root do MySQL

Por padrão, o MariaDB não define a senha do usuário root. Mas, para proteger o mariadb, precisamos configurar a senha do usuário root. Para definir a senha do usuário root, execute o seguinte comando no seu terminal e siga as instruções.

[root@webserver~]# mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current 
password for the root user.  If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):     ## Press Enter ##
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n]     ## Press Enter ##
New password:                ## Enter new password ##
Re-enter new password:       ## Re-enter new password ##

Password updated successfully!
Reloading privilege tables..
… Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]     ## Press Enter ##
… Success!

Normally, root should only be allowed to connect from ‘localhost’.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]     ## Press Enter ##
… Success!

By default, MySQL comes with a database named ‘test’ that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]     ## Press Enter ##
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]     ## Press Enter ##
… Success!

Cleaning up…

All done!  If you’ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

A senha do usuário root foi definida e seu banco de dados MariaDB está seguro agora. Se você deseja permitir o login raiz remotamente, forneça não em Não permitir o login raiz remotamente? Opção [S / n] .

Efetue login no servidor MariaDB com senha de usuário root com o seguinte comando.
[root@freeradius ~]# mysql -uroot -pSenhaRootDB
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

Após o login, você pode ver os bancos de dados disponíveis com o seguinte comando
MariaDB [(none)]> show databases;
+——————–+
| Database           |
+——————–+
| information_schema |
| mysql              |
| performance_schema |
+——————–+

3 rows in set (0.00 sec)


Você encontrará o banco de dados e o esquema padrão. Agora criaremos um novo banco de dados que será usado pelo servidor freeRADIUS para obter informações do usuário e manter as informações. Execute o seguinte comando para criar um novo banco de dados chamado radius no banco de dados MariaDB
MariaDB [(none)]> create database radius;
Query OK, 1 row affected (0.00 sec)

Agora você encontrará seu banco de dados criado no servidor de banco de dados.
MariaDB [(none)]> show databases;
+——————–+
| Database           |
+——————–+
| information_schema |
| mysql              |
| performance_schema |
| radius             |
+——————–+

4 rows in set (0.00 sec)

Para sair do seu banco de dados, basta emitir o comando quit.
MariaDB [(none)]> quit 
Bye

Após criar o banco de dados, precisamos criar tabelas de banco de dados que serão usadas pelo servidor freeRADIUS para encontrar usuários e clientes RADIUS e para armazenar dados. Felizmente, o pacote freeRADIUS MySQL fornece a consulta necessária para criar as tabelas necessárias no arquivo schema.sql. O arquivo schema.sql será encontrado no diretório mods-config/sql/main/mysql. Execute o seguinte comando para criar as tabelas necessárias no banco de dados radius
[root@freeradius raddb]# mysql -uroot -pSenhaRootDB radius < mods-config/sql/main/mysql/schema.sql

Após a criação de tabelas, precisamos criar um usuário do banco de dados que possa ler os dados de autenticação e autorização e que possa gravar dados contábeis. O pacote MySQL do FreeRADIUS também fornece a consulta necessária para criar um usuário do banco de dados e sua permissão em setup.sql. Este arquivo também será encontrado no diretório mods-config/sql/main/mysql. Execute o seguinte comando para criar o usuário do banco de dados e fornecer a permissão necessária.
[root@freeradius raddb]# mysql -uroot -pSenhaRootDB radius < mods-config/sql/main/mysql/setup.sql

O nome de usuário e a senha padrão definidos em setup.sql são radius e radpass, respectivamente. Se desejar, você pode alterar esse nome de usuário e senha editando este arquivo.

Se você deseja ver tabelas criadas em seu banco de dados, efetue login no MariaDB Server e selecione radius database e, em seguida, execute o seguinte comando.
[root@freeradius ~]# mysql -uroot -pSenhaRootDB radius 
MariaDB [radius]> show tables;
+——————+
| Tables_in_radius |
+——————+
| nas              |
| radacct          |
| radcheck         |
| radgroupcheck    |
| radgroupreply    |
| radpostauth      |
| radreply         |
| radusergroup     |
+——————+

8 rows in set (0.00 sec)

Você também pode ver as colunas definidas em uma tabela com o seguinte comando.
MariaDB [radius]> show columns from nas;
+————-+————–+——+—–+—————+—————-+
| Field       | Type         | Null | Key | Default       | Extra          |
+————-+————–+——+—–+—————+—————-+
| id          | int(10)      | NO   | PRI | NULL          | auto_increment |
| nasname     | varchar(128) | NO   | MUL | NULL          |                |
| shortname   | varchar(32)  | YES  |     | NULL          |                |
| type        | varchar(30)  | YES  |     | other         |                |
| ports       | int(5)       | YES  |     | NULL          |                |
| secret      | varchar(60)  | NO   |     | secret        |                |
| server      | varchar(64)  | YES  |     | NULL          |                |
| community   | varchar(50)  | YES  |     | NULL          |                |
| description | varchar(200) | YES  |     | RADIUS Client |                |
+————-+————–+——+—–+—————+—————-+

9 rows in set (0.00 sec)


Após criar o banco de dados, o usuário e as tabelas do banco de dados, criaremos agora um usuário RADIUS que será autenticado e autorizado. A tabela radchek mantém o nome de usuário e a senha de um usuário. Execute o seguinte comando para criar um usuário radius.
MariaDB [radius]> insert into radcheck (username,attribute,op,value) values(“holanda”, “Cleartext-Password”, “:=”, “password”);

Agora, execute o comando quit para sair do banco de dados.
MariaDB [(none)]> quit 
Bye

Até agora instalamos o servidor de banco de dados MariaDB, criamos o banco de dados e as tabelas necessárias e, em seguida, criamos um usuário de teste. Agora vamos configurar o servidor freeRADIUS para que o freeRADIUS possa consultar suas informações de usuário e cliente no servidor de banco de dados.



Configurando o FreeRADIUS para usar o MySQL


Após a configuração do banco de dados, é hora de configurar o servidor freeRADIUS para que ele possa usar o servidor de banco de dados. A configuração do banco de dados MySQL é definida no arquivo sql, localizado no diretório mods-available. Abra o arquivo sql e edite as seguintes opções neste arquivo.
[root@freeradius raddb]# vim mods-available/sql
driver = “rlm_sql_mysql”
dialect = “mysql”
server = “localhost”
port = 3306
login = “radius”
password = “radpass”
read_clients = yes


Se você alterar o nome de usuário (login) e a senha no arquivo setup.sql, não esqueça de alterar aqui também. Agora crie um softlink para módulos sql no diretório ativado por mods, para que o freeRADIUS trate o mysql como um módulo ativado com os seguintes comandos.
[root@freeradius raddb]# cd mods-enabled/ 
[root@freeradius mods-enabled]#   ln -s ../mods-available/sql sql

O módulo MySQL está agora ativado. Agora vamos configurar o active site para usar o MySQL.

Configuração do Active Site para suportar sql

Após ativar o módulo MySQL, é hora de configurar o  active site para usar o MySQL. Abra o arquivo sites-available/default (estou usando o site padrão. Se você usa um site personalizado, ative o sql no seu site personalizado nas seções a seguir) e ative o sql nas seções a seguir.
[root@freeradius raddb]# vim sites-available/default

Remova o comentário da linha que contém sql na seção authorize{}.
Descomente a linha que diz 'sql' na seção de accounting{} para dizer ao FreeRADIUS para armazenar registros no SQL.
Adicione ou remova o comentário 'sql' da session{} se desejar fazer a detecção de uso simultâneo.
Adicione ou remova o comentário 'sql' da seção post-auth{} se desejar registrar todas as tentativas de autenticação no SQL.
Adicione ou remova o comentário 'sql' da seção Post-Auth-Type REJECT{}.

Além disso, edite sites-available/inner-tunnel e descomente a linha que contém 'sql' na seção "authorize {}".

A configuração do FreeRADIUS para usar o MySQL foi concluída. Agora reinicie o servidor freeRADIUS para carregar o módulo MySQL e teste sua configuração freeRADIUS e MySQL.
[root@freeradius raddb]# systemctl restart radiusd

Testando o FreeRADIUS com MySQL

Localhost (127.0.0.1) é um cliente de radius padrão para o freeRADIUS Server. Assim, podemos verificar a configuração do freeRADIUS com o programa radtest do localhost. Execute o seguinte comando para verificar o usuário holanda.
[root@freeradius raddb]# radtest holanda  password 127.0.0.1 100 testing123

Sent Access-Request Id 229 from 0.0.0.0:42190 to 127.0.0.1:1812 length 76
User-Name = “holanda”
User-Password = “password”
NAS-IP-Address = 172.19.0.62
NAS-Port = 100
Message-Authenticator = 0x00
Cleartext-Password = “password”
Received Access-Accept Id 229 from 127.0.0.1:1812 to 0.0.0.0:0 length 32

Se tudo estiver correto, você encontrará a resposta acima do seu programa radtest. Isso significa que o módulo freeRADIUS e MySQL está funcionando bem.

Unifi Controller com freeRADIUS e MySQL Server

Agora, adicionaremos o nosso USG (IP: 172.19.0.61) como um dispositivo NAS. A tabela nas mantém as informações necessárias para um cliente RADIUS. Faça o login no servidor MariaDB e selecione o banco de dados radius e, em seguida, execute o seguinte comando para adicionar o USG como um cliente RADIUS.
[root@freeradius ~]# mysql -uroot -pSenhaRootDB radius
MariaDB [radius]> insert into nas (nasname,shortname,type,ports,secret,server,community,description) values('172.19.0.61','USG','other',NULL,'casadoholanda',NULL,NULL,'USG UNIFI');
MariaDB [(none)]> quit
Bye

Após inserir o dispositivo nas, reinicie o servidor freeRADIUS. Caso contrário, as informações do cliente RADIUS não serão atualizadas.
[root@freeradius ~]# systemctl restart radiusd

Popular Post

Rafael Holanda. Tecnologia do Blogger.

Seguidores

Pesquisar este blog

Publicidade

- Copyright © Casa do Holanda -Casa do Holanda- Powered by Blogger - Designed by Rafael Holanda -

Google+