Home     FreeBSD     Linux     MS-Window     PHP     Data Base     Utility     Phone     Etc  

   
  Category : Linux         SSH에 대해서....수정   삭제   
1. SSH 개요
왜 SSH인가?
SSH의 특징
라이센스와 비용
U.S. 특허와 수출에 관련된 사항
SSH의 장점
SSH의 단점

2. 관련 애플리케이션
UNIX/LINUX 용 SSH 서버/클라이언트 :?SSH1, SSH2 , LSH
Mindterm SSH (무료 Java SSH클라이언트)
Windows SSH 클라이언트
그 외의 기종들: Mac, Palm Pilot, VAX

3. 컴파일과 설정
SSH1 컴파일
SSH1 설정
Mindterm SSH 클라이언트 설치

4. SSH 유용한 사용법

5. 참고 문헌



1. SSH 개요
Secure SHell (SSH) 는 핀랄드 태생의 Tatu Ylonen에 의해 개발 되었다. SSH는 telnet, rlogin, rcp, rsh을 대체하고, TCP 연결의 보안을 강화한다. 옵션으로 패킷 압축도 지원하며, 인증 프로세스인 SecurID, Kerberos, S/KEY등과 함께 사용해 원격에서 UNIX 서버에 안전하게 접속하게 한다.

SSH1은 (protocol v1.2와 v1.5) 이미 무료 소프트웨어로 공개되었으나, SSH Communications와 DataFellows는 유저들이 상업 버전인 SSH2를 사용하도록 하고 있다.

왜 SSH 인가?
Telnet, rlogin, rcp, rsh 명령어는 마는 보안 취약점을 가지고 있다. 통신하는 모든 내용은 암호화 되지 않은 평범한 텍스트이며, 어떤 호스트도 인증절차를 거치지 않는다. 이 때문에 앞의 명령어 들은 악의를 가진 유저에게 sniffing이나, tcp/ip 주소 spooping을 당할 수 있다. UNIX의 X11 윈도우 시스템에서 사용하는 xhosts나 xauth는 사용하기 어려운 접근제어 구조를 가지고 있으므로, 몇몇 유저들만 이해하고 있으며, 이 때문에 X11 접근 제어는 UNIX 머신을 보안을 약하게 할 수 있다.

SSH는 통신에 연결된 각각의 머신에서 사용자 인증을 하기위해 공개키 암호법인 RSA를 사용한다. 통신에서 교환되는 모든 데이터는 blowfish, 3DES, IDEA와 같은 강력한 알고리즘으로 암호화 된다. 또한, SSH를 지원하지 않는 서버의 rlogin/rsh과의 호환성을 위해 rhost, hosts.equiv와 같은 신뢰호스트 설정도 지원한다. 더구나,?암호화 된 X11 서버의 통신을 지원하기 때문에 SSH는 X 윈도우 설정을 자동으로 작성한다.

SSH를 사용하면 다음과 같은 침입을 막을 수 있다:
* 네트워크를 통과하는 패킷에 대한 도청.
* 라우터를 속이는 조작된 데이터.
* 신뢰 호스트로 조작된 IP 주소 spoofing.
* 신뢰 DNS 서버로 조작된 spoofing
* IP source routing
?amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br> SSH를 사용해도 다음과 같은 침입은 막을 수 없다:
* 잘못 작성된 SSH 설정파일
* 침입자가 root권한을 획득 했을 때. 만약 침입자가 서버혹은 호스트의 root 명령을 내릴수 있다면, 침입자는 pseudo 터미널 장치로 암호가 풀린 데이터를 읽을 수 있다. 왜냐하면 SSH는 네트워크 상에서는 암호화되 있지만, 터미널 장치로 들어가거나 나갈때는 암호가 이미 풀려 있기 때문이다.
* 보안이 허술한 홈 디렉토리들에 있는 각종 원격접속 설정파일들은 SSH를 무력하게 만들 수 있다.

SSH의 특징
SSH는 네트워크상의 다른 컴퓨터에 안전하게 로그인 할 때 사용할 수 있다. 유저는 원격 명령을 내려 접속한 컴퓨터와 서로 파일을 교환할 수 있다. SSH는 강력한 인증을 제공하기 때문에, 개방된 인터넷 상에서 안전한 통신을 가능하게 한다. 이런 특징은 기본적으로 제공되는 rlogin, rsh, rcp와 X11 접속을 SSH로 대체하게 한다.

* UNIX 머신에서 사용하는 username/password 인증 뿐만이 아니라, RSA, SecurlD, S/Key, Kerberos, TIS와 같은 검증되고 강력한 인증 알고리즘을 지원한다.
* 세 개의 신뢰 방식 shosts, rhosts 대응, RSA 을 제공한다. 공개키 방식을 사용하는 RSA는 강력한 신뢰를 형성하지만, UNIX 시스템의 username/password를 무시한다.
* SSH 서버는 UNIX, Linux, VAX에서 작동한다.
* SSH 클라이언트는 위의 시스템을 포함해 Windows 등의 많은 다른 시스템에서도 작동한다.
* SSH가 제공하는 데이터 압축기술은 느린 속도의 네트워크에서 속도 향상을 가져올 수 있다.
* SSH 인터넷 프록시:
* 아직까지 완전한 SSH 프록시는 없다. 그러나 Magosanyi Arpad 가 OpehSSH에서 프록시를 제작하고 있다.
* SSH는 컴파일 할 수 있으므로 SOCKS 프록시와 연동해서 사용할 수 있다. SOCKS 는 일반적은 프록시 프로토콜이며, 현제 여러 밴더에서 배포하고 있다.

