다음 이전 차례

13. PPP 서버에서 PAP(비밀번호 인증 프로토콜)를 쓸 경우

연결 중인 서버가 PAP나 CHAP 인증을 요구할 경우, 몇가지 작업을 더 해야 한다.

앞서의 선택사항 파일에다 다음 행을 추가한다.


#
# 인증 과정에서 인터넷 서비스 업체가 준 사용자 이름을 '호스트
# 이름'으로 쓸 수 있도
# 록 pppd에게 시킨다.
name <your ISP user name>       # 이 행을 편집해야 한다.

#
# PPP *서버*를 운영하고 있고 PAP, CHAP를 쓰려고 한다면 다음 행
# 중적당한 것의 #테이블을 없앤다.PPP 서버에 연결하려고 하는 클라이언트
# 측이라면 (서버가 PAP, CHAP를 쓰는 경우라도) 그러면 안된다. 왜냐하면
# 이 행은 서버에다 내 기계에게 인증받아야 한다고 말하는 셈이기
# 때문이다(그렇게 할 수 없을 뿐만아니라 연결 자체에 실패하게 될
# 것이다).
#+chap
#+pap
# /etc/ppp/pap-secrets 파일 안에서 암호화된 비밀번호를 사용하고
# 있다면, 다음 행의 #를 없앤다.
# 주의: 이것은 윈도우즈 NT에서 MS RAS에 설정할 수 있는 MS 암호화
# 비밀번호를 쓰는 경우와는 다르다.
#+papcrypt

13.1 MSCHAP를 쓸 경우

마이크로소프트 윈도우즈 NT RAS는 CHAP(시도/접속 인증 규약)의 변종을 쓸 수 있도록 설정할 수 있다. PPP 소스 tar 파일 안에서, README.MSCHAP80이라는 파일을 찾아보면 이에 대해 논하고 있다.

pppd에 대해 오류추적을 가능하게 해서 서버가 이 규약을 사용하는 인증을 요구하는지 알 수 있다. 서버에서 MS CHAP 인증을 요구할 경우 아래와 같은 행을 볼 수 있다.


rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]

여기서 가장 핵심적인 정보는 auth chap 80이다.

MS CHAP를 쓰려면, pppd가 이를 지원하도록 재컴파일해야 한다. 어떻게 컴파일하고 이 변종을 사용할지에 대한 안내를 받을 수 있도록 PPP 소스 파일 안에서 README.MSCHAP80 파일의 내용을 읽어본다.

현재 이 코드는 MS 윈도우즈 NT 서버에 연결할 리눅스 PPP 클라이언트 측만을 지원한다는 점에 주의한다. 이것은 리눅스 PPP 서버가 MSCHAP80 인증을 클라이언트 측으로부터 받을 수 있도록 설정하는 건 지원하지 않는다.

13.2 PAP/CHAP 비밀 파일

pap 또는 chap 인증을 사용할 경우, 비밀파일도 만들어야 한다. 다음과 같다:


/etc/ppp/pap-secrets
/etc/ppp/chap-secrets

이것은 루트 사용자, 루트 그룹에 속해야 하며 허가권은 보안을 위해 740이어야 한다.

PAP와 CHAP에 있어서 제일 주의해야 할 점은 이것이 컴퓨터 시스템를 인증하기 위한 것이지 사용자를 인증하기 위해서 만들어진 것이 아니라는 점이다.

"예? 뭐가 다르다는 거여?" 하는 소리가 들린다.

음 일단 내 컴퓨터가 PPP연결을 서버와 만들었다고 치자, 내 시스템의 어떤 사용자도 이 연결을 쓸 수 있다(당신 뿐만아니라). 이것 때문에 PPP를 써서 두개의 랜(로컬네트워크-LAN:Local Area Network)을 연결해 광역네트워크(WAN:Wide Area Network)을 구축할 수 있는 것이다.

PAP(CHAP)에서처럼)는 양방향 인증을 요구할 수 있다 - 이말은 다른 컴퓨터가 끼어들 때 양쪽 컴퓨터 모두에 유효한 이름과 비밀번호가 요구된다는 뜻이다. 그럼???만, PAP-인증 연결을 써서 전화연결 PPP를 설정하는 대부분의 PPP 서버는 이런 방식을 취하지 않는다.

인터넷 서비스 업체는 아마 사용자 이름과 비밀번호를 줘서 제 쪽 시스템과 나아가 인터넷에 연결하라고 했을 것이다. 그런데 인터넷 서비스 업체는 내 컴퓨터의 이름에는 전혀 무심하다. 따라서 나는 사용자 이름을 인터넷 서비스 업체 쪽에서 준 내 컴퓨터 이름 대신 써야 한다.

name user name 선택사항을 pppd에 줌으로써 그렇게 할 수 있다. 따라서 인터넷 서비스 업체가 준 사용자이름을 쓰려면 다음 행을 /etc/ppp/options 파일에다 덧붙인다.


name your_user name_at_your_ISP

기술적으로 볼때, PAP에는 user [인터넷 서비스 업체가 준 사용자이름]이라고 써야 하지만, pppd는 그 정도는 지능적으로 해결하므로 PAP를 쓰도록 요구할 경우 nameuser로 번역해 준다. name 선택사항을 사용할 경우의 잇점은 이것을 CHAP에서도 쓸 수 있다는 점이다.

