자격증/리눅스마스터 1급

리눅스 마스터 1급_3과목_CH7.네트워크 서비스

Leo.K 2023. 6. 26. 11:10

CH.7 네트워크 서비스

1. 웹 관련 서비스

1-1. 웹 관련 서비스의 이해 

※  웹(Web)

  • HTML (Hyper Text Markup Language) : 웹 페이지를 만들기 위한 마크업 언어 
  • HTTP 프로토콜이 사용되고 W3C에서 주관하여 개발
  • 주요 웹 브라우저 종류 
    • chromium : 구글 크롬으로 더 잘 알려져 있는 브라우저. 속도가 빠르고 다양한 플러그인이 존재한다. 
    • FireFox : 모질라 재단에서 개발한 게코 엔진 기반의 오픈 소스 웹 브라우저 
    • Opera : 노르웨이에서 개발된 블링크 엔진 기반의 웹 브라우저 
    • Safari : 애플에서 개발한 Webkit 엔진 기반의 웹 브라우저. IOS를 위한 브라우저이다. 

※  HTTP (HyperText Transfer Protocol)

  • 웹에서 웹 페이지를 가져오기 위한 프로토콜
  • 요청 메소드 
    • GET : 요청 데이터에 대한 인수를 URL에 포함시켜 전송하는 방식
    • POST : HTTP Body 영역에 소켓을 이용하여 전송하는 방식
  • 상태코드 
200 OK 요청 정상 처리
301 Moved Permanently 요청된 정보의 위치가 영구적으로 변경됨을 알림
302 Found 요청된 정보의 위치가 일시적으로 변경됨을 알림
400 Bad Request 잘못된 요청으로 처리 불가
403 Forbidden 접근 권한이 없음
404 Not Found 요청한 페이지가 없음
500 Internal Server Error 내부 서버 오류

 

1-2. 웹 관련 서비스의 운영

※  웹 서버 종류 

  • Apache, IIS, Nginx 등이 있으며, 그 중 Apache가 가장 많이 쓰이고 있다. 
  • Nginx (엔진엑스)
    • 비동기 이벤트 기반 구조 
    • 웹 서버, 리버스 프록시 및 메일 프록시 기능을 지원
  • Apache 
    • 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 개발했고, 현재 가장 많이 쓰이고 있는 웹 서버
    • 리눅스, 유닉스 계열 뿐만 아니라 윈도우에서도 운용 가능

※ Apache  웹 서버

  • 설치 방식
    • DSO(Dynamic Shared Object) : 처음 컴파일 이후 모듈 추가 시 다시 컴파일 할 필요가 없음
      • /usr/local/apache/modules 디렉터리에 모듈이 생성된다. 
  • MPM(Multi-Processing Module)
    • 아파치가 받아들인 요청을 처리하기 위해 자식 프로세스에세 분배하는 방식
    • Prefork 방식과 Worker 방식이 존재 
      • Prefork 방식 : 하나의 자식 프로세스 당 하나의 쓰레드를 사용하는 방법
      • Worker 방식 : 하나의 자식 프로세스 당 여러 개의 쓰레드를 사용하는 방법
  •  소스 파일로 설치 시 configure 옵션
    • [--prefix=DIRECTORY] : DIRECTORY에 지정한 디렉터리에 아파치를 설치한다. 
    • [--enable-mods-shared-MODULE_LIST] : 지정 모듈을 동적 모듈로 컴파일
    • [--enable-so] : DSO 기능 활성화
  • 서버 환경 설정 (httpd.conf)
# vi httpd.conf 
Server Type 서버 타입 설정 (Standalone / inetd)
ServerRoot 웹 서버의 홈 디렉터리 설정
PidFile 웹 서버 가동시 자신의 PID를 기록할 파일
Listen 웹 서버 데몬의 리스닝 포트 설정
ServerToken 헤더의 Server 필드를 통해 제공할 정보 수준
ServerAdmin 웹 문서 로딩 에러 발생시 에러 페이지에 표시
Timeout 아무런 작업을 하지 않은 세션 유지 시간
MaxClient  동시 연결 가능한 최대 클라이언트 수 
Keep Alive 클라이언트와 연결된 작업 프로세스가 계속 요청을 처리할 지(On), 새로운 프로세스가 처리할지(Off) 설정
Max Keep Alive Request Keep Alive On 일 경우, 요청 작업의 최대 개수
KeepAliveTimeout Keep Alive On 일 경우, 요청이 없는 세션 유지 시간
HostnameLookups DNS에 대한 역검색 여부
DocumentRoot 웹 문서의 기본 디렉토리 설정
LoadModule DSO를 사용하기 위해 모듈을 지시하는 설정
<Directory "/" > 특정 디렉토리를 제어할 때 사용하는 태그
    Options -Indexes-FollowSymLinks -Indexes : 디렉터리  인덱싱/리스트 제한
