 |  |
|
난이도 : 초급 Denise Genty, AIX Network Security Developer Team Lead, IBM
2007 년 9 월 11 일 OpenSSH는 SSH1과 SSH2 프로토콜을 지원하는 프리(free) 소프트웨어 툴입니다. 신뢰성 있고 안전하며, r-commands, telnet, ftp 서비스를 대신하여 IT 업계에서 널리 채택되고 있고, 네트워크를 통해서 두 개의 호스트들 간 안전한 암호화 세션을 제공합니다. OpenSSH 버전 3.4p1을 소개합니다.
Open Secure Shell은 무엇인가?
Open Secure Shell (OpenSSH)은 오픈 소스 버전의 SSH 프로토콜 수트이다. 이 툴은 인증과 암호화 되는 쉘 함수들을 제공한다. 쉘은 명령어 스트링, stdin 또는 파일에서 인풋을 읽는 명령 언어 인터프리터이다. 왜 OpenSSH를 사용하는가? 인터넷 같은 안전하지 않은 공개 네트워크를 통해 실행할 경우, 보안이 되지 않는 명령어 telnet, ftp, r-commands 대신 SSH 명령어 수트를 사용할 수 있다.
OpenSSH는 SSH1과 SSH2 프로토콜을 사용하여 통신하는 코드를 제공한다. 차이가 무엇인가? SSH2 프로토콜은 SSH1의 재작성이다. SSH2에는 분리되어 겹친 프로토콜이 포함되지만, SSH1은 하나의 큰 코드 세트이다. SSH2는 RSA & DSA 키를 지원하지만, SSH1은 RSA만 지원하고, SSH2는 강력한 암호 무결성 체크를 사용하지만, SSH1은 CRC-32 체크를 사용한다. Internet Engineering Task Force (IETF)는 보안 쉘 표준을 관리한다.
무엇이 새로워졌는가?
OpenSSH는 3.4p1 버전으로 업데이트 되었다. (openssh.org). AIX 5L Expansion Pack and Web Download Pack에서 바이너리 버전을 제공한다. 또는, OpenSSH on AIX에서 다운로드 할 수 있다. 이전 릴리스인 OpenSSH version 2.9.9에 대해 알고 싶다면, AIX에 포함된 OpenSSH를 참조하라.
기본적인 기능으로는 사용자 권한의 분리이다. 특별한 권한을 사용하여 실행되는 코드의 양을 줄임으로써 슈퍼 유저 에스컬레이션(escalation) 위험 요소를 방지하는 보안 향상이라고 볼 수 있다. 사용자 권한 분리는 OpenSSH 서버 설정 파일, /etc/ssh/sshd_config에서 실행된다.
#UsePrivilegeSeparation yes
|
이것이 작동하는 방식은 개별 서버 프로세스는 각 연결을 위해 생성되고, 요청이 클라이언트에서 들어오면, ssh 모니터 프로세스는 클라이언트에서 오는 모든 요청들을 핸들하는 권한이 없는 자식 프로세스로 분기한다. 클라이언트의 요청이 슈퍼 유저 권한을 필요로 하면, 요청은 권한을 받은 모니터 프로세스로 보내진다. SSH 프로세스가 시작되는 것을 보면, 모니터 프로세스용 sshd 데몬과 클라이언트가 소유한 권한이 없는 프로세스를 보게 될 것이다. 권한 분리에 대한 상세한 정보는 Niels Provos의 권한 에스컬레이션 방지하기(August 2002)를 참조하라.
AIX 5.2는 AIX의 새로운 릴리스이기 때문에, OpenSSH 소스 코드의 개별 컴파일이 OS 레벨에서 완료되었다. 5.2 코드 레벨의 VRMF는 3.4.0.5200으로, 설치 이미지에서 5.1 버전을 구별한다. 새로운 VRMF 역시, AIX 5.1에서 AIX 5.2로의 마이그레이션 한다면 도움이 될 것이다. OpenSSH는 C for AIX (cc) version 5.0 컴파일러를 사용하여 컴파일 된다. VRMF의 설치 이미지는 "F" (Fix level)을 제외하고는, 오픈 소스 코드 레벨과 비슷하게 매치된다. 픽스 레벨(fix level)은 주요 오픈 소스 릴리스들간 픽스가 포함되어 있는 릴리스가 발생할 때마다 늘어난다. 예를 들어, 3.5 레벨의 오픈 소스 코드에서 패치를 포함하기 위해 3.4p1 레벨의 코드를 변경한다면, "F"가 증가할 것이다. (3.4.0.5201).
OpenSSH 소스 코드는 2002년 4월 2.9.9 릴리스 이후 National Language Support (NLS)로 강화되었다. 2002년 10월, 메시지 카탈로그 파일 openssh.cat이 35개국 언어로 번역되었다. 이 메시지 카탈로그 파일들은 openssh.msg.<LANGUAGE_ABBREVIATION> 라는 이름으로 installp 포맷으로 패키징 되었다. 여기에서 LANGUAGE_ABBREVIATION은 해당 국가에 대한 4-문자 로케일 코드이다. (예를 들어, DE_DE는 UTF German이다.) 이 메시지 카탈로그 파일 세트는 AIX 5L Expansion Pack과 Web Download Pack에서 사용할 수 있고, .tar.Z 파일에 번들된다. 다른 로케일에 OpenSSH 파일 세트를 설치할 때, 설치 소프트웨어 installp는 설치할 정확한 버전의 메시지 카탈로그 파일 세트를 결정하고, 번역된 메시지 카탈로그는 /usr/lib/nls/msg/<LANGUAGE_ABBREVIATION>으로 복사된다.
본 릴리스의 추가 픽스들
최신 OpenSSH 버전3.4p1 바이너리에는, openssh.org 사이트에서 AIX만을 위한 여러 패치들을 포함시켰다. 다음과 같은 픽스가 포함된다.
- 패스워드 만기 실행
- 업데이트 파일 /etc/security/login과 failedlogin
- 성공하지 못한 로그인 카운트 업데이트
- LOGIN 환경 변수 세트
- 많은 데이터를 체계화 하여 세션이 중지(hang) 방지
AIX 5.2 향상
AIX 5.2는 Pluggable Authentication Modules (PAM)를 지원하기 때문에, OpenSSH 3.4.0.5200은 PAM 지원으로 컴파일 되었다. PAM은 시스템 관리자가 커스터마이징 된 모듈을 작성하고 이것을 사용하도록 시스템을 설정함으로써 다양한 인증 모듈들을 추가 또는 쌓을 수 있는 프레임웍이다. AIX 5.2에서, PAM 프레임웍은 라이브러리, 연결 가능한 모듈, 설정 파일로 구성된다. OpenSSH는 PAM을 사용하여 컴파일 되기 때문에, 설정 파일 /etc/pam.conf는 openssh.base.server 패키지 설치 시 서버에 생성된다. (향후에는, /etc/pam.conf가 openssh.base.server 설치 시 생성될 것이다.)
기본적인 PAM 모듈은 pam_aix인데, pam_aix는 기본 AIX OS에서 제공한다. (AIX 5.2의 /usr/lib/security에 자동 설치된다.) pam_aix 모듈은 AIX pam_aix authentication() 호출 같은 AIX 빌트인 함수에 액세스를 제공함으로써, AIX 보안 서비스로의 액세스를 허용한다. OpenSSH용 /etc/pam.conf는 다음과 같다.
sshd auth required /usr/lib/security/pam_aix
OTHER auth required /usr/lib/security/pam_aix
sshd account required /usr/lib/security/pam_aix
OTHER account required /usr/lib/security/pam_aix
sshd password required /usr/lib/security/pam_aix
OTHER password required /usr/lib/security/pam_aix
sshd session required /usr/lib/security/pam_aix
OTHER session required /usr/lib/security/pam_aix
|
/etc/pam.conf에 대한 권한은 644이다.
암호 애플리케이션은 무작위 숫자에 의존한다. 숫자가 무작위로 선별되는 정도가 약하고 생성하는 동안 보호되지 않으면, 암호의 보안성이 약해진다.
AIX 5.1의 OpenSSH는 OpenSSH 소스 코드 (ssh-rand-helper)에서 제공되는 엔트로피 수집 메커니즘(무작위 넘버)을 사용하여 컴파일 된다. PRNGD 오픈 소스 데몬(prngd-0.9.23-3.aix4.3.ppc.rpm package open source
daemon ().
AIX 5.2 기본 보안은 새로운 가상 무작위 숫자 제너레이터 장치인 /dev/random과 /dev/urandomM과, 가상 장치 드라이버, 엔트로피를 제공하는 다양한 하드웨어 장치 인터럽트를 선택하는 설정 루틴을 제공한다. AIX 5.2의 OpenSSH는 새로운 장치 /dev/urandom을 활용하도록 컴파일 된다. 또한 최신 OpenSSL 버전, openssl-0.9.6e-2.aix4.3.ppc.rpm (AIX Linux Toolbox)은 OpenSSH가 /dev/urandom device를 사용하도록 하는데 쓰인다.
문서 제공
- OpenSSH 파일 세트에는 man 페이지(
openssh.man.en_US)가 제공된다.
- 웹 상에서, openBSD는 매우 훌륭한 man 페이지를 제공한다.
- 다양한 레벨의 AIX(AIX 4.3.3, AIX 5.1, AIX 5.2)에서의 설치 도움말은 IBM redbook Managing AIX Server Farms를 참조하라. Chapter 4.2에 소프트웨어 요구 사항과, OpenSSH 서버 관리 및 클라이언트 명령어 사용 방법에 대해 나와 있다.
-
AIX 5.2
Security Guide에는 AIX와 PAM에 대한 정보를 제공한다.
패키징
네 개의 설치 패키지에는 installp 포맷의 코드가 포함된다.
openssh.base
| 클라이언트 및 서버의 보안 쉘을 위한 바이너리 실행 파일이 포함된다. 두 개의 개별 파일 세트인, openssh.base.client와 openssh.base.server가 있다. 클라이언트 부분만 설치할 수 있고, 서버 부분을 설치한다면, 클라이언트 부분은 자동으로 설치된다. |
openssh.license
| IPLA는 Limited Program Services 라이센스 텍스트로 허가하지 않는다. 설치 전에 소프트웨어 라이센스를 읽고 수락해야 하는 파일 세트이다. |
openssh.man.en_US
| openssh.org 소스 코드와 함께 제공되는 Man 페이지이다. 이 Man 페이지는 /usr/share/man 디렉토리에 설치되고 man 명령어를 사용하여 볼 수 DT다. 각 명령어, ssh_config와 sshd_config 파일에 대한 man 페이지도 있다. |
openssh.msg.<LANGUAGE_ABBREVIATION>
| 번역된 메시지 카탈로그 파일이다. .msg 파일 세트만이 로케일과 관련되어 있다. |
설치 패키지에는 실행 파일을 정확한 디렉토리에 설치하는데 필요한 스크립트도 포함된다.
다음 파일들은 openssh.base.client 파일 세트에 있고, /usr/bin에 설치된다.
ssh
scp
sftp
ssh-add
ssh-keygen
ssh-keyscan
ssh-agent
ssh-keysign
ssh-rand-helper
|
다음 파일은 openssh.base.server 파일 세트에 있고 /usr/sbin에 설치된다.
다음 설정 파일은 /etc/ssh에 설치된다.
이 패키징은 3.4p1 레벨의 코드에서 서버 실행에 필요한 sshd 사용자, 그룹, /var/empty 디렉토리를 만든다. 이 패키징은 또한 데몬의 SRC 컨트롤을 실행하고, 호스트 키를 생성하며, 설치 전에 OpenSSL의 사전 조건을 점검한다.
참고자료
필자소개  | |  | Denise Genty는 AIX Communications 분야의 IBM AIX Network Security 팀의 개발자이자 팀 리더이며, 12년 동안 AIX 개발 분야에서 일했다. 현재 프로젝트로는, RADIUS, IP Security, Open Secure Shell이 있다. Texas A&M University에서 컴퓨터 공학 학사 학위를 받았다. (genty@us.ibm.com) |
기사에 대한 평가
|  |