* SSH2는 새로운 프로토콕 버전이며, 현재 표준화를 인정 받기 위해 SSH Communications에 의해 IETF에 제출된 상태이다. SSH2는 개선된 암호법을 포함해 새로 제작 되었으며 VPN을 지원한다.

SSH2에서 변경된 사항:
* sftp를 이용해 ftp 터널을 지원한다.
* SSH1과의 호환성을 위해 구분된 설정파일 (예. /etc/ssh2/ssh2_config) 을 사용한다. 때문에 클라이언트가 SSH1 프로토콜을 이용해도 이를 사용할 수 있다.
* SSH2이전에 SSH1을 사용했다면 이전의 설정을 이용할 수 있다.
* DSA와 Diffie-Hellman 키의 상호 교환을 지원한다.
* SSH2의 상업성 (아래의 라이센스 참조) 때문에 일반화는 느려질 것 같다.

라이센스와 비용
현재 많은 버전의 SSH가 있으며 몇몇 애플리케이션은 클라이언트에서만 사용할 수 있다. 판매용, 무료, 제한된 무료 등의 다양한 라이센스가 있다. Tatu Ylonen이 제작한 SSH1은 무료이다. 그러나 1.2.12는 제한된 무료 라이센스를 따른다. 때문에 최신 SSH1 버전 1.2.27은 비상업적 용도로만 사용될 수 있다:

만약 상업적이거나 기술적으로 사용하려면, Data Fellows, Ltd에 문의 하기 바란다.

SSH2는 좀더 제한된 라이센스를 따르는데, 오직 비 영리 단체만 무료로 사용할 수 있다.


U.S. 특허와 수출에 관련된 사항
SSH는 강력한 암호법을 포함한다. 암호법은 미국 현행법에 수출금지 품목으로 제한되어 있다. 다행히 SSH1은 핀란드에서 개발되었고 문제 없이 사용할 수 있다.

RSA 알고리즘은 미국내에서 특허등록이 되어있으며, 미국민 SSH 유저가 RSAREF, RSA 라이브러리를 사용할 때는 로열티를 지불해야 한다. 이 특허권은 2000년 9월에 패지 된다.

위와 같은 이유 때문에 미국 내의 OS 밴더들이 SSH를 번들로 제공하는 것을 어렵게 한다. 그러나 그 밖의 국가들에서 제작된 패키지들인 OpenBSD (Canada)와 S.u.s.e Linux (Germany) 는 SSH를 번들로 제공한다.

IDEA 알고리즘은 스위스의 Ascom 에 특허권이 있는데 비상업적 용도에는 무료로 사용할 수 있다. 그러나, SSH 서버를 컴파일 해서 사용할 때는 무료가 아니다.

SSH의 장점
* 검증을 거친 기술이다 - 필자는 4년간 SSH를 사용했으며, 적은 충돌많이 발견 되었고 안정적이다.
* 강력한 국제 암호법을 따른다.
* 상업용과 공개용 모두가 존재한다.
* SSH 클라이언트는 대부분 시스템에서 작동하며, 서버는 UNIX, Linux, VMS에서 작동한다.
* 정적 TCP 포트 터널링이 잘 작동하며, 간단한 VPN에서 사용할 수 있다.
* Kerberos, TIS, SecurID, RSA 같은 다양한 인증 방법을 지원한다.
* SOCKS5 프록시를 인식한다.

SSH의 단점
* 일정 범위의 포트나 동적 포는는 지원하지 않는다.
* 윈도우 버전의 secure file copy, key generation은 그 수가 매우 적다.
* 어떤 포트는 제한하고 허락하야 하는지를 각각 유저별로 설정할 수 없다.
* 만약 유저가 password로 인증을 받았다면, 클라이언트의 RSA는 검증을 거치지 않는다. 검증은 오직 shosts나 rhosts 신뢰가 사용 될 때만 사용할 수 있다.
* 램 16MB의 Sun SPARC1과 같은 오래된 머신에서는 성능에 문제가 될수 있다.
* 표준 SSH1 배포판은 기본설정에 clear text option이 포함되어 있으며, 특허가 있는 IDEA같은 알고리즘을 사용한다. 그러나 이것은 설정파일에서 바꿀 수 있다 (아래의 설정 항목을 참조 한다).
* 원본 소스의 라이센스가 매우 제한적이다 (아래 참조).

