==================================================================================================

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 6.4
설치된 VMware Program : VM workstation 9.0.2

==================================================================================================


 - SSH(Secure SHell) -

1. 정의

   - 원격관리 서비스 중 하나로써 데이터 통신시 암호화되는 가장 널리 쓰이는 서비스



2. 특징

   - 데이터 통신간에 암호화("RSA" 알고리즘)되어 통신하고, 암호화된 키를 Host 와 서버가

      확인하여 세션을 연결하므로 키가 없으면 데이터를 복호화 할 수 없기 때문에 보안이 강화



3. Package
   - server : openssh-server  : SSH 서비스를 제공하는 패키지


   - client  : openssh-clients : SSH 접속이 가능하도록 접속할 수 있는 패키지

                 (Window의 puTTy와 유사)



4. sshd 활성화

   - #/etc/rc.d/init.d/sshd restart



5. 동작상태 확인

   - #netstat -atunp | grep sshd



6. 이용

  - #ssh [Server IP] : 상대방 서버 접속시 현재 서버에 로그인한 계정으로 접속을 요청한다.
                               (root로 이용하는 경우 자주 사용) / ※ 보안설정이 되면 접속이 허가되지 않는다.


  - #ssh -l [계정명] [Server IP]
  - #ssh [계정명]@[Server IP]  => 실무에서 자주 사용하는 형태
    : 로그인을 위한 계정명을 입력한 상태로 ssh 서버로 접속하는 방식



