ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [리눅스마스터] 3.네트워크 및 서비스의 활용
    카테고리 없음 2022. 8. 11. 00:24

     

     

    PHP 설치하기

    사전 준비사항

     1. 관련 라이브러리 설치

      - libxml2, libxml2-devel 패키지가 설치괴어 있어야 한다.

      # yum install libxml2

      # yum install libxml2-devel

     2. configure 작업

      - libmysqlclient_r 오류가 발생할 경우 MySQL 설치 디렉터리로 이동한 후 오류와 관련된 심볼릭 링크 파일을 생성해야 한다. 참고로 PHP 7 버전 설치에서는 필요하지 않다.

      [해결방법]

      #cd /usr/local/mysql/lib

      # ln -s libmysqlclient.a libmysqlclient_r.a

      # ln -s libmysqlclient.so.20.3.18 libmysqlclient_r.so

    설치 절차

     1. 웹 데몬 정지

      - HTTP 서버를 운영 중이라면 해당 데몬을 중지시킨다.

      # killall httpd

    2. 이전 버전의 php 검색 및 삭제

      [검색 예]

      # rpm -qa |grep php

     [제거 예]

      # rpm -e php --nodeps

    3. 소스 파일의 압축 해제

      # tar Jxvf php-7.4.11.tar.xz

    4. 압축 해제 후 생성된 디렉터리로 이동

      # cd php-7.4.11

    5. 환경 설정 

      # ./configure --with-apaxs2=/usr/local/apache/bin/apxs →

       - --with-apaxs2 는 PHP 가 아파치데몬에 DSO 모듈로 로딩되도록 하기 위해서 관련 실행 명령어인 apxs 의 위치를 지정하는 것

      --with-config-file-path=/usr/local/apache/conf

      - --with-config-file-path 는 php.ini 파일의 경로를 지정하는 옵션으로 php 설치가 끝난 후에 해당 디렉터리 내에 php.ini 를 복사해두어야 한다.

      --with-mysqli=/usr/local/mysql/bin/mysql_config

      --with-pdo-mysql=/usr/local/mysql

     

    php 연동 여부 확인 : phpinfo()

     

     

     

    Proxy

    Proxy 서버

    - 네트워크 속도가 느린 환경에서 보다 빠른 인터넷을 이용하기 위해 사용한다.

    - 자주 방문하는 사이트의 정보를 저장 하는 일종의 캐시 서버

    - 사용자들이 동일한 사이트에 접속할 경우, 서버에 저장된 데이터 정보를 전달함으로서 처리 속도를 높일 수 있음

    - 웹 사용자들이 무조건적으로 이용하게 하는 투명 프록시를 구성했을 경우, 네트워크 보안을 유지할 때에서 사용할 수 있다.

    squid

    - 리눅스에서 프록시 서버 프로그램으로 squid를 주로 사용한다.

    - 고성능 웹 캐싱 서버로 HTTP, Gopher, FTP 등 지원

    - 클라이언트에서 프록시 서버를 사용하기 위해 웹 브라우저에서 별도로 설정해야함.

    - 클라이언트는 환경 설정 영역에서 '프록시 서버 수도 설정' 관련 부분에 프록시 서버 주소를 입력하고, 포트 번호를 적으면 사용 가능.

    - iptables 기반으로 동작하는 클라이언트라면 간단한 룰 셋 적용을 통해 별도의 설정이 필요 없는 투명 프록시를 구성할 수 있음

    - yum install squid 로 설치할 경우 환경 설정 파일은 /etc/squid/squid.conf 에 위치한다.

    - 환경 설정 후 systemctl start squid.service 를 실행하면 프록시 서버를 사용할 수 있음

    squid.conf 파일의 주요 설정

    - http_port 3128 : squid 프록시 서버의 포트 번호를 지정하는 항목으로 기본 포트 값은 3128

    - cache_dir ufs /var/spool/squid 100 16 256 : 캐시 정보가 저장될 경로를 지정해주는 항목으로 ufs 는 squid 의 저장 포맷이고, /var/spool/squid 가 관련 디렉터리이다. 100 → 저장되는 캐시 정보의 크기 (MB). 16 → 캐시가 저장되는 첫 번째 하위 디렉터리 개수. 256 → 두 번째 하위 디렉터리 개수

    프록시 서버의 접근 제어

    - squid.conf 파일은 acl (access control list) 항목을 이용해서 접근 제어 가능

     - acl 을 이용하여 특정 ip 주소, 네트워크 대역, 도메인 등을 별칭 (alias) 형태로 지정

    - http_access allow 나 http_access deny 를 이용하여 접근 제어

     [사용법]

     1. acl 설정

      - acl 별칭 src IP 주소/넷마스크값

      - acl 별칭 dst IP 주소/넷마스크값

      - acl 별칭 srcdomain .foo.com

      - acl 별칭 dstdomain .foo.com

    2. acl 에 대한 접근 제어

      - http_access allow 별청

      - http_access deny 별칭

     [사용예]

     1. 특정 대역만 사용 허가 설정

      - acl posein src 192.168.4.0/255.255.255.0

      - http_access allow posein

      - http_access deny all

     2. 특정 대역만 사용 거부 설정

      - acl cracker src 192.168.3.0/255.255.255.0

      - http_access deny cracker

      - http_access allow all

     3. 특정 도메인으로 들어오는 사용자들만 프록시 서버 사용 거부 설정

      - acl cracker srcdomain .cracker.org

      - http_access deny cracker

      - http_access allow all

     4. 특정 도메인으로 들어오는 사용자들만 프록시 서버 사용 허가 설정

      - acl example srcdomain .example.com

      - http_access allow example

      - http_access deny all

     5. 프록시 사용자들의 특정 사이트로 접속 막기

      - acl exploit dstdomain .exploit-db.com

      - http_access deny exploit

      - http_access allow all

     

     

     

    DHCP (Dynamic Host Configuration Protocol) 관리

    개요

    - DHCP 서버란 클라이언트에게 자동으로 IP 주소, Gateway 주소, Name Server 주소 등을 할당해주는 서버

    - 보통 가정에서 ISP (Internet Service Provider) 업체를 통해 인터넷 서비스를 이용하는 경우에 기본적으로 사용되고 있다.

    - DHCP 는 IPv4 체계의 IP 주소 고갈 문제를 해결할 수 있고, 하나의 인터넷 회선을 공유하는 매스커레이드 환경에서 자동으로 클라이언트에게 IP 주소를 할당해줄 수 있다. 또한 하드 디스크가 없는 원격 호스트에서 이더넷 카드로 부팅할 때 사용할 수도 있다.

    [관련 프로토콜]

    프로토콜 설명
    BOOTP
    (Bootstrap Protocol)
    초기 적재 통신 규약이라고 부른다. 공용의 X 터미널과 같이 하드 디스크가 없는 장치에 IP 주소 등을 할당하고 관리하기 위해 개발된 프로토콜.
    UDP 를 사용하고, 유닉스 초기 시절에 TFTP 와 함께 사용되었다.
    DHCP 동적 호스트 설정 통신 규약이라고 부른다. BOOTP 와 마찬가지로 시스템에 IP 주소 등을 자동 할당 및 관리하기 위해서 사용된다. RFC 1541 에 규정되어 있다. 
    BOOTP 와 차이점은 할당된 IP 주소에 임대기간을 설정할 수 있다

    DHCP 서버의 설치 및 운영

    1. /etc/dhcp/dhcp.conf

     - DHCP 서버의 환경 설정파일로 yum 이나 rpm 패키지로 설치하면 이 파일에 내용이 존재하지 않는다.

     - 'rpm -ql dhcp' 명령으로 dhcpd.conf.example 을 찾아서 복사하거나 이름을 바꿔 생성해야 한다.

    2. /usr/share/doc/dhcp-*/dhcpd.conf.example

     - dhcpd.conf 파일의 실질적인 설정 내용이 들어있는 일종의 샘플 파일

     - 이 파일을 /etc/dhcp/dhcpd.conf 파일로 복사하면 된다. (* 은 버전)

     3. DHCP 서버의 시작

     - # systemctl start dhcpd.service

    /etc/dhcp/dhcpd.conf 의 주요 설정

     - 클라이언트에게 할당할 주소 대역은 subnet 및 netmask 선언 후에 { } 안에 필요한 항목들을 지정하면 된다.

     - 주요 항목을 별도로 적으면 모든 네트워크 대역에 적용된다.

     - 특정 호스트에 고정적인 IP 주소를 할당하려면 'host 호스트명 { }' 형태로 선언하면 된다.

    option domain-name "example.org";

    option domain-name-server ns1.ezample.org, ns2.example.org

    default-lease-time 600;

    max-lease-time 7200;

    log-facility local7;

    submet 192.168.1.0 netmask 255.255.255.0 {

        range 192.168.1.2 192.168.1.254;

        option domain-name "posein.org";

        option domain-name-servers ns1.posein.org;

        option routers 192.168.1.1;

        option broadcast-address 192.168.1.255;

        default-lease-time 600;

        max-lease-time 7200;

    }

     

    항목 설명
    range 클라이언트에게 할당할 IP 주소를 시작 주소와 마지막 주소를 기입한다
    range dynamic-bootp DHCP 클라이언트 뿐 아니라 BOOTP 클라이언트도 함께 할당할 경우에 사용한다
    option domain-name 도메인명을 지정할 때 사용
    option domain-name-servers 네임 서버를 지정할 때 사용하는 항목으로 도메인 또는 IP 주소를 기입한다
    option routers 게이트웨이 주소를 지정할 때 사용
    option broadcast-address 브로드캐스트 주소를 지정할 때 사용
    default-lease-time 임대를 요청하는 클라이언트가 특정한 만료 시간을 요청하지 않았을 경우 할당되는 시간으로 단위는 초이다
    max-lease-time 임대를 요청한 클라이언트가 IP 주소를 가지고 있을 수 있는 최대 시간으로 단위는 초이다. Dynamic Bootp 는 적용받지 않는다.
    log-facility syslog 에 전달한 로그의 facility 를 지정
    max-lease-time DHCP 서버를 사용하는 모든 네트워크 설정되는 도메인명과 도메인 네임 서버, 임대 요청 관련 시간 설정

    host posein_pc {

        hardware ethernet 08:00:07:26:c0:a5;

        fixed-address 192.168.1.22;

    }

    → 맥(MAC) 주소가 08:00:07:26:c0:a5인 시스템에는 192.168.1.22 번 IP 주소를 할당한다

     

     

     

    setfacl

    개요

    - Set File Access Control Lists

    - 파일이나 디렉터리에 설정된 접근 권한 리스트를 설정하는 명령

    - root 사용자만 사용 가능

    - 리눅스 기본 허가권의 대상이 소유자, 그룹, 다른 사용자로만 지정할 수 있는데 그 한계를 극복하기 위해 ACL 을 설정하는 명령

    주요 옵션

    - -m : 권한을 지정하거나 수정

    - -x : 권한 삭제

     - -R : 하위 디력터리와 파일까지 권한 변경

    - -b : 권한 및 mask 등 지정한 권한 모두 제거

     

     

     

    웹 관련 서비스

    Apache 2.x

    - 하나의 프로세스가 다수의 클라이언트 요청 처리 -> MPM

    주요 MPM 모듈

    - prefork : 서비스 요청이 많게 되면 프로세스 수 증가

    - worker : 초기에 시작하는 프로세스의 개수 지정, 페이지 요청 들어오면 스레드로 처리하는 방식. 스레드수 초과할 경우 새로운 자식 프로세스 생성

     

     

     

    httpd.conf

    개념

    - 아파치 웹 서버의 기본적인 설정을 담당하는 파일

    - 소스로 설치했을 경우 /usr/local/apache/conf 디렉터리 안에 위치

    설정 파일 내부에서의 문법

    - ServerRoot "/etc/httpd" : 웹 서버가 설치된 디렉터리를 나타낸다.

    - ServerAdmin "root@mail.com"

    - ServerName "www.httpd.com:80" 

    - DocumentRoot "/etc/httpd" : 웹 문서가 위치하는 디렉터리를 나타낸다.

    - LoadModule :  개인 홈페이지 사용자를 위해 httpd.conf 파일에서 관련 모듈을 활성화 하고자 할 때

    userdir

    -userdir의 주 환경 설정 파일을 설정해줘야한다.

    - 아파치 웹 서버의 환경 설정 파일에서 일반 사용자의 웹 문서가 위치하는 디렉터리를 변경할 때 사용하는 항목

    - 아파치 서버 사용자들이 외부에 공개하고자 하는 html 문서들을 저장하기 위한 용도

    -/etc/httpd/conf.d/userdir.conf (환경설정파일)

    - userdir.conf 파일을 이용하여 특정 사용자의 userdir 디렉토리 사용여부를 허용 및 거부 가능

    - Q. 아파치 2.2 버전을 소스 파일로 설치하여 웹 서버를 운영 중이다. ihduser 사용자가 개인 홈페이지를 운영할 수 있도록 관련 디렉터리 명을 알려달라고 요청했다. -> 이 설명에 해당하는 관련 파일명과 항목은? httpd-userdir.conf / UserDir

    AddType

    - httpd.conf 파일에 php 확장자를 가진 파일을 해석할 수 있도록 설정하는 과정

    - 예) AddType application/x-httpd-php .php .html .htm .php5

    - 예) AddType application/x-httpd-php-source .phps

    주요항목

    [Options 항목]

    항목 설명
    NONE 어떤 옵션도 이용할 수 없으므로 모든 접근 거부
    ALL MultiViews 옵션을 제외한 보든 옵션 부여 (기본값)
    includes 서버 측의 추가적인 정보 제공(SSI; Server Side Includes)
    Indexes URL 이 지정된 디렉터리에 index.html 과 같은 지정된 파일이 없을 경우 해당 디렉터리의 파일 목록을 보여주는 옵션
    FollowSymLinks 디렉터리의 심볼릭 링크 사용 허용
    ExecCGI CGI 스크립트를 실행할 수 있도록 허용
    IncludesNOEXEC SSI 는 허용하지만 #exec 명령과 CHI 스크립트 #include 불허
    MultiViews ALL 옵션이 설정 되었을 때만 지정된 목록의 multiviews를 허용하는 것
    ㅠ사한 파일 이름을 찾아주는 기능 실행
    예) index  라고만 입력하더라도 index.* 를 찾아서 보여줌

    indexes

     

     

    dns https://starrykss.tistory.com/1813

    DNS (Domain Name System)

    개요

    - 호스트의 도메인 이름을 IP 주소로 바꾸거나, 그 반대의 변환을 위해 개발됨

    - DNS 서버 : IP 주소 기반의 인터넷 체계에서 도메인명을 기반으로 이용하려면 필수적으로 구성해야 하는 것. 

    - DNS 서버를 운영하기 위해서는 bind 라는 프로그램을 설치하고 named 라는 데몬을 실행하면 된다.

    DNS 서버의 종류

    - Primary Name Server = Master DNS

    - Secondary Name Server = Slave DNS

    - Caching Name Server = Caching DNS

        : 관리하는 도메인 없어도 리졸빙 (resolving) 만을 위해 구성하는 서버. 도메인에 대한 리졸빙 결과를 저장하고 서버에 기록된 정보에 대한 요청이 들어오는 경우 직접 조회하지 않고 바로 응답해주는 역할 수행

    DNS 서버 프로그램 : BIND ( Berkeley Internet Name Domain)

    - bind : 가장 널리 쓰이는 DNS 서버 프로그램. ISC (Internet Systems Consortium) 에서 DHCP 서버 프로그램과 함께 공개 소프트웨어로 배포되고 있다. named 라는 이름의 데몬을 사용한다

    - 레드햇 계열 리눅스는 bind, bind-utils, bind-libs 세개의 패키지로 배포되고 있다.

    bind 관련 파일 및 디렉터리

    - /etc/named.conf : DNS 서버의 전반적인 환경 설정을 담당하고 서버에서 사용하는 zone 파일을 지정한다. named 데몬의 설정파일

    - /var/named : named.ca 를 비롯하여 사용자가 선언하는 zone 파일 등이 위치하는 디렉터리

    /etc/named.conf 파일

    - 주석문과 구문으로 구성되어 있다.

    - 구문에는 options, logging, controls, zone, acl, view, key, masters, server 등 존재

    - 각 구문은 { } 로 둘러싸고 끝날 때에는 세미콜론 사용

    - include 지시자를 선언하여 별도의 파일에 추가 정의할 수 있음

    1. options 구문

     - listen-on port 53 { 127.0.0.1; }

      → DNS 서버의 포트 번호인 53 번 포트에 접근할 수 있는 호스트를 지정하는 항목. 

     - listen-on-v6 port 53 { ::1; };

      → DNS 서버의 포트 번호인 53번 포트에 접근할 수 있는 호스트를 지정하는 항목. IPv6 주소 기반 설정 시 사용. IPv6 주소 기반의 접근 제어를 사용하지 않는다면 주석처리하거나 지우도록 한다.

     - directory "/var/named";

      → 존 파일이 위치하는 디렉터리명 명시

     - dump-file "/var/named/data/cache_dump.db"; 

      → named 는 정보가 갱신될 때 dump 파일로 저장하는데, 그 덤프 파일이 생성될 위치와 파일명을 지정

     - statistics-file "/var/named/data/named_stats.txt";

      → 네임 서버의 통계 파일을 생성할 위치와 파일명 지정

     - memstatistics-file "/var/named/data/named_mem_stats.txt";

      → 네임 서버의 메모리 통계 파일을 생성할 위치와 파일명 지정

     - forward (only|first);

      → forwarders 옵션과 함께 사용. only 는 자신에게 들어온 도메인 질의를 지정한 다른 서버로 넘기도록 하는 것으로 다른 서버가 그에 대한 응답이 없을 경우 자신도 그 질의에 응답하지 않는다. first 는 타 서버에 응답이 없을 때 자신이 응답하도록 할 때 설정

     - forwarders { 네임서버주소1; 네임서버주소2; ... };

      → 도메인에 대한 질의를 다른 서버로 넘길 때 사용하는 옵션. 복수 형태 가능. 세미콜론으로 구분

     - allow query { 192.168.0/24; };

      → 네임 서버에 질의할 수 있는 호스트 지정. 위와 같이 지정하면 192.168.0.0 네트워크 주소 대역에 속한 호스트만이 질의할 수 있다.

     - allow-transfer { 192.168.0/24; };

      → zone 파일의 내용을 복사할 대상에 제한을 걸 때 지정. 이 항목을 명기하지 않았을 경우 제한 없이 zone 파일을 복사 할 수 있음. none 이라고 설정하면 모든 호스트를 제한할 수 있다.

      - datasize 512M ;

      → DNS 관련 정보를 캐싱을 하는데 사용하는 메모리를 제한할 때 사용

     - recursion yes;

      → 하위 도메인에 대한 검색 가능 여부를 지정하는 항목

    2. acl 구문

     - ACL (Access Control List) 의 약자로 여러 호스트를 하나의 명칭으로 지정할 때 사용

     - 지정한 이름은 options 구문의 allow-query, allow-transfer 등에 사용 가능

     - acl 구문의 선언은 options 구문 이전에 해야 한다.

     - acl 에서 사용 가능한 주소 매칭 이름

    매칭 이름 설명
    any 모든 호스트를 나타낸다.
    none 어떠한 호스트도 거부한다.
    localhost 시스템에 부여된 IPv4 및 IPv6 주소를 매칭시킨다.
    localnet 시스템에 부여된 IPv4 및 IPv6 네트워크의 모든 호스트를 매칭시킨다.

    3. zone 구문

    - 도메인을 관리하는 DB 파일인 zone 파일을 지정한다.

    - 기본적으로 루트(.) 도메인 서버에 대한 정보 파일인 named.ca 에 대한 선언이 되어 있고 추가적으로 localhost, localhost. domain 등에 대한 존 파일 선언이 되어 있다.

    - named.ca 항목을 지우면 리졸빙이 불가능하므로 주의해야 함

    - CentOS 7 에서는 /etc/named.conf 파일의 복잡해지는 것을 막기 위해 include 지시자를 사용해서 root zone 파일 관련한 설정을 제외한 zone 구문 자체를 /etc/named.rfc1912.zones 라는 별도의 파일에서 설정하도록 권장하고 있다. 따라서 이 파일에 zone 파일과 reverse zone 을 추가로 선언하면 된다.

    - zone 파일 : 도메인에 대한 질의 시 IP 주소로 알려주는 역할 수행

    - reverse zone 파일 : IP 주소에 대한 질의 시에 도메인을 알려주는 역할 수행. reverse zone 파일을 사용하지 않으면 IP 주소에 대한 도메인이 질의가 되지 않는데, 특정 사이트에서는 이러한 경우 차단 하여 메일이 거부될 수 있다.

    - reverse zone 파일을 생성하지 않을 경우 IP 주소에 대한 도메인 조회가 불가능하다.

    - 기본 형식

    zone "도메인명" IN {

             type (master|slave|hint);

             file "zone 파일명";

    };

    항목 설명
    zone 도메인명 자리에 설정하려는 도메인 이름을 기재
    reverse zone 파일에 대한 설정은 맨 마지막 주소를 제외하고 "50.247.203.in-addr.arpa" 형식으로 기재
    물론 reverse zone 파일에 맨 마지막 IP 주소를 생략할 경우 전체 IP 주소를 역순으로 기재해도 됨
    zone "linux.co.kr"
    zone "50.247.203.in-addr.arpa"
    zone "15.2.0.10.in-addr.arpa"
    type DNS 서버의 종류를 나타냄
    master : Primary, slave : Secondary, hint : 리졸빙을 위한 root zone 서버
    type master;

    type slave;
    masters { 203.247.40.243; }
    file 사용하려는 zone file 명 기재
    zone 파일은 "도메인명.zone" 로 설정
    reverse zone 파일은 "도메인명.rev" 로 설정
    file "linux.zone";
    file "linux.rev";

    - hint : 루트 도메인(.) 정의할 때 사용

    - zone "." IN {

                             type hint;

                        file "named.ca";

      }

    - master : 1차 네임서버 정의할 때 사용

    - zone "linux.or.kr" IN {

                             type master;

                        file "linux.zone";

      }

    - zone "12.168.192.in-addr.arpa" IN {

                             type master;

                        file "linux.rev";

      }

     

    zone 파일 설정 일부. 관리자 계정이 ihduser, 도메인이 ihd.or.kr 일 경우 괄호는 ihduser.ihd.or.kr.

     

    reverse zone (역존)

    - IP 주소를 도메인으로 변경하는 역할

    - 이름은 네트워크 ID 를 역순으로 나열하고, in-addr.arpa 를 붙인다.

    IP 주소가 192.168.12.22이고, 도메인이 ihd.or.kr 이고, 리버스 존 파일을 지정할 때 괄호는   12.168.192.in-addr.arpa

    - PTR : 리버스 존 파일에만 사용하는 레코드 타임

    PTR

     

    zone 파일

    개요

    - zone 파일은 /etc/named.conf 파일에 지정된 디렉터리에 지정된 파일명으로 생성해야 함

    - 기본 설정 디렉터리는 /var/named 디렉터리이므로 이 디렉터리에 생성하면 됨

    - 최근에 zone 파일명은 /etc/named.rfc1912.zones 에 설정하므로 이 파일에 설정한 이름대로 생성한다.

    zone 파일의 구조

    - SOA (Start Of Authority) 레코드와 자원 레코드 (Resource Record) 로 나눌 수 있다.

     [기본 구조]

     $TTL   1D

     @ IN SOA nameserver contact-email-address (

                serial_number     ; serial

                refresh_number  ; refresh

                retry_number       ; retry

                expire_number    ; expire

                minium_number ; minimum

      도메인 TTL class type   Rdata

    zone 파일의 항목 설명

    1. $TTL

     - Time To Live. zone 파일의 첫 줄에 설정해야 함. 다른 서버에서 도메인 관련 정보를 조회해서 가져갔을 경우 그 쪽 서버의 캐시에 해당 정보가 얼마나 머물지 결정함. 도메인 관련 설정 항목에서 별도의 TTL 을 설정하지 않았을 경우에는 이 값이 적용됨. 값은 초 단위 설정

    2. SOA record

     - zone 파일을 시작하는 레코드. 시작은 도메인명 또는 도메인명을 나타내는 기호인 '@' 를 사용. 설명이 필요한 경우 세미콜론 사용

    주요구성 설명
    nameserver 네임 서버의 호스트명과 도메인명을 적는다. 전체 도메인으로 기입할 경우 마지막에 루트 도메인을 뜻하는 '.' 을 찍어야 한다.
    예) ns.linux.or.kr.
    contact_email_address 관리자의 이메일 주소를 적는다. '계정.도메인' 형태로 기입. 마지막에 루트 도메인을 뜻하는 '.' 을 찍어야 한다.
    예) posein.linux.or.kr.
    serial_number 일종의 일련번호. zone 파일이 갱신되면 숫자가 더 크도록 설정한다. 보통 'YYYYMMDDNN' 형식 사용. 'YYYYMMDD' 는 해당 연월일을 적고 NN은 수정한 횟수를 기입한다.
    예) 2018012801, 180128
    refresh_number 보조 네임 서버가 자신의 정보를 업데이트하기 위해 주 네임 서버에 얼마나 자주 체크할 것인지 설정
    예) 86400, 1D, 1d 등
    retry_number 보조 네임 서버가 주 네임 서버 접근에 실패했을 경우 재시도할 주기 설정
    예) 3600, 1H 등
    expire_number 보조 네임 서버가 주 네임 서버에 접근을 실패하여 retry_number 에 설정한 주기로 재시도를 할 때의 만기시간 설정
    예)1W
    minimum_number 일종의 SOA 영역의 TTL 로서 가져간 정보의 최소 보관 시간 설정
    예) 3H

     3. 도메인

     - 도메인명, 호스트명, 공백, @, * 등이 올 수 있다. @ 는 현재 도메인. *는 모든 호스트명. 호스트명만 기입하면 '호스트명.도메인이름'으로 인식하고, 전체 도메인명으로 지정할 때는 반드시 맨 뒤에 '.' 을 붙여야 한다. 공백은 바로 윗 항에 설정된 '도메인' 값을 이어서 사용한다.

    4. TTL

     - 해당 레코드에 대한 TTL 값을 설정하는 항목. 생략할 경우 $TTL 항목에 설정된 값이 반영됨

    5. class

     - 레코드의 클래스를 지정하는 부분을 IN, CH, HS 등이 사용 가능함. 보통 Internet 을 의미하는 IN 을 사용하는데, 생략해도 무방함

    6. type 

     - 해당 레코드의 타입을 지정하는 영역

    타입 설명
    A IPv4 의 주소를 기입할 때 사용
    AAAA IPv6 의 주소를 기입할 때 사용
    NS 도메인의 네임 서버를 지정할 때 사용
    MX 메일 서버 (Mail Exchanger) 를 지정할 때 사용. MX 다음에 0 또는 양의 정수값을 기입해서 우선순위를 지정해야 한다.
    CNAME Canonical Name 레코드로 일종의 별칭(alias)를 지정할 때 사용
    PTR 리버스 존에서만 사용하는 레코드로 IP 주소를 도메인으로 변환하기 위해 지정

    7. Rdata

     - IP 주소, 도메인명, 호스트명을 지저하는 영역. 호스트명만 기입했을 경우 자동으로 도메인을 붙여서 인식하고, 전체 도메인명을 명기하려면 반드시 맨 뒤에 '.' 을 붙여야 한다.

     

     

     

    인증 관련 서비스

    개요

    - 하나의 서버에 사용자 관련 정보를 저장하고, 나머지 다수의 다른 서버에 사용자, 암호, 그룹 정보 등을 제공하는 서비스.

    - 현재 많이 사용하는 프로그램에는 NIS, LDAP 등이고, 마이크로소프트 윈도우용으로 사용되는 액티브 디렉터리(Active Directory) 가 있다.

    - Sun Microsystems 사에서 두 가지 protocol 을 내놓음. 하나는 NFS. 하나는 NIS

     

     

    NIS (Network Information Service)

    - 하나의 서버에 등록된 사용자 계정, 암호, 그룹 정보 등을 공유하여 다른 시스템에 제공하는 서비스

    - NIS 를 이용하기 위해 RPC (Remote Procedure Call) 을 사용하기 때문에 관련 호출을 처리해주는 데몬을 반드시 구동시켜야 함

    - 기본적으로 DNS 를 사용하지 않으므로 /etc/host.conf 파일 수정 등의 작업이 필요

    NIS 서버 구동하기

    - RPC 데몬 구동 : rcpbind 는 RPC 서비스를 이용하기 위해 동작시켜야 할 데몬명 (rpcbind : RPC 기반 연결을 위해 필요한 패키지. rpcbind와 rpcinfo 등 포함)

    - 서버에서는 ypserv, 클라이언트에서는 ypbind 구동

    # service rpcbind start 

    - /etc/hosts 파일에 IP 와 도메인 등록

    # vi /etc/hosts [IP주소] [server name]

    # service network restart

    - NIS 서버 설치 (설치 완료 후 /etc/rc.d/init.d/ 경로에 NIS 관련 스크립트 설치)

    # yum -y install ypserv

    - NIS 도메인명 설정 : 사용할 NIS 도메인 명 지정. 재부팅 시에도 자동 적용하기 위해서는 /etc/sysconfig/network 에 설정해야 한다.

    # nisdomainname [도메인명]

    # vi /etc/sysconfig/network NISDOMAIN=[도메인명]

    /etc/sysconfic/network

    - NIS 사용자 계정 생성

    # useradd [사용자명]

    # pass [패스워드]

    - NIS 관련 데몬 실행 : NIS 관련 데몬 실행. ps 명령어를 사용해 데몬이 실행중인지 확인

    # service ypserv start

    # service yppasswdd start

    # service ypxfrd start

    # ps -aux | grep yp

    스크립트명 설명
    ypserv NIS 서버를 운영하는 주 데몬 스크립트
    yppasswdd NIS 클라이언트에서 패스워드 시에 적용되도록 해주는 데몬 스크립트
    ypxfrd NIS 서버와 NIS 클라이언트 간의 매핑 속도를 높여주는 데몬 스크립트

    - NIS 정보 갱신 : NIS 서버에 계정을 추가 및 설정 변경 등의 작업 후 갱신하기 위해 make명령어를 사용. make 명령어 실행 후 /var/yp 안에 서버 이름으로 디렉터리가 생성되고, 관련 정보가 들어 있는 맵 파일들이 생성됨

    # cd /var/yp

      - /var/yp : NIS 서버에서 맵 파일들이 생성되는 디렉터리

    # make

    # make -C /var/yp

    NIS 클라이언트 구성하기

    - NIS 서버와 동일하게 RPC 데몬 구동 및 hosts 파일에 도메인과 IP 를 등록한다.

    - NIS 클라이언트 설치

    # yum -y install ypbind yp-tools

    - NIS 도메인명 설정 : 재부팅 시에도 자동 적용하기 위해서는 /etc/sysconfig/network 에 설정해야 함

    # nisdomainname [도메인명]

    # vi /etc/sysconfig/network NISDOMAIN=[도메인명]

    - NIS 서비스와 도메인 정보 설정

    # vi /etc/yp.conf

    - NIS 클라이언트 데몬 ypbind 시작

    - NIS 클라이언트에서 NIS 서버 및 도메인명 지정

    vi /etc/yp.conf

    # service ypbind start

    -NIS 클라이언트에서 사용하는 명령어

    # ypwhich 지정된 NIS 서버 이름 출려
    # ypwhich -m NIS 서버의 맵 파일 출력
    # ypcat passwd.byname NIS 서버의 사용자 관련 정보 출력
    # yppasswd lin NIS 서버에 등록된 lin 사용자의 패스워드 변경
    ypbind NIS 클라이언트 프로그램
    passwd.byname NIS 서버의 사용자 계정 정보가 저장되는 맵 파일명

    yellow pages

    - NIS 초기 상품명, 명령어 대부분이 yp 로 시작됨

    LDAP (Lightweight Directory Access Protocol)

    - DAP (Directory Access Protocol) 기반으로 만들어진 디렉터리 DB 에 접속하기 위한 통신 규약

    - DAP 는 OSI 프로토콜 스택에서 작동되고, 컴퓨터 자원을 많이 사용하는 단점이 있어 보완하기 위해 등장

    - IP 프로토콜 기반으로 사용자, 시스템, 네트워크, 서비스 정보 등의 디렉터리 정보를 공유할 수 있다

    - 디렉터리는 논리, 계급 등을 기준으로 조직화 되어 있고, 비슷한 특성을 가진 객체들의 모임.

    - RDBMS 에 비해 검색 속도가 빨라 읽기 위주의 검색 서비스에서 좋은 성능 발휘 (자주 변경되는 정보는 RDBMS 사용이 좋음)

    - 이름, 주소와 같이 하나 이상의 속성을 가진 객체로 구성되고 그 객체를 엔트리라고 부르는데 RDBMS 의 레코드라고 이해하면 된다

    - 엔트리는 DIT (Directory Information Tree) 라 부르는 트리 구조에 의해 조직화 되고, 이 조직 내에서 고유한 식별자인 DN(Distinguished Name) 을 사용하고, DN 은 상대 고유 이름(RDN; Relative Distinguished Name) 으로 구성된다. 

    - DN 은 파일 시스템의 절대 경로처럼 해당 엔트리의 이름에 상위 엔트리 이름을 붙여서 식별하고, RDN 은 상대 겨올처럼 상대 DN 을 의미한다고 볼 수 있다.

    - 예) /home/posein/joon.txt 가 DN 이고 joon.txt 가 REN 이된다.

    - LDAP 는 이름, 주소와 같이 하나 이상의 속성을 가진 객체로 구서되고 그 객체를 엔트리라고 부른다. 각 엔트리는 DIT 라는 트리구조로 조직화되고 이 조직 내에서 고유한 식별자인 DN 을 사용하고 DN 은 RDN 으로 구성된다.

    - 컴퓨터 자원을 많이 사용하는 DAP 의 단점을 보완하기 위해 등장

    키워드 설명
    c (CountryName) 국가 이름
    st (StateProvinceName) 주(우리나라의 도) 이름
    l (LocalityName) 보통 도시를 나타내지만, 특정 지역 단위에서도 사용 가능
    street (StreetAddress) 도로명 주소(지번)
    o (OrganizationName) 조직(회사) 이름
    ou (OrganizationUnitName) 조직의 부서 이름
    cn (CommonName) 일반적으로 이름과 성의 조합
    sn (SurName)
    givenName (givenname) 이름
    dc (domaincomponenet) 도메인 네임의 요소
    mail (mail) email 주소
    telephoneNumber 전화번호

    LDAP 서버 프로그램- 389 Directory Server : 레드햇사에서 개발- Active Directory Server : 마이크로소프트 사에서 개발- Tivoli Server : IBM 사에서 개발- Open LDAP : OpenLDAP project 에서 개발한 무료 라이센스 프로그램

     

    NFS (Network File System) 서버관리

    개요

    - TCP/IP 네트워크상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉터리인 것 처럼 사용할 수 있게 해준다.

    - NFS 는 NIS 와 더불어 RPC(Remote Procedure Call) 기반으로 작동. 따라서 rpcbind(portmap) 데몬을 먼저 실행시켜야 함

    - Remote Procedure Call 을 사용하기 위해서 CentOS5 에서는 portmap CentOS6에서는 rcpbind

    - 서버에서는 

    NFS 관련 주요 RPM 패키지 : NFS 서버를 구축하기 위해 다음 두 개의 패키지 설치 필요

    - rpcbind : RPC 기반 연결을 위해 필요한 패키지로 rpcbind, rpcinfo 등을 포함하고 있다.

    - nfs-utils : NFS 서버 관련 패키지로 관련 데몬 및 명령어를 포함하고 있다.

    NFS 서버 설정 개요

    - /etc/exports : NFS 서버의 환경 및 접근 제어 설정

    - 데몬스크립트인 rpcbind, nfs-server 를 실행하면 사용 가능

     

    NFS 서버 설정 순서

    1. 접근 관련 설정

     # vi /etc/exports

    2. NFS 관련 데몬 시작

     # systemctl start rpcbind

     # systemctl start nfs-server

    3. 서버 동작과 관련 메시지 확인

     # systemctl -l status nfs-server

    4. 관련 서버 동작의 확인

     # ps aux |egrep 'rcpbind | nfs-server' (ps 명령으로 관련 데몬이 정상적으로 동작하는지 확인)

    5. NFS 서버의 재시작

     # systemctl restart nfs-server (NFS 서버 관련 설정을 변경했을 경우 관련 데몬 재시작)

    6. 부팅 시 NFS 관련 서버 활성화

     # systemctl enable rcpbind nfs-server

    환경 설정 파일 : /etc/exports

    - /etc/exports 설정 시 줄 단위로 외부에 공유할 디렉터리를 입력하고 공백으로 구분한 뒤 허가할 호스트 지정 및 옵션을 기입하면 된다. 허가할 호스트는 IP 주소, 도메인, /etc/hosts 에 설정한 호스트명, NIS 에서 설정한 그룹명 등을 입력하면 됨

    - 설정법

      공유할_디렉터리 허가할_호스트(옵션)

    - 주요 옵션

    옵션 설명
    ro 읽기 전용으로 지정하는 옵션 (기본값)
    rw 읽기 및 쓰기 가능
    root_squash NFS 클라이언트에서 접근하는 root 사용자를 무시하고
    서버상의 nobody/nfsnobody 로 매핑시키는 옵션 (기본값)
    일반 사용자의 권한은 그대로 인정
    no_root_squash NFS 클라이언트에서 접근하는 root 사용자를 무시하지 않고, root 로 인정
    no_subtree_check 하위 디렉터리를 검사하지 못하도록 할 때 설정
    all_squash root 를 포함하여 모든 사용자의 구너한을 nobody/nfsnobody 로 매핑시킨다.
    secure 포트 번호가 1024 이하의 요청에만 허가 (기본값) ↔ insecure
    sync 변경 사항이 안정적으로 저장된 경우에만 관련 요청 응답 (기본값)
    async 쓰기가 설정된 디스크 스토리지에 사용하면 유용한 옵션
    데이터 변경(data corruption)에 대비해 비동기적 처리를 할 때 사용
    anonuid 접근하는 사용자 권한을 지정하는 uid 로 매핑시킬 때 사용
    anongid 접근하는 그룹 권한을 지정하는 gid로 매핑시킬 때 사용

    - 설정 예

    1. /nfsdata 192.168.5.13

    2. /nfsdata1 192.168.5.0/255.255.255.0(rw,root_squash)

    3. /nfsdata2 192.168.12.0/24(rw,no_root_squash)

      - /nfsdata2 라는 디렉터리의 접근을 192.168.12.0 네트워크 대역에 속한 호스트만 가능하도록 설정한다. 또한 읽기 및 쓰기가 가능하고, root 로 접근하는 경우에는 root 권한을 인정한다.

    4. /nfsdata1 *.hannam.ac.kr(rw,all_squash)

    5. / master(rw) trusty(rw,no_root_squash)

    6. /home/posein linux120(rw,all_squash,anonuid=500,anongid=500)

    NFS 클라이언트에서 사용법 

    - NFS 클라이언트에서는 mount 명령을 이용하여 NFS 서버의 파일 시스템을 이용할 수 있음

    - 부팅할 때 mount 하여 사용하려면 /etc/fstab 파일에 등록하면 됨

    - mount 및 mount.nfs 명령 이용하기

     # mount -t nfs 192.168.5.13:/nfsdata /mnt → 192.168.5.13 의 /nfsdata 를 /mnt 디렉터리로 마운트 함

     # mount.nfs 192.168.5.13:/nfsdata /mnt → 192.168.5.13 의 /nfsdata 를 /mnt 디렉터리로 마운트 함

    - /etc/fstab 등록하기

     # vi /etc/fstab

     192.168.5.13:/nfsdata  /mnt  nfs  timeo=15,soft,retrans=3  0  0

    192.168.5.13:/nfsdata /ndata nfs

    옵션 설명
    timeo RPC 타임아웃이 발생된 후에 첫 번째 재전송 요구를 보낼 때의 시간. 단위는 1/10 초
    retrans 타임아웃이 발생된 후에 재전송 요구의 횟수를 지정
    soft NFS 서버 요청에 실패하면 retrans 에 설정한 횟수만큼 재요청을 시도함
    hard NFS 서버 요청에 실패하면 무한정 재시도 (기본값)
    resize NFS 서버로부터 읽어 들이는 바이트 값 지정
    wsize NFS 서버에 쓸 때 적용되는 바이트 값 지정
    fg Foreground 형태로 마운트 시도. 실패 시 마운트 중단
    bg 첫 번째 마운트 실패 시 백그라운드 형태로 다시 시도

    관련 명령어 

    -  rcpinfo : rpc 관련 정보 출력해주는 명령

    $ rpcinfo [option] [호스트명]

    $ rpcinfo → 로컬 호스트의 rpc 관련 정보 출력

    $ rpcinfo -s 192.168.12.22 → 192.168.12.22 호스트의 rpc 관련 정보를 간결하게 출력

    rcpinfo 명령

    - exportfs : NFS 서버에 export 된 디렉터리 정보 관리

     

    # exportfs [option] [호스트명]

    # exportfs → /etc/exports 에 설정된 내용을 간략히 출력

    # exportfs -v → export 된 내용을 옵션 정보를 포함하여 자세히 출력

    # exportfs -r → /etc/exports 에 설정된 내용을 다시 읽어 들여 출력

    # exportfs -au → export 된 디렉토리 모두 해제

    옵션 설명
    -v 설정된 내용을 자세히 출력
    -r /etc/exports 에 설정된 내용을 다시 읽어 들임
    -a '모두' 라는 의미로 한번에 export 된 디렉터리를 호출할 때 사용
    -u export 된 하나 이상의 디렉터리를 해제할 때 사용

     

    - showmount : NFS 서버의 mount 관련 정보를 출력하는 명령. NFS 클라이언트에서 NFS 서버에 export 된 정보를 확인 할 때에도 사용

    showmount

    $ showmount [option] [호스트명]

    # showmount → export 된 디렉터리를 마운트 한 클라이언트 목록 출력

    # showmount -e → export 된 정보 출력

    # showmount -e 192.168.5.13 → 192.168.5.13 호스트의 export 된 정보 출력

    옵션 설명
    -a '호스트명:디렉터리' 형태로 출력
    -e export 된 리스트 보여줌
    -d NFS 클라이언트에 의해 마운트된 디렉터리 목록 정보 출력

     

    - nfsstat : NFS 관련 상태 정보 출력. NFS 서버와 클라이언트 모두 사용

    # nfsstat → NFS 서버 및 클라이언트 관련 정보 모두 출력

     

     

     

     

     

    파일 관련 서비스

    개요

    - 마이크로소프트와 인텔은 윈도우 시스템이 다른 시스템의 디스크나 프린터 등의 자원을 공유할 수 있도록 SMB 라는 프로토콜을 개발함

    - 삼바란 이 SMB 를 이용하여 리눅스를 비롯한 유닉스 계열 운영체제와 윈도우 운영체제간의 자료 공유 및 하드웨어를 공유할 수 있도록 해줌

    - 삼바를 이용하여 리눅스와 윈도우는 공유가 가능하다

    - 현재 유닉스와 윈도우 환경을 동시에 지원하는 CIFS (Common Internet File System) 로 확장되었다.

    - CIFS : 삼바 파일 시스템을 마운트 할 때 지정하는 유형 값으로 알맞은 것

    - 삼바는 GPL 기반의 공개 소프트웨어 및 자유 소프트웨어이다.

    -삼바 관련 주요 RPM 패키지

    패키지명 설명
    samba 삼바 서버 패키지로 삼바 데몬, 서버 관련 라이브러리, 실행 데몬 스크립트 등이 들어있는 패키지로 서버 구성 시 반드시 설치해야함
    samba-common 삼바 서버와 클라이언트 모두에게 필요한 패키지로 삼바 서버의 주요 환경 설정 파일인 smb.conf 와 smbpasswd, testparm 등의 명령어를 포함하고 있다.
    samba-client 삼바 클라이언트 명령어가 들어 있는 패키지로 smbclient, smbtree 등의 명령어를 포함하고 있다.

    - 삼바 서버는 2개의 데몬을 사용한다.

    데몬명 설명
    smbd 파일과 프린터 공유, 사용자의 권한 부여 및 확인 등 사용자 인증을 담당한다
    nmbd WINS(Windows Internet Name Service) 를 담당하는 데몬으로 클라이언트를 위해 NetBIOS nameserver 를 지원, browsing(서비스 통지) 지원, 컴퓨터 이름과 IP 주소 연결 등의 역할을 수행한다.

    삼바 서버의 설정 절차

    # vi /etc/samba/smb.conf → 접근 관련 설정

    # systemctl start smb.service nmb.service → 삼바 관련 데몬 시작. 삼바 서버는 두 개의 데몬을 동작시켜야 한다.

    # systemctl -l status smb.service nmb.service → 서버 동작과 관련 메시지 확인

    # ps aux |grep 'smb | nmb' → 관련 서버의 동작 확인. ps 명령으로 관련 데몬이 정상적으로 동작하는지 확인

    # systemctl restart smb.service nmb.service → 삼바 서버의 재시작. 삼바 서버 관련 설정을 변경했을 경우에는 관련 데몬을 재시작하면 된다.

    # systemctl enable smb.service nmb.service → 부팅 시 삼바 관련 서버 활성화

    환경 설정 파일

    - smb.conf : 삼바 서버를 제어하고, 공유시킬 시스템 자원에 대한 다양한 설정을 함. /etc/samba 디렉터리 안에 존재. [ ] 기호를 이용해서 section 으로 구분하고 설정한다.

    - smb.conf 의 주요 섹션

    섹션명 설명
    [global] 삼바 서버의 전체적인 환경 설정을 담당하는 섹션
    [homes] 각 사용자들이 자신의 홈 디렉터리로 접근할 때의 권한을 설정하는 섹션
    [printers] 프린터 관련 권한을 설정하는 섹션

    - global 섹션의 주요 항목

    workgroup = SAMBA : 윈도우의 작업 그룹에 해당하는 항목으로 공유 그룹명을 지정한다.

    server string = Samba Server : 서버에 대한 설명을 설정한다.

    nebios name = MYSERVER : 윈도우에서 이름으로 접속할 대 관련 이름을 지정한다.

    interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 : 네트워크 인터페이스별로 접근 제어할 때 설정한다.

    hosts allow = 127. 192.168.12. 192.168.13

    share definition 주요 옵션

    - comment : 간단한 설명 설정

    - path : 공유 디렉터리 경로 설정

    - read only

    - writable, write ok

    - valid users : 공유 디렉터리를 이용할 수 있는 사용자 지정

    - write list : 공유 디렉터리에 접근 및 쓰기 권한을 행사할 수 있는 사용자 지정. 그룹일 경우 그룹명 앞에 @ 를 붙인다.

    - public, guest ok : 다른 사용자들이 이용할 수 있도록 설정

    - browseable, browsable : 공유 디렉터리의 리스트를 보여줄 때 설정

    - printable : 공유 디렉터리에 스풀 파일을 지정할 때 설정

    - create mask, create mode : 파일을 생성할 때 허가권을 지정할 때 설정

    사용 예시

     [sdata]

     comment = share directory

     path = /sdata

     public = yes

     write list = @insa

      → 윈도우에서 접근할 때 폴더 이름은 stata 로 설정. 공유 디렉터리 경로는 /sdata 로 설정. 모든 사용자가 접근 가능

     [www]

     comment = Web Directory

     path = /usr/local/apache/htdocs

     valid users = phpman webgirl

     writable = yes

      → 윈도우에서 접근할 때 폴더 이름은 www 로 설정. 공유 디렉터리 경로는 /usr/local/apache/htdocs 로 설정. 접근 가능한 사용자는 phpman과 webgirl. 파일 생성 및 삭제권한은 phpman 만 가능

    관련 명령어

     1. smbclient

      - 리눅스 시스템에서 윈도우 시스템에 공유된 디렉터리 명을 확인할 때 사용하는 명령

      - 리눅스 및 유닉스에서 사용하는 삼바 클라이언트 명령으로 윈도우 서버로 접근할 때 사용.

      - 사용법이 ftp 클라이언트 명령과 유사하게 접속한 후에 특정 명령어를 입력하여 작업을 수행한다.

     [사용법]

     $ smbclient [option] [호스트명]

    옵션 설명
    -L 접속하려는 삼바 서버의 공유 디렉터리 정보를 출력한다 (--list)
    -U 삼바 서버에 접속할 때 사용자명을 입력한다 (--user=사용자명[%패스워드])
    -M 지정한 호스트명에 메시지를 전송할 때 사용한다. 명령을 입력하고 전송하려면 [ctrl] + [d] 를 누른다
    (--message NetBIOS name)

    $ smbclient -L joon -U administrator 

      - joon 이라는 호스트에 administrator 계정으로 접근하여 공유된 목록을 확인한다.

    $ smbclient -L joon -U administrator%1234

      - joon 이라는 호스트에 administrator 계정으로 접근하는데 패스워드는 1234이다.

    $ smbclient \\\\joon\\source -U administrator

      - joon 이라는 호스트에 공유 디렉터리인 source 에 administrator 계정으로 접근한다.

    2. smbstatus

      - 삼바 서버에 사용하는 명령어로 클라이언트와 연결된 상태 출력

      $ sambstatus

    3. testparam

     - 삼바의 환경설정 파일인 smb.conf 의 설정여부 확인

    # $testparm

     $testparm [파일경로] [호스트명 IP 주소]

     $testparm /etc/samba/smb.conf www 192.168.5.13 

      - IP 주소가 192.168.5.13 이고 호스트명이 www인 삼바 서버의 환경 설정 파일을 확인한다.

    4. nmblookup

     - WINS 서버에 질의할 때 사용하는 명령으로 DNS 서버에 질의하는 nslookup 과 비슷하다

     - -U : 조회할 서버 이름 지정

     - -R : 조회할 이름 지정

    5. mount.cifs

     - CIFS 기반의 마운트 명령으로 보통 윈도우에 공유된 디렉터리를 마운트할 때 사용

     #mount.cifs //공유서버/디렉터리 /마운트할디렉터리

    6. smbpasswd

      - 삼바 사용자를 생성 및 삭제, 패스워드 변경, 활성 및 비활성화 등 관련 정보 변경

    옵션 설명
    -a 삼바 사용자 추가. 삼바 사용자는 리눅스 시스템에 존재하는 계정이어야 한다.
    -x 삼바 사용자 제거
    -d 삼바 사용자를 일시적으로 비활성화할 때 사용
    -e 삼바 사용자를 활성화할 때 사용
    -n 패스워드 없이 로그인이 가능하도록 할 때 사용
    smb.conf 에 'null passwords = yes' 라고 추가로 설정

    7. pdbedit

     - 삼바 사용자의 DB 파일인 SAM DB 를 관리해주는 명령

    옵션 설명
    -a 삼바 사용자 추가. 삼바 사용자는 리눅스 시스템에 존재하는 계정이어야 한다.
    -L 등록된 삼바 사용자의 간단한 목록 출력
    -v 등록된 삼바 사용자의 정보 자세히 출력

     

     

    가상화 서비스

    가상화

    - CPU, 메모리, 디스크 같은 물리적 자원들을 여러개의 논리적 자원으로 나누거나, 다수의 물리적인 자원을 하나의 논리적 자원으로 통합하여 서비스하는 기술

    - 논리적인 자원 풀에 기반해 효율적으로 자원을 활용하고, 물리적 공간을 절약하고, 데이터와 서비스에 대한 가용성을 증가하는 등 다양한 장점을 제공

    가상화 서비스 특징

    - 공유 (Sharing) : 다수의 많은 가상 자원들이 하나의 동일한 물리적 자원과 연결되어 있거나 가리킨다.

    - 단일화 (Aggregation) : 공유의 반대되는 가상화 개념. 가상의 자원을 여러 개의 물리적 자원들에 걸쳐서 만들 수 있으며 이를 통해 외견상 전체 용량을 증가시키고, 전체적인 관점에서 활용과 관리를 단순화시킬 수 있다.

    - 에뮬레이션 (Emulation) : 물리적 자원 자체에는 원래부터 존재하지 않았지만 가상 자원에는 어떤 기능들이나 특성들을 마치 처음부터 존재했던 것처럼 가질 수 있다. 또 다른 형태의 에뮬레이션에는 여러 개의 제각기 다른 물리적 자원들을 표준구성요소 형태인 것처럼 가상 자원으로 표시하는 것이 있다.

    IP 네트워크 상에서 가상 SCSI 버스를 구현하는 iSCSI 나 물리적 디스크 스토리지 상에서 가상 테이프 스토리지 등이 이에 해당한다.

    - 절연 (Insulation) : 하나의 가상화 서비스에 문제가 발생해도 다른 서비스로 장애가 전이되지 않도록 관리. 투명한 변경. 장애방지.

    - 프로비저닝 (Provisioning) : 사용자의 요구사항에 맞게 할당, 배치, 배포할 수 있도록 만들어 놓은 것. 물리적인 단위보다 더 세밀한 조각 단위로 사용 가능하게 해준다.

     

    가상화 기술

    Xen

    - CPU 전가상화와 반가상화를 모두 지원

    - CPU 반가상화 지원으로 다른 기술과 비교해서 물리적 서버 대비 효율성이 가장 좋다.

    - Bre Metal 방식의 하이퍼 바이저이다.

    - 전가상화 구성 시 QEMU 기반으로 동작한다.

    - Domain 0 이라는 컨트롤 스택을 사용한다.

    - 가상머신 내에서 실행하는 주장치 드라이버를 허용하는 기능이 있다.

    - CPU 를 포함헤서 이더넷 카드, Disk I/O, VGA 그래픽 인터페이스 등의 반가상화를 지원한다.

    - 설치한 후 해당 xen이 포함된 커널로 재부팅해야만 서비스 운영이 가능

    KVM

    - CPU 전가상화만 지원한다

    - 이더넷카드, Disk I/O, VGA 등은 반가상화도 지원한다

    - 2005년에 설립된 Qumranet 에서 개발한 하이퍼바이저로 x86 시스템을 기반으로 동작한다. 상용화된 제품에는 RHEV가 있다.

    - 커널 기반 가상화 머신으로 가상화 기술(HYM) 을 사용한다

    VirtualBox

    - OS 를 가상화한다. 호스트 OS 위에 게스트 OS 를 띄워서 사용한다.

    - 사용법은 간단하지만 무겁고 느리다.

    - virtualbox 가 지원하는 디스크 이미지 형식 

      ① VDI (Virtual Disk Image) : oracle virtualbox 에서만 사용 가능한 포맷 방식

      ② VHD (Virtual Hard Disk) : oracle virtualbox, 마이크로 소프트 hyper-V, 시트릭스(citrix) 의 Xen 에서 구동이 가능한 포맷방식

      ③ VMDK (Virtual Machine Disk) : oracle virtualbox, VMware 의 Ymware Player 에서 구동이 가능한 포맷 방식

    Docker

    - 경량화된 가상화 기술의 일종

    - 컨테이너 기반의 오픈소스 가상화 플랫폼

    - 컨테이너로 프로세스만을 격리시켜서 가상화시키기때문에 OS 를 설치시키는 다른 가상화기술보다 가볍고 빠르다

    - 하이퍼바이저를 사용하거나 게스트 운영체제를 설치하지 않고, 서버 운영에 필요한 프로그램과 라이브러리만 이미지로 만들어서 프로세스처럼 동작시키는 가상화 방식

    open stack

    - xen, kvm 등으로 나누어서 운영되는 가상화 환경을 통합 관리할 때 유용한 프로그램

    - VMware 기반의 가상 머신과 XenServer 기반의 가상 머신을 통합 관리하고자 한다.

     

    가상화 관련 명령어

    virt-top

    - 가상머신별 자원 사용률을 실시간으로 모니터링하는 명령어

    - 명령행에서 머신만을 대상으로 CPU 자원을 모니터링 할 때 사용

    - 터미널 환경에서 가상 머신만을 대상으로 CPU 자원을 모니터링할 때 사용하는 명령

     virsh

    - 텍스트 기반의 콘솔 환경에서 가상 머신 관리

    - 셸 명령행 기반으로 가상 머신을 생성, 상태 출력, 일시정지 등의 기능을 제공

    - 명령행에서 실행하는 방법과 대화식 모드로 실행할 수 있다.

    - 현재 지원되는 가상화 프로그램에는 Xen, QEmu, KVM, LXC, OpenVZ, VirtualBox, VMware ESX

    [사용법]

     # virsh

      - 대화식 터미널 모드로 진입해서 다양한 명령을 입력할 수 있다. 종료 시에는 quit 입력

     # virsh command [argument]

      - 명령행에서 직접 실행

    [주요 command]

    command 설명
    help 사용법과 관련된 도움말 정보 출력
    list 가상 머신 관련 정보 출력
    shutdown 가상 머신을 정상 종료
    destroy 가상 머신을 강제 종료
    start 가상 머신을 시작
    suspend 가상 머신을 일시 정지
    resume 일시 정지된 가상 머신 재가동
    net-list 네트워크 목록 정보 출력
    net-destroy 네트워크 장치(virbr0) 를 강제 종료
    net-undefine 비활성된 네트워크 장치 정의 해제

     

     virt-manager

    - GUI 기반의 가상머신 관리자 프로그램

    - 시작 및 종료 버튼을 이용하거나 메뉴를 이용해서 리부팅, 종료, 강제종료, 저장 가능

    - 가상 장치 관리자를 실행하는 명령어

     libvirtd 데몬

    -가상화 기술을 위한 데몬

    #service libvirtd start

    - Xen 기반의 가상 머신을 생성하기 위해 libvirtd 데몬 실행 

    - 가상화 서비스 운영을 위해 관련 데몬을 실행하는 명령

     

    가상화 분류

    정보 자원에 따른 분류

    -

    물리적 범위를 기준으로 하는 분류

    가상화 영역
    시스템 내부 시스템 외부 네트워크
    서버 스토리지 서버들 스토리지 풀 관리 L2~L7,
    Infini-Band, iSCSI
    LPAR, VLAN, 가상 I/O, VMWare 파티션 컨트롤러, VTO EXLM, Job 스케줄러 SAN 볼륨 컨트롤러, SAN 파일 시스템 가상화 엔진 (RDS, VEConsole)

    서버 가상화 (Server Virtualizaion) 정의 및 특징

    - 하나의 물리적 서버에 운영체제, 애플리케이션, 미들웨어(Middleware) 들이 서로 어떠한 영향을 미치지 않으면서 동시에 사용될 수 있도록 해주는 기술

    - 현재 애플리케이션, 서브 시스템의 가상화로 발전되어 다수의 애플리케이션, 서브 시스템 또는 미들웨어 스택들이 하나의 운영체제 아래에서 통제 받으면서 수행하는 수준으로 발전

    - 효율적인 서버 자원의 이용, 관리의 최적화, 응급 재해 시 서비스 중단 없는 빠른 서비스 복구, 서버 트래픽 증가에 따른 유연한 대처, 보안강화, 데이터 및 서비스 가용성 증가, 신규 서버 구입에 필요한 하드웨어 비용 지출의 감소, 전체적인 관리 비용 절약, 서버가 차지하고 있는 공간 절약, 전원 절약을 통한 데이터 센터의 효율성 증대 및 Green IT 실현

    - 시스템의 복잡성, 장애 발생 시 문제 해결의 복잡함, 호환성 및 확장성, 소프트웨어 라이선스 문제

    서버 가상화의 분류

    1. 하드웨어 레벨 가상화

    - 가상화를 제공하는 가상화 계층 (Virtualizaion Layer) 이 물리적인 하드웨어 또는 호스트 운영체제 위에 위치하여 가상화 계층에 의해 생성된 가상 머신에 게스트 운영체제 생성

    - 가장 큰 특징은 가상화 계층 내의 주요 구성 요소인 VMM(Virtual Machine Monitor) 이다.

    - VMM 은 물리적인 하드웨어를 가상 머신의 하드웨어에 매핑시키고 게스트 운영체제의 자원 활용을 관리하는 업무를 수행함

    - 하드웨어 레벨의 가상화 기술은 VMM 의 구성 위치에 따라 전가상화, 반가상화, 호스트 기반 가상화로 나뉜다.

    - 전가상화 및 반가상화는 가상 머신의 하드웨어를 에뮬레이팅 하는 대신에 하이퍼바이저 (hypervisor) 라는 제어 프로그램을 통해 호스트의 하드웨어 자원을 가상 머신의 여러 운영체제가 나누어 사용하도록 하는 기법

     ① 전가상화 (Bare-Metal/Hypervisor 또는 Full Virtualizaion)

        - 가상화 소프트웨어가 수정하지 않은 게스트 운영체제를 100% 완전 가상화 환경 위에서 제공하는 기술

        - 범용적인 x86 가상화 하드웨어 (CPU, 메모리, 디스크, I/O 장치 등)를 VMM 위에 구성

        - 게스트 운영체제 측면에서 별도의 수정 및 간섭 없이 완벽하게 물리적인 하드웨어 자원의 접근 및 이용이 가능

        - HP Integrity VM, IBM zSerises z/VM, VMware ESX Server, Xen (with HW assist) 등

        - 다양한 hypervisor 들을 통합 관리하기 위해 플랫폼에 해당하는 기술 (오픈소스형 클라우드 플랫폼)

             : open stack, open nebula, eucalyptus, cloud stack

     ② 반가상화 (Para-virtualization)

        - 구성 방법은 전가상화 방법인 Bare-Metal/Hypervisor 동일하나 게스트 운영체제 측면에서 VMM 과의 원활한 통신을 위해 게스트 운영체제의 커널 일부분을 수정하여 적용

       - 이 방법은 일부 가상화 하드웨어 자원에 대해 필요에 따라 직접적으로 물리적 하드웨어 접근을 일부 허용

       - 기존 시스템에 가까운 성능을 나타내기 위해 지원

       - 게스트 운영체제의 커널 일부분을 수정해야 한다는 부분이 단점

       - 오픈 소스인 Xen, Virtual Iron (현 Oracle 사 소유), Citrix 사의 XenServer

     ③ 호스트 기반 가상화

       - VMM 이 호스트 운영체제 위에 설치되어 가상 머신을 생성하는 구조로 게스트 운영체제는 호스트 운영체제가 인식한 하드웨어를 가상 하드웨어로 재구성하여 사용하는 방법

       - 이 방법은 하드웨어 레벨 가상화 기법 중 호스트 운영체제가 설치된 환경 위에 구동되어 성능은 물론 자원 관리 능력 측면에서 제약 사항이 많은 편이나 사용하기에는 쉽다

       - Microsoft 의 Virtual Server 및 Virtual PC, VMware Server, VMware Workstation, VMware Player 등이 있다.

    2. 운영체제 레벨(OS-Level) 가상화

    - 하나의 CPU 에 하나의 운영체제만 수행

    - 가상화 계층 (Virtualization Layer) 이 호스트 운영체제 윗부분에 존재하여 가상화 환경을 제공하는 방법

    - 단일 호스트 운영체제 위에 다중 애플리케이션 전용 컨테이너를 생성하여 애플리케이션 단위의 가상화 환경 제공

    - 각 애플리케이션 컨테이너 안에는 가상 운영체제와 네트워크, 프로세서 등 생성

    - Containers 방식과 Hardware Emulator 방식으로 나뉨

    - Container : 가상화 계층이 호스트 운영체제 내에 임베디드 형태로 구성. 각 애플리케이션별로 추가적인 컨테이너를 생성하는 방식. 각 컨테이너 안에 생성된 가상 운영체제와 호스트 운영체제에 있는 공통 커널을 공유하고 사용함. OpenVZ, Parrells 사의 Virtuozzo, FreeBSD Jail, HP의 Secure Resource Partitions, Sun 의 Solaris Containers Zones, User-Mode Linux, Docker 등

    - Hardware Emulator : 애플리케이션 중심의 가상 운영체제를 생성하는 과정에서 소프트웨어적으로 하드웨어를 가상 에뮬레이팅하는 방식. QEMU, BOCHS

    3. 하이레벨 언어(High Level Language) 가상화

    - 특정 컴퓨터 프로그램 언어를 이용하여 가상 머신 환경을 구성하는 기술

    - 하드웨어에 독립적이고 이식성이 뛰어난 가상 머신 생성

    - 가장 범용적으로 실제 환경에 적용되고 있음

    - 실질적인 가상화 운영체제 구성을 통한 시스템 자원의 최적화를 구성하는 목적보다는 특정 애플리케이션에 대한 호스트 운영체제 및 하드웨어와 독립적인 환경을 구성하기 위한 목적으로 폭넓게 사용되고 있음

     

    슈퍼 데몬 관리

    슈퍼 데몬

    - 리눅스가 본격적으로 서버로 사용되던 시기에 다양한 서비스 제공과 효율적인 메모리 관리를 위해서 inetd (internet daemon) 데몬 방식을 사용했다. inetd 방식은 자주 사용하지 않는 서비스들을 메모리에 계속 상주시키는 것이 아니라 사용자의 요청이 있을 경우 해당 데몬을 불러와 메모리에 상주시키고, 서비스의 이용이 끝나면 해당 프로세스를 메모리에서 제거함으로 효율성을 높이는 방식이다. 

    - 이렇듯 다른 데몬을 관리, 제어 하는 inetd 를 슈퍼 데몬이라고 호칭했다.

    - inetd 방식은 단독 데몬 방식인 standalone 에 비해 처리 속도는 느리지만, 메모리가 부족하고 다양한 서비스를 제공해야 하는 시스템에서는 효율적인 방식이다.

    - standalone 은 속도가 빠르지만 서버 리소스를 많이 점유한다.

    - xinetd(inetd) 는 슈퍼 데몬을 이용하여 개별 서비스를 동작시키는 방식으로 속도가 느리지만 서버 리소스를 절약할 수 있다. 그래서 사용자가 많지 않고 빠른 응답이 요구되지 않는 서비스에 xinetd 데몬을 사용하는 것이 적함

    - inetd 는 telnet, rlogin, rsh, tftp, ftp 등의 네트워크 서비스를 /etc/inetd.conf 에 설정해서 제어하였다. 그러나 관련 서비스의 사용 유무만을 지정할 뿐 접근 제어 기능은 제공하지 않아 별도의 접근 제어 프로그램을 사용했는데 이 프로그램이 tcp warapper 이다. inetd 의 역할을 확장하여 만든 xinetd 데몬이 이 역할을 수행한다.

    TCP Wrapper

    - tcpd 라는 데몬이 슈퍼 데몬인 inetd 에 의하여 수행되는 서비스들의 접근을 제어하도록 하는 프로그램.

    - 접속을 허락한 호스트만 접속할 수 있도록 하거나 원하지 않는 호스트의 접근을 막도록 해주는 접근 제어 담당

    - 주로 TCP 연결을 기반으로 하고, inetd 에 의해 관리되는 telnet, ftp, rlogin, rsh 등을 감시하고 필터링할 수 있다

    - sshd, vsftpd, smdb, gdm, in.telnetd 등 일부 단독 데몬도 접근 제어가 가능하다

    - /etc/hosts.allow : 접근이 허가된 호스트 목록 파일

    - /etc/hosts.deny : 접근이 금지된 호스트 목록 파일

    /etc/hosts.deny

    - 검색 순서는 /etc/hosts.allow 를 먼저 읽어 들여서 등록된 호스트를 허가하고, /etc/hosts.deny 에 설정된 호스트를 금지시킨다.

    - /etc/hosts.allow 파일에 등록되면 /etc/hosts.deny 파일에 상관없이 허가된다

    관련 파일 작성 규칙

    - /etc/hosts.allow 및 /etc/hosts.deny 파일 설정 시 줄 바꿈은 무시되고 줄 연장 시 \ 이용해야함

    - [설정형식]

     daemon_list : client_list [ : shell_command ]

     1. deamon_list : 한 개 이상의 daemon (서버 프로그램) 프로세스 혹은 예약어 (와일드카드) 를 쓸 수 있다. 여기서 주의할 점은 텔넷 관련 정책을 세울 경우에 telnet 이라는 서비스명이 아닌 in.telnetd 와 같은 실행 데몬명을 적어야 한다.

     [예약어]

    예약어 설명
    ALL 모든 서비스 또는 모든 호스트를 나타냄
    LOCAL 같은 도메인에 있는 모든 호스트로 "." 문자를 포함하지 않는 모든 호스트
    KNOWN 이름이 KNOWN 인 호스트 또는 이름(주소)을 알고 있는 호스트
    UNKNOWN 이름이 UNKNOWN 인 호스트 또는 이름(주소)을 모르고 있는 호스트
    PARANOID  호스트명과 주소가 일치되지 않는 호스트
    가 EXCEPT 나 리스트 "가"에서 "나"를 제외한 모든 호스트

     2. client_list : 한 개 이상의 호스트 이름, 주소, 패턴 혹은 예약어 (클라이언트 이름 혹은 주소가 일치하는 것)를 쓸 수 있다. 일반적으로 IP 주소나 도메인을 기입하고, 사용 가능한 네트워크 주소 대역 및 도메인 대역은 다음과 같다.

     [사용 가능한 표현 예]

      192.168.1.

      192.168.1.0/255.255.255.0

      .example.com

     [설정 예]

      # vi /etc/hosts.allow

      ALL : localhost, .posein.org

      in.telnetd : 192.168.5.13

      in.telnetd@192.168.1.254: 192.168.1.

      sshd : .posein.com EXCEPT cracker.posein.com

      ALL EXCEPT vsftpd : .ihd.or.kr EXCEPT bad.ihd.or.kr

      in.telnetd, vsftpd : 203.247.40., .hnu.kr

      ALL : ALL : DENY

      → 위에 설정된 호스트 이외에는 어떠한 서비스도 받을 수 없다는 설정으로 /etc/hosts.deny 파일 설정 대신에 사용한다.

    3. shell_command : spawn 과 twist 를 사용할 수 있는데, spawn은 현재 수행 중인 프로세스의 자식 프로세스로 실행되고 twist 는 프로세스의 이미지를 교체한 후에 실행된다.

     [확장 옵션]

    확장 옵션 설명
    %a (%A) 클라이언트(서버)의 주소
    %c 클라이언트의 정보(user@host 또는 user@address)
    %d 데몬 프로세스의 이름
    %h (%H) 클라이언트(서버)의 호스트명 또는 주소
    %n (%N) 클라이언트(서버)의 호스트명(또는 "unknown", "paranoid")
    %p 데몬의 프로세스 아이디(PID)
    %s 서버의 정보(daemon@host 또는 daemon@address)
    %u 클라이언트 사용자명(또는 "unknown")

     [사용 예]

      # vi /etc/hosts.deny

      ALL : cracker.posein.com : twist (finger -l @%h | mail -s %d -%h root) &

       → 의심되는 호스트인 creacker.posein.com 가 관련 서비스에 접근을 시도할 경우에 접속을 거부하고, 관련 정보를 메일로 전송한다.

    TCP Wrapper 설정

    - in.telnetd : .cbt.com EXCEPT \www.cbt.com → www.cbt.com  을 제외한 cbt.com 도메인의 모든 호스트에 대하여 서비스 접근 허가

    - in.telnetd : 192.168.5.13 호스트의 접근 차단

    /etc/xinetd.conf 주요 기본 설정 https://123okk2.tistory.com/152

    instances 동시에 접속할 수 있는 서버의 최대 수
    log_type 로그 기록 방식 지정 (SYSLOG | FILE)
    log_on_success 서버 시작 및 종료 시 기록할 내용 지정
    log_on_failure 서버가 시작될 수 없거나 접근 거부 시 기록할 내용
    cps
    (cps = 50 10) : xinetd 기반으로 동작하는 서비스의 초당 요청 개수가 50 개 이상일 경우 10초 이동안 접속 연결 중단
    초당 최대 요청과 접속 제한 시간 설정
    only_from 이용 가능한 원격 호스트 지정
    no_access 서비스를 이용할 수 없는 호스트 지정
    per_source 동일한 IP 주소로부터 접속할 수 있는 최대 접속 수
    enabled 사용할 수 있는 서비스 목록
    disabled 접근을 금지할 서비스 목록
    includedir/etc/xinetd.d 각 서비스 설정을 개별 파일에서 지정

     

     

    /etc/xinetd.conf

     

    -

     

     

    방화벽 설정 (iptables)

    iptables

    - 패킷 필터링 도구로서 방화벽 구성이나 NAT (Network Translation Address) 에 사용된다. 

    - 사용자가 iptables 라는 명령으로 정책을 설정하면 해당 정책에 의거하여 동작함

    - OSI 참조 모델의 2,3,4, 계층 (Data Link, Network, Transport) 에서 정책을 수행함

    - 패킷 필터링을 직접적으로 수행하지 않고, 커널에 있는 넷필터(netfilter) 라는 모듈이 필터링을 수행함

    - 넷필터는 리눅스가 제공하는 모든 종류의 패킷 필터링과 맹글링(mangling) 도구로 네트워크 스택으로 함수를 후킹(hooking) 하는데 사용할 수 있는 커널 내부의 프레임워크임

    - iptables는 패킷에 대한 필터링을 수행하게 설계된 함수를 네트워크 스택으로 후킹하기 위해 넷필터 프레임워크를 사용한다.

    TABLES

    - iptables 에는 테이블이라는 광범위한 범주가 있는데, 이 테이블은 filter, nat, mangle, raw 같은 4개의 테이블로 구성된다.

    filter

    - 기본 테이블, 패킷 필터링

    raw

    - 넷필터의 연결 추적(connection tracking) 하위 시스템과 독립적으로 동작해야하는 규칙을 설정

    nat

    - network address translation, IP 주소 변환

    - iptables 를 이용해서 하나의 공인 IP ㅈ소를 공유하여 다수의 PC에서 인터넷 사용이 가능하게 하려면 NAT 테이블의 POSTROUTING 사슬에서 관련 내용을 설정하면 된다.

    mangle

    - 패킷 데이터를 변경하는 규칙 혹은 성능 향상을 위한 TOS(Type Of Service)

    타겟 (target)

    - iptables 는 패킷이 규칙과 일치할 때 동작을 취하는 타켓을 지원한다.

    - accept : 패킷을 받아들인다.

    - drop : 패킷이 전송된 것이 없는 것처럼 패킷을 버린다.

    - reject : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.

    - log : 패킷을 syslog 에 기록한다. 일반적으로 /var/log/message 에 저장된다.

    - return : 호출 체인 내에서 패킷 처리를 계속 한다.

    명령

    - /var/log/message : iptables 명령의 '-j LOG' 옵션을 통해 특정 호스트에 대한 로그를 기록하도록 정책을 설정하였을 때 관련 로그가 기록되는 파일

     

    -X 비어있는 사슬 제거

    -P 사슬 정책 설정(허용/차단)

    -N 새로운 사슬 생성

    -L 현재 사슬 규칙 나열

    -F 사슬 규칙 제거

     

    Q. iptables 를 이용하여 192.168.10.11 로부터 들어오는 패킷을 차단하는 정책을 추가하려고 할 때 알맞은 것은?

    iptables -A INPUT 192.168.10.11 -j DROP

    Q. INPUT 사슬에 대한 기본 정책 거부로 설정하는 명령

    iptables -P INPUT DROP

     

     

     

    네트워크 침해 유형 및 특징

    DoS (Denial of Service)

    - 보통 과부하

    - Ping of Death

    - UDP Flooding

    - TCP SYN Flooding : TCP SYN 패킷을 짧은 시간에 대량으로 보내어 서버 수용 동시접속자 수 이상으로 부하를 줌

    - Teardrop Attack : 보낸 데이터 패킷 재조함 할 때 혼란을 일으켜 과부하, 데이터를 정송하기 위해서는 패킷을 분할하고 시퀀스 넘버를 생성하는데, 이러한 시퀀스 넘버를 조작하거나 중첩시켜 내부에 과부하를 발생시키는 공격 방법

    - Land Attack : 공격자의 IP 주소를 대상 서버의 IP, PORT 와 동일하게 하여 보내는 패킷을 자신에게 되돌려 보내어 CPU 부하까지 줌

          : 공격자가 임의로 자신의 IP 주소 및 포트를 공격 대상 서버의 IP 주소 및 포트와 동일하게 하는 방식. 이러한 공격은 공격 대상의 패킷이 외부로 나가지 못하고 되돌아 온다.

    -  Smurf Attack : 공격자는 IP 주소를 공격 서버의 IP 주소로 위장하고, ICMP Request 패킷을 브로드캐스트를 통해 다수의 시스템에 전송한다. 이 때 브로드 캐스트를 수신한 다수의 시스템은 ICMP Echo Reply 패킷을 공격자가 아닌 공격 대상의 서버로 전송하게 되면서 부하를 발생시킴

    DDoS (Distributed Denial of Service)

    - 여러대의 공격자를 분산 배치하여 동시에 Dos 공격을 하여 공격 대상이 되는 시스템이 정상적인 서비스를 할 수 없도록 방해

    - 도구

     1. Trinoo : UDP Flooding 분산 서비스 거부 공격을 할 수 있는 도구

     2. TFN : 공격자 시스템과 마스터 시스템 간 연결이 평문으로 되어 있으며, 브로드 캐스트 공격 가능

     3. TFN 2K : 포트도 임의로 결정되어 암호화를 사용

     4.Stacheldraht : Smurf 공격

    SSH Brute Fore

    네트워크 보안

    가용 메모리 자원 고갈

    - malloc() 와 관련 있음

    - char *m;

      while (1)

          m=malloc(1000);

    가용 디스크 자원 고갈

    - int fd;

      char buf[1000];

      fd=creat("/root/disk", 0777);

      while(1)

      write(fd, buf, sizeof(buf));

    디스 자원 고갈

    가용 프로세스 자원 고갈

    - while(1)

      fork();

      return(0);

     

     

     

    침입 탐지 시스템 (Intrusion Detection System; IDS)

    개요

    - 서버나 네트워크에 대한 공격을 실시간으로 탐지하는 시스템

    - 데이터 수집(Raw Data Collection), 데이터 필터링과 축약(Data Reduction And Filtering), 침입탐지(Analysis and Intrusion Detection), 책임 추적성과 대응(Reporting and Response) 기능을 수행

    - 설치 위치와 목적에 따라 호스트 기반 IDS 와 네트워크 기반 IDS 로 나눈다.

    - 호스트 기반 IDS 는 윈도우나 리눅스 등 운영체제에 부가적으로 설치되어 사용자 계정에 다라 어떤 접근을 시도하고 어떤 작업을 실행했는지 기록하고 추적하는 역할 수행

    - 네트워크 기반 IDS 는 네트워크 상에서 하나의 독립된 시스템으로 운영되는데, 네트워크 전반을 감시한다.

    - 침입 탐지 기법에는 오용 탐지(Misuse Detection)와 이상 탐지(Anomaly Detection) 로 나눈다. 오용 탐지 기법은 이미 발견된 공격 패턴을 미리 입력해두고, 해당 패턴이 탐지했을 때 이를 알려주는 방법. 오탐율이 적어 효율적이지만, 알려진 공격 외에는 탐지할 수 없고 많은 데이터를 분석하는 데에는 부적합하다. 이상 탐지 기법은 정상적이고 평균적인 상태를 기준으로 급격한 변화를 일으키거나 확률이 낮은 일이 발생할 경우에 알리는 방식. 다양한 분석을 통해 정보를 수집해서 탐지하는 방식이 주로 사용되고, 최근에는 인공지능과 면역 시스템이 개발 중이다.

    -Suricata : 오픈소스 침입탐지 도구

    침입 방지시스템 (Intrusion Prevention System; IPS)

    개요

    - 네트워크에서 공격 서명을 찾아내어 자동으로 모종의 조치를 취함으로써 비정상적인 트래픽을 중단시키는 보안 시스템

    - 수동적인 방어 개념의 침입 차단 시스템이나 침입 탐지 시스템과 달리 침입 경고 이전에 공격을 중단 시키는 데 초점을 둔 시스템으로 침입 유도 기능과 자동 대처 기능이 합쳐진 개념

    - 해당 서버의 비정상적인 행동에 따른 정보 유출을 자동으로 탐지하고 차단 조치함으로서 비정상 행위 통제

     

     

     

    mysql

    간단한 방명록 설계를 통한 AMP 연동 구현

    - /usr/local/apache/htdocs 디렉터리에 다음과 같은 3개의 파일을 생성하고, MySQL 은 root 권한자로 접속해서 사용할 DB 및 테이블을 생성한다.

    - 예) insert.html : 방명록을 작성하기 위한 입력창 / insert.php : 방명록의 글을 MySQL 에 전달해주는 파일 / list.php : MySQL 에 저장된 글을 화면에 출력해주는 파일

    ./mysqld --initialize --user = root

    - MySQL 5.7 이상 버전을 설치한 후 mysql 에서 사용하는 기본 db 를 생성

    ./mysqld --initialize --user=root &

    - MySQL 5.7 버전의 소스 파일을 다운로드하여 설치한 후에 기본 관리 DB 를 생성하고 root 사용자의 임시 패스워드를 부여받는과정이다. 참고로 명령 작업은 관련 명령어가 존재하는 디렉터리에서 실행하고 있다.

    mysqld_safe

    - mysqld 를 감시하는 데몬

    - MySql 인스턴스는 mysqld 를 직접 호출하는 것이 아니라 mysqld_safe 를 통해 시작시키는 것을 권장함

    기타 다른 서비스와의 연동

    종류 설명
    관계형 DB Maria DB, PostgreSQL, Oracle
    NoSQL MongoDB
    JSP Apache Tomcat

    WAS 종류

    WAS 종류 관련 프로그램
    Java EE 표준 준수 Oracle 의 웹로직 (WebLogic), IBM의 웹스피어(WebSphere), 티맥스소프트의 제우스(JEUS), 레드햇의 제이보스(JBoss), Caucho 의 레진(Resin), Apache 의 Apache Tomcat
    기타 마이크로소프트의 닷넷(.NET) 애플리케이션 서버, Zend 의 Zend Server

    웹 서버 암호화

    -웹 서버를 통해 주고 받는 데이터들은 평문(text) 으로 전송한다. 즉, 암호화되지 않았기 때문에 웹의 포트인 80 번으로 주고받는 정보는 패킷 캡처링 도구를 사용해서 알아낼 수 있다. 이 때 전송로상에 전송되는 웹 콘텐츠 보호를 위해 사용되는 것이 SSL(Secure Sockets Layer) 이다. 

    - SSL 은 넷스케이프사에서 개발한 것으로 사용자인증과 웹 서버의 데이터 및 콘텐츠를 암호화하는 수단이다.

    - 아파치 웹 서버에서 SSL 을 사용하기 위해서는 mod_ssl 모듈을 이용해야 한다. 이 모듈은 SSL v2, v3 를 지원하고, SSL 을 확장하여 표준화한 TSL (Transport Layer Security) 도 지원한다.

    - SSL 은 최초 3-way handshake 후에 비밀키를 생성하고, 이 대칭키 암호화가 데이터 암호화를 위해 사용된다. 공개키(비대칭키)는 단말의 신원 인증과 대칭키 교환에 사용된다.

    - 메시지 무결성은 MAC(Message Authentication Code) 에 의해 제공되고, 신뢰된 접속을 가능하게 한다

    - mod_ssl 은 128 비트 암호화를 지원하고, RSA, Diffie-Hellman 등의 알고리즘을 사용한다

    - SSL 은 전총계릉의 암호화 방식이어서 HTTP 뿐 아니라 SMTP, FTP, NNTP, XMPP 등 다른 응용 계층 프로토콜에서도 사용할 수 있다.

     

     

    - SVM :가상화 기술로 바이오스에 AMD 가상화를 활성화 할 때 사용. 가상화가 지원되는 최신의 AMD CPU 를 구입하여 사용중이다. 서버 가상화 프로그램을 실행하였더니 가상화 지원 여부가 비활성화 상태라는 오류 메시지를 접하게 되었다. 이 때 메인보드의 BIOS 에서 활성화 여부를 확인해야 하는 항목은 SVM 이다.

    - VDI : 가상 데스크톱 인프라, 가상머신을 사용하여 가상 데스크톱을 제공하고 관리하는 가상화 솔루션

    - VMX : 가상 시스템 실행 파일, 스왑 파일을 사용하면

     

     

     

     

    FTP (File Transfer Protocol) 서버관리

    개요

    - TCP/IP 프로토콜 기반으로 서버와 클라이언트 사이에 파일을 주고받기 위한 프로토콜이다.

    - FTP 사용 위해서는 FTP 서버를 구축하고 접속하기 위한 계정 필요

    - 공개 소프트웨어를 공유하는 서버인 경우 익명의 계정 (anonymous) 을 이용한다

    - 리눅스에서 사용하는 대표적인 FTP 서버 프로그램에는 Wu-ftpd, Proftpd, vsftpd 등이 있음

    vsftpd (very secure ftp daemon)

    - Proftpd 는 리눅스 및 유닉스 계열 뿐 아니라 윈도우까지 지원하는 공개 소프트웨어

    - Proftpd 는 환경 설정 방법이 아파치 웹 서버 파일과 유사하고, 현재 vsftpd 와 함께 가장 많이 사용되는 FTP 서버 프로그램이다

    - vsftpd 는 간결, 안전, 속도 빠른 프로그램

    - 리눅스 및 유닉스 계열에서 사용

    - RHEL, Fedora, CentOS, Ubuntu, Slackware 등 배포판에 기본적으로 포함되어 있음

    - vsftpd 는 환경 설정 시 YES/NO 로 설정하도록 되어 있음

    - anonymous 관련 디렉터리의 퍼미션이 777로 설정되어 있으면 로그인을 막음

    - 관련 주요 파일

    파일명 설명
    /etc/vsftpd/vsftpd.conf vsftpd 의 환경 설정 파일
    /etc/pam.d/vsftpd vsftpd 의 PAM 관련 설정 파일
    /etc/vsftpd/ftpusers PAM 관련 설정 파일인 /etc/pam.d/vsftpd 에 사용되는 파일로 기본 설정이 접근 거부될 사용자 목록으로 이용
    vsftpd 서버에 접근이 불가능한 사용자 목록 파일
    /etc/vsftpd/user_list vsftpd 에서 이용하는 사용자 목록 파일로 허가 또는 거부 목록 파일로 사용할 수 있으나, 기본 설정이 userlist_deny=YES 여서 거부 목록 파일로 사용
    /etc/logrotate.d/vsftpd vsftpd 의 로그 로테이트 관련 파일

     

    - chroot_local_user = YES

       접속한 사용자의 홈 디렉터리를 최상위 디렉터리가 되도록 지정한다.

    - anon_upload_enable = YES

      익명의 사용자도 업로드가 가능하도록 지정하는 설정

     

    -vsftpd.conf 파일 분석

    https://2factor.tistory.com/96

     

    vsftpd.conf 설정 옵션

    퍼온 자료. VSFTP 리눅스에서 사용하는 FTP 서버용 소프트웨어는 proftp, vsftp가 주로 사용됩니다. Proftp에 비해서 속도와 보안, 성능이 뛰어나며 무엇보다 안정성을 보장할 수 있는 프로그램입니다.

    2factor.tistory.com

     

    텔넷 xinetd https://starrykss.tistory.com/1870

     

    [리눅스마스터 1급 실기] 텔넷(telnet)

    텔넷(telnet) xinetd Extend inetd 리눅스 커널 2.4 버전부터 슈퍼 데몬인 inetd를 대체하기 위해 등장하였다. 접근 제어 방법 inetd : TCP Wrapper 사용 xinetd : 환경 설정 파일을 이용해서 자체적으로 접근 제..

    starrykss.tistory.com

     

     

     

    VNC (Virtual Network Computing)

    개요

    - 리눅스 서버와 윈도우 클라이언트 간의 데스크톱 공유를 하려고 할 때 구성해야할 서버

    - VNC 는 RFB (Remote Frame Buffer) 프로토콜을 이용하여 원격의 다른 컴퓨터에서 그래픽 환경 기반으로 데스크톱을 공유할 수 있는 시스템

    - 리눅스 서버와 윈도우 클라이언트 간의 데스크톱 공유를 하려고 할 때 구성해야할 서버

    - 키보드 및 마우스가 발생한 이벤트를 다른 컴퓨터로 전송시켜서 그래픽 화면을 갱신하는 방식으로 제공

    - 화면을 공유 하는 시스템에는 VNC 서버 프로그램을 설치

    - 원격지 컴퓨터에는 VNC 클라이언트 프로그램인 VNC Viewer 를 설치해야 한다.

    - 리눅스와 윈도우와 같은 크로스 플랫폼간의 데스크톱 공유, 가상화 기반의 게스트 운영체제 제어, 구글 안드로이드나 애플 iPhone 과 같은 모바일 기기 제어, 라즈베리 파이(Raspberry pi) 와 같은 임베디드 기기 제어 등에 쓰일 수 있다.

    서버 설치 및 설정

     # yum install tigervnc-server : VNC 서버 설치

     # vi /usr/lib/systemd/system/vncserver@.service

     → 구동 파일을 편집해서 접근 사용자 지정

     → root 로 접속하기 위해서는 ExecStart 항목의 <USER> 를 root 로 변경하고 PIDFile 에서는 '/home/<USER>' 를 '/root' 로 변경함

     # vncpasswd

     → VNC 서버 패스워드 설정

     # systemctl enable vncserver@:1.service

     → 부팅 시 VNC 서버 구동 (vncserver : 서버구축)

     # systemctl daemon-reload

     → systemd 의 매니저 관련 환경 설정을 다시 읽음

     # systemctl start vncserver@:1.service

     → VNC 서버 시작

     - vncconfig : vnc 설정 변경

    해상도 지정하는 옵션. 괄호는 -geometry

    VCN 클라이언트 설치

     - VNC 클라이언트 프로그램인 VNC-Viewer 는 사용하는 운영체제에 맞게 다운로드하여 사용하면 됨

     

     

     

    NTP (Network Time Protocol)

    개요

    - 컴퓨터간의 시간을 동기화하는데 사용되는 프로토콜

    - NTP 서버를 구성하면 클라이언트들의 시간을 1/1000초까지 동기화시킬 수 있는데, 협정 세계시(UTC; Coordinated Universal Time) 를 기준으로 사용

    - 여러 계층(stratum) 으로 구성된다.

    - 최상위 계층 Stratum 0 : 세슘 원자시계, GPS 시계 등과 같은 장치

    - Stratum 1 : 라디오 클럭과 외부 타임 소스 액세스를 가지고 시간을 동기화

    - Stratum2 : Stratum1 서버로부터 시간을 가져온다 ...

    - Stratum16 : 비동기 장치

    /etc/ntp.conf

    - 환경 설정 파일 (데몬 시작은 systemctl start ntpd.service)

    - driftfile /var/lib/ntp/drift : 지역 시스템의 시간을 정확하게 유지하는 파일을 지정하는 항목으로 시간 오차의 평균값을 저장한다.

    - restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap : restrict 는 NTP 서버에 접근할 클라이언트를 제한할 때 지정한다.

    - server time.kriss.re.kr : 기준이 되는 NTP 서버를 지정하는 항목

    - server time.bora.net : 기준이 되는 NTP 서버를 지정하는 항목

    관련 명령어

    1. ntpq

      - NTP 질의 응답 명령어 (대화형으로 질의한다)

     [사용법]

      # ntpq [option]

     [옵션]

     -p : 연결된 서버(peers)의 상태 출력

    2. ntpdate

     - NTP 서버를 이용해서 시간을 동기화할 때 사용하는 명령어

     - 리눅스 시스템의 날짜 및 시간이 맞지 않아서 원격지의 NTP 서버를 통해 시간을 설정하는 과정 → # ntpdate time.bora.net

     [사용법]

      # ntpdate NTP서버

     [사용예]

      # ntpdate 203.247.40.248

     

     

     

    메일 관련 서비스

    메일 관련 프로토콜

    - SMTP (Simple Mail Transfer Protocol)

     : 메일을 보낼 때 사용되는 프로토콜. 메일 서버간의 송수신뿐 아니라 메일 클라이언트에서 메일 서버로 메일을 보낼 때 사용. TCP 포트 번호는 25번

    - POP3 (Post Office Protocol Version 3)

     : 서버에 도착한 메일을 클라이언트에서 직접 내려 받아 읽도록 해주는 프로토콜. 포트 번호는 110번. 메일을 확인하면 삭제됨

    - IMAP (Internet Mail Access Protocol)

     : 클라이언트 사용자가 메일 서버에 도착한 메일을 확인할 때 사용하는 프로토콜. 포트 번호는 143번. 메일을 확인해도 삭제되지 않음

    - dovecot

     : POP3 와 IMAP4 역할을 수행하는 프로그램

    메일 관련 프로그램의 분류

    - MTA (Mail Transfer Agent)

     : 이메일을 SMTP 프로토콜을 이용해 다른 메일 서버로 전달하는 프로그램. sendmail, qmail, postfix, MS Exchange Server

    - MUA (Mail User Agent)

     : 사용자가 메일을 읽고 보낼 때 사용하는 프로그램. kmail, evolution, mutt, thunderbird, MS 의 Outlook

    - MDA (Mail Delivery Agent)

     : 일종의 대리인 역할을 수행하는 프로그램. 메일박스에 도착한 메일을 대행해서 가져오거나 전달하는 역할을 수행한다. 스팸메일을 필터링이나 메일 정렬 등의 역할 수행. procmail

    sendmail 개요

    - /etc/mail/sendmail.cf

     : 관련 주요 환경 설정 파일. 기본적인 메일 서버 운영만 할 경우 설정할 필요 없음

    Cw 호스트 명기. 요즘은 여러 도메인을 사용하는 경우가 많아 Fw 가 주로 쓰인다
    Fw 도메인마다 별도의 파일을 지정한다.
    Dj 특정 도메인으로 강제 연결시킨다.

    - /etc/mail/local-host-names

     : 메일 서버에 사용하는 도메인을 설정하는 파일. 

       회사에서 두 개의 도메인을 사용하는 관계로 두 개의 도메인 모두 메일을 받을 수 있도록 파일에 등록하기 위해 사용

    - /etc/mail/sendmail.mc

     : sendmail 의 매크로 설정 파일. sendmail.cf 파일이 삭제 되었거나 복원할 경우 m4 라는 매크로 프로세서를 이용하여 새롭게 생성할 수 있다.

     [사용 예]

      # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

    - /etc/mail/access

     : 메일 서버로 접근하는 호스트나 도메인의 접근을 제어하는 파일. 허가할 호스트나 도메인은 통과(RELAY) 시키고, 허용하지 않으려면 거부 (REJECT 또는 DISCARD) 할 수 있다. 이 파일은 두 개의 필드로 구성되어 있다. 첫 번째 필드에 도메인명, IP 주소, 메일 계정 등을 기입하고, 두 번째 필드에 정책을 적으면 된다. 아울러, 실제 sendmail daemon 이 참고하는 파일은 /etc/mail/access.db 이므로 변경 시에는 makemap hash 명령을 이용한 업데이트가 필요하다.

     [설정 예]

      From:spammer@aol.com            REJECT (메일 거절 및 메시지 보내기)

      From:cyberspammer.com            REJECT

      Connect:cyberspammer.com      REJECT 

      Connect:192.168.5                            DISCARD (메일을 거부 메시지 없이 무조건 거절)

      Connect:127.0.0.5                             OK (DNS 조회가 되지 않은 경우라도 들어오는 메일 허가. 보통 거부된 도메인에 대한 예외 처리 시 사용)

      Connect:posein.org                          RELAY (특정 호스트나 도메인의 접근을 허용)

      TO:posein.org                                     RELAY

     [적용 명령]

      # makemap hash /etc/mail/access < /etc/mail/access

    - /etc/aliases

     : 특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정하는 파일. 보통 하나의 계정으로 들어오는 메일을 여러 사용자에게 전달하는 메일링 리스트가 필요한 경우에 유용하다. sendmail 이 참고하는 파일은 /etc/aliases.db 이므로 변경 시에는 'newaliases', 'sendmail -bi', 'sendmail -I' 명령을 실행시켜야 적용된다.

     : webmaster 라는 계정으로 들어오는 메일을 회사의 고객 지원실에 근무하는 다수의 사용자에게 메일을 전달하려고 할 때 이 파일을 쓴다.

     [설정법]

      name : value1, value2, ...

      → name 은 도메인 없이 로컬 시스템의 계정을 기입하고, : 으로 구분한 뒤에 전달할 계정을 콤마로 구분해서 나열한다.

      name::include:파일명

      → 메일링 리스트 파일을 사용할 경우에는 ':include:파일명' 형식으로 지정한다.

     [설정 예]

      # vi /etc/aliases

      webmaster: posein, yuloje, jalin, joon, posein@naver.com

      admin::include:/etc/mail/admgroup

      → 기본적으로 콜론으로 구분된 2개의 필드를 사용하고, 메일링 리스트 파일을 사용하는 경우에는 4개의 필드를 사용해야 한다. 아울러 /etc/mail/admgroup 에 포워딩할 계정을 한 줄에 하나씩 기입하면 된다.

     [적용 명령]

     # newaliases

     # sendmail -bi

     # sendmail -l

    - /etc/mail/virtusertable

     : 하나의 메일 서버에 여러 도메인을 사용하는 환경에서 동일한 메일 계정을 요구할 때 각각의 도메인으로 도착하는 메일을 포워딩할 때 사용하는 파일. sendmail 이 참고하는 파일은 /etc/mail/virtusertable.db 이므로 변경 시 'makemap hash' 명령을 사용해야 한다.

     : 하나의 메일 서버에 각각 ihd.co.kr 이라는 도메인을 갖는 회사와 kait.co.kr 이라는 도메인을 갖는 회사의 호스팅 서비스를 운영 중이다. 이 두 개 회사에서 ceo 라는 email 계정을 요구 했을 때 관련 있는 파일이다.

    [설정 예]

      # vi /etc/mail/virtusertable

        ceo@linux.com   posein

      → ceo@linux.com 으로 들어오는 메일은 posein 에게 전달한다.

     [적용 명령]

      # makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

    - ~/.forward

      : 각 사용자 개인이 자신에게 들어오는 메일을 다른 메일 주소로 포워딩할 때 사용하는 파일. 홈 디렉터리 안에 직접 파일을 생성하고, 한 줄에 메일 주소 하나씩 입력하면 된다. .forsard 파일의 퍼미션 값은 해당 사용자에게만 쓰기 권한이 설정되어야 한다.

     [설정 예]

      [posein@mail ~]$ vi .forward

      posein@naver.com

      posein@gmail.com

      → 포워딩 할 메일 주소를 한 줄에 하나씩 기입한다

      [posein@mail ~]$ chmod 600 .forward

      → 생성한 파일의 퍼미션 값을 변경한다.

    chmod o+w /data

    sendmail 서버 설정과 확인 : 도메인이 linux.or.kr 으로 sendmail 서버를 설정하는 절차를 순서대로 정리하면 다음과 같다

     1. /etc/mail/sendmail.cf

      : 로컬에서만 접속하도록 설정되어 있으므로 vi 편집기를 이용해서 'Addr=127.0.01' 이라는 내용을 삭제한다

     2. /etc/mail/local-host-names

      : mail server 에서 사용하는 도메인을 한 줄에 하나씩 기재해준다.

     3. sendmail 서버 시작하기

      : # systemctl start sendmail.service

     4. 서버 동작과 관련 메시지 확인

      : # systemctl -l status sendmail.service

     5. sendmail 서버 동작의 확인 : ps 명령으로 sendmail 데몬이 동작 중인지 확인

     6. sendmail 서버의 재 시작

      : # systemctl restart sendmail.service

     7. 부팅 시 sendmail 서버 활성화

      : # systemctl enable sendmail.service

    sendmail 서버 설정 확인

     1. /etc/resolv.conf 파일 변경 후 조회 : nslookup 명령으로 메일 서버 조회는 명령행에서는 '-type=mx' 를 붙여서 확인 가능

     2. 메일 전송 : mail 명령을 이용해 설정한 도메인을 기반으로 로컬 시스템에 있는 사용자에게 메일을 전송한다. mailq 명령으로 전송 여부를 확인할 수 있다.

     3. 메일 확인 : mail 명령으로 메일 내용 확인 가능

    sendmail 관련 주요 명령어

     1. mailq : 보내는 메일이 대기하는 디렉터리 큐(Queue) 상태 출력

      - -Ac : /etc/mail/submit.cf 파일에 명시된 큐의 상태 출력

     [사용 예]

      # mailq 

      → 보내는 메일이 대기하는 큐인 /var/spool/mqueue 의 상태 출력

      # mailq -Ac 

      → submission program 이 보내는 메일이 대기하는 큐인 /var/spool/clientmqueue 상태 출력

     2. sendmail

     - -bp : mailq 와 같은 명령으로 메일 큐의 상태 출력 

     - -bi : newaliases 와 같은 명령으로 /etc/aliases 파일 수정 시에 관련 DB 정보 파일을 업데이트 한다. (-l)

     - -oQ : -bp 와 같이 사용되는 옵션으로 특정 큐의 상태를 확인하기 위해 사용된다.

     [사용 예]

      # sendmail -bp

      → 보내는 메일의 대기 큐인 /var/spool/mqueue 의 상태 출력

      # sendmail -bi

      → /etc/aliases 의 정보를 읽어 들여서 관련 DB 정보 파일을 업데이트 한다. newaliases 및 'sendmail -l' 명령과 동일한다.

      # sendmail -bp -oQ/var/spool/clientmqueue

      → /var/spool/clientmqueue 의 상태 출력

     

     

    침입 탐지 시스템

    John the Ripper

    - 패스워드 무작위 공격도구

    Tripwire

    - 파일 시스템 무결성 검사도구

    Stacheldraht

    - DDoS 대응 도구

    Suricata

    - 오픈소스 침입탐지 도구

     

     

     

    Dos (Denial of Service)

    ICMP Floding

    - ping 을 이용해서 관련 패킷을 정상적인 크기보다 아주 크게 만들어 보내는 공격방법. 크게 만들어진 패킷은 네트워크를 통해 라우팅되어 공격대상이 되는 네트워크에 도달하는 동안에 아주 작은 조각으로 쪼개어 지고, 공격이 되는 시스템은 이 패킷을 모두 처리해야 하므로 훨씬 많은 부하가 걸리게 된다.

     

     

     

    SSH 보안

    Fail2ban

    - SSH 뿐 아니라 아파치 웹 등 로그 파일을 분석하여 공격을 차단하는 기능

     

     

     

    Q. 다음과 같은 설정을 통해 ssh 침입을 시도하는 특정 호스트를 차단하려고 할 때 적용할 수 있는 파일은?

     

    sshd: 192.168.7.4

     

    A : /etc/hosts.deny

     

    Q. DNS 서버가 등장하는데 계기가 된 파일은 ?

     

    A : /etc/hosts

     

     

    Q. 네트워크 서비스 종류가 다른 것은?

     

    A : NIS 와 LDAP 는 네트워크 기반 인증 서비스이고, Active Directory 는 윈도우용 LDAP 이다.

    NFS 는 네트워크 파일 시스템

    728x90
Designed by Tistory.