2. 관련 애플리케이션
UNIX/Linux용 SSH 서버/클라이언트
UNIX용 SSH1은 상업용 (DatFellows에서 나온) 과 무료용 모두 이용 가능하다. 그러나 초창기 SSH였던 SSH1은 더 이상 개발 (버그 픽스를 제외하고) 이 되지 않는다. 요즘은 상업용인 SSH2를 중심으로 개발되고 있다.

* 저자는 무료 버전인 V1.2.13 ?1.2.27을 다음과 같은 시스템에서 1995년부터 사용해 왔다. : Solaris 2.4, 2.5, 2.6, 2.7, SunOS 4.1.3, OSF1.3, IRIX 5.3. Solaris에서는 잘 실행이 IRIX에서는 약간의 문제가 있다.
* POP, SMTP, FTP 인증과 다른 TCP 소켓 세션은 tunneled 될 수 있다. 다음은 SMTP를 위한 예이다.

ssh -L 25:mailhost.target.domain:25 target &

* 버전 1.2.17과 이후 버전은 SOCKS5 프록시와 SecurID 인증도 지원한다.
* 다음의 FTP 사이트를 참고하기 바란다. : ftp.cs.hut.fi/put/ssh
DataFellows 에서 만든 SSH2는 상업 프로그램으로 UNIX, Windows, Mac용이 있다. 비상업적 목적의 무료 버전도 있으나 라이센싱이 아주 제한적이다. SSH2의 홈페이지는 http://www.ssh.fi/이다.

LSH: SSH2의 무료 버전을 만들기 위한 노력의 결과 이다. www.net.lut.ac.uk/psst . 그러나 아직 안정버전이 나와 있지 않다.

Mindterm SSH (무료 Java SSH 클라이언트)
Mindterm은 100% Java로 제작된 무료 (GPL) SSH 클라이언트 이다. 이 프로그램은 stand-alone이나 웹페이지에서 애플릿으로 작동 가능하다. 또한 GUI 없이 실행 될 수도 있다. 다른 유용한 특징: scp - 파일 복사와 특별한 ftp-tunnel을 이용해 sshd 뒤에서 작동하는 일반적인 ftpd을 사용할 수 있다.

현재 최신 버전은 v.1.1.5이며, 사이트는 http://www.mindbright.se/mindterm/ Mindterm SSH는 필자가 standalone 애플리케이션으로 (애플릿이 아니라) 여러 달 시험에 성공 했다. 사용한 시스템은 NT4, Win98, Solaris 2.5 이다:

* 멀티 플랫폼: JVM이 있으면 어떤 곳에서도 실행 가능한가?
* 안정적이고, 편리하고, 유연한 터미널 애뮬레이션, 서버마다 설정 가능, RSA-키 설정 가능, 세션의 로그 기능, GUI와 command 라인에서 사용 가능, X11 과 포트 포워딩 가능.
추가 기능: ?lone terminal? ?opy on select? ?apture to file?
* 또한 scp (file copy) 와 ftp tunneling (PASV 모드에서) 를 할 수 있다.
ftp tunnel 작동의 예:
1) Mindterm client: 선택 menu Tunnels -> Basic... 원하는 지역 포트를 입력... 선택 protocol ftp... sshd 뒤의 ftp-server 의 호스트 이름을 입력... 클릭 Add 버튼
2) FTP client (예. ws_ftp): 지역 호스트의 주소로 new "site"를 정의한다...선택 "Site properties".. "folder"에서 advanced 설정 "Remoter Port": 1)에서 설정한 지역 포트를 선택..."Passive transgers"를 가능으로 한다
* 문제점: 심각한 것은 아니다. 그러나...
Scp 는 오직 연결된 서버로 파일만 카피한다. 그리고 대상 syntax를 인식하지 못한다. 예로 john@server3:/mydir 혹은 ~john 등은 인식하지 못한다.
온라인 도움말이 없다 (하지만 readme 가 좋다).
때때로 터널이 막혀서 재시작 해야 한다.
인크립션 알고리즘이 none으로 설정 될 수 있다 (원하는 바가 아닐 것이다!).

Windows SSH 클라이언트
* TTSSH (Tera Term SSH) - 무료

* TTSSH 는 TeraTerm Pro (무료 터미널 애뮬레이션 패키지) 를 위한 SSH add on (DLL) 이다.

* TTSSH www.zip.com.au/~roca/ttssh.html

* TeraTerm http://hp.vector.co.jp/authors/VA002416/teraterm.html

* 버전 1.4의 TTSSH (?8년 12월) 은 다음과 같은 특징이 있다: 프로토콜 버전 1.5의 SSH와 호환 가능하다: ssh_known_host 데이터베이스 (adding a server? key to database 옵션을 포함한) 를 사용해 3DES, IDEA, Blowfish, DES, RC4 Server authentication 가능. 인증은 password, RSA, rhosts, rhosts+RSA 사용. 압축 지원. 완전한 X connection을 포함한 Connection forwarding

* 구 V1.2 이하의 구 버전에서는 X11 이나 포트 포워딩을 하지 못한다.

