[譯, 윤봉환 el@linuxlab.co.kr]
|
||||||||||||||||||||
우리가 원격 머신에 텔넷으로 연결할 때면 언제나, 모든 데이터가 로컬 네트워크를 거쳐 나가므로 혹시 침입자가 있다면 그 연결을 엿보거나 데이터를 유출시키는 명령을 끼워 넣는 등 나쁜 짓을 하기란 그리 어렵지 않다. 텔넷이나 FTP, HTTP 등은 대개 여러분의 신상정보나 패스워드 등을 네트워크에 그대로 노출시키지만 성능 좋은 암호화 시스템을 사용하면 네트워크 보안성을 매우 향상시킬 수 있다. 악당들이 여러분의 패킷을 가로채더라도 그 내용을 들여다볼 수 없기 때문이다. ssh의 매뉴얼 페이지를 보면 이런 말들이 있다: “ssh(secure shell)은 원격 머신에 로긴하고 그 안에 있는 명령들을 실행하는 데 쓰이는 프로그램이다. rlogin이나 rsh 등 보안에 취약한 도구를 대신해서 안전하지 않은 네트워크에서, 신뢰할 수 없는 호스트끼리 서로 연결할 때 오가는 정보를 암호화하여 안전한 통신환경을 제공하려는 목적으로 만들어졌다. X11 연결과 갖가지 TCP/IP 포트들도 안전한 채널로 보낼 수 있다. 패스워드를 비롯한 온갖 비밀 정보들을 암호화하여 안전하게 전송할 수 있는 프로그램으로 강력하며 매우 사용하기 쉽다.” 현재 SSH에는 SSH2와 SSH1 두 가지 프로토콜이 있는데, 이름에서 짐작할 수 있듯이 SSH2는 SSH1 프로토콜을 개선한 것이다. SSH2는 이중-암호화 RSA 키 교환 외에도 다양한 키-교환 방법들을 지원한다. 최근 버전에서는 Diffie-키교환과 DSA, 그리고 RSA를 사용하지 않는 다른 공개 Hellman 키 알고리듬까지도 지원한다. SSH2는 SSH1과 호환되지만 기본적으로 호환성을 포함하고 있는 것은 아니다: SSH2 서버 혼자서는 SSH1 연결을 관리할 수 없으므로 SSH1 서버가 반드시 있어야 한다.
Obtaining and installing SSH 여러분은 SSH2/SSH1 클라이언트와 서버를 주
FTP 서버인 http://www.ssh.com/이나 미러 사이트를 통해서 구할
수 있다. SSH1 최근 버전은 ssh-1.2.30.tar.gz, SSH2 최근 버전은
ssh-2.3.0.tar.gz이다.(이 글을 옮겨 쓰는 동안 최근 버전은 2.4.0이다.
ftp://linux.sarang.net/mirror/ network/daemon/security/ssh/)
다음 단계에서는 SSH2를 설치한다. SSH1을 설치할
때와 같은 방법으로 설치한다:
SSH1 - SSH2 호환(Compatibility) 이 글에서는 여러분이 SSH1과 SSH2 둘 모두를 설치했다고 가정한다. SSH2 서버가 SSH1 연결을 다룰 수 있으려면 /etc/ssh2/ 디렉토리 아래에 있는 SSH2 환경설정 파일을 편집해야 한다. /etc/ssh2/ 디렉토리에서 ssh2 데몬 프로그램인
sshd2(Secure Shell Daemon)의 설정파일 sshd2_config를 열어 다음
줄을 추가한다:
그 다음 같은 디렉토리에 있는 ssh2_config 파일에
아래 두 줄을 덧붙인다.
SSH 시작하기 부트할 때 sshd를 시작하는 방법은 두 가지가 있다. 1. /etc/rc.d
디렉터리로 가서 rc.local 파일을 열고 그 끝에 아래 줄을 추가한다:
자신의 런레벨을 모르겠다면 /etc/inittab 파일에서
initdefault 항목을 찾아본다. 레드햇 계열의 배포판을 사용한다면
다음과 같은 모습일 것이다:
그 다음 rc$number.d 디렉토리로 가서 다음 명령을
실행한다:
그 다음이 스크립트를 실행하면 시스템을 리부트
하지 않고 sshd2 데몬을 시작할 수 있다.
SSH 연결 열기 sshd를 실행한 다음에 그 환경 구성을 점검하기 위해 ssh 클라이언트를 이용해 서버에 로긴해본다. 여러분의 머신이 host1이라는 이름을 가지고 있고, 로긴 이름이 myname이라고 가정하면 다음과 같은 명령을 사용할 것이다:
ssh 키 만들고 관리하기 (Generating and managing ssh keys) ssh는 공개키 암호화 방식 등 키(key) 기반의
다른 인증 메커니즘도 지원한다. 각 사용자는 공개 키 인증 방식을
사용하기 위해서 반드시 ssh-keygen 명령을 실행해서(다른 옵션은
없이) 인증키를 먼저 만들어야 한다. 이 명령은 새로운 키 쌍을(공개키와
비밀키) 만들기 위해 여러분에게 비밀문구(passphrase)를 물어올
것이다.
host1에는 myname1 계정이, host2에는 myname2 계정이 있다고 가정하자. 그리고 우리가 host1에서 host2로 공개키 인증을 이용해서 로긴하려 한다면 다음 네 단계가 필요하다. 1. 먼저 host1에서
ssh-keygen 명령을 이용해서 키 쌍을 만들어내고, 키 쌍을 보호하기
위해 2. ssh 패스워드
인증을 이용해서 host2로 로긴하고 위에서 작업을 또 한다.
3. host2에서
host1의 ssh 공개키를 가져온 다음 적당한 이름으로 바꾼다
4. 마지막으로
아래 내용을 넣어 인증 파일을 만든다:
앞서 환경 구성을 검사할 때 여러분은 ssh를 이용해서 host1에서 host2로 접속할 수 있었을 것이다. sshd는 반드시 비밀문구(passphrase)를 되묻는데, 만약 그렇지 않고 패스워드를 요구한다면 환경 구성 작업에 어떤 문제가 생긴 것이므로 다시 한번 주의 깊게 1부터 4단계까지 반복한다. 요청된 비밀문구(passphrase)는 여러분의 LOCAL 비밀문구이다(즉, 비밀문구는 host1 공개키를 보호한다)
다음 번에는... 다음 기사에서는 ssh 꾸러미에 포함된 다른 프로그램들과 기능들을 살펴볼 것이다: ssh-agent와 ssh-add (이들은 유용한 비밀문구 관리 프로그램이다), 그리고 sftp와 scp(네트워크를 통해 파일을 전송할 때 비밀을 보호하는 도구들) |