-FollowSymLinks : 심벌릭 링크 접근 제한
    DirectoryIndex 해당 디렉터리 접근 시 가장 먼저 클라이언트에게 전달할 문서 지정
</Directory>  
<IfModule mod_userdir.c>  
    UserDir 개인 홈페이지 디렉터리 설정
    AddType application/x-httpd-php .php .html php, html 확장자를 php 타입으로 실행
    AddType application/x-httpd-php-source .php phps 확장자는 php 소스를 확인
</IfModule>  
  • 가상 호스트 환경 설정 파일 (httpd-vhosts.conf)
    • 하나의 IP 주소에 여러 도메인을 사용하는 경우에 설정한다. 
  • htpasswd 명령어 
    • 특정 페이지를 제한하기 위해 인증을 요구하고 그 인증에 대한 관리를 하는 명령어
    • 제한하고 싶은 아파치 내 디렉터리로 이동하여 .htaccess 파일을 만들어야 한다.
    • [-c] : 지정한 디렉터리에 사용자 계정 및 패스워드를 생성 
      • # htpasswd -c /var/www/html/.htpasswd admin -> /var/www/html 디렉터리에 대한 admin 계정, 패스워드를 생성
    • 처음 추가 이후에는 [-c] 옵션 없이 추가한다. 
    • [-D] : 지정한 디렉터리에 생성한 사용자 계정을 삭제
  • apachectl : 명령어 
    • [start] : 아파치 서버 시작
    • [stop] : 아파치 서버 중지
    • [restart] : 아파치 서버 재시작
    • [graceful] : 현재 연결을 끊지 않은 상태로 재시작 (설정을 변경한 경우에 적용)

 

※ APM

  • Apache, PHP, MySQL을 묶어 부르는 말
  • PHP(Power Hypertext Preprocessor)
    • 동적 웹 페이지를 만들기 위한 프로그래밍 언어
    • PHP5 설치 시 생성되는 모듈 : libphp5.so
    • PHP 작성 시 <? ~ ?> 태그를 사용한다. 
  • MySQL
    • 오픈 소스의 관계형 데이터베이스 관리 시스템
    • mysql_install_db : 최초 설치 후 기본 DB 생성할 때 사용하는 명령어

 

1-2. DB 관련 서비스의 운영

※  데이터 베이스

  • 개념
    • 통합된 데이터 (Integrated Data) : 원칙적으로 똑같은 데이터가 중복되어 있지 않지만, 의도적인 중복이 있을 수 있다.
    • 저장된 데이터 (Stored Data)
    • 운영 데이터 (Operational Data) : 어떤 기능을 수행하기 위해 반드시 유지해야 할  데이터가 존재한다.
    • 공용 데이터 (Shared Data) : 데이터가 하나의 어떤 것에 한정되어 지지 않고 여러 존재들이 해당 데이터를 공동으로 이용할 수 있다.
  • MySQL
    • 많이 사용되는 RDBMS(관계형 데이터베이스 관리 시스템)
    • 오픈 소스 프로그램이며, 다양한 OS를 지원
  • Oracle DB
    • 오라클 사에서 개발한 상업용 RDBMS
    • 유닉스/리눅스 환경에서 가장 많이 사용 됨
    • 대량의 데이터 처리에 특화
  • PostgreSQL
    • 객체-관계형 DB 관리 시스템(ORDBMS)\
    • 특징으로는 객체 생성의 유연함, 상속 기능 등이 있다. 
  • SQLite
    • 임베디드 RDBMS
    • 일반적인 RDBMS에 비해 대량의 데이터 처리에는 적합하지 않다. 
    • 데이터를 저장하는 데에 하나의 파일만을 사용한다.
  • NoSQL (Not Only SQL)
    • 전통적인 RDBMS보다 덜 제한적인 일관성 모델을 이용한다. 
    • RDBMS가 아닌 키와 값 형태로 저장되고, 키를 통해 데이터를 관리 및 접근한다.
    • 대용량 데이터 처리, 데이터 분산 처리, 빠른 읽기/쓰기 속도의 장점을 가지고 있다. 
    • 종류 : Key-value 기반(Riak, …) / Document 기반(Mongo DB, …) / Big Table 기반(Hbase, …) / …
  • Mongo DB
    • NoSQL이며 Document 기반의 DB이다. 
    • 오픈 소스 프로그램이며, NoSQL의 가장 유명한 DB이다. 
    • 각 객체의 구조가 뚜렷하며, RDBMS처럼 고정된 Schema 및 복잡한 JOIN이 없다. 

 

※  CGI (Common Gateway Interface)

  • 외부의 프로그램을 실행시켜 그 결과를 HTML로 돌려줌
  • CGI 프로토콜이 단순하여 사용하기 쉽다. 
  • CGI 스크립트는 어떤 언어로도 코딩될 수 있으나 프로세스의 생성과 초기화에 많은 시간이 소요된다.

※  Apache Tomcat

  • 웹 서버와 연동하여 실행 가능한 자바 환경을 제공하여 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하는 웹 어플리케이션 서버(WAS)
  • 오픈 소스 프로그램

 

 

