코딩마을방범대

우분투에 FreeRadius 구축하기 본문

💡 백엔드/우분투

우분투에 FreeRadius 구축하기

신짱구 5세 2023. 9. 11. 17:54

 

 

 

Radius란 아래 포스트를 참고!

 

Radius란?

Radius (Remote Authentication Dial-In User Service) 원격 인증 및 사용자 접속 관리 서비스 네트워크 장치에서 사용자 인증 및 원격 접속 제어를 위해 사용되는 프로토콜이나 시스템 ( 사용자가 네트워크에

sweet-rain-kim.tistory.com

 

 


 

 

 

 

 

 

FreeRadius 설정 테스트 (필수X)

 

 

1. Freeradius 설치

$ sudo apt update && sudo apt -y install freeradius

 

 

 


 

 

 

2. 인증받는 클라이언트 정보 입력

$ sudo vi /etc/freeradius/3.0/clients.conf
client [장치이름]{
       ipaddr = [ip주소]
       secret = [인증키]
}
ipaddr 인증 호스트 및 네트워크 지정 (ipv6일 경우 ipv6addr)
secret radius 서버와 호스트 간 인증키 설정

 

 

 


 

 

 

3. FreeRadius 사용자 설정

$ sudo vi /etc/freeradius/3.0/users
[사용자명] Cleartext-Password := '[비밀번호]'
users 파일의 위치를 모르겠다면 아래 명령어 이용
$ locate freeradius | grep users

 

 

 


 

 

 

4. 설정 파일 이상 여부 체크

$ sudo systemctl stop freeradius
$ sudo freeradius -CX

 

 

 


 

 

 

5. FreeRadius 인증 테스트

$ radtest [사용자명] [비밀번호] [IP주소] [포트번호] [secret키]
유저 파일          : 사용자명, 비밀번호
clients.conf     : IP주소, 포트번호, secret키
(포트번호는 아무거나 넣어도 되는걸로 보임..)

 

 

 

 


 

 

 

 

 

 

FreeRadius 와 MySQL 연동하기

 

 

1. FreeRadius와 MySQL 설치

$ sudo apt update && sudo apt -y install freeradius freeradius-mysql mysql-server mysql-client

 

 

 


 

 

2. 서비스 등록 후 바로 실행

$ sudo systemctl enable --now freeradius

 

만약 방화벽이 실행중이라면 포트를 열어줘야함.

인증 및 승인을 위해 1812 포트를, 계정 사용을 위해 1813 포트를 사용한다.
$ sudo ufw allow to any port 1812 proto udp
$ sudo ufw allow to any port 1813 proto udp​

 

아래 명령어를 실행해 개방되었는지 확인
$ sudo ss -alun4 | grep -E ':1812|:1813'​

 

 

 


 

 

 

3. MySQL 데이터베이스&사용자 추가

$ sudo mysql -u root -p
CREATE DATABASE [스키마명] CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER '[유저명]'@'%' IDENTIFIED BY '[비밀번호]'; // %의 의미는 외부 접근을 허용
GRANT ALL PRIVILEGES ON [스키마명].* TO '[유저명]'@'%';
QUIT;

 

 

 


 

 

 

4. MySQL DB에 radius의 schema.sql 파일 import

$ sudo updatedb
$ locate main/mysql/schema.sql | grep freeradius

경로는 왠만하면 /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql 일거임!

 

※ locate가 없다면 apt -y install locate 명령어를 통해 다운로드!

updatedb를 통해 locate에서 검색할 때 사용할 db(파일 목록 등)를 미리 생성해야 한다.
만약에 updatedb 명령어를 실행하지 않고 검색할 경우 최근에 삭제된 파일도 검색이 된다.
( updatedb 작업은 크론(cron)에 등록되어있어 매일 새벽에 자동으로 실행된다고 한다.)

 

$ mysql -u [유저명] -p [스키마명] < [위에서 찾은 sql 경로]

 

 

 


 

 

 

5. Radius에 MySQL 정보 세팅

$ sudo vi /etc/freeradius/3.0/mods-available/sql
sql {
      dialect = "mysql"
      driver = "rlm_sql_&{dialect}"

      # server = "[IP주소]"
      server = "localhost"
      port = [포트번호]
      login = "[계정명]"
      password = "[비밀번호]"
      radius_db = "[스키마명]"

      read_clients = yes
      client_table = "nas"
}
위 항목은 최초에 전부 주석 처리로 되어있으니, 찾아서 주석 해제 후 설정!

MySQL 데이터베이스를 사용하면 기본적으로 TLS 인증서가 사용된다.
이 데모에서는 TLS 인증서를 사용하지 않으므로 MYSQL TLS 섹션을 주석 처리한다.

 

 


 

 

6. Radius 심볼릭 링크 생성 후 권한 변경

$ sudo ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
$ sudo chown -h freerad.freerad /etc/freeradius/3.0/mods-enabled/sql
$ sudo chgrp -h freerad /etc/freeradius/3.0/mods-available/sql

 

 


 

 

 

7. 설정파일 확인 후 Radius 재구동

$ sudo systemctl stop freeradius
$ sudo freeradius -CX
$ sudo systemctl start freeradius

 

 


 

 

 

8. 연동 확인 테스트

$ mysql -u [유저명] -p[비밀번호]
use [스키마명];
insert into radcheck (id,username,attribute,op,value) values("1", "demouser", "Cleartext-Password", ":=", "demopass");
quit;
$ radtest {username} {password} {hostname} {포트번호} {radius_secret}

$ radtest demouser demopass localhost 0 testing123
radius_secret은 clients.conf 파일에 설정된 비밀번호이다.

$ sudo vi /etc/freeradius/3.0/clients.conf
위 명령어를 통해 들어가보면 아래와 같이 적혀있다.

client localhost {
      ...
      secret = testing123
      ...
}

 

성공 시 실패 시

 

 

 

 

 


 

 

 

 

 

 

daloRADIUS 설치 및 구성

※ daloRADIUS는 FreeRADIUS 서버를 관리하기 위한 웹 애플리케이션이며, MySQL 연동 시 사용

 

 

1. Apache 웹 서버 및 필수 모듈 설치

$ sudo apt update && sudo apt -y install apache2 php libapache2-mod-php php-mysql unzip
$ sudo apt update && sudo apt -y install php-pear php-db php-mail php-gd php-common php-mail-mime

 

 


 

 

 

2. daloRADIUS 설치

※ # 은 root 권한

# mkdir /var/www/html -p

# wget https://github.com/lirantal/daloradius/archive/master.zip
# sudo unzip master.zip -d /var/www/html

# mv /var/www/html/daloradius-master /var/www/html/daloradius
나의 경우 wget으로 다운받았을 경우 하위 디렉토리가 몇 개 빠져서 오류가 발생했었다.
daloRADIUS 홈페이지 ( https://sourceforge.net/projects/daloradius )
위 링크 통해서 다운로드 받아도 무방!

1번의 폴더 생성만 진행하고 위 링크 통해 zip파일 저장해서 아래 명령어 실행
# sudo unzip daloradius-1.1-2.zip -d /var/www/html​

 

 


 

 

3. daloRADIUS 의 기본 MySQL 테이블 import

$ mysql -u [유저명] -p [스키마명] < /var/www/html/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
$ mysql -u [유저명] -p [스키마명] < /var/www/html/daloradius/contrib/db/mysql-daloradius.sql

 

 


 

 

4. Apache에서 접근할 수 있도록 권한 수정

$ sudo chown -R www-data.www-data /var/www/html/daloradius/
$ sudo chmod 664 /var/www/html/daloradius/library/daloradius.conf.php

 

 


 

 

5. 데이터베이스 연결 구성

$ sudo vi /var/www/html/daloradius/library/daloradius.conf.php
...
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '[MySQL 포트번호]';
$configValues['CONFIG_DB_USER'] = '[MySQL 계정명]';
$configValues['CONFIG_DB_PASS'] = '[MySQL 비밀번호]';
$configValues['CONFIG_DB_NAME'] = '[스키마명]';
...

 

 

 


 

 

6. 서비스 재시작

$ sudo systemctl restart freeradius
$ sudo systemctl restart apache2

 

 

 

 


 

 

7. 웹서비스 테스트

 

http://[ip주소]/daloradius 링크로 접속!

• 기본 사용자 이름 : admiinistrator 

• 기본 암호 : radius

 

 

 

 

 


 

 

 

 

 

 

FreeRadius와 Ldap 연동

 

 

1. ldap 설정 파일 수정

$ sudo vi /etc/freeradius/3.0/mods-enabled/ldap
ldap {
     server = '[구축한 ldap 이름]'
 
     port = [구축한 ldap 포트번호]
 
     # 전에 구축했던 도메인 정보
     identity = 'cn=admin,dc=ldap,dc=dbkim,dc=co,dc=kr'
     password = '[구축한 ldap 비밀번호]'

     # 전에 구축했던 도메인 정보
     base_dn = 'dc=ldap,dc=dbkim,dc=co,dc=kr'
 
     update {
         control:Password-With-Header += 'userPassword'
         control:NT-Password := 'ntPassword'
         reply:Reply-Message := 'radiusReplyMessage'
         reply:Ldap-Group-Name := 'entryDN'
 
         control: += 'radiusControlAttribute'
         request: += 'radiusRequestAttribute'
         reply: += 'radiusReplyAttribute'
     }
}

 

 


 

 

 

2. clients.conf 파일 수정

$ sudo vi /etc/freeradius/3.0/clients.conf
# 다른 호스트에 있을 경우 ipaddr 부분을 수정하면 됨.
client localhost {
      ipaddr = 127.0.0.1
      proto = *

      secret = [인증키]
      nas_type = other

      limit {
            max_connections = 16
            lifetime = 0
            idle_timeout = 30
      }
}

client localhost_ipv6 {
      ipv6addr = ::1
      secret = 12345678
}

 

 


 

 

 

3. defualt 파일 수정

$ sudo vi /etc/freeradius/3.0/sites-available/default
# 아래 주석 해제!
authenticate{
     Auth-Type LDAP {
          ldap
     }
}
...
post-auth{
     ...
     #
     # Un-comment the following if you want to modify the user's object
     # in LDAP after a successful login.
     #
     ldap
}

 

 

 

 

 

 

 

 


참고사이트

우분투 리눅스에서 FreeRadius 설치

Ubuntu Linux에 MySQL 통합으로 FreeRadius 설치

Install FreeRADIUS with daloRADIUS on Ubuntu 20.04

 

 

 

SMALL