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

※ 해당 내용의 경우 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

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

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

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

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

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

 - Network 기초 -


1. 정의

-  IPv4(IPv6)의 주소체계로 유/무선 형태를 지니고 통신하는 상태

 

2. 관련 용어
  - IP(Internet Protocol)란?
    : NetworkID 와 HostID 라 불리는 숫자로 된 주소로 나타내는 방법
       * 10진수형태로 사용(0~255)
       * 32비트 길이로 구성/8비트씩 4개 필드(옥탯) 와 "." 으로 필드를 구분하여 나타냄
       * 가장 앞쪽의 8개비트를 기준으로 IP 대역을 클래스라는 것으로 구분(PC인식)
          ** A Class : 00000000.00000000.00000000.0000000X ~ 01111111.11111111.11111111.11111111
          ** B Class : 10000000.X.X.X ~ 
          ** C Class : 11000000.X.X.X ~

 

  - Gateway 란?
    : 한 네트워크에서 다른 네트워크로 들어가는 입구 역할을 하는 장치.
     근거리통신망(LAN)과 같은 하나의 네트워크를 다른 네트워크와 연결할 때 사용된다. 
     네트워크마다 데이터를 전송하는 방식이 다르기 때문에 게이트웨이가 필요하게 된다.

 

  - Broadcast IP 란?
    : 한 네트워크에서 그 대역의 마지막을 알려주는 IP. 
       * "255"로 표현

 

  - Host IP 란?
    : 한 네트워크에서 존재하는 PC 또는 Server를 가리키는 숫자 주소
      ※ 하나의 호스트는 하나 이상의 HostIP를 사용

 

  - SubNetmask 란?
    : 각각의 네트워크를 식별할 수 있는 마스크 값으로
      NetworkID(255)와 HostID(0)의 구분자 역할을 한다.

       * A Class : 255.0.0.0
       * B Class : 255.255.0.0
       * C Class : 255.255.255.0

 

3. 설정
   - 문서파일
     : /etc/sysconfig/network                                 - 기본 네트웍 설정파일
     : /etc/sysconfig/network-scripts/ifcfg-장치명     - 해당장치의 설정파일


   - Network 관리 명령어
     : #setup                                  - 전체설정 명령어
     : #system-config-network          - txt / Graphic 두 환경 모두 지원 명령어

 

 


 - Network CMD -


1. ifconfig
    a. 정의 : Network 장치의 정보를 확인하거나 설정할 때 이용


    b. 형식
      - #ifconfig [장치명] [상태정보]


    c. 상태정보
      - up/down        : 장치의 활성/비활성을 정의
      - IP Address     : 장치의 IP를 설정


2. ping
    a. 정의 : 다른 시스템의 네트웍(Host)이 사용 중인지 확인하는 경우 이용


    b. 형식
      - #ping [옵션] [대상(IP or Domain)]


       * 옵션 (리눅스용)
          - c : 패킷을 보낼 횟 수를 지정, 지정하지 않으면 Ctrl+C 로 정지해야함.
          - i : 테스트 간격의 초 수를 지정, 0.2초 미만인 경우 관리자 권한 필요
                (기본값 : 1초)
          - s : 패킷의 크기를 의미 (기본값 : 64바이트)
          - t : TTL 값을  수동으로 지정해서 보낼 때 사용
                (받는 쪽에서 확인이 가능)


     [ ex : 통신의 가능여부 확인 ]
      - #ping G/W                                      : Local 통신 가능 여부 확인
      - #ping 168.126.63.1                           : 외부 통신 가능 여부 확인

      - #ping kns.kornet.net                        : 외부 통신이 가능한 상태에서 DNS 서비스 동작 여부 확인

 


3. netstat
    a. 정의 : 네트웍과 관련된 정보를 확인할 때 이용


    b. 형식
      - #netstat [옵션]


    c. 옵션 (추가예정)
      - l : listening - LISTEN(응답대기) 상태만 출력

      - n : numeric - DNS 통신에 사용되는 이름이 아닌 IP 형식의 숫자타입으로 출력

- t : tcp - TCP 방식 소켓 통신만 출력

- u : udp - UDP 방식 소켓 통신만 출력

- p : programs - program 명칭(데몬)을 함께 출력

- a : all - 전체 출력, Default로 지정됨

- s : statistics - Network 통신 로그를 출력


        

4. nslookup
    a. 정의 : 네임서버에 원하는 Host 의 정보를 질의할 때 이용


    b. 형식
      - #nslookup [ Domain ]
      - #nslookup
          >Domain