2. 파일 관련 서비스

2-1. SMB 서버 관리 

※  삼바(Samba)

  • Windows 클라이언트에서 유닉스 서버에 있는 파일 / 프린터를 공유할 수 있게 해주는 오픈 소스 소프트웨어
  • SMB 프로토콜을 유닉스 환경에서 구현한 프리웨어. GPL 라이선스를 따르고 있다. 
    • SMB(Server Message Block) : 삼바 표준 프로토콜
    • CIFS(Common Internet File System) : 네트워크를 위한 SMB 프로토콜의 확장된 버전

※ 관련 명령어 / 파일

  • testparm 명령어 : smb.conf 파일을 점검하는 명령어
  • smbclient 명령어 
    • windows 공유 폴더에 접근하기 위한 명령어
    • 형식 
      • # smbclient //[HOSTNAME | IP]/[SHARE_NAME(디렉터리)]
      • # smbclient \\\\[HOSTNAME | IP]\[SHARE_NAME(디렉터리)]
    • [-U] : 로그인할 SMB 사용자 이름 지정
    • [-L] : 지정한 윈도우  host의 공유 폴더를 확인
  • smbpasswd 명령어 
    • 삼바 접근을 위한 계정을 관리하는 명령어
    • [-a] : 계정 추가 
    • [-d] : (disable) 지정한 계정을 사용하지 못하도록 설정 
    • [-e] : (enable) 사용 중지된 계정을 다시 사용할 수 있도록 설정
    • [-x] : 지정한 계정을 삭제
    • [-n] : 지정한 계정의 패스워드를 삭제 (패스워드 없이 로그인 가능) 
    • 옵션 없이 사용 시 지정한 계정의 패스워드를 변경
  • pdbedit 명령어
    • [-L] : 삼바에 등록된 모든 계정의 정보를 출력 (USERNAME : UID : GROUP)

 

2-2. NFS 서버 관리 

※  NFS (Network File System)

  • 네트워크 파일 시스템, 네트워크 상의 다른 컴퓨터에 있는 파일이나 파일 시스템을 공유하기 위한 시스템
  • RPC (원격 프로시저 호출)을 사용
  • 서버 환경 설정 (/etc/exports 파일)
    • 형식 : [마운트 디렉터리][마운트 허용 클라이언트]([옵션]) 
    • ro : 공유된 자원을 읽기만 가능
    • rw : 공유된 자원을 읽기/쓰기 가능
    • root_squash : root 권한으로 접근 시 nobody 사용자로 변경하여 마운트
    • no_root_squash : root 권한으로 접근 가능 
    • all_squash : 모든 사용자의 권한을 nobody 사용자로 변경하여 마운트
    • no_all_squash : root를 제외한 사용자에 대해 같은 UID를 가진 사용자에게 동일한 권한으로 마운트
    • sync : 파일 시스템 내 데이터 변동 시 즉시 동기화 처리
    • async : 파일 시스템 내 데이터 변동 시 비동기적으로 처리

 

※ 관련 명령어

  • shutdown 명령어
    • NFS/NIS의 마운트 정보를 출력
    • [-a] : 모든 원격 마운드 정보 출력
    • [-e] : export된 (공유되거나 내보낸) 디렉터리의 정보 출력
  • exportfs 명령어
    • NFS 서버를 다시 시작하기 않고 공유 정보를 수정하거나 출력하는 명령어
    • [-a] : /etc/exports 파일을 읽음 
    • [-r] : /etc/exports 파일을 다시 읽음
    • [-v] : 현재 공유 목록을 출력
  • rpcinfo 명령어
    • RPC 정보를 출력하는 명령어

2-3. FTP 서버 관리 

※  /(File Transfer Protocol)

  • 네트워크상의 컴퓨터들 간에 파일을 교환하기 위한 프로토콜
  • 포트번호 : TCP/20(data), TCP/21(control)
  • 종류 : vsftpd, proftpd, ...

vstpd(Very Secure FTP Demon)

  • 보안이 강화된 FTP 데몬, 많은 배포판에서 기본 FTP로 채택된 데몬이다.
  • /etc/vsftpd/ftpuser 파일
    • ftp 서버 접근을 제한할 계정 목록을 저장

proftpd

  • 서버 환경 설정 (/etc/proftpd.conf)
# vi proftpd.conf
ServerName FTP 서버 이름을 설정
ServerType 데몬 구동 방식 설정 (standalone / xinetd)
Port 리스닝 포트 번호 설정
Umask 로컬 계정 사용자들의 umask값 설정
MaxInstances 최대 FTP 접속 클라이언트 수 설정
User FTP 실행 시 사용할 사용자 명 설정
Group FTP 실행 시 사용할 그룹 명 설정
TimeoutIdle idle(유휴) 시간에 대한 타임아웃 값 설정
<Directory /*>
            AllowOverwrite on
</Directory>
지정한 디렉터리에 대한 설정 (여기서는 루트 아래 전체)
사용자가 전송하는 파일이 서버에 있을 때 Overwrite 허용 유무

<Anonymous ~ftp>
            RequireValidShell off
   
            MaxClients 5
</Anonymous>
익명 사용자를 위한 디렉터리에 대한 설정
/* /etc/shells 파일에 정의되지 않은 쉘을 사용하는 사용자 접근 허용 여부 설정 (off – 익명 사용자 접속 가능) */
익명 사용자에 대한 최대 접속 클라이언트 수 설정

 

