Openssh5.3으로 버전올리기 > server

본문 바로가기
사이트 내 전체검색

server

Openssh5.3으로 버전올리기

페이지 정보

작성자 서방님 댓글 0건 조회 182회 작성일 14-05-29 11:35

본문

CentOS가 보편화되면서 yum이라는 패키지 관리 프로그램으로 대부분 패키지 업데이트를 합니다.

그러나 이 경우 yum의 패키지 업데이트가 느린 경우가 왕왕 있는데, 대표적인 것이 OpenSSH입니다.

CentOS 5.2에서 OpenSSH를 yum으로 업데이트하더라도 버전은 다음과 같이 표시가 됩니다.

[root@hosting ~]# cat /etc/redhat-release
CentOS release 5.2 (Final)
[root@hosting ~]# ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

현재 OpenSSH는 버전 5.3까지 나와 있는데, yum으로 업데이트하면 꼴랑 4.3p2만 깔립니다.

OpenSSH는 서버 접속과 직결되는 부분이라, 최신 버전이 나오면 바로바로 업데이트해주어야 합니다.

이 글에서는 Openssh 최신 버전인 5.3을 컴파일하여 설치하는 법을 다루겠습니다.

1. 소스 다운받기

먼저, 다음의 명령들을 순차적으로 수행합니다.

[root@klsi root]# cd /usr/local/src
[root@klsi src]# wget ftp://ftp.kaist.ac.kr/pub/OpenBSD/OpenSSH/portable/openssh-5.8p1.tar.gz
--03:34:37-- ftp://ftp.kaist.ac.kr/pub/OpenBSD/OpenSSH/portable/openssh-5.8p1.tar.gz
=> `openssh-5.8p1.tar.gz'
Resolving ftp.kaist.ac.kr... 완료.
Connecting to ftp.kaist.ac.kr[143.248.234.110]:21... connected.
anonymous로서 로그인하고 있습니다...로그인 했습니다!
==> SYST ... 완료. ==> PWD ... 완료.
==> TYPE I ... 완료. ==> CWD /pub/OpenBSD/OpenSSH/portable ... 완료.
==> PORT ... 완료. ==> RETR openssh-5.3p1.tar.gz ... 완료.
길이: 1,027,130 (unauthoritative)

100%[=================================================================================================================>] 1,027,130 4.69M/s ETA 00:00

03:34:37 (4.69 MB/s) - `openssh-5.8p1.tar.gz'가 보존되었습니다 [1027130]

소스 파일을 받았으면 다음 명령으로 압축을 풉니다.

[root@klsi src]# tar xzvfp openssh-5.8p1.tar.gz

2. telnet 잠시 열어놓기

만약에 OpenSSH 업그레이드 도중에 SSH 접속이 끊기거나 하면 IDC에 방문해야 하는 극악한 경우가 생길 수 있습니다.

이 경우를 대비하여 telnet을 잠시 열어 놓습니다.

CentOS의 경우에는 다음과 같이 설정합니다.

[root@hosting ~]# vi /etc/xinetd.d/krb5-telnet

service telnet 앞 부분에 #로 주석이 되어 있으면 주석을 해제합니다.
disable = yes로 되어 있으면 no로 수정합니다.

저장한 후, /etc/rc.d/init.d/xinetd reload [엔터] 후 /etc/rc.d/init.d/xinetd restart [엔터]를 순서대로 수행합니다.

netstat -nlp 명령으로 23번 포트가 열려져 있는 것을 확인합니다.

만약 iptable rule로 23번 포트 접속을 막아 놓은 경우에는 23번 포트 접속이 가능하도록 룰을 추가하여 줍니다.

RedHat 9의 경우에는 /etc/xinetd.d/telnet 파일을 열어 편집해 줍니다. 설정 변경 방법은 CentOS와 같습니다.

여기까지 성공했으면 telnet으로 서버에 접속한 뒤 su - 명령으로 수퍼유저로 전환합니다.

3. 기존의 패키지 제거

/etc/rc.d/init.d/sshd stop 명령으로 SSH 데몬을 정지한 후

rpm -qa | grep ssh 명령으로 기존 패키지를 확인한 후 제거합니다.

제거하는 방법은 rpm -e openssh-server [엔터] -> rpm -e openssh-client [엔터] -> rpm -e openssh [엔터] 순입니다.

4. 컴파일하기

[root@klsi root]# cd /usr/local/src/openssh-5.3.p1

명령으로 소스 압축을 풀어 놓은 디렉터리로 이동한 후 다음 명령을 수행합니다.

단, zlib이 /usr/local/zlib에 설치되어 있다는 것을 가정하며,

zlib을 OpenSSH와 연동하지 않을 경우에는 이 옵션은 생략해도 무방합니다.

./configure \
--prefix=/usr/local/openssh \
--sysconfdir=/etc/ssh \
--with-zlib=/usr/local/zlib \
--with-pam \
--with-mantype=man \
--with-md5-passwords

configure가 끝나면 make && make install 명령으로 설치를 완료합니다.

5. /etc/ssh/sshd_config 환경 설정

설치가 되면 /etc/ssh/sshd_config 파일을 에디터로 열어 환경 설정 부분을 수정하여 줍니다.