- SELinux(Security Enhance Linux) -
  - 공개용 OS => Linux 
     -> 인식 : 보안성이 취약하다 -> 관리자들이 관리의 편의성때문에 보안설정을 잘 하지 않았기 때문..

     -> 해결방안 : 보안성이 뛰어나고 설치시 "강제" 옵션으로 설치하는 형태로 "SELinux" 이름을 가진 방화벽이 추가로 존재


      ※ 관리의 용의성과 보안과 반비례


 

  - 관련 명령어 (CentOS 6.X 에서는 명령어 X)
     #system-config-securitylevel

 

  - 관련 문서파일
     #vi /etc/sysconfig/selinux


    ※ 여러가지 서비스 설정 및 실습을 위해 추가 방화벽인 "SELinux' 부분은 비활성 상태로 진행할 예정이며,

        따로 한 강의를 통해 다루어 보도록 할 예정입니다.




- IP Alias -

1. CentOS 5.X 에서
ㄱ. 그래픽 환경에서
   "시스템 - 관리 - 네트워크" 메뉴에서 Sub Interface Card 를 추가하여 'eth0'를 이용한 새로운 장치를 IP 부여 후 등록


ㄴ. 텍스트 환경에서
   #cd /etc/sysconfig/network-scripts/ 에서 "ifcfg-eth0" 파일을 "ifcfg-eth0:1" 로 복사하여

   새로운 Device 를 추가 후 내용을 수정하여 Sub Interface Card를 손쉽게 추가가능



2. CentOS 6.X 에서

ㄱ. 그래픽 환경에서
   "시스템 - 일반 - 네트워크" 메뉴에서 Interface Card 를 선택 후 IP 수동 설정 및 "추가" 항목을 이용하여

    'eth0' Interface 에 Sub IP 부여가능


ㄴ. 텍스트 환경에서
   #cd /etc/sysconfig/network-scripts/ 에서 "ifcfg-eth0" 를 VI 로 열어 "IPADDR", "PREFIX", "BROADCAST" 항목을

    수정하여 새로운 Sub IP Address 를 손쉽게 추가가능


 ※ 단, 모든 Network 설정에 대해 수정이 완료되고 나면 "Network 데몬"을 재실행 후  정상적으로 적용될 수 있다.

AND

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

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

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

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 5.7
설치된 VMware Program : VM workstation 8.0

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


- Linux Daemon -

1. 정의

     - 프로세스에서 서비스를 동작하기 시키기 위해 메모리에 항상 상주하며 백그라운드 형태로

        존재하면서 서비스를 서포트하는 스크립트



2. 형식
  - #/etc/rc.d/init.d/[데몬명] [상태값]     -> 경로를 이용하여 파일실행 방법
  - #service [데몬명] [상태값]                 -> RedHat 계열 Linux 에서 지원하는 명령어 이용방법


  - 상태값
    * restart : 데몬을 종료 후 바로 시작
    * status : 데몬의 상태 정보 출력
    * start   : 데몬을 시작
    * stop   : 데몬을 중지
    * reload : 데몬을 실행한 상태에서 다시 적용시킴



3. Favorite Linux Daemon



 


4. Linux Daemon Type
   * inetd 타입 (Windows 에서의 "explorer.exe"와 유사한 환경)
    - 자주 사용되지 않아 프로세스를 많이 소비하지 않는 서비스를 하나의 데몬으로 관리하는 방법
      
    - ex : telnet, pop3, imap, rlogin, rsync, tftp 등 슈퍼데몬으로 관리


   * standalone 타입 (Windows 에서의 "iexplorer.exe"와 유사한 환경)
    - 자주 사용되며 프로세스를 계속 소비하도록 하는 서비스로써 각 서비스별로 각각의 데몬을 따로 관리하는 방법
      
    - ex : named, httpd, vsftpd, sshd 등 "3.Favorite Linux Daemon" 들이 모두 해당 방식으로 동작



5. Linux Daemon 경로 및 설명

    - "/etc/init.d/" 또는 "/etc/rc.d/init.d/" 경로내 데몬의 실행 스크립트 파일이 존재

    - 단, "/etc/rc.d/rc?.d" 경로를 확인하면 Run Level 에 따른 실행 스크립트 정보를

      확인시 "/etc/rc.d/init.d/" 경로가 원본으로 사용되는 것을 확인할 수 있음.

 

 


AND

[ Linux 특징 ]
* 확장자는 무관하다.

