SSH를 XINETD로 돌리는 방법

purewell의 이미지

* 이하 존칭 생략하겠음.

목적 : XInetDaemon으로 SSH 서비스를 실행한다.
환경 : Fedora Core 2
RPM : openssh-server xinetd ( 그외 다수 )
( 상기된 RPM은 기본적으로 깔리는 패키지이다. )

1. /etc/xinetd.d 에 xsshd 파일을 생성한다.

Quote:
#cd /etc/xinet.d/
#touch xsshd
#vi xsshd

2. xsshd 내용은 다음과 같다.
service ssh
{
        disable = no
        flags = REUSE
        socket_type = stream
        wait = no
        user = root
        server = /usr/sbin/sshd
        server_args = -i
        log_on_failure += USERID
}

3. xinetd.d를 재시동한다.
Quote:
#/etc/init.d/xinetd restart

4. Standalone으로 돌고 있는 sshd를 끈다.

Quote:
#/etc/init.d/sshd stop
Forums: 
cdpark의 이미지

참고로 ssh는 standalone으로 띄우는 걸 권장합니다.

ssh의 동작을 위해서 random number를 필요로 하는데, 새로 띄운 ssh에서 필요로하는 random 정보를 얻는데 시간이 걸립니다.

김정균의 이미지

cdpark wrote:
참고로 ssh는 standalone으로 띄우는 걸 권장합니다.

ssh의 동작을 위해서 random number를 필요로 하는데, 새로 띄운 ssh에서 필요로하는 random 정보를 얻는데 시간이 걸립니다.

저는 좀 반대 입장이.. 로그인이 굉장히 많은 서버가 아니라면 굳이 inetd 모드가 관리가 좀더 용이 합니다. 특히, 업데이트를 할 때, inetd mode 라면, 작업하고 있는 세션이 끊기지 않기 때문에 좋죠.

그리고 여러대의 서버를 관리하다 보면, 스크립트 만들어서 일괄 업데이트 하는 작업을 많이 하게 되는데, 이 때도, 각각의 서버들 다 restart 시켜 주는 것도 쉬운 작업은 아니니까요.

cdpark 님은 기술적으로, 저는 관리쪽으로의 견해로 보시면 되겠습니다.

cdpark의 이미지

김정균 wrote:

저는 좀 반대 입장이.. 로그인이 굉장히 많은 서버가 아니라면 굳이 inetd 모드가 관리가 좀더 용이 합니다. 특히, 업데이트를 할 때, inetd mode 라면, 작업하고 있는 세션이 끊기지 않기 때문에 좋죠.

이상하군요. debian에서 수차례 ssh를 업데이트해봤지만 한번도 끊긴 적 없습니다.

김정균 wrote:

그리고 여러대의 서버를 관리하다 보면, 스크립트 만들어서 일괄 업데이트 하는 작업을 많이 하게 되는데, 이 때도, 각각의 서버들 다 restart 시켜 주는 것도 쉬운 작업은 아니니까요.

관리를 위해서는 debian이...

김정균 wrote:

cdpark 님은 기술적으로, 저는 관리쪽으로의 견해로 보시면 되겠습니다.

보안 측면에서 이야기한건데요? 실제 사용 측면에서도 ssh는 초기 기동이 느린 서버라 standalone이 좋구요. 대부분의 배포판에서 ssh는 tcp wrapper를 포함해서 컴파일해 놓으니 tcpd나 xinetd를 쓸 때의 장점도 그리 많지 않구요.

inhosens의 이미지

cdpark wrote:

이상하군요. debian에서 수차례 ssh를 업데이트해봤지만 한번도 끊긴 적 없습니다.

솔라리스에서는 sshd를 restart할때 끊기던데.. 데비안에서는 안끊기는게 오히려 신기하더군요. :roll:

cdpark의 이미지

inhosens wrote:
솔라리스에서는 sshd를 restart할때 끊기던데.. 데비안에서는 안끊기는게 오히려 신기하더군요. :roll:

솔라리스의 관리 경험(호랑이 담배피던 SunOS 4.X 시절과 솔라리스 2.X 시절 -_-)으로...

