RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'rlogin'에 해당되는 글 1

출처 : 대전국제IT교육센터 정성재 강사

 

1. r로긴에 대하여
r로 시작하는 명령중에 대표적인 명령이 rsh 및 rlogin이 있다. 이 명령은 접속하고자하는 서버에
/etc/hosts.equiv 라는 파일과 .rhosts라는 파일을 참조하여 접속을 할 수 있다. 또한, rsh과 rlogin
은 리눅스에서 inetd(커널 2.4대일 경우에는 xinetd)라는 슈퍼데몬이 관리하므로 사용하려면 /etc/
inetd.conf(커널 2.4대인 경우에는 /etc/xinetd/rlogin등)파일에서 사용할 수 있도록 활성화시켜야
한다. 리눅스에서 rlogin 등 r-command 계열의 사용이 보안상 취약점으로 인해 점점 어려워지고 있
다. 로그인하기 위한 설정이나 .rhosts파일 생성시에 더욱 더 주의를 하도록 되어 있고, 초기에 설
정하던 방법들이 적용이 잘 안된다.


2. rlogin
(1) 설명: remote login의 약어로 호스트에 원격으로 로그인할 때 사용하는 명령이다. 원격으로
          접속할 원격지에는 .rhosts파일 또는 /etc/hosts.equiv 파일에 호스트가 등록되어 있어야
          한다.
(2) 사용법
   rlogin [option] host
(3) option
  -l : 계정을 미리 지정하여 로그인 할 수 있다. 현재 이 옵션이 지원되지 않는다.
(4) 사용예
   1) rlogin www.aaa.co.kr => www.aaa.co.kr으로 접속을 한다.
   2) rlogin -l posein www.aaa.co.kr => www.aaa.co.kr로 접속을 시도할 때 aaa.co.kr의 posein
                                        이라는 계정을 가지고 한다.
   3) rlogin 203.247.xxx.xx
     => 203.247.xxx.xxx 로 접속을 시도한다. 현재 버전에서 사용가능한 방법이다.

3. /etc/hosts.equiv 파일과 .rhosts파일의 설정
(1) 설명: rlogin으로 접속하려면 /etc/hosts.equiv파일 또는 사용자의 홈디렉토리에 .rhosts파일이
          존재해야 한다. 본인 계정으로 rlogin을 이용하려면 자신의 홈디렉토리에 .rhosts파일을
          만든다.
(2) .rhosts파일 및 /etc/hosts.equiv 의 형식
   (호스트네임)  (들어올 수 있는 계정아이디)
(3) 사용예
   1) aaa.co.kr   posein
      => aaa.co.kr이라는 호스트의 posein이라는 사람이 자신의 계정에 패스워드없이 들어올 수
        있다.
   2) aaa.co.kr   +
      => aaa.co.kr이라는 호스트의 모든 계정에서 나의 계정(즉, 현재 .rhosts파일에 존재하는 홈디
        렉토리)에 패스워드없이 들어 올 수 있다.
   3) +   posein
     => 모든 호스트에서 posein이라는 계정이 있는 사람이 들어올수 있다.
   4) +   +
     => 모든 호스트의 모든 계정에서 들어올 수 있다.
   5) 203.247.xxx.xxx
     => 신뢰하는 호스트의 IP를 적는다. 해당 IP에서 접속하는 계정에 대해 패스워드없이 접속이
       가능하다. 현재 버전에서 사용가능한 방법이다.

4. rsh
(1) 설명: remote shell의 약자로 원격으로 명령을 내릴 경우에 사용한다. rlogin과 다른 점은
          rlogin으로 접속했을 경우에 who나 w명령을 치면 접속했다는 것이 보이지만 rsh로 옵션을
          주어 접속하거나 원격지에서 그냥 명령만 수행시에는 보이지 않는다. 물론 .rhosts파일이
          존재해야 사용가능하다.
(2) 사용법
   rsh [option] host
(3) option
   -l : 계정을 지정하여 로그인할 수 있다. 현재 이 옵션이 지원되지 않는다.