- Windows 에서 사용하는 확장자의 개념이 없으며, 파일명으로 사용된다.

* 권한을 가진다.

- 소유권(Ownership) 및 허가권(Permission)을 갖는다.

* 다중사용자 환경을 지원한다.

- 여러명의 사용자 및 관리자 계정을 이용하며 원격관리가 가능하다.

* 대/소문자를 구분한다.

- CapsLock 키의 유무에 따라 유의해야한다.

 


[ Prompt Info ]

 1. 정의 : 명령을 입력받아 실행될 수 있는 대기상태


 2. 종류 (Default Set)

- Windows : MS-DOS

- Unix : KornShell

- Linux : BashShell


 3. 구조

- MS-Dos :  { 파티션:\경로\> }

- KornShell : { #(관리자) or $(일반사용자) }

- BashShell : { [User(ID)@ServerName 경로(최하단) ]계정상태(#/$) }


 

[ Linux Directory 의 구조 ]
/ : 최상위 디렉터리. 모든 파일이나 디렉터리의 최상단에 존재하는 디렉터리

/boot : 부팅 정보에 관련된 파일들이 존재 (부트로더 및 커널정보파일 등)

/bin : 기본 명령어들이 존재 (쉘 포함)

/root : root 사용자(슈퍼유저)의 홈 디렉터리

/home : 사용자(root 이외)들의 홈 디렉터리가 존재 (사용자의 기본 홈 디렉터리)
           -> 설치시 해당 디렉터리가 기본 값 형태로 사용자 기본 홈 디렉터리로 지정
               ※ 설치 후 변경이 가능

/etc : 시스템 관리를 위한 파일이나 명령어들이 존재

/dev : 인터페이스(장치)들이 존재하는 디렉터리
         (ex : cdrom - /dev/cdrom, SCSI - /dev/sdX, IDE - /dev/hdX)

/lib : 언어들의 라이브러리 파일들이 존재

/mnt, /media : mount 를 이용하기 위한 디렉터리

/sbin : 시스템 관련 명령어들이 존재

/usr : 응용 프로그램들이 존재 (c:\program files)

/proc : 커널과 프로세스 정보가 존재하는 가상 시스템

/tmp : 임시 저장을 위한 공유 디렉터리(누구나 접속하여 쓸 수 있음)

/var : log 또는 mail 관련과 같은 자주 쓰이는 시스템 정보파일이 존재
        (c:\windows\system32)

 

 

[ Linux System Info CMD]

cpu 정보 : cat /proc/cpuinfo
pci 정보 : cat /proc/pci
사용중인 irq 정보 : cat /proc/interrupts
사용주인 dma 채널 : cat /proc/dma
사용중인 i/o 포트 정보 :cat /proc/ioports
현재 사용가능한 화일 시스템 :cat /proc/filesystems
현재 사용중인 메로리 : cat /proc/meminfo
현재 사용중인 파티션 :cat /proc/partitions
현재 사용중인 스왑 파티션 정보 : cat /proc/swaps
현재 사용중인 커널 버전 : cat /proc/version
현재 사용중인 드라이버 :cat /proc/devices
현재 사용중인 부트 이미지 : cat /proc/cmdline


 

[ Linux System Config CMD]
arch : CPU 모델
cal [11 2000] : 달력
clock : CMOS 설정 시간의 출력, 변경
date : 현재 시간
df [-h] : 연결되어 있는 파일 시스템의 용량
du [-sh] : 파일과 디렉토리별로 할당되어 있는 용량
free [-m] : 메모리 용량 (M:Mbyte, K:Kbyte)
fsck -a : 파일 시스템의 검사도중 발견된 에러를 자동 복구
fsck -r : 파일 시스템의 검사도중 에러가 발견되면 복구 여부확인
fsck -s : 파일 시스템을 순차적인 방법으로 검색
fsck -v : 파일 시스템의 검색 중 각종 정보를 보여줌
fsck -n : 파일 시스템의 실제검사 작업을 안함
uname [-a] : 커널 버전과 운영체제 정보
top : 진행중인 프로세스의 CPU 점유율
hostname : 사용중인 시스템 이름
ps [aux] : 진행중인 프로세스 정보
ex) ps -ef | grep ftp - ftp 프로세스 실행 가입자
pstree : 진행중인 프로세스 정보를 트리 형태로 출력
tee : 명령 수행의 결과를 표준출려과 파일로 동시 저장
nohup : 지정한 명령어를 로그아웃시에도 계속 수행하도록 한다.
ex)nohup 명령어 [ 명령어 인자 ]
lprm : 프린트 JOB 삭제
lockfile : 지정한 화일에 대한 세마포어 화일을 만든다.
lsdev : 현재 시스템에 연결되어 있는 하드웨어에 관한 입출력 정보, IRQ 값 등을 출력
fuser : 지정한 파일을 사용하고 있는 프로세스를 보여준다.
fdformat : 플로피디스크 포맷( /dev/fd0 옵션)
env : 현재의 환경변수 설정상황을 보여준다
killall [DM] : [DM]이름의 데몬 죽이기

mysqladmin -p reload du --max-depth=1 디렉토리 크기 아는법

ipchains -F : 방화벽초기화(아무나 접속하게 만듬 )
ipchains -P forward REJECT : 포워딩 거부정책
ipchains -A forward -s 192.168.1.0/24 -j MASQ : 마스커레이드 허용정책
ipchains -L : 접속환경 보여줌

====================================================================================================
/sbin/ifconfig : 원격관리 환경에서 ifconfig 보여줌
cat /proc/interrupts : IRQ 표기
cat /proc/ioports : I/0 포트 표기
ntsysv : 시작프로그램 설정(chkconfig 과 유사) 
 

 

[ Linux User Info CMD]
who : 현재 시스템 사용중인 사용자들 이름, 터미널 번호, 로그인 시간
users : 현재 시스템 사용중인 사용자들 이름
finger [user_id] : 현재 시스템 사용중인 사용자들의 신상 명세
w : 현재 시스템 사용중인 사용자 이름과 작업 종류
id : 자신의 user id와 group id
whoami : Who Am I?

 

 

[ Linux User Quota CMD]
quotaoff -avug : quota종료
quotacheck -avug : quota 사용파일 확인
quotaon -avug : quota시작
repquota [/device] : device의 quota 정보확인
ediquota : quota 수정 (-u:user, -p:속성복사)


AND

원격 접속 프로그램으로 가장 널리 퍼져있고, 무료 프로그램인 puTTy를 설정해보도록 하겠습니다.
많은 기능들이 있지만 초보자 분들도 쉽게 설정할 수 있는 부분을 골라서 포스팅하겠습니다.

[ 그림1 ]


세션 연결설정에 대한 부분입니다. 따로이 설명 드릴 것도 없죠?? 설명글은 그림 안쪽에 첨부하였어요^^ (센스쟁이 누스!!)
부가적으로 옵션을 더 설정할 수도 있고, 같은 프로토콜이나 서비스라도 임의로 포트를 변경하여 설정한 서버도
있으므로 확인을 잘 하시고 내용을 입력하시면 됩니다.

[ 그림2 ]


모양에 대한 부분인데요... 누스처럼 도스에 익숙하셨던 분이라면 커서가 깜박거리는 걸 좋아하시면 체크박스에 체크!!!
아니면 말구요 ㅎㅎ 그다음은 자신이 원하는 폰트와 폰트 크기를 지정하시면 됩니다^^

[ 그림3 ]


변환설정에 대한 부분입니다. 한글을 지원하는 운영체제가 많아 일반 사용자들도 참 편리해졌어요^^
최초 설치 후 내용이 CP949 로 설정되어 있으나 UTF-8 로 옵션을 바꾸어 주셔야 한글내용이 정상적으로 출력됩니다.

[ 그림4 ]  


폰트 색상에 대한 부분입니다. 자신이 원하는 배경색과 폰트 색상을 지정하시면 되구요. 변경 버튼을 클릭하신 후
내용을 설정하실 수 있습니당. 색상은 RGB 색상을 지원하니 쉽게 찾으실 수 있을 겁니다^^

이상으로 간단한 설정을 알려드렸구요. 반드시!!!!!!!!!! 모든 내용을 설정하셨다면.. 최초 세션화면으로 돌아가서
자신만의 설정값을 꼭 저장!!!저장장!!!! 하시기 바랍니다. 그래야 다음에 또 바꿔야하는 번거로움이 없어요 ㅎㅎ

이만 puTTy 설정에 대한 포스팅은 줄이겠습니당 ㅎㅎ 으흐흐흐!

AND

[ 시스템 설정을 위한 내용 ]
설치된 CentOS 버전 : CentOS 5.8
설치된 VMware 버전 : VM workstation 8.0.1

 

[ VMware Image 설정하기 ]
1. VMware 의 HOME 화면에서 "Create A New Virtual Machine" 을 클릭

 

2. 출력된 대화창에서 "Custom(Advanced)" 선택 - 사용자 임의대로 설정하기 위해서


3. Virtual machine hardware compatibility 부분에서 "Workstation 8.0" 선택


4. OS 설치 방법 부분에서 "I will install the operationg system later." 선택

     - iso 이미지를 그대로 하면 Default로 영어 버전과 해상도가 큰 형태로 설치 되므로


5. 설치 할 운영체제 선택
   -> Linux / CentOS
       (32비트 선택 - i386 아키택쳐로 설치하므로)

 

6. Image Name : LinuxBT
    설치될 경로   : D:\3_평일\자기시간\Battle


7. Processor : One(싱글코어 형태로 설정)


8. Memory : "1024" MB 로 설정


9. NAT(Network Address Translation) : 사설IP로 할당


10. HardWare I/O Adapter Type : LSI Logic (Recommended)


11. Create a new virtual disk - 새로운 디스크를 추가하여 이미지로 설정


12. HDD Type : SCSI (직렬 타입)

 

13. HDD 용량 : 15GB


14. HDD 의 이름 설정 : 수정없이 바로 Next
     (VM-ware 에서 인식할 수 있는 파일 확장자이므로)


15. 상세정보 페이지를 출력시켜주며, 수정사항이 있으면 "Back"으로 돌아가 수정하고, 수정사항이 없는 경우 "Finish"를 클릭

 

16. 설정된 image 에서 "CD/DVD ..." 메뉴 선택 후
     iso 설치 CD 이미지(1번)를 삽입

 

 

 

 

 


[ Linux(CentOS) 설치하기 ]
1. 그래픽 모드 설치
    -> "boot : " 부분에서 그냥 엔터


2. CD Found : Skip (iso를 이용해서 설치 할 경우) / 설치를 시작할 화면에서 바로 'Next'을 클릭

 

3. 사용 언어 : 한국어


4. 키보드 : U.S. 영어 


5. 15GB HDD 인식 : 초기화 (Yes)


6. 사용자 레이아웃 만들기

 

-> 하드디스크 파티션 지정

        (6개 순서대로 진행 : /, /boot, /usr, /var, swap, /home)

 

  ㄱ. 일반 파티션 설정하기

 

  ㄴ. swap 파티션 설정하기

 

-> 하드디스크 파티션 설정 확인하기

   ㄱ. "Free" 공간 확인 및 각 파티션별 용량을 확인

 

   ㄴ. "/" 파티션을 Max 로 수정하기 위해 "/" 파티션 선택 후 용량을 수정

 

 

-> 모든 파티션 설정이 완료된 후 설정 내용을 확인하고 다음으로 진행 

 

7. GRUB Boot Loader : Default


8. Network Device : Default 

 

9. 지역 설정 (Default : 아시아/서울) - 체크박스 해제 : 시간을 GMT와 맞추지 않도록 하기 위해서


10. root 비밀번호 지정 : n00$e!

    -> 6자 이상 사용 가능

 

11. 패키지 : 모두 선택(스크롤바 아래도 모두 체크할 것), 지금 사용자 설정 선택 후 다음


    -> "게임과 오락", "사무/생산성" 체크 해제 후 Next

 

12. 모든 설치정보가 완료되면 설치를 진행

 

13. 설치가 완료되면 [재부팅]

 

[ Linux(CentOS) 기본 환경 설정하기 ]
0. "환영합니다" 메세지에서 기본 설정으로 진행

 

1. 방화벽 : 모두 체크

 

 -> 출력된 대화창에서 'Yes'


2. SELinux : 강제 (설치완료 후 변경할 예정)

 

3. KDump : 그냥 패스 

 

4. 날짜 및 시간 : 현재 시각 확인 후 변경


5. 사용자 생성
     - 사용자명 : noose
     -   이름    : master
     -    PW     : n00$e!


6. 사운드 : 그냥 패스

 

7. 추가 CD : 해당내용없음 -> 완료

 


8. 설치 완료 후 사용자(root) 접속의 확인 

 

 

9. 로그인이 완료된 후 바탕화면 > 마우스 우클릭 > 터미널을 열기

 

 -> 업데이트 : 시스템의 최신화
     #yum -y update

 

10. 새로운 터미널에서 root 와 noose 사용자의 비밀번호 수정
   -> #passwd // #passwd noose 

 

AND

CentOS 운영체제의 로그파일은 기본적으로 "/var/log" 디렉토리에 위치합니다.
각각의 상세한 로그 정보는 아래 내용을 참고해서 시스템을 운영하셔요^^

 

 * /var/log/maillog

   - 메일과 관련된 로그들이 기록


 * 
/var/log/messages

  - 메일, 뉴스등을 제외한 전반적인 시스템의 모든 로그를 기록


 * 
/var/log/secure

  - 사용자들에 대한 접속을 기록


 * /var/log/lastlog

  - /etc/passwd 내 사용자들의 마지막으로 로그인한 정보를 기록 (lastlog 명령어로 확인 가능)


 * /var/log/boot.log

  - 부팅시 서비스 데몬들의 실행 상태를 기록하는 파일


 * /var/log/dmesg

  - 시스템이 부팅할 때 출력되는 메시지들이 기록 (dmesg 명령어로 확인 가능)


 * /var/log/cron

  - crontab 과 관련된 메시지들이 기록 (예약 스케쥴 작업이 정상적으로 실행되는지 확인 가능)


 * /var/log/wtmp

  - /etc/passwd 사용자들의 접속한 정보를 기록 (last 명령어로 확인 가능)

     ※ 특정 사용자 정보를 확인하려면 "last 사용자명" 을 입력하여 확인 가능(가장 최근 순으로 10개까지만 출력)


 * /var/log/xferlog

  - FTP 서버의 데이터 전송관련 로그를 기록 (불법파일이 전송 여부 및 전송상황의 모니터링 가능)


또한, CentOS는 기본적으로 로그관리를 위한 프로그램으로 "syslogd" 라는 데몬을 제공하고 있습니다.

해당 데몬의 환경설정을 위해 정의된 파일은 "/etc/syslog.conf" 입니당.

 

/etc/syslog.conf 파일의 내용을 확인해볼게요^^

서비스 시스템, 메시지 종류와 같은 내용들이 출력되지요!

 

[ 서비스 시스템 ]

auth, auth_priv, cron, mail, daemon, kern, lpr, news, syslog, user, uucp, local0~local7

 

[ 메시지 종류 ]

- emerg(emergency)        : 시스템 패닉(종료)

- alert(alert)                    : 치명적인 에러. 즉시 알려야 하는 내용

- crit(critical)                  : 치명적인 에러

- err(error)                      : 에러

- warn(warnning)            : 경고 메시지

- notice(notice)               : 알림 메시지

- info(infomation)             : 정보

- debug(debug)               : 디버그

- none(null)                    : 모든 메시지 무시 

- logrotate                       : 로그를 정기적으로 잘라서 보관

  - 기본적으로 설치되어 있고 "/etc/cron.daily" 디렉토리에 포함되어 있어서 하루에 한번 실행되요!

    ( 환경설정파일 : /etc/logrotate.conf )

AND

명령프롬프트 상태에서 입력 후 실행했던 모든 명령들은
히스토리 리스트 버퍼에 스택으로 저장되게 되죠!!

이 기능은 반복하여 입력하거나 명령을 수정할 때 상당히 유용하게 쓰이는대요.
사용법은 방향키 커서를 위/아래를 누르면서 이전 사용한 것과 그 후 사용한 것 등으로
사용 가능하죠.

히스토리 파일은 각 사용자의 홈 디렉토리에 ".bash_history" 라는 이름으로 저장되며,
쉘 실행 중에는 메모리에만 명령어 히스토리를 기억하고 있다가 해당 사용자가 로그아웃시
".bash_history" 파일에 저장을 하게 됩니다.

[ history와 관련된 환경 변수 ]
1) HISTSIZE : 히스토리 스택의 크기를 정의. 단위는 명령의 개수.
2) HISTFILESIZE : 실질적인 히스토리파일의 크기.
3) HISTFILE : 히스토리 파일의 위치를 정의.
4) HISTCONTROL : 중복되어지는 명령에 대한 기록 유무를 지정하는 변수.

[ "!" 를 이용한 history 응용 ]
- "느낌표(!)" 를 이용하여 기존에 실행했던 history에 남은 명령을 실행가능하다.

!! : 마지막으로 실행했던 명령문을 실행.
!n : n번째 실행한 명령문을 실행.
!string : 가장 최근에 'string(문자열)'으로 시작하는 명령문을 실행.

[ history 응용 ]
명령프롬프트 상태에서 "Ctrl + r" 키 조합을 누르면 검색 가능한 프롬프트가 출력됩니다.
이 때, 특정한 문자를 입력하면 그 문자로 수행한 가장 최근 명령을 화면에 출력해줍니다.

AND