어떤 실행파일 prog를 업데이트할 때,

cp prog /usr/bin

이라고 하면 실행중인 프로그램들이 죽습니다.

이때

mv /usr/bin/prog /usr/bin/prog.old
cp prog /usr/bin
rm /usr/bin/prog.old

순으로 해 주면 돌고 있는 프로그램에 영향이 없었습니다.
inhosens의 이미지

cdpark wrote:

mv /usr/bin/prog /usr/bin/prog.old
cp prog /usr/bin
rm /usr/bin/prog.old

순으로 해 주면 돌고 있는 프로그램에 영향이 없었습니다.

이것과는 조금 다른 얘기 같습니다. 솔라리스의 이닛스크립트에는 restart가 없습니다. 그래서 stop -> start 해줘야하죠. 그 전에는 끊는게 당연하다고 생각했었는데.. 리눅스에서 원격으로 접속해서 sshd 를 restart 했는데 -_-; 멀쩡하게 접속이 되어있는 것이 좀 이상하더군요. 스크립트 자체에도 stop -> start 랑 차이가 없어보이는데 제 머리로는 이해가 힘드네요 :roll: :?:

김정균의 이미지

cdpark wrote:
김정균 wrote:

저는 좀 반대 입장이.. 로그인이 굉장히 많은 서버가 아니라면 굳이 inetd 모드가 관리가 좀더 용이 합니다. 특히, 업데이트를 할 때, inetd mode 라면, 작업하고 있는 세션이 끊기지 않기 때문에 좋죠.

이상하군요. debian에서 수차례 ssh를 업데이트해봤지만 한번도 끊긴 적 없습니다.

그런가요? standalone mode 로 사용해 본지가 오래되서 ..
다만, init script 가 process 를 일단 kill 을 한다면 세션이 끊기는 것이
정상일 것 같군요. 설마 Keep Alive 가 작동을 해서 연결을 유지 시켜주는
것은 아니겠죠. (설마..)

cdpark wrote:
김정균 wrote:

그리고 여러대의 서버를 관리하다 보면, 스크립트 만들어서 일괄 업데이트 하는 작업을 많이 하게 되는데, 이 때도, 각각의 서버들 다 restart 시켜 주는 것도 쉬운 작업은 아니니까요.

관리를 위해서는 debian이...

이건 개인차가 아닐까요? RH 가 관리를 위해 불편하다는 생각을 해 본적이
없습니다. :-) 그리고, 데몬 업데이트 후에 재시작을 하느냐 마느냐의 문제와
debian 과는 상관이 없을 것 같군요. 제가 말한 취지는 inetd 으로 운영을
하면 데몬 업데이트 후에 restart 같은 작업이 필요 없다는 것을 말하지요.

cdpark wrote:
김정균 wrote:

cdpark 님은 기술적으로, 저는 관리쪽으로의 견해로 보시면 되겠습니다.

보안 측면에서 이야기한건데요? 실제 사용 측면에서도 ssh는 초기 기동이 느린 서버라 standalone이 좋구요. 대부분의 배포판에서 ssh는 tcp wrapper를 포함해서 컴파일해 놓으니 tcpd나 xinetd를 쓸 때의 장점도 그리 많지 않구요.

보안적인 측면과는 상관없을 것 같은데요. 기동이 느리지 random seed 를 전혀 안하는 것은 아니니까요. 그리고 실제로 inetd 모드로 동작 한다고 해서 체감을 느낄 정도도 아니라는 겁니다.

제가 적는 요지는, 단서가 붙어 있습니다. 접속이 많지 않은한... 이라는..
왠만한 서버에서 ftp daemon 도 그렇고 sshd 도 그렇고 체감을 할 정도의
서버는 드물 것 같다는 얘기죠. 하루에 접속 10000 번도 안되는 서버에서 굳이 standalone mode 로 돌아야 할 이유가 궁금하다는 겁니다. :-) 뭐 당연히 성능이야 standalone mode 가 더 좋겠지만, 더 많은 리소스를 가지고 작동을 하면서 성능이 더 좋지 못하다면 그게 웃기는 일이겠죠.