7. SSH 원격 접속 프로그램
  - puTTy : 무료 프로그램으로 가장 널리 쓰이는 프로그램 중 하나
               (검색엔진에서 putty로 검색하면 열라 많이 나옴 - 한글버전도 나옴)


  - SecureCRT : 상용화 프로그램으로 puTTy보다 강력한 기능을 지원한다.
            (http://www.vandyke.com/download/securecrt/download.html : 회원가입필요)


  - XShell : 상용화 프로그램으로 특정사용자들이 즐겨 쓴다.



8. 설정파일
   * /etc/ssh/sshd_config

※ 해당 내용은 간단하게 실습 가능한 부분만 알려드리며, 설정파일의 자세한 내용은 아래의 글을 참고해주시기 바랍니다.

    - Port : SSH 서비스의 Port 번호 (기본값 : 22)
             단, 위 설정항목을 변경하는 경우 방화벽에서 해당 포트를 해제하여야 통신이 가능.


    - Protocol : SSH 통신의 버전 (기본값:2)
        ㄱ. 1 : 사용자 인증 방식 사용
        ㄴ. 2 : 키(RSA) 인증 방식 사용


    - ListenAddress : 접속을 허가하는 특정 호스트를 입력할 수 있다. (기본값 : 0,0,0,0 / ::)


    - KeyRegenerationInterval : 암호화 키의 갱신 시간을 의미 (기본값 : 1h)


    - SyslogFacility : syslogd의 SSH의 인증 정보를 기록하는 방식
        ㄱ. AUTH : 사용자 관련 정보
        ㄴ. AUTHPRIV : 인증절차 관련 정보(키) (기본값)


    - LogLevel : syslogd의 SSH의 Log 정보를 쌓아주는 형태를 지정
        ㄱ. INFO : 기본정보를 보여주는 수준부터 기록 (기본값)
        ㄴ. WARNING : 단순 경고 메세지를 출력할 수 있는 수준부터 기록 (실무 적용)
        ㄷ. CRIT : 데몬 또는 서브시스템을 종료 해야하는 수준부터 기록
        ㄹ. EMERG : 시스템이 다운되거나 타격을 입을 수 있는 수준부터 기록


    - LoginGraceTime : 원격접속시 로그인까지의 인터벌 시간(기본값:2분)


    - PermitRootLogin : root 사용자로 접속하는 것을 정의 (no)
              => Sniffing 공격시 암호화 알고리즘을 아는 사람은 해킹이 가능하므로
                  root 사용자 접속은 위험하니 불가능하도록 설정 -> 보안설정


    - MaxAuthTries : ssh 프로그램으로 접속 시도시 인증실패의 최대값(기본값:6)


    - MaxSessions : ssh 접속 연결 최대 제한 갯수 (기본값:10)


    - Last = Subsystem : SSH 서비스가 동작이 되면 자동으로 동작시킬 프로그램을 입력
                               (기본 동작 프로그램 : sftp)

 

   ※ SSH 이용시 유의사항

      * 상대방 접속시 없는 사용자로 접근하면 오류 발생



9. 동작환경

 [ 그림참조 ]

 



[ sftp(Secure FTP) ]
1. 정의 : 원격 접속 서버와 파일을 전송할 때 암호화 된 통신을 한다.
           (SSH 서비스와 연동되어 제공한다.)


2. 형식 : - 보안설정 X : #sftp [대상서버]
            - 보안설정 O : #sftp [계정명]@[대상서버]


   ※ SFTP 이용시 유의사항

      * ssh 설정파일내 "보안설정(PermitRootLogin=no)"이 적용된 서버는
        사용자로 로그인을 해야 한다. → 권한에 대한 제약이 발생
         => 파일 전송시 업/다운로드 관련 DIR 및 File 의 권한 (p.73 참조)




[ scp(Secure CoPy) ]
1. 정의 : 원격 접속 서버와 자신의 서버로 복사형태를 띄면서 암호화 통신을 한다.
           (openssh-clients 패키지에 내장된 명령어)

2. 형식
  - #scp [옵션] [원본경로] [대상경로]  -> cp명령어와 유사
     (단, 원격서버의 경우 - [계정명]@[Server IP]:[경로])
       ※ 원격서버의 경로를 입력할 때 "절대경로"를 사용할 것!


  [다운로드 형태]
  - #scp 10.1.1.50:/backup/fstab /backup/         : 원본에 원격지 주소를 사용한 경우

  [업로드 형태]
  - #scp /backup/fstab 10.1.1.50:/backup/         : 대상에 원격지 주소를 사용한 경우

 

AND

==================================================================================================

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 6.4
설치된 VMware Program : VM workstation 9.0.2

==================================================================================================


- File Transfer Protocol -

1. 정의

   - 시스템 운영 및 관리를 위한 원격 관리 서비스 중 하나

   - 파일을 전송할 수 있는 서비스 (Dir 는 불가능)



2. Package
 
   - vsftpd                : FTP 서비스를 이용하기 위한 Server Package



3. vsftpd 활성화

    - #/etc/rc.d/init.d/vsftpd restart



4. 동작상태 확인

    - #netstat -atunp | grep vsftpd



5. 관련파일 

    - /etc/vsftpd/vsftpd.conf  : vsftpd 주 설정파일

    - /usr/sbin/vsftpd           : vsftpd 실행파일

    - /etc/rc.d/init.d/vsftpd   : vsftpd 데몬파일

    - /etc/vsftpd/ftpusers      : ftp 서비스 이용에 제약을 받을 사용자를 정의 ("/etc/vsftpd/user_list" 파일도 동일)

    - /etc/xinetd.d/vsftpd      : vsftpd 기본 설정이 "standalone" 방식이므로 해당 파일의 확인이 어려움.



6. 설정파일 

   * /etc/vsftpd/vsftpd.conf

※ 해당 내용은 간단하게 실습 가능한 부분만 알려드리며, 설정파일의 자세한 내용은 아래의 글을 참고해주시기 바랍니다.

 

- anonymous_enable

: "anonymous" 계정의 접속허용 여부 [ anonymous(익명사용자)=ID로만 Login 이 가능한 계정 ]

 

- local_enable
      : "/etc/passwd" 파일내 사용자 접속 허용 여부 (default:YES)

 

- write_enable
      : write 명령어(업로드 = put/mput ...) 허용 여부 (defualt:YES)

 

- local_umask
      : "/etc/passwd" 파일내 사용자들이 FTP 서비스를 이용시 적용 받을 umask (default:022)

 

- #anon_upload_enable
      : "anonymous" 계정의 파일 업로드 여부 (default:설정안됨)

 

- #anon_mkdir_write_enable
      : "anonymous" 계정의 디렉터리 생성 여부 (default:설정안됨)

 

- dirmessage_enable
      : ftp 서비스에 접속한 사용자가 디렉터리를 변경할때 변경될 Dir 내에 ".massege" 파일이 존재하면 해당 파일의 내용이 출력

 

- xferlog_enable
      : 파일 전송 표준로그(xferlog) 방식으로 로그를 남길 것인지 여부 (default:YES)

 

- #xferlog_file

: 파일 전송 로그로 기록된 파일명을 설정 (default:설정안됨[/var/log/xferlog]) 

 

 

- connect_from_port_20
      : standalone 모드로 동작시만 적용되며, 데이터 전송시 20번 포트로 전송할 것인지 여부

 

- #idle_session_timeout
      : 사용자가 아무런 입력 없이 유지하면 종료시킬 시간(단위:초) (default:설정안됨 [300초로 적용됨])


- #chroot_list_enable
      : "chroot_list" 라는 파일의 활성화 여부

 

※"chroot_list" -> 디렉터리 이동의 제한을 받는 사용자를 정의

(제한받은 사용자들의 $HOME 이 "/" 로 출력되며, 경로 변경이 불가능하게 된다.)

 

- #chroot_list_file

      : "chroot_list" 라는 파일의 경로나 파일명을 임의로 지정가능 (default:/etc/vsftpd/chroot_list)

 

- #chroot_local_user
      : "/etc/passwd" 파일내 사용자들을 모두 디렉터리 이동 제한하고
        $HOME을 벗어나지 못하도록 설정이 되며, $HOME이 "/"로 출력된다. ("root" 계정 포함)



 [ 추가 사항 ]

userlist_enable

          : ftp 서비스내 접속자 제한 설정파일(chroot_list) 사용 여부

 

max_clients

    ftp 서비스내 접속자 클라이언트 갯수 제한 (0 : 제한없음)

anon_root

          : "anonymous" 사용자의 홈 디렉터리 지정 (기본값 : /var/ftp)

 

7. 동작환경

 [ 그림참조 ]
 


8. xferlog 분석자료

[ 그림참조 ]

 

 

 

 [ 서비스 ]
  - "root" 사용자 접속 허용 -
1. 사용자 제한 파일을 수정하여 root 사용자 접속 가능 

ㄱ. /etc/vsftpd/user_list 파일에서 root 사용자 '#' 처리

ㄴ. /etc/vsftpd/ftpusers 파일에서 root 사용자 '#' 처리

 

2. 사용자 제한 파일 및 vsftpd 설정파일 옵션 변경으로 root 사용자 접속 가능

ㄱ. /etc/vsftpd/vsftpd.conf 파일에서 "userlist_enable" 옵션을 "NO"로 설정
        : user_list 파일을 사용하지 않도록 설정

ㄴ. /etc/vsftpd/ftpusers 파일에서 root 사용자 '#' 처리

 

AND

=============================================================================================================================

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 Server CentOS  : CentOS 5.8
설치된 VMware Program : VM workstation 8.0.1

=============================================================================================================================

- xinetd 란? -

1. 정의

- 리눅스 슈퍼데몬

  (필요시마다 하위의 서비스들을 구동/종료 시키는 역할)
- inetd + 허가(hosts.allow)/거부(hosts.deny)설정 (tcp_wrappers)
- xinetd 자체는 standalone 타입으로 동작한다. 
   (슈퍼데몬이 항상 켜져있어야 다른 데몬을 켜고 끄고 할 수 있기 때문)
- /etc/xinetd.conf -> /etc/xinetd.d/ 경로내 파일을 참조하여 동작
- /etc/services 에서 서비스할 포트번호를 참조

2. 설정파일

* /etc/xinetd.conf

- log_type = SYSLOG authpriv
   : "syslogd"데몬에 의해서, "/var/log/" 디렉토리에 로그를 기록

- log_on_failure = HOST

   : login에 실패시 로그에 호스트이름을 기록

- log_on_success = PID HOST DURATION EXIT

   : login에 성공시 아래의 내용들을 로그로 기록

     ㄱ. PID : 프로세스ID

     ㄴ. HOST : 해당호스트이름

     ㄷ. DURATION : 접속 유지시간

     ㄹ. EXIT : 접속 종료시간

- cps = 50 10

   : 접속 횟수의 속도 제한

     ㄱ. 50는 초당 접속 제한수

     ㄴ. 10은 "ㄱ" 항목 수를 초과하면 서비스 제한 시간(단위:초)

- instance = 50 또는 UNLIMITED

   : xinetd 로 동작할 최대 서비스 갯수 설정, UNLIMITED로 설정시 무제한으로 설정된다.

- includedir /etc/xinetd.d

   : xinetd 을 동작할 때 적용하는 서비스들이 정의된 경로

 

 

=======================================================================================================================================
[ Telnet Service 설정을 위한 내용 ]
설치된 CentOS 버전 : CentOS 5.7
설치된 VMware 버전 : VM workstation 7.1.4

telnet 패키지 파일 : telnet-server.i386 1:0.17-39.el5

telnet 설정 파일 : /etc/xinetd.d/telnet


- Telnet Service 란? -

1. 정의

- TCP 통신에서 가장 오래되었으며, 널리 쓰이던 원격관리 서비스의 대표


2. 특징

- 데이터 통신시 평문통신 (가로채기:sniffing 에 취약)
- 설치 후 기본서비스로 동작되지 않음.

- root (슈퍼유저) 로 접속 불가능


3. Package

- Server : telnet-server ~~~~ . rpm

- Client  : telnet ~~~~~ .rpm


[ Telnet 환경설정 ]
1. Yum 을 이용하여 Telnet 서버 패키지를 설치
[그림 참고]


2. Vi editor 로 Telnet 설정파일을 편집 (빨간색이 수정사항)
   (경로 : /etc/xinetd.d/telnet)
==========================================================================================
# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

==========================================================================================

3. 설정파일 내용 확인

* /etc/xinetd.d/telnet
- flags

    : 소켓이 작동될때 사용하는 정보
- socket_type

    : Telnet 서비스의 소켓 적용 정보 (기본값:stream)
      a. stream : tcp 소켓 사용
      b. dgram : udp 소켓 사용
- wait

    : 대기 시간을 제공할 것인지에 대한 여부(기본값:no)
      a. no : 접속시 프로세스를 추가하여 제공
      b. yes : 1개의 프로세스만 제공하여 1개만 연결 가능
- user

    : 서비스를 시작하는 권한자(기본값:root)
- server

    : 서비스를 처리할 프로그램의 위치
- log_on_failure

    : 로그인 실패에 대한 로그 정보를 추가해주며 쌓을 정보는 USERID 를 넣어준다.
- disable

   : 서비스를 제공하지 않을 것인지 여부(기본값:yes)

- access_times

   : Telnet 서비스를 이용할 시간 범위를 지정

    (형식 : HH:MM-HH:MM) - (ex : 07:30-18:30)



[ 적용한 사항의 확인 ]
1. 슈퍼데몬을 재시작
# /etc/rc.d/init.d/xinetd restart

2. Telnet 접속 확인

- Wiindows 에서

   C:\>telnet 192.168.X.X 입력 후 정상 접속 여부 확인
- Linux 에서

   # telnet 192.168.X.X 입력 후 정상 접속 여부 확인



AND