코딩마을방범대
우분투에 FreeRadius 구축하기 본문
Radius란 아래 포스트를 참고!
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
}
참고사이트
Ubuntu Linux에 MySQL 통합으로 FreeRadius 설치
Install FreeRADIUS with daloRADIUS on Ubuntu 20.04
'💡 백엔드 > 우분투' 카테고리의 다른 글
우분투의 CURL (0) | 2023.09.27 |
---|---|
우분투에 OpenLDAP & phpLdapAdmin 구축하기 (0) | 2023.09.12 |
MobaXterm, vi 편집기 단축키 정리 (0) | 2023.09.11 |
Docker 내에서 Docker 사용하기 (0) | 2023.09.07 |
Docker 이미지 생성하기 (0) | 2023.09.05 |