* V1.4 테스트는 훌륭했으나, MindTerm의 ftp tunneling 이나 scp가 없었다. TeraRerm은 좋은 에뮬레이션이다. GUI와 세션 로깅, 커스텀 키 매핑 등의 기능을 지원한다.

* 팁: set TERATERM_EXTENSIONS=1 로 설정하고 몇 가지 기본 설정을 바꾸기 위해 teraterm.ini 를 편집한다.


* 다른 무료 Win32 도구들은 대부분 Cygnus Win32 라이브러리를 사용한다. Usertools.exe를 http://sourceware.cygnus.com/cygwin/download.html 에서 얻을 수 있다.


*Raju Mathur/Gordon Chaffee 가 ssh-1.2.14를 위한 패치를 제작했다. 비이너리 파일이 ftp://ftp.cs.hut.fi/pub/ssh/contrib/ 에 있다. 또한 ssh-1_2_22-Win32-Beta1 도 있다.
설치 시 참고사항:
ssh_config, ssh_host_key, ssh_host_key.pub 에 필요한 c:sshetc 디렉토리을 만든다. 유닉스에서 ssh-keygen (NT 에서는 ssh-keygen이 작동하지 않는다) 을 이용해 키를 생성한다.
HOME 환경변수를 설정한다 ( Control Pannel ->System을 이용). .ssh 디렉토리를 만들고 당신의 indentity 와 indentity.pub 파일 (위에서 ssh-keygen에 의해 생성된) 을 복사한다
* guardian.htu.tuwien.ac.at/therapy/ssh 에 있는 1.2.20 버전은 더이상 개발이 안된다
* Cedomir Igaly는 소스 없이 16 과 32 bit 무료 버전을 제공한다. 이 버전은 Gutmann의 Garbo의 암호 라이브러리를 사용한다. 이것은 www.doc.ic.ac.uk/~ci2/ssh 에 있었다.
* Simon Tatham은 무료 Win32 Telnet/SSH 클라이언트인 PuTTY를 개발 했다. 이것은 beta v0.47 로 www.chiark.greened.org.uk/~sgtatham/putty.html 에 있다.
* Sergey Okhapkin의 SSH1 & SSH2 32bit 서버/크라이언트 http://www.lexa.ru/sos/
* FiSSH 무료 32-bit SSH1 클라이언트 http://www.massconfusion.com/ssh/ 이 곳 배포될 예정이다.

* Raju Mathur SSH 1.2.2 의 Cynus Win32 포트 reality.sgi.com/raju/software.html
Datafellows (www.datafellows.com/f-secure) 의 Windows (16 과 32 bit)를 위한 F-Secure SSH 는 유료이다.


* Windows 환경과 잘 맞고 사용하기 쉬우며 안정적 이다.
* 강력한 암호화: DES, 3DES, Blowfish 알고리즘이 선택될 것이다. 이는 군사 등급의 암호화 강도 ( 알고리즘이 적절하게 구성되었는지 확인한다!) 를 제공한다.
* 가단한 VPN 터널을 만들기 위해 암호화된 TCP 소켓을 전송할 수 있다. SMTP, POP3, telnet 등 (잘 알려진 포트를 사용하는) 과 작동한다.
* 현재는 오직 16 bit 버전 (V1.1) 이 사용가능 하지만, Win95와 NT4 와 잘 작동한다.
* 문제점: ?ecure file copy?또는 ftp 터널링은 없다. 약간 불안정한 v1.0 보다 v1.1 을 사용한다.

* Win32 를 위한 VanDyke SSH (U.S 유저만 가능). VanDyke는 유료이며 사용하기 쉬운 32bit 클라이언트를 제공하지만, U.S. 수출 금지에 해당 된다.

그 외의 기종
* Cedric Gourio 는 그의 졸업 자품으로 Java 기반의 SSH를 개발했다. http://www.cl.cam.ac.uk/~fapp2/software/java-ssh/.

* Mac 버전
NiftyTelnet SSH 는 MacOS를 위한 무료 클라이언트 이다. 이 것은 NiftyTelnet의 강화 판 이다.
Datafellows 는 상업용 Mac 클라이언트를 제작했다: www.datafellows.com/f-secure.

* Palm Pilot
Top?Gun ssh 1.2 www.isaac.cs.berkeley.edu/pilot/ 미국 이외에서 사용가는한 ftp.zedz.net/pub/crypto

* Windows CE: Mov 소프트웨어는 sshCE 를 발표했다. www.movsoftware.com/sshce.htm.

* BeOS: Intel 과 PowerPC 를 위한 SSH1 기반의 BeOS R4 포트가 www.be.com/beware/Network/ssh.html 에서 이용 가능하다.

* OS/2: ftp://hobbes.nmsu.edu/pub/os2/apps/internet/telnet/client/ssh-1.2.27-b1.zip 은 OS/2 Warp 3+ 용이다.