3. 메일 관련 서비스

3-1. 메일 관련 서비스의 이해

※  메일 서비스

  • 기본 컴포넌트 3가지
    • MUA (Mail User Agent) : 사용자들이 메일을 송/수신하기 위한 클라이언트 에이전트
    • MTA (Mail Transfer Agent) : 메일 서버로 메일을 전송하기 위한 서버/클라이언트 에이전트
    • MDA (Mail Delivery Agent) : 수신된 메일을 해당 사용자에게 전달해주는 에이전트
  • 포워딩 방법
    • virtusertable 파일 설정을 통한 포워딩
    • aliases 파일 설정을 통한 포워딩
    • .forward 파일을 통한  포워딩 : 일반 계정 사용자가 자신의 홈 디렉터리에 만들어 설정

 

※  메일 관련 프로토콜

  • SMTP (Simple Mail Transfer Protocol)
    • MTA 클라이언트와 서버를 구성하는 프로토콜 (TCP/25)
    • 송신자와 송신자의 메일 서버 사이, 메일 서버와 메일 서버 사이에서 적용된다. 
  • POP3 (Post Office Protocol)
    • 메일 서버로부터 메일을 수신하기 위한 서버/클라이언트 프로토콜 (TCP/110)
    • 메일 서버로부터 메일을 가져온 후 서버에서 메일을 삭제함
  • IMAP4(Internet Mail Access Protocol)
    • POP3와 비슷한 기능이지만 더 많은 기능을 포함하고 복잡함 (TCP/143)
    • 메일 서버로부터 메일을 가져와도 서버에 메일이 유지됨

 

※  메일 관련 프로그램

  • MTA 프로그램
    • SendMail :SMTP를 기반으로 한 메일 전송 프로그램. 리눅스 배포판에 기본적으로 설치됨.
    • Qmail : SendMail에 비교해 보안이 뛰어나면 모듈 방식으로 편리한 기능
    • Postfix : IBM 라이선스를 따르는 오픈소스 프로그램
  • MUA 프로그램 
    • Thunderbird(썬더 버드) : 모질라에서 만들 메일 클라이언트 프로그램
    • Evolution(에볼루션) : GNOME의 메일 관리 프로그램
  • MDA 프로그램
    • Procmail : 메일을 필터링하는 기본적인 프로그램
    • SpamAssassin : 아파치 재단에서 개발한 메일 필터링 프로그램. 펄(Perl)로 제작 됨.
  • 보안 프로그램
    • PGP(Pretty Good Privacy) : PEM에 비해 보안성은 떨어지지만 구현이 쉽다. 
    • PEM(Privacy Enhanced Mail) : 높은 보안성, 복잡한 구현 방식으로 잘 쓰이지 않음
  • 기타 관련 프로그램
    • dovecot : POP3와 IMAP4 역할을 수행하는 프로그램

 

※  SendMail  환경설정 파일

  • /etc/mail/sendmail.cf 파일
    • Sendmail의 핵심. 메일 송/수신 시 이 파일을 해석하여 실행한다. 
    • m4 명령어로 생성할 수 있다.
      • # m4 sendmail.mc > sendmail.cf
  • sendmail.cf 파일 항목
    • Cw : 호스트 지정
    • Fw : 파일 지정
    • Dj : 특정 도메인을 강제 지정
  • /etc/mail/local-host-names 파일
    • 메일 서버에서 사용하는 호스트(도메인)을 등록하는 파일
  • /etc/mail/access 파일
    • 각종 접근 제어 설정이 저장되는 파일
    • makemap 명령어 : /etc/mail/access 파일 편집 후에 DB 파일(access.db)을 만드는 명령어
  • access 파일 항목
    • RELAY : relay 허용 * Relay : 중계
    • OK : 무조건 허용
    • REJECT : relay 차단 (주로 스팸 서버의 IP를 차단)
    • DISCARD : relay 없이 폐기 (어떠한 답신도 보내지 않음)
    • 501 : 지정된 메일 주소와 일치하는 모든 메일의 수신 차단
  • access 파일 예제 