PAP가 컴퓨터를 인증하는 것이기 때문에, 기술적으로 볼 때 상대방 컴퓨터 이름도 정의해줘야 한다. 하지만, 대부분의 사람들이 오직 하나의 인터넷 서비스 업체에만 연결하므로, 별테이블(*:와일드 카드)를 비밀 파일의 상대방 host 이름으로 쓸 수 있다.

많은 인터넷 서비스 업체들이 서로 다른 단말 서버에 연결하게 되어 있는 다중 모뎀 집합을 운영하고 있음에 주의하면 좋다 - 전화 번호 한개(순환식)로 접속할 수 있지만 각각 다른 이름을 갖고 있는 단말 서버. 따라서 몇가지 환경에서는 상당한 시간을 들이더라도 상대방 컴퓨터 이름이 뭔지를 알아내기 대단히 어렵다. 결국 어느 서버에 연결했는지에 따라 다르니까 말이다!

13.3 PAP 비밀 파일

/etc/ppp/pap-secrets파일은 다음과 같다.


# PAP 인증용 비밀파일
# client        server       secret     acceptable_local_IP_addresses

위 네 개의 자리는 백공간으로 나뉘어져 있으며 맨 마지막 자리는 빈자리여도 된다(동적인 연결이거나 인터넷 서비스 업체 쪽에서 정적 IP할당을 해 줄 경우 등에)

인터넷 서비스 업체가 사용자 이름으로 fred를 주고 비밀번호로 flintstone를 주었다면 /etc/ppp/option[.ttySx] 파일에 name fred라고 쓰고, /etc/ppp/pap-secrets파일에 다음과 같이 쓴다.


# PAP 인증용 비밀파일
# client        server  secret          acceptable local IP addressesfred            *       flintstone

이 말은 도메인 기계 이름으로 fred를 주고 (내 도메인 기계 이름이 그게 아니더라도 pppd보고 이걸로 하라고 지정하는 것이다) 모든 서버에 대해 비밀번호로 flinstone을 쓰라고 하는 것이다.

우리 쪽에서 특정한 도메인, 정적 IP 주소를 강제할 필요가 없다면 도메인IP 주소를 정의할 필요가 없다는 것에 주의한다. 그렇게 할 경우에도 대부분의 PPP 서버가 (보안 때문에) 자기가 준 IP 번호를 내 시스템이 설정하는 것을 허용하지 않으므로 작동하지 않을 성 싶다.

13.4 CHAP 비밀 파일

이건 고도의 인증 수단을 갖고 있을 것을 요구한다 - 즉 내 기계가 상대방 컴퓨터를 인증할 것 그리고 상대방 서버가 내 기계를 인증할 것을 허용해야 한다.

따라서 내 기계가 fred이고 상대방이 barney일 경우, 내쪽 기계는 name fred remotename barney라고 설정하고 상대방 기계는 name barney remotename fred라고 각각의 적당한 /etc/ppp/options.ttySx일에 설정해야 한다.

fred 컴퓨터를 위한 /etc/chap-secrets 파일은 다음과 같다.


# CHAP 인증용 비밀파일
# client        server  secret            acceptable local IP addresses
fred            barney  flintstone
barney          fred    wilma

barney 컴퓨터는 이렇다.


# CHAP 인증용 비밀파일
# client        server  secret            acceptable local IP addresses
barney          fred    flintstone
fred            barney  wilma

특별히 양쪽 기계가 양방향 인증을 위한 내용이 있어야 한다는 점에 주의하라. 이것은 로컬 기계가 상대방에 대해 인증하도록 허용할 것 그리고 상대방 기계가 로컬 기계에 대해 인증하도록 허용할 것을 뜻한다.

13.5 다중 PAP-인증 연결 다루기

몇몇 사용자들은 연결하는, PAP를 사용하는 서버가 하나 이상일 수 있다. 연결하고자 하는 각각의 기계에서 사용자 이름을 받은 것이 서로 다르다고 해도 문제될 것은 없다.

하지만, 어떤 사용자들은 연결하는 시스템 두개(이상일 수도 있고, 모조리 같을 수도 있다)에 같은 사용자 이름을 갖는다. 이런 경우에 /etc/ppp/pap-secrets의 적당한 행을 선택하는데 문제가 생기게 된다.

예상할 수 있듯이, PPP는 이를 극복하는 기제를 제공한다. PPP는 remotename 선택사항을 pppd에 씀으로써 서버에 대한 연결이 이루어지면, '알아낸 이름'을 설정하도록 허용한다.

당신이 두개의 PPP 서버에 사용자이름 fred로 접속한다고 치자.

/etc/ppp/pap-secrets는 다음과 같이 설정할 것이다.


fred    ppp_서버_1      barney
fred    ppp_서버_2      wilma

그러면, ppp_서버_1에 연결하기 위한 설정으로 name fred remotename ppp_서버_1을 ppp-options에 쓰고 ppp_서버_2에 대해서는 name fred remotename ppp_서버_2를 쓴다.

file filename 명령을 써서 pppd에 ppp 선택사항을 고를 수 있으므로, 각각의 PPP 서버에 대해 스크립트를 설정할 수 있으며, 사용할 선택사항 파일을 정확하게 고를 수 있는데다 올바른 remotename 선택사항을 고를 수 있다.


다음 이전 차례