* VAX/OpenVMS
David Jones 는 OpenVMS SSH1 서버를 제작했다 http://www.er6.eng.ohio-state.edu/~jonesd/ssh/.
Christer Weinigel 과 Richard Levitte 는 OpenVMS SSH1 클라이언트를 제작했다 http://www.free.lp.se/fish/.

* Nokia 파이어월 (Firewall-1 과 강화된 FreeBSD 기반) 은 SSH option 을 가지고 있다 ?이 옵셥을 사용하고 telnet/ftp를 막는다.

3. 컴파일과 설정
SSH1 컴파일
* Linux RPM 용의 인스톨 툴이 이용가능하다 ftp://ftp.yellowdoglinux.com/pub/yellowdog/install-ssh/.
* UNIX (아래의 예는 Solaris 이다) 를 위한 SSH1 컴파일이 아래에 나와 있다. 우리는 표준 옵션을 원하지만 암호화 안된 text 와 구버전 RSH/rlogin를 불가능 하게 하고 IDEA 알고리즘을 금지할 것이다.

gzcat ssh-1.2.27.tar.gz | tar xf -
cd ssh-1.2.27; ./configure --prefix=/usr --without-none --without-rsh --without-idea
make
make install

SSH 데몬이 시스템 시작 파일의 한곳에 추가되어야 하는데, 이는 ?ake install?과정에서 수행되지 않는다. Solaris 의 예에는 시작 파일이 /etc/rc2.d/S10sshd 작성될 것이다.

* 유용한 컴파일 옵션:

--without-idea 저작권이 있는 IDEA 알고리즘을 사용하지 않는다.
--without-idea 만약 서버 중 하나가 키를 가지고 있지 않다면 결코 평문서 (암호화 안된) 로 통신을 허가하지 않는다.
--without-rsh: 서버가 키를 가지고 있지 않을 때 결코 rsh rhosts 를 허가 않는다.
--prefix=/usr/bsd --sbin=/usr/bsd --bindir=/usr/bsd : 비표준 위치에 설치.
--with-securid=../ace SecurID 인증 지원을 추가한다 (ACE libs 가 필요)
--with-socks5=/usr/local/lib刊?Socks5 proxing 지원

* 바이너리 인스톨 패키지 준비: 쉬운 작업을 위해, 위에서 설명한 머신 중 하나에서 컴파일하여, 바이너리 파일들을 tar (아래 예에서는 C-Shell을 이용) 로 묶는다. 아래에서는 몇몇 FQ 와 같은 SSH 문서를 /usr/localssh-docs 에 복사했다.


tar cvf ssh_bin.tar /usr/local/bin/{ssh,ssh1,scp,scp1,slogin}
tar uvf ssh_bin.tar /usr/local/bin/{ssh-keygen1,ssh-keygen,ssh-agent1,ssh-agent}
tar uvf ssh_bin.tar /usr/local/bin/{ssh-add1,ssh-add,ssh-askpass1,ssh-askpass}
tar uvf ssh_bin.tar /usr/local/bin/{make-ssh-known-hosts1,make-ssh-known-hosts}
tar uvf ssh_bin.tar /etc/{sshd_config,ssh_config}
tar uvf ssh_bin.tar /etc/rc2.d/{S10sshd,K10sshd} /etc/init.d/sshd
tar uvf ssh_bin.tar /usr/local/sbin/{sshd,sshd1}
tar uvf ssh_bin.tar /usr/local/man/man1/{ssh-keygen.1,ssh-agent.1,ssh-add.1,ssh.1,ssh1.1,slogin.1,slogin1.1,scp.1,scp1.1,make-ssh-known-hosts.1} /usr/local/man/man8/{sshd.8,sshd1.8}
tar uvf ssh_bin.tar /usr/local/ssh-docs
compress ssh_bin.tar

Installing on a number of machines(다수의 머신에 설치하기):
sh_bin.tar.Z (이전 과정에서 생성된) 을 원하는 새로운 시스템에 복사한다.
설정 파일들을 백업한다.
루트 디렉토리에서 압축을 푼다. ?ehash (만약 csh 을 사용하면) 를 하고 host key 를 생성 한다:


ssh-keygen -b 1024 -f /etc/ssh_host_key -N '';
ssh-keygen -b 1024 -f /etc/ssh_host_key -N '';

다음을 /etc/services 에 추가해서 ssh 서비스를 추가한다:


ssh 22/tcp # Secure Shell
ssh 22/tcp # Secure Shell

ssh 데몬을 시작한다:


sh /etc/rc2.d/S10sshd start
sh /etc/rc2.d/S10sshd start