(4) 사용예
   1) rsh -l root aaa.co.kr sh -i
       =>  aaa.co.kr의 root 권한으로 shell을 실행시킨다. 이 명령을 실행시킨 뒤에 'id'라고 입력
         하면 root로 나타난다. 하지만, w이라고 입력하면 나타나지 않는다.
   2) rsh -l root aaa.co.kr ls -l /    
       => aaa.co.kr으로 접속한 뒤에 ls -l /을 실행시킨다.
   3) rsh aaa.co.kr cp /etc/passwd passwd
       => 원격지의 /etc/passwd 파일을 현재디렉토리에 복사한다.

5./etc/inetd.conf의 설정(커널 2.2대인 경우)
(1) 설명: rlogin과 rsh은 슈퍼데몬인 inetd에서 관리하므로 작동유무는 /etc/inetd.conf에서 한다.
          기본설정은 작동을 하지 않는다. 활성화시키려면 다음과 같은 항목에서 주석처리('#')을
          없애면 된다.
(2) 설정
   (기본설정)
     #shell  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd
     #login  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind
   (활성화된 상태)
     shell  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd
     login  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind

6./etc/xinetd.d 설정(커널 2.4대인 경우)

(1) 설명: 커널 2.4대 인 경우에는 xinetd라는 슈퍼데몬으로 작동한다. 각각의 해당서비스에 대한
          설정은 /etc/xinetd.d디렉토리에서 각 서비스이름과 같은 이름(예를 들면 rlogin, rsh등)
          으로 관리된다.
(2) 설정
   1) rlogin과 rsh파일을 vi편집기로 열어보면 disable = yes라는 항목이 있다. 즉 이것은 사용하지
    않겠다는 설정이다. 이 값에서 yes를 no로 바꾼다.
   2) 데몬을 재시작한다.
     /etc/rc.d/init.d/xinetd restart

7. rlogin 사용예
(1) /etc/hosts.equiv 파일이용하여 A(Client) 시스템에서 B(Server)로 접속
   1) B(Server)에서 rlogin을 허용하기 위한 설정
    ㄱ. /etc/hosts.equiv 파일에 접속을 허가하고자 하는 호스트를 등록한다.
       [root@server root]# cat /etc/hosts.equiv
       203.247.xxx.xxx
         => 해당 IP에서 들어오는 계정에 대해 패스워드 없이 로그인이 가능하다.
    ㄴ. rlogin 서비스를 열기: /etc/xinetd.d/rlogin 파일의 설정에서 disable = yes를 no로 바꾼
                             다.
    ㄷ. 참고 : 리눅스는 기본적으로 pam이라는 사용자 인증을 사용한다. rlogin사용을 위해서는
              pam에도 설정이 되어 있나 확인해야 한다.
       [root@www root]# cat /etc/pam.d/rlogin
       #%PAM-1.0
       # For root login to succeed here with pam_securetty, "rlogin" must be
       # listed in /etc/securetty.
       auth       required     /lib/security/pam_nologin.so
       auth       required     /lib/security/pam_securetty.so         // 이 부분도 필요하다.
       auth       required     /lib/security/pam_env.so
       auth       sufficient   /lib/security/pam_rhosts_auth.so       // 기본선택되어 있다.
       auth       required     /lib/security/pam_stack.so service=system-auth
       account    required     /lib/security/pam_stack.so service=system-auth
       password   required     /lib/security/pam_stack.so service=system-auth
       session    required     /lib/security/pam_stack.so service=system-auth
   2) A(Client)에서 B(Server)로 접속하기
    ㄱ. 조건: client와 Server에 동일 계정으로 접속해야 한다. 접속하고자하는 Server에도 posein
             이라는 계정이 있고 Client에도 posein이라는 계정이 있다고 가정하자.
    ㄴ. 접속하기
       [posein@client posein]$ rlogin 203.247.xxx.xxx
       Last login: Thu Jan 30 01:53:21 from xxx.xxx.xxx.xxx
       [posein@server posein]$
         => 패스워드없이 로그인이 됨을 알 수 있다.