노는 리소스를 더 할당할 수도 있겠지만, 노는 리소스를 다른데 할당할 수 있게 해 놓겠다는 관점의 차이로 보시면 되겠지요. 제가 말한 것이 정답이 아니듯이 이는 다 관점의 차이라는 것입니다.

누가 맞다는 정답은 없다는 것이죠. cdpark 님께서 좀 단적으로 적으신 것 같아 반대 급부를 적어 보았을 뿐입니다.

송효진의 이미지

/etc/init.d/sshd stop;sleep 1;/etc/init.d/sshd start

중간에 sleep 1 있습니다.
터미널 안죽었습니다.-_-;;;;;;;;;
굉장합니다.

익명 사용자의 이미지

restart 할 때 연결된 세션이 죽지 않는게 신기한가요?
전 당연한거라고 생각했는데...
스크립트를 통한 stop 이나 restart 는 listen 하고 있는 프로세스만
죽이지 클라이언트와 연결된 프로세스는 죽이지 않죠.
그러니 당연히 접속이 유지 되져.

옛날 솔라리스 세션이 끊기다는건.. 글쎄요. 전 레드헷하고 데미안만 사용해봐서
모르겠는데 그땐 쓰레드나 select 같은 걸로 구현했을까요 :?:

ihavnoid의 이미지

제 생각에는, inetd로 관리하는 것도 나름대로 장점이 있을 것 같습니다. 아주 제한적인 경우에요.

당장 생각나는 것은 임베디드 장비 정도밖에 없군요. 가끔씩 관리를 위해서 접속을 하는 경우, ssh daemon이 메모리에 상주하고 있다면 작지만 오버헤드로 작용할 테니까요. 메모리가 16메가쯤 되는 장비에 아주 가끔씩만 사용되는 ssh daemon이 수백 kb를 계속 잡아먹고 있다면.... -_-;;

random number 얻는 데 시간 걸리는 건 충분히 감수할 수 있을만한 것 같은데요. 맨날 접속하는 것도 아니고.

Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24

엠브리오의 이미지

임베디드 장비에서는 openssh 대신 dropbear 라는 녀석을 쓸수 있습니다.
물론 inet 모드로 동작시킬수도 있지요.

컴파일해서 직접 돌려보았습니다. 잘 동작합니다.

다음 링크를 참고하세요.

http://matt.ucc.asn.au/dropbear/dropbear.html

ihavnoid wrote:
제 생각에는, inetd로 관리하는 것도 나름대로 장점이 있을 것 같습니다. 아주 제한적인 경우에요.

당장 생각나는 것은 임베디드 장비 정도밖에 없군요. 가끔씩 관리를 위해서 접속을 하는 경우, ssh daemon이 메모리에 상주하고 있다면 작지만 오버헤드로 작용할 테니까요. 메모리가 16메가쯤 되는 장비에 아주 가끔씩만 사용되는 ssh daemon이 수백 kb를 계속 잡아먹고 있다면.... -_-;;

random number 얻는 데 시간 걸리는 건 충분히 감수할 수 있을만한 것 같은데요. 맨날 접속하는 것도 아니고.

익명 사용자의 이미지

ihavnoid wrote:
제 생각에는, inetd로 관리하는 것도 나름대로 장점이 있을 것 같습니다. 아주 제한적인 경우에요.

당장 생각나는 것은 임베디드 장비 정도밖에 없군요. 가끔씩 관리를 위해서 접속을 하는 경우, ssh daemon이 메모리에 상주하고 있다면 작지만 오버헤드로 작용할 테니까요. 메모리가 16메가쯤 되는 장비에 아주 가끔씩만 사용되는 ssh daemon이 수백 kb를 계속 잡아먹고 있다면.... -_-;;

random number 얻는 데 시간 걸리는 건 충분히 감수할 수 있을만한 것 같은데요. 맨날 접속하는 것도 아니고.

그럼 inetd 는 메모리를 별로 잡아먹지 않나요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.