* OpenBSD 2.6 에서 OpenSSH 가 이미 설치되 있지만 SSH1 를 설치하려 하거나 구버전의 OpenBSD 를 가지고 있고 U.S. 위 주민이 아닐 때, 다음을 고려할 수 있다
1. 적절한 OS 버전과 아키텍춰에 맞는 바이너리 패키지를 설치한다.
?pkg_add ftp.openbsd.org/pub/OpenBSD/2.6/packages/sparc/ssh-intl-1.2.27.tgz
2. 혹은 소스를 받아서 컴파일 한다:
a) 필요하다면 포트 리스트를 업데이트 한다, 그러나 이것은 시간이 걸리고 CVS 타겟 서버를 세세하게 선택 (www.openbsd.org/anoncvs.html 을 참조) 해야 한다.
?setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
?For a new ports listing: cd /usr; cvs -q get ports刊
?새로운 포트 리스팅: cd/usr; cvs ? get ports
?To update an existing version: cd /usr; cvs -q update ports
?존재하는 버전을 업데이트: cd/usr; cvs ? update ports
b) 어떤 버전의 ssh 가 이용가능 한지 살핀다:
cd /usr/ports; make search key=ssh
여기서 (예로) /usr/ports/security/ssh 에서 ssh-1.2.27 이 사용가능으로 보고 된다.
c) cd /usr/ports/security/ssh;
make all install USA_RESIDENT=no;
이것은 패치를 포함한 소스를 다운 받아야 한다. 그리고 컴파일한다. 만약 make 문제가 발생하면, ports listing (위에서 언급한) 을 업데이트 하고 다시 구성한다.
시스템에 설치된 것이 등록된 것을 확인하기 위해서 “pkg_info"를 사용한다. 후에 kg_delete"로 삭제가 가능하다.

SSH1 설정
* 설정 파일: 서버는 /etc/sshd_config 에 설정파일을 가지고 있고, 클라이언트는 다양한 옵션의 모든 사이트 기본설정을 제공하는 설정을 /etc/ssh_config 에서 읽는다. 이 파일의 옵션은 각 유저의 설정에 의해 덧씌여 진다
* 서버: known public keys (/etc/ssh_known_hosts) 에 의해 이름 붙여진 호스트의 접근을 제하하기 위해 ssh 데몬의 설정을 한다. rhosts 인증은 끈다. /etc/sshd_config 의 예를 참고한다.


* host key 가 알려져 있지 않거나 바뀐 머신의 로긴을 막기위해 StrictHostKeyChecking 옵션을 사용할 수 있다. 마약 이 플래그가 "yes"로 되 있다면, ssh는 결코 자동으로 host key를 /etc/ssh_known_host 혹은 $HOME/.ssh/known_hosts에 등록하지 않을 것이다. 그리고 host key가 변경된 것은 연결을 거부할 것이다.
* RhostsRSAAuthentication 이 "yes"로 설정되 있으면, 신뢰 관계를 결정하기 위해 ~/.shosts 를 사용하는 것을 허용한다. 여기에는 "yes", "nopwd", "no"가 설정 가능하다. "nopwd"값은, 패스워드 없이 접근을 허용하는 .shosts 가 있지 않으면, 패스워드-인증의 root 로긴을 불가능하게한다. Root 로그인이 가능한 RSA 인증이 "command" 옵션과 함께 명시 되 있으면 이 세팅 값과 관계 없이 사용 가능 하다. 이는 루트 로그인이 불가능 할지라도 원격에서 백업을 하는대 유용하다.
* root 소유 root 만 쓰기 가능한 빈 config 파일은 유저의 홈 디렉토리에 설치할 될 수 있다. 이는 모든 유저에게 시스템의 기본설정을 강제로 사용하게 한다.
* SSH2 와 호환을 가능하게 하기위해 최소한 v1.2.26을 사용한다.

* 패스워드 없는 로그인:
1. 가능하면 사용을 피한다. 그러나 필요하다면 신중히 설정한다. .rhosts 보다는 .shosts 를 사용한다. 신뢰 파일의 권한이 400으로 설정되 있는 지 확인한다. NFS 공유 홈 디렉토리에 신뢰를 사용하지 않는다.
2. /.shosts root 신뢰를 호스트 A 에서 호스트 B 로 설정한다: 호스트B 의 /.shosts 와 3. /etc/hosts 에 호스트A 를 추가하고, 호스트A 의 Public Key 도 /etc/ssh_known_hosts 나 3. ~/.ssh/known_hosts 에 추가한다. 호스트 A 로부터 호스트 B 로의 RSA 신뢰를 설정한다: 호스트A 의 .ssh/Identity.pub (public key) 는 목적 호스트의 .ssh/authorized_kesy 키 리스트에 추가되어야 한다.

