[CentOS] Radius Server 구축하기 [Freeradius]
Nowhere 와 Now here 의 차이

IT/ㄴ Linux

[CentOS] Radius Server 구축하기 [Freeradius]

TIENE 2023. 12. 18. 08:41
반응형

RADIUS(Remote Authentication Dial-In User Service) Server

- 네트워크 서비스를 연결하여 사용하는 사용자에게 중앙 집중식 인증, 권한 부여 및 계정(AAA) 관리를 제공하는 네트워킹 프로토콜 및 소프트웨어 시스템
- 일반적으로 Wi-Fi 네트워크, VPN(Virtual Private Network), 전화 접속 연결 등 네트워크 자원에 대한 액세스 제어

 


RADIUS 서버의 주요 구성 요소 및 기능

1. 인증
   - 사용자 이름과 비밀번호와 같은 자격 증명을 확인하여 네트워크에 연결하려는 사용자 인증

   - 다양한 인증 방법 지원

     - PAP(Password Authentication Protocol)

       CHAP(Challenge-Handshake Authentication Protocol)

       EAP(Extensible Authentication Protocol) 

2. 인가
   - 인증이 성공한 후 미리 정의된 정책에 기초하여 사용자가 가져야 하는 액세스 또는 권한 수준 결정
   - 특정 리소스, 서비스 또는 네트워크 세그먼트에 대한 액세스 가능

3. 회계
   - 각 사용자 세션에 대한 계정 기록 유지 및 관리  
   - 세션의 시작 및 종료 시간, 전송된 데이터의 양 및 기타 관련 정보와 같은 세부 정보 포함
   - 이러한 계정 데이터는 사용자 활동을 추적하고 사용 보고서 생성에 유용

4. 네트워크 장치와의 통신
   - 중앙 RADIUS 서버와 통신하는 클라이언트 역할을 하는 네트워크 장치와 함께 클라이언트-서버 프로토콜 작동
   - 네트워크 전체에서 사용자 인증 및 권한 부여에 대한 중앙 집중화되고 표준화된 접근 방식 가능

5. 보안
   - 인증 프로세스를 보호하고 전송 중 사용자 자격 증명을 보호하기 위해 암호화 및 해싱 기술 사용 지원
   -  서버와 클라이언트 간의 통신을 보호하기 위해 전송 계층 보안(TLS) 및 데이터그램 전송 계층 보안(DTLS) 사용 가능

6. 확장성
   - RADIUS는 확장 가능한 솔루션으로 설계되어 대규모 네트워크에 적합  
   - 조직이 다수의 사용자에 대한 인증 및 권한 효율적인 관리 가능

7. 상호운용성
   - 산업 표준 프로토콜로, 많은 네트워킹 장치와 시스템이 이 프로토콜과 호환 가능

 

Radius Server 구축하기 [Freeradius]


0. Radius 서버 구축

0.1) freeradius 설치

yum -y install freeradius

- 다음과 같이 raduius를 설치한다.

 

1. Radius 서버 구성

1.1) Radius 계정 추가

vim /etc/raddb/mods-config/files/authorize

- 다음과 같이, authorize 파일 최상단에 원하는 계정 이름과 패스워드를 기입한다.

- 계정 이름은 testing / Password는 password가 될 예정이다.

 

 

1.2) Debug 모드 실행

radiusd -X

- 계정 생성이 완료되었으니, 실행을 하여 테스트를 진행한다.

- 테스트 진행에 도움을 줄 수 있는 Debug 모드를 실행한다.

 

systemctl stop radiusd
radiusd -X

- 간혹 위의 사진처럼 이미 사용중이라고 한다면, radius 서버를 정지한 후에 다시 실행하면 아래 사진과 같이 실행이 된다.

 

netstat -ln | grep 1812

- Port Number 1812로 Listening 상태를 확인할 수 있다.

 

 

2. Radius 서버 테스트

2.1) 테스트 실행

radtest <username> <password> <radius-server> <port> <radius-secret>

<username>: testing
<password>: password
<radius-server>: 127.0.0.1
<port>: 0 [default : 0(1812)]
<radius-secret>: testing123
radtest testing password 127.0.0.1 0 testing123

- 다음과 같이 입력하여, Access-Accept 상태를 받야한다.

- 만약, Access-Reject 결과를 받았다면, 위의 계정 설정 확인, 혹은 radius 서버를 재시작해본다.

 

 

 

radtest testing password 127.0.0.1 0 testing12

- Secret Key를 다르게 입력했을 때, Debug 모드에서의 출력값이다.

- 공유키가 틀렸다는 결과값을 출력해었으며, 다양한 실행 결과를 출력해주니 트러블 슈팅에 유용하다.

 

 

radtest testing passwor  127.0.0.1 0 testing12

- 계정의 패스워드를 틀렸을때의 결과값이다. 접근을 거부당했다.

 

- Debug 모드에서의 결과값이다. 패스워드가 일치하지 않다는 결과다.

(8) pap: Comparing with "known good" Cleartext-Password
(8) pap: ERROR: Cleartext password does not match "known good" password
(8) pap: Passwords don't match

 

 

2.2) 계정 추가 및 Radius 서버 IP 변경

vim /etc/raddb/mods-config/files/authorize

- 계정을 하나 더 추가해본다.

 

 

vim /etc/raddb/clients.conf

- Radius Client를 추가하는 것이며, IP를 다음과 같이 입력하고 현재 진행 중인 Linux Server의 IP를 똑같이 변경한다.

 

radtest test cisco15 192.168.1.150 0 testing123

- 위에서 설정한 계정과 IP 를 넣고 테스트를 하면 다음과 같이 정상이라는 결과를 얻을 수 있다.

 

 

 

radtest test cisco15 192.168.1.150 0 agyu123

- Secret Key 또한 변경 가능하니 상황에 맞게 구성하면 된다.

 

3. Wireshark 확인 

3.1) Request 확인

- User-name부터 Shared Key값까지 접근을 위한 관련 정보를 담아 요청한 패킷의 내용을 확인할 수 있다.

 

 

3.2) Accept 확인

- Request 패킷에 대한 응답으로 Accept 패킷을 확인할 수 있다.

 

 

3.3) Reject 확인

- Request 패킷에 대한 응답으로 Reject 패킷을 확인할 수 있다.

 

 


참고: https://wiki.freeradius.org/guide/Getting-Started

반응형