# vi access
Connect:192.168.10.9 OK 192.168.10.9 호스트로 접속하는 클라이언트의 메일 허용
Connect:localhost RELAY localhost로 접속하는 클라이언트의 RELAY 허용
From:add@spam.com REJECT add@spam.com에서 오는 메일을 거절하고 거절 답신 보냄
From:root@spam.co.kr DISCARD root@spam.co.kr에서 오는 메일을 거절하고 거절 답신을 보내지 않음
To:log@yhn032.com OK log@yhn032.com으로 오는 메일을 허용
  • /etc/aliases 파일
    • 특정 ID로 들어오는 메일을 여러 호스트에게 전달할 때 사용하는 파일 (작은 규모의 메일링 리스트)
    • 사용자가 다른 메일 계정 (별칭)을 사용할 수 있도록 한다. 
    • newaliases 명령어 : /etc/alises 파일의 변동 사항을 적용
      • * sendmail -bi 명령어와 같은 기능 
  • /etc/mail/virtusertable 파일
    • 가상 메일 사용자의 설정이 저장되는 파일
    • access 파일과 마찬가지로 makemap hash 명령어로 DB 파일을 만들어 주어야 함.
      • webmaster@server.yhn032.com    admin -> 해당 메일 주소로 오는 메일을 admin 계정으로 수신
      • webmaster@test.yhn032.com        test     -> 해당 메일 주소로 오는 메일을 test 계정으로 수신

※ 메일 관련 명령어

  • mailq 명령어
    • 메일 큐 목록 (/var/spool/mqueue) 출력 (sendmail -bp 명령어와 같은 기능)
    • [-v] : 자세하게 출력
    • [-Ac] : /etc/spool/submit.cf 에 지정된 메일 큐 목록(/var/spool/clientmqueue)을 출력

 

4. 기타 서비스

4-1.  슈퍼 데몬 관리