* 클라이언트 설정: SSH 클라이언트의 전역 기본 설정을 한다. /etc/ssh_config 의 예를 참조 한다.
* SSH 와 SUID root 보안:
* SSH는 특별한 권한의 프로그램을 2개 설치한다. Ssh는 클라이언트 프로그램으로, 기본적으로 suid root로 설치된다. 이는 인증을 위해 .rhosts 파일을 사용해 권한을 가진 포트를 생성해야 하기 때문이다. 만약 이 프로그램이 suid root로 설치되지 않으면, 여전히 사용할 수는 있으나, .rhosts 인증이 불가능 할 것 이다. 또한 private host key 파일은 root만 읽을 수 있다.
* Sshd는 연결에서 수신을 하는 데몬이다. 이 데몬은 권한이 부여된 포트 (22) 에서 일반적인 수신을 하여야 하고, 유저가 로그인 할 때의 utmp, chown ptys 등을 setuid()로 업데이트 해야 하기 때문에 root 로 실행 되는 것을 선호 한다. 만약 root로 실행 되지 않으면, 대체 포트를 부여하기 위하여 (클라이언트도 같은 포트를 명시해야 한다) 정확한 ?p port?옵션을 주어야 한다. 대체 host key 파일을 위해 ?h host_key_file_path?를 명시해야 한다. 그리고 데몬을 실행한 당사자 이외의 유저는 로그를 사용할 수 없다 (setuid()를 호출할 수 없기 때문에). 또한 시스템이 shadow 패스워드를 사용한다면, root 이외의 사용자가 실행 시킨 데몬은 패스워드 인증을 할 수 없다.
* 서버와 클라이언트 모두 가능한 보안 문제에 대해 주의 깊게 보호해야 한고, 안전하다고 믿을 수 있어야 한다. 그러나 완전한 확신은 있을 수 없다.

Mindterm SSH 클라이언트 설치
Windows 에 설치 (v1.1.2 로 테스트 했고, 현 버전은 v.1.1.5이다):
프로그램을 http://www.mindbright.se/mindterm/ 에서 다운 받고, Sun 에서 자바 v1.1 런타잉을 설치한다.
또는 mindterm_install.zip (2MB 파일의 Java 런타임 v1.1.1 과 Mindterm v1.1.5 포함) 받아서, 압축을 C:Progra~1에 압축을 풀고, 바탕화면에 c:Progra~1mindtermmindterm.bat 으로의 바로가기를 설정한다. 이 과정은 영어, 프랑스어, 독일어, 이탈리아어로 수행된다.

Solaris에 설치:
Solaris를 위한 시작 스크립트는 mindterm.sh 이다. 이것을 mindterm.zip 과 함께 /usr/local/bin 에 복사 한다.
Java를 설치한다 (새로운 버전의 Solaris에 는 이미 철치되 있지만, 버전이 v1.1.8 이상인지 확인한다).
패스 경로에 /usr/local/bin 이 있는 지 확인하고 mindterm.sh를 실행 시킨다.

4. SSH 유용한 사용법
* SSH1:

* SSH1 은 PC 나 UNIX에서 박스 외부로 단일 소켓 (POP3, SMTP 등) 을 쉽게 포워드 할 수 있다. 예. ssh -L 25:mailhost.target.domain:25 target &
SSH는 동적이거나 일정 범위의 포트 터널링을 할 수 없다. Mindterm SSH는 FTP 터널링을 위한 옵션을 포함하고 있다.
* 만약 PPP가 SSH 소켓으로 리다이렉트 되면, SSH는 일바적 목적의 VPN으로 사용될 수 있다. 양측의 게이트웨이로 Linux를 사용하는 방법이 O'Reilly 책의 "Virtual Private networks, 2nd Edition" chapter7 에 있고, 더 많은 정보가 sunsite.unc.edu/LDP/HOWTO/mini/VPN.html 에 있다. 양측에는 Linux가 필요하고 약간 편법이다 (1997년 작성). 아직 시험해 보지 않았다.

sites.inka.de/sites/bigred/sw/ssh-ppp-new.txt (1996년 작성) 을 참조.

* Rdist 6.1.2 (public domain 버전) 은 SSH (Solaris 2 & SunOS 에서 테스트) 상에서 실행되며 두 호스트 상의 파일을 동기화 할 수 있고, 파일의 다른 점을 보고 할 수 있다.
* Fsh는 터널을 매번 다시 열지 않고 다수의 원격 명령을 실행 하도록, SSH 터널을 연상태로 유지 시켜주는 애드온 이다 http://www.lysator.liu.se/fsh/. 아직 테스트해보지 않았다.
* SSH를 RPC/keyser/NFS/NIS+ 와 함께 사용: fy.chalmers.se/~appro/ssh_beyond.html
* Jean Chouanard는 SSH1을 위한 SecurID/ACE 패치를 제작했다. 이것은 "New Pin"과 "Next Token"을 지원하지만, SSH 서버와 클라이언트 모두 적절하게 변경됐을 때만 동작한다. 이 패치가 Mindterm SSH의 OpenSSH에 적용되는 지는 아직 알려져 있지 않다. ftp.parc.xerox.com:/pub/jean/sshsdi/README 를 참고 한다.
* Virtual Network Computing 은 "원격제어"프로그램으로 네트워크의 다른 머신이 실행 하고 있는 화면을 볼 수 있게 한다. 이 프로그램은 인터넷과 같은 안전하지 않은 네트워크 에서 teleworking을 위해 사용할 수 있다. 그러나 향상된 보안을 위해 SSH는 암호화된 VNC 통신을 가능하게 한다.