기본적으로 아래 옵션들은 꼭 수정해 주어야 합니다.

Port 22 -> 다른 포트를 사용할 경우에는 변경하며, 주석을 반드시 제거해 줍니다.

Protocol 2 -> SSH1보다는 SSH2가 보안상 강력하므로 반드시 Protocol은 2로 설정합니다.

PermitRootLogin no -> 루트로 직접 접속을 허용하지 않을 경우에는 no로 설정하고, 직접 접속을 허용할 경우에는 yes로 설정합니다.

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key -> Hostkey 앞의 주석을 제거해 줍니다.

PasswordAuthentication yes -> 패스워드 인증을 허용하는 옵션입니다. 반드시 yes로 설정합니다.
PermitEmptyPasswords no -> 빈 패스워드를 허용하지 말라는 옵션이며 반드시 no로 설정합니다.

6. SSH 데몬 자동 실행 스크립트 설정

vi /etc/rc.d/init.d/sshd 명령으로 파일을 연 후 다음 내용을 그대로 추가합니다.

#!/bin/bash
#
# Init file for OpenSSH server daemon
#
# chkconfig: 2345 55 25
# description: OpenSSH server daemon
#
# processname: sshd
# config: /etc/ssh/ssh_host_key
# config: /etc/ssh/ssh_host_key.pub
# config: /etc/ssh/ssh_random_seed
# config: /etc/ssh/sshd_config
# pidfile: /var/run/sshd.pid

# source function library
. /etc/rc.d/init.d/functions

# pull in sysconfig settings
[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd

RETVAL=0
prog="sshd"

# Some functions to make the below more readable
KEYGEN=/usr/local/openssh/bin/ssh-keygen
SSHD=/usr/local/openssh/sbin/sshd
RSA1_KEY=/etc/ssh/ssh_host_key
RSA_KEY=/etc/ssh/ssh_host_rsa_key
DSA_KEY=/etc/ssh/ssh_host_dsa_key
PID_FILE=/var/run/sshd.pid

do_rsa1_keygen() {
if [ ! -s $RSA1_KEY ]; then
echo -n $"Generating SSH1 RSA host key: "
if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null; then
chmod 600 $RSA1_KEY
chmod 644 $RSA1_KEY.pub
success $"RSA1 key generation"
echo
else
failure $"RSA1 key generation"
echo
exit 1
fi
fi
}

do_rsa_keygen() {
if [ ! -s $RSA_KEY ]; then
echo -n $"Generating SSH2 RSA host key: "
if $KEYGEN -q -t rsa -f $RSA_KEY -C '' -N '' >&/dev/null; then
chmod 600 $RSA_KEY
chmod 644 $RSA_KEY.pub
success $"RSA key generation"
echo
else
failure $"RSA key generation"
echo
exit 1
fi
fi
}

do_dsa_keygen() {
if [ ! -s $DSA_KEY ]; then
echo -n $"Generating SSH2 DSA host key: "
if $KEYGEN -q -t dsa -f $DSA_KEY -C '' -N '' >&/dev/null; then
chmod 600 $DSA_KEY
chmod 644 $DSA_KEY.pub
success $"DSA key generation"
echo
else
failure $"DSA key generation"
echo
exit 1
fi
fi
}

do_restart_sanity_check()
{
$SSHD -t
RETVAL=$?
if [ ! "$RETVAL" = 0 ]; then
failure $"Configuration file or keys are invalid"
echo
fi
}

start()
{
# Create keys if necessary
do_rsa1_keygen
do_rsa_keygen
do_dsa_keygen

echo -n $"Starting $prog:"
initlog -c "$SSHD $OPTIONS" && success || failure
RETVAL=$?
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd
echo
}

stop()
{
echo -n $"Stopping $prog:"
killproc $SSHD -TERM
RETVAL=$?
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/sshd
echo
}

reload()
{
echo -n $"Reloading $prog:"
killproc $SSHD -HUP
RETVAL=$?
echo
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
condrestart)
if [ -f /var/lock/subsys/sshd ] ; then
do_restart_sanity_check
if [ "$RETVAL" = 0 ] ; then
stop
# avoid race
sleep 3
start
fi
fi
;;
status)
status $SSHD
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit $RETVAL

저장한 후에는 chmod 700 /etc/rc.d/init.d/sshd [엔터] 한 후 /etc/rc.d/rc.local 파일 맨 마지막 줄에 /etc/rc.d/init.d/sshd start 라는 명령 한 줄을 추가합니다.

7. SSH 데몬 구동

명령 프롬프트에서 다음의 명령을 입력합니다.

[root@klsi root]# /etc/rc.d/init.d/sshd start
sshd를 시작함: [ 확인 ]
[root@klsi root]#

netstat -nlp 명령으로 확인하여 22번 포트가 열려 있으면 ssh -V 명령으로 버전을 확인합니다.


[root@klsi root]# ssh -V
OpenSSH_5.3p1, OpenSSL 0.9.7a Feb 19 2003


이렇게 나오면 OpenSSH 업그레이드 작업이 모두 완료됩니다.

댓글목록

등록된 댓글이 없습니다.

Total 356건 12 페이지
게시물 검색

회원로그인

접속자집계

오늘
131
어제
225
최대
1,347
전체
154,890
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.