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 패킷을 확인할 수 있다.
'IT > ㄴ Linux' 카테고리의 다른 글
[CentOS] Zabbix Agent 추가 및 살펴보기 [2/2] (0) | 2023.09.15 |
---|---|
[CentOS] Zabbix 모니터링 서버 설치하기 [1/2] (0) | 2023.09.15 |
[CentOS] Linux HAProxy HA 구성하기 [HA Auth 방식 변경 / keepalived.conf] (0) | 2023.09.12 |
[CentOS] Linux HAProxy 통계 확인 및 L4 LB 하기 [mariaDB] (0) | 2023.09.11 |
[CentOS] Linux HAProxy로 Load Balancing 하기 [HTTP / HTTPS / DNS] (0) | 2023.09.11 |