(2) .rhosts파일을 이용하여 A(Client) 시스템에서 B(Server)로 접속
   1) B(Server)에서 rlogin을 허용하기 위한 설정
     ㄱ. 개인 홈디렉토리의 .rhosts파일에 만들고 그곳에 원격지 IP를 등록한다.
        [posein@server posein]$ cat .rhosts
        203.247.xxx.xxx
         => 해당 IP에서 들어오는 계정에 대해 패스워드없이도 로그인이 가능하다.
     ㄴ. 리눅스에서는 .rhosts 파일의 퍼미션을 소유자만 rw이 가능하도록 설정해야 한다. 이렇게
        설정되어 있지 않으면 운영체제에서 보안상의 이유로 무시한다.
        [posein@server posein]$ ls -l .rhosts
        -rw-------    1 posein   posein         14  1월 30 02:04 .rhosts
   2) A(Client)에서 B(Server)로 접속하기
       [posein@client posein]$ rlogin 203.247.xxx.xxx
       Last login: Thu Jan 30 02:18:34 from xxx.xxx.xxx.xxx
       [posein@server posein]$
   3) 참고 : root로 로그인하기
     root사용자로 로그인하기 위해서도 일반사용자가 로그인하기 위해 한 설정과 같다. 다만 root
    사용자인 경우에는 /etc/securetty에서 원격지 접속에 대한 제한을 두었기 때문에 접속이 불가
    하다. 만약 root로 접속하려면 /etc/securetty를 제거하거나 다른 이름(securetty~ 추천)으로
    변경하면 접속할 수 있다. 그러나 이 방법은 절대 사용하지 말아야 한다. 다만 보안상 참고로
    알아두는 수준이 좋다.

8. rsh 사용예
(1) 접속하고자하는 Server의 설정: rlogin 설정과 같다.
(2) A(Client)에서 B(Server)로 접속하기
   1) [posein@client posein]$ rsh 203.247.xxx.xxx sh -i
      sh-2.05b$
       => 프롬프트가 바뀌면서 접속한 상태와 같다.
   2) [posein@client posein]$ rsh 203.247.40.252 ls -l /
       => 접속하지 않아도 원격지 서버의 / 디렉토리의 내용확인이 가능하다.
   3) [posein@client posein]$ rsh 203.247.xxx.xxx cat /etc/passwd > passwd.txt
       => 원격지 서버의 /etc/passwd의 내용을 내 디렉토리의 passwd.txt파일로 저장 가능하다.
(3) 참고
   1) who명령이나 w 명령으로는 확인이 불가능하다.
   2) last같은 로그기록으로도 보이지 않는다.
   3) 접속의 확인은 netstat명령으로만 가능하다.

9. rlogin과 해킹
(1) rlogin과 백도어
   과거의 해커들이 루트의 홈디렉토리에 .rhosts라는 파일을 만들고 그안의 내용을 '+ +'로 하여 소
  위 백도어라는 것을 만들어 놓았다. 그러나, 현재의 리눅스는 보안의 측면이 많이 강화되어 일단 r
  oot 계정자로 rlogin이 불가능하다. 또한, 일반계정자로 .rhosts를 만들고 파일의 내용을 '+ +'라
  하여도 패스워드를 치도록 되어 있다. rsh도 현재의 리눅스시스템에서는 사용이 어렵다. 원격에서
  의 쉘권한은 상당히 규제하고 있다. 그러나, 과거의 해킹방법이라도 알아두어야만 대응하기가 쉽다.
(2) rlogin의 제한
   1) /etc/inetd.conf에서의 설정(커널 2.2대) : shell부분과 login부분을 주석처리한다.
      #shell  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd
      #login  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind
   2) /etc/xinetd.d 디렉토리의 파일제한(커널 2.4대)
      이 디렉토리에 존재하는 rlogin과 rsh파일을 삭제하거나 이 파일을 vi편집기로 열어
     disable = yes로 바꾼뒤에 데몬을 재시작한다.
   3) .rhosts파일의 제한 : rlogin과 rsh은 .rhosts파일이 존재해야 한다. 그러므로 이 파일의 생
                          성을 막는다.
     ㄱ. 퍼미션을 통한 제한 : 루트디렉토리의 퍼미션을 700으로 하여 다른 사용자에 의한 파일의
                             생성을 막는다.
     ㄴ. .rhosts의 생성 제한
       a..rhosts라는 디렉토리를 미리 생성해 놓으면 같은 이름의 파일을 생성할 수 없다.
       b. ln -s /dev/null ~/.rhosts 나 ln -s /dev/null /etc/hosts.equiv 명령을 내려 어떠한
         설정을 할 수 없도록 설정한다.
     ㄷ. 감시 : who나 w 명령으로는 나타나지 않을 수 있으니 항상 netstat 명령을 이용하여 감시한
              다.

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31