* NT VNC 서버를 일반적인 NT domain 중 하나이고 로그인이 필요한 유저 계정을 가진 인트라넷에 설치한다. [UNIX 에서도 가능하나, 예에서는 NT를 사용한다].
* 보안 강화를 위해 배타적 VNC 접근을 가능하게 하는 강력한 VNC 패스워드 선택, 5분 동안 사용하지 않으면 패스워드 있는 스크린 세이버 실행되도록 설정, VNC를 public area이 아닌 곳에 설치 한다. 주기적으로 이벤트 로그를 모니터링 한다. 인트라넷 UNIX SSH 설치.
* 인터넷으로의 SSH 연결을 가능하게 해주는, SSH 인터넷 gateway를 설치한다. 성공적인 로그인이 직접 인트라넷 SSH 서버에 표시된다.
* 보안: 두 개의 안전한 파이어월 필터 사이의 DMZ에 설치한다. SSH 이외의 모든 서비스를 중지한다. 인터넷에서의 SSH 이외의 프로토콜을 금지한다. root 로그인, 신뢰 메커니즘, RSA 인증을 금지하도록 SSH 설정을 한다. 모든 유저 계정을 SecurID와 같은 강력한 인증을 사용하도록 설정한다. 자동 로그인이 인트라넷 UNIX 서버를 사용하도록 유저 쉘을 설정 한다 (지역 로그인은 이 서버를 사용하지 않도록 한다). 주기적으로 로그를 모니터하고, 물결성 검사 (tripwire 같은) 를 한다.

* VNC 클라이언트 (인터넷 어딘가의) 에 Mindterm과 같은 SSH 클라이언트를 설치한다.
* SSH 클라이언트 설정: SSH gateway에 접속하여 SecurID (이와 유사한 어떤 것으로든) 로 인증을 받는다. UNIX 인트라넷 서버에 로그인 한다. 지역 포트 5902 로부터 NT_VNC_server 포트 5900로 터널을 설정한다.
* VNC 클라이언트: 지역 VNC 클라이언트를 실행하여 localhost:2 로 연결한다. VNC 패스워드를 입력하면, 작업화면이 나타난다. 이제 보통의 NT 처럼 로그인 한다.
* 보안: 되도록 자신 소유 (게임방이 아닌) 의 머신으로, 매일 바이러스 검사를 하고, 파일 공유를 하지 않으며, BlackICE (보호 레벨을 Paranoid로 설정하고 no file sharing을 선택한다) 같은 개인 방화벽을 설치해 사용한다. 컴퓨터는 물리적으로 보호 되야 하고, 가능한 암호화된 디스크 (예. PGPdisk) 를 사용해야 한다.

5. 참고 문헌
1. Security Portal Research Centre
2. Documentation:
SSH FAQ www.employees.org/~satch/ssh/faq
Getting Started with SSH by Kimmo Suominen?http://www.tac.nyc.ny.us/~kim/ssh/
3. Getting SSH
See the links in the Implementation section above.
4. Search for SSH pages on the net: www.links2go.com/topic/SSH'..

코멘트  

이름 :      비밀번호 :
         자동등록방지
내용 :  
파일 :




금연

  글번호
이름
1 2
날짜
  175Linux 디도스 방어 조회수가 1000회 이상이네요. ^0^2014-11-08
  174Linux chkrootkit 을 이용한 루트킷 탐지법 조회수가 1000회 이상이네요. ^0^2014-11-08
  173Linux 리눅스 해킹사고 분석 및 대응절차 조회수가 1000회 이상이네요. ^0^2014-11-08
  111Linux 리눅스 관리자가 알아두어야 할 50가지 코멘트가 20개 이상이네요. ^0^ 조회수가 1000회 이상이네요. ^0^2018-02-09 18:20
MelnAbsed
  74Linux 리눅스 파일관련명령어 시스템명령어 조회수가 1000회 이상이네요. ^0^2007-11-12
  73Linux 리눅스 명령어 모음 조회수가 1000회 이상이네요. ^0^2015-02-23 18:18
Carey
  67Linux mount 조회수가 1000회 이상이네요. ^0^2002-02-20
  27Linux 웹호스팅용 서버 기본셋팅 조회수가 1000회 이상이네요. ^0^2017-09-15 16:25
KuraFexy
  26Linux 네스케이프 6 설치/실행 잘 안될때....... 조회수가 1000회 이상이네요. ^0^2001-01-18
  Linux SSH에 대해서.... 조회수가 1000회 이상이네요. ^0^2017-12-03 14:06
Philipduh
  23Linux vi 에디터 사용법 조회수가 1000회 이상이네요. ^0^2000-11-02
  22Linux 크레이지보드를 php,mysql 보드로의 변환 조회수가 1000회 이상이네요. ^0^2000-10-17
  21Linux Linux + oracle816 + apache + php4 + ... 조회수가 1000회 이상이네요. ^0^2000-10-09
  20Linux 리눅스 설정 조회수가 1000회 이상이네요. ^0^2000-10-05
  17Linux tarx 하나로 전부 풀 수 있게....... 조회수가 1000회 이상이네요. ^0^2000-10-05
 
1 2
글쓰기    목록   다음   로그인
Since 1998-2020 Chris. BSD LICENSE