※ xinetd 개념

  • 기존의 inetd를 대체하는 보안이 강화된 오픈 소스 슈퍼 데몬
  • TCP Wrapper와 유사한 접근 제어 기능을 갖는다.
  • RPC 요청에 대한 지원이 미비하지만, 포트맵으로 해결 가능
  • 주요 기능
    • DoS(Denial of Service Attack) 공격에 대한 효과적인 억제
    • 로그 파일 크기 제한
    • IP 주소 당 동시 접속 수 제한
    • TCP/UDP 및 RPC 서비스들에 대한 접근 제어
  • 설정 파일 구조 (/etc/xinetd.d/*)
vi /etc/xinetd.d/telnet
service telnet {  
                disable = no 서비스 사용 설정
                scoket_type = stream tcp = stream, udp = dgram
                wait = no 요청을 받은 후 즉시 다음 요청 처리(no)
                user = root 실행할 사용자 권한 설정
                server = /usr/sbin/in.telnetd 서비스 실행 파일 경로 
                log_type = FILE /var/log/xinetd.log 로그를 기록할 파일 경로 (FILE 선택자 사용 시)
                log_on_failue += USERID 로그인 실패 시 로그에 기록할 내용
                no_access = 10.0.0.0/8 접속을 거부할 IP 대역
                only_from = 192.168.10.0/24 접속을 허용할 IP 대역
                cps = 10 30  들어오는 접속 수 제한. 지정한 접속 수 초과할 시 지정한 시간 동안 서비스가 비활성화됨
                instances = 5 동시에 작동할 수 있는 최대 개수
                access_times = 08:00-17:00 접속 허용 시간대
}  

 

※ TCP Wrapper

  • 슈퍼 데몬에 의해 수행되는 호스트 기반의 네트워킹 ACL(Access Control List) 시스템
  • /etc/hosts.allow 파일과 /etc/hosts.deny 파일에 정의된 호스트 정보를 기준으로 접근 통제 
  • 접근 통제 파일 참조 순서 : /etc/hosts.allow -> /etc/hosts/deny -> 두 파일에 없으면 모든 접근 허용

 

4-2.  DNS 관리

※ DNS 개념

  • DNS (Domain Name System) : 사람이 식별하기 쉬운 도메인 이름을 컴퓨터가 식별하기 위한 네트워크 주소(IP)간의 변환을 수행하기 위한 시스템 (TCP, UDP /53)
  • 데몬 이름 : named
  • 기본 DNS 서버 주소에 대한 정보는 /etc/resolv.conf 파일에 저장되어 있다.
  • Recursive 네임 서버 (Cache DNS 서버)
    • 서버에 질의가 들어오면 자신의 캐시에 저장된 정보 또는 반복적 질의를 통해 그 결과를 호스트에게 응답해주는 네임 서버 
    • 반복적 질의 (Iterative Query) : Recursive 네임 서버가 각 네임 서버로 질의하는 방식
    • 재귀적 질의 (Recursive Query) : 호스트가  Recursive 네임서버로 질의할 때 사용되는 방식
  • Authoritative 네임 서버 (DNS 서버)
    • 특정 도메인에 대한 정보를 관리하면서 해당 도메인에 대한 질의에만 응답해주는 네임서버
    • 존 (Zone) : 네임서버가 관리하는 도메인 영역
    • 존 파일 (Zone File) : 관리 도메인에 대한 정보를 담고 있는 파일. 이 파일을 읽어 질의에 응답한다.
  • DNS 서버는 마스터(master) 네임서버와 슬레이브 네임서버로 구분된다.
    • 존 전송 (Zone Transfer) : 마스터에 있는 원본 존 데이터를 슬레이브가 동기화 하는 작업

※ DNS 서버 설정

  • DNS 레코드 종류
A
(Address)
- 도메인에 대한 IPv4 주소 질의 
- AAAA : IPv6 주소에 대한 질의
ANY - 도메인에 대한 모든 레코드 질의 
- 요청 대비 응답이 큰 레코드 타입
TXT 도메인에 대한 텍스트 정보 질의
SOA
(Start Of Authority)
존의 기본 속성 정보 질의
MX
(Mail Exchanger)
도메인의 메일서버 질의 
NS
(Name Server)
도메인의 네임서버 질의 
PTR
(Pointer)
- IP에 대한 도메인 정보 질의 
- Reverse Zone 파일에 설정된 PTR 레코드 질의 
CNAME
(Canonical Name)
호스트의 별명을 정의

 

※ DNS 관련 명령어

  • named-checkconf 명령어 : 네임 서버 환경 설정 파일(/etc/named.conf)을 검사
  • named-checkzone 명령어 : 존 파일(/var/named)을 검사
  • rndc 명령어
    • 네임서버 제어 명령어 (구 ndc 명령어)
    • [stop] : 네임 서버 중지
    • [status] : 
    • [reload] :
    • [flush] :
  • nslookup 명령어
    • DNS 관련된 각종 정보를 확인할 수 있는 명령어
    • [server IP_ADDRESS] : 질의할 DNS 서버 지정
    • [set type = RECORD] : 질의할 레코드 유형 지정

 

4-3.  프록시 관리

※ 프록시(Proxy) 개념

  • 프록시 서버 : 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 서버 
  • 서버는 프록시 서버를 클라이언트로 인식하고 클라이언트는 프록시 서버를 서버로 인식하게 된다.
  • 사용 목적
    • 접근 정책을 만들어 유해/악성 사이트로의 접근 제한 (방화벽 기능)
    • 익명으로 페이지에 접근 (보안성)
    • 캐시를 사용하여 인터넷을 빠르게 사용하기 위함
    • 우회

※ squid 프록시 서버

  • 유닉스 계열에서 작동하며 GPL 라이선스를 따르는 오픈 소스 프록시 서버 소프트웨어
  • 서버 환경 설정 (squid.conf 파일)
# vi squid.conf
http_port 3128 서비스 포트 지정
cache_mem 8MB 제공할 캐시 메모리 용량 지정
cache_dir /var/spool/squid 100 16 256 캐시가 저장되는 경로, 크기 지정
( 크기 100MB, 하위 16개 그 다음 단계 하위 256개의 디렉토리까지 )
cache_access_log /var/log/squid/access.log 캐시에 접속한 로그를 기록할 파일 지정
acl localhost src 192.168.10.0/255.255.255.0 별칭 지정
http_access allow localhost 접근 제어
http_access deny all 접근 제어

 

4-4.  NIS 관리

※ NIS 개념

  • NIS (Netword Information System) : Sun MicroSystems 사의 클라이언트 서버 디렉토리 서비스 프로토콜
  • 시스템의 중요한 파일의 정보들을 네트워크 상에 있는 모든 호스트에 배포하는데 사용하는 DB 액세스 기능을 제공하며 RPC(Remote Procedure Call) 기반이다.
  • 하나의 NIS 서버에서 다수의 서버에 대한 사용자 인증 기능을 수행할 수 있다. 
  • 초기에는 YP(Yellow Pages)라고 불림
  • NIS/NIS+는 보안에 취약하지만 꼭 사용해야 할 경우 덜 취약한 NIS+를 사용하는 것이 낫다. 
  • NFS(Network File Server)와 연동하여 효율적인 네트워크 서버 환경을 구출할 수 있다.
  • 관련 서비스에는 ssh, telnet, samba 등이 있다. 

※ NIS 관련 데몬

  • NIS는 RPC를 사용하기 때문에 RPC 호출을 처리하는 데몬을 반드시 구동시켜야 함
  • 초기에는 포트맵이 그 역할을 수행하였으나 현재는 rpcbind 데몬을 사용
  • ypserv : NIS 서버 데몬
  • ypbind : NIS 클라이언트  데몬
  • ypxfrd : NIS 서버 데몬. NIS 서버와 클라이언트 간의 매핑 속도를 향상시켜주는 데몬
  • rpc.yppasswd : NIS 암호 업데이트 데몬
  • rpc.ypupdated : 맵을 수정하는 데몬

※ NIS 관련 파일

  • passwd.byname : 사용자 계정 관련 정보가 저장된 파일
  • hosts.byname : 호스트 관련 정보가 저장된 파일
  • /var/yp : 관련 맵 파일이 위치하는 디렉터리
    • 설정 내용 수정 시 이 디렉터리에서 make 명령어로 갱신
    • 맵 파일은 /var/yp/[도메인명]으로 생성됨
  • /etc/yp.conf 환경 설정 파일
    • server nis.yhn032.com
    • ypserver nis.yhn032.com
    • domain yhn032.com
  • /etc/sysconfig/network : 네트워크 관련 항목들을 설정하는 파일
    • NIS 도메인 이름을 부팅 시에도 적용하기 위해 이 파일에 도메인을 등록
    • "NISDOMAIN=[도메인 이름]"을 추가한다. 

※ NIS 관련 명령어 

  • ypcat 명령어
    • NIS 클라이언트에서 사용하는 명령어. NIS 서버의 DB인 맵 파일의 내용을 출력한다.
    • passwd.byname 파일 내용을 확인할 때 사용한다.
  • ypwhich 명령어
    • NIS 클라이언트에서 사용하는 명령어. NIS 서버의 이름과 관련 맵파일을 출력한다.

※ LDAP (Lightweight Directory Access Protocol) 개념

  • IP 프로토콜 기반으로 디렉터리 서비스를 조회하고 수정하는 프로토콜 
  • X.500 DAP를 기반으로 경량화하여 만들어짐
  • NIS와 같은 네트워크 기반 인증 관련 프로토콜이다. 
  • 트리 구조로 구성되어 있으며 논리나 계급 등의 기준으로 조직화되어 있다. 

※ LDAP 엔트리

  • O(Organization) : 최상위 조직  (회사 이름)
  • OU(Organization Unit) : 그룹 (부서 이름)
  • C(Country) : 국가
  • ST(State or Province) : 주 (한국에서는 도)
  • CN(Common Name) : 이름
  • SN(Sir Name) : 이름에서 성
  • DC(Domain Component) : 도메인 
  • DN(Distinguished Name) : 고유 이름 

 

4-5.  DHCP 관리

※ DHCP (Dynamic Host Configuration Protocol) 개념

  • 호스트의 IP 주소를 동적으로 할당해주기 위한 프로토콜
  • IP를 자동으로 할당해주기 때문에 편리하고 IP 충돌 예방이 가능 
  • ARP 프로토콜 사용

※ DHCP 환경 설정 (/etc/dhcp/dhcpd.conf 파일)

  • range : DHCP 서버가 호스트에게 할당해 줄 수 있는 IP 범위 지정
    • ~ range 100.100.100.50 100.100.100.100;
  • option routers : 게이트웨이 주소 지정
    • ~ option routers 100.100.100.1;
  • option subnet-mask : 서브넷 마스크 지정
    • ~ option subnet-mask 255.255.255.0;
  • fixed-address : 특정 호스트에게 할당할 고정 IP 지정
    • ~host yhn032 {
    •     hardware ethernet AA:BB:CC:DD:EE:FF;
    •     fixed-address 100.100.100.51;
    • }

 

4-6. 가상화 기술

※ 가상화 개념

  • 가상화 기능
    • 공유 (Sharing) : 여러 개의 가상 자원들이 하나의 동일한 물리적 자원과 연결됨
    • 단일화 (Pooling) : 여러 개의 물리적 자원으로 하나의 가상 자원을 생성하여 전체 용량을 증가시키고 활용과 관리를 단순화 한다.
    • 에뮬레이션 (Emulation) : 물리적 자원에 없는 기능을 처음부터 있던 것처럼 가상 자원에서 구현할 수 있다.
    • 캡슐화 (Encapsulation) / 절연 (Insulation) : 가상 자원들과 물리적 자원들 간의 상호 매핑은 가상 자원들 또는 사용자들에게 영향을 주지 않고 물리적 자원을 교체할 수 있다. 
  • 가상화 효과
    • 자원 활용률 증가 : 물리적 자원과 자원 풀에 대한 동적인 공유 가능 
    • 향상된 보안 : 분리/격리로 데이터와 서비스에 대하여 통제되고 안전한 접근 제공
    • 가용성 증가 : 사용자에게 영향을 주지 않으면서 물리적 자원의 변경 가능 
    • 확장성 증가 : 물리적 자원의 구성 변경 없이 가상화 자원의 확장 가능
    • 향상된 프로비저닝 : 물리적 단위에 상관없이 가상화 자원을 빠르게 할당/제공 가능

※ 전가상화와 반가상화

  • 전가상화
    • 전체 하드웨어를 모두 가상화
    • 게스트 OS의 수정 없이 다양한 OS를 지원
    • CPU의 VT(Virtual Technology) 기술 사용으로 성능 저하 발생
    • 대표적인 기술로 KVM, VMware 등이 있다. 
  • 반가상화
    • 전체 하드웨어를 가상화 하지 않고, 게스트 OS 커널의 일부를 수정할 필요가 있다. 
    • 게스트 OS가 직접 하드웨어를 제어하지 않고 하이퍼바이저를 호출하여 제어한다. 
      • 하이퍼바이저 : 다수의 OS를 하나의 컴퓨터 시스템에서 가동할 수 있게 하는 소프트웨어 
    • 별도의  툴이 필요함
    • 대표적인 기술로 XEN 등이 있다. 

※ XEN

  • 대표적인 전가상화/반가상화 오픈소스 하이퍼바이저
  • 전가상화의 느린 속도를 개선하기 위해 개발됨
  • bare metal 방식 : OS가 설치되어 있지 않는 하드웨어 
  • 도메인 
    • XEN 환경에서 동작하고 있는 가상 머신을 의미
    • XEN을 사용하기 위해 도메인 0 이라는 특수한 도메인을 사용
    • 도메인 0 : 다른 도메인을 제어할 수 있는 특권을 가짐
    • 도메인 U : 특권이 없는 나머지 도메인들을 의미
  • 전가상화 구성 시에는 QEMU(Process Emulator) 기반으로 동작 
  • CPU 전가상화/반가상화를 지원
  • xm 명령어를 통해 도메인을 관리/제어할 수 있음

※ KVM (Kernel-based Virtual Machine)

  • 리눅스 커널을 하이퍼바이저로 변환하기 위한 전가상화 방식의 가상머신
  • 리눅스 커널 2.6.20부터 커널 모듈에 포함되어 있는 기능 
  • 사용하는 CPU에서 HVM(Hardware Virtual Machine) 기능을 제공해야 함.
  • QEMU
    • KVM을 사용하기 위한 에뮬레이터
    • 반가상화 방식의 하이퍼바이저이기 때문에 KVM은 반가상화, 전가상화 모두 지원한다고 할 수 있다.
  • CPU의 반가상화는 지원하지 않는다.
  • 게스트 OS의 가상화 디스크 이미지가 저장되는 디렉터리 : /var/lib/libvirt/images

※ Docker

  • 리눅스 기반의 컨테이너 가상화 기술
  • 반가상화 방식보다 더  경량화된 방식
  • 하이퍼바이저나 게스트 OS 없이 서버 운영에 필요한 프로그램과 라이브러리만 격리해서 설치/사용 가능
    • EX> 하나의 물리적 서버에 다수의 웹 서버 운영

※ 기타 가상화 관련 내용

  • 다양한 하이퍼바이저를 통합 관리하기 위한 플랫폼
    • OpenStack, CloudStack, OpenNebula 등 
  • CPU의 가상화 지원  여부는 /proc/cpuinfo 파일을 참조
  • 관련 명령어 
    • vir-top 명령어 : 가상 머신별 자원 사용률을 실시간으로 모니터링하는 명령어
    • virsh 명령어 : CUI 기반의 가상머신을 관리하는 명령어 (생성, 재시작, 종료 등)
    • virt-manager 명령어 : GUI 기반의 가상머신 관리자 프로그램
  • libvirtd 데몬 : 가상화 기술을 위한 데몬 

 

4-7. NTP 관리

※ NTP 개념

  • NTP (Netword Time Protocol) : 네트워크를 통해 네트워크 상의 컴퓨터 시간을 동기화 시키는 프로토콜
  • NTP는 계층 구조를 가지며, 각 계층을 stratum이라고 한다. 
  • 포트번호 : TCP/123

※ NTP 계층 구조

  • Stratum 0 : 세슘 원자시계, GPS, 표준 주파수 방송국 등
  • Stratum 1 : 계급 0에 동기화 시킨 시간 서버 
  • Stratum 2 : 여기서부터 계층적 트리 구조를 형성

※ NTP 관련 명령어 / 파일

  • ntpdate 명령어 : NTP 서버를 이용하여 시간을 동기화시키는 명령어
  • ntpq -p 명령어 : peer들의 상태를 요약해서 출력
  • /etc/ntp.conf 파일 : ntp 서버 설정 파일

 

4-8. VNC 관리

※ VNC 개념

  • VNC (Virtual Network Computing) : 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템
  • 거의 모든 OS에서 사용할 수 있는 오픈소스 소프트웨어
  • 포트번호 : 기본적으로 5900번이고 디스플레이 넘버를 더해서 사용한다.

※ VNC 관련 명령어 / 파일

  • vncpasswd 명령어 : VNC 서버 패스워드를 변경하는 명령어
  • vncserver 명령어 : VNC 서버 가동
    • [-kill] : VNC 서버 종료
      • vncserver -kill : 1 -> VNC 1번 디스플레이 종료
  • vncviewer 명령어 : 클라이언트에서 VNC Viewer를 실행하는 명령어
  • /etc/sysconfig/vncservers 파일
    • VNCSERVERS="1:root 2:yhn032"                        //디스플레이 번호 : 계정명
    • VNCSERVERS[1]="-geometry 1024x768"            //1번 디스플레이에 대한 설정 (-geometry : 해상도 설정)
    • VNCSERVERS[2]="-geometry 1024x768"            //2번 디스플레이에 대한 설정 (-geometry : 해상도 설정)