[리눅스마스터 1급] 16/03/12 기출 - 3과목 정리

2023. 8. 26. 03:42자격증/리눅스마스터 1급

✅ 파일 공유를 위한 서비스 및 프로토콜 - SAMBA, NFS(Network File System), FTP(File Transport Protocol)

📕 SAMBA

  1. 특징
  • GPL 기반의 자유 소프트웨어로 리눅스와 윈도우 간 디렉토리, 파일,, 프린터 등 공유에 사용
  • TCP/IP 기반으로 NetBIOS상에 동작하는 SMB(Server Message Block) 프로토콜 이용
  • 삼바에서 설정한 그룹과 호스트명이 윈도우의 Network Neighborhood에 컴퓨터 이름으로 표시된다, 또한 삼바를 이용하면 상대의 호스트의 IP 주소 대신 컴퓨터 이름을 이용하여 접속 가능 (WINS- Windows Internet Name Service)
  • CIFS(Common Internet File System)은 SMB를 인터넷까지 확장한 표준 프로토콜, 유닉스와 윈도우 환경 동시 지원
  1. 삼바 서버 구성 요소
  1. nmbd
    • UDp 137, 138 포트 이용
    • WINS 서비스를 위한 데몬
  2. smbd
    • 삼바 프로토콜의 주요 기능 담당
    • TCP 445 포트 이용

3) 삼바 서비스 이용

a) 삼바 서버 접속: smbclient 명령어 이용

  • 호스트 공유 폴더 이름 지정 예시
smbclient //192.168.12.22/[공유폴더]

# 단, \\를 이용할 경우 \\ 2개씩 이용
smbclient \\\\\\\\192.168.12.22\\\\[공유폴더]

b) 삼바 사용자 목록 및 세부 내용 확인: pdbedit

# pdbedit -L
posein:500:
yuloje:501:

# 옵션
    - L : 등록된 삼바 사용자 목록 조회
    - v : 사용자 목록 출력 시 상세한 정보 표시
    - u : 사용자 이름 지정
    - a : 삼바 사용자 계정 추가, 패스워드 설정(반드시 리눅스 시스템에 등록된 계정이어야 함)
    - r : 삼바 사용자 계정 변경
    - x : 삼바 사용자 계정 제거

c)  삼바 계정 & 패스워드 설정: smbpasswd

  • 반드시 리눅스 시스템에 등록된 계정이어야 함

📗 NFS (Network FileSystem)

  1. 특징
  • TCP/IP를 이용하여 원격 호스트(컴퓨터)의 파일 시스템을 마치 로컬 호스트(PC)에 있는 것처럼 Mount하여 사용할 수 있는 서비스.
  • RPC(Remote Procedure Call)을 이용하여 NFS 관련 명령어를 전달하므로 rpcbind 데몬 필요
  1. 주요 패키지
  • rpcbind: rpcbind, rpcinfo 등 명령어 포함
  • nfs-utils: nfs 관련 데몬 및 명령어 포함
  1. NFS 서버 설정
  • /etc/exports 파일 - NFS 서비스 설정용
  • # 주요 옵션 **시험 단골: root 사용자의 접근 권한 설정 항목 - no_root_squash: root 접근 허용 - root_squash: root 권한 접근 거부하기 위하여 클라이언트 root 요청을 기본값(nobody)로 매핑 -> 즉, 일반 사용자 권한 - anounuid: 특정 계정의 권한(uid)를 허용 - all_squash:NFS클라이언트에서 접근하는 모든 사용자(root포함)의 권한을 nobody로 매핑시킨다. -> 예외없이 모든사용자 === 일반사용자
  1. NFS 서비스 이용
  • mount 명령어 이용
  • mount -t nfs [NFS 서버] : [대상(공유된) 디렉토리] [마운트 디렉토리] *ps. mount -t nfs -> mount.nfs 로 대체 가능 # 예시 mount -t nfs 192.168.13 : /joon /mnt

📒 FTP (File Transport Protocol)

  1. 특징
  • TCP/IP를 이용하여 FTP 서버 & 클라이언트 간 파일 전송을 위한 프로토콜.
  • 등록된 사용자만 접속 O (단, 익명의 사용자 지원 O → 보안 취약 O, 권장 X)
  • vsfpd(Very Secure FTP Daemon) : 대표 FTP 프로그램, CentOS에서 기본 제공
  • ㄴ 보안 중요시 함, 익명 사용자 디렉터리 권한 777 → 로그인 제한 O
  1. FTP 패키지 설치
  • vsftpd 파일 목록
    • /etc/vsftpd/ftpusers : ftp서버에 접근할 수 없는 계정 목록 파일 (PAM 연관된 설정 파일)

✅ 메일 서비스 관련 프로토콜 (SMTP, POP, POP3, IMAP)

📕 SMTP (Simple Mail Transfer Protocol) - TCP 25번 포트 이용

  • 인터넷에서 이메일을 전송하기 위해 사용하는 프로토콜

📒 POP , POP3 - TCP 110번 포트 이용

  • 메일 서버에 도착한 메일을 수신하는 프로토콜
  • 클라이언트 프로그램으로 메일을 가져온 후 서버에서 해당 메일 삭제

📗 IMAP - TCP 143번 포트 이용

  • 메일 서버에 도착한 메일을 수신하는 프로토콜
  • 서버에 일단 남겨두고 나중에 삭제

📍 Tip

  • POP3 및 IMAP에서 사용하는 서버 프로그램 : dovecot

✅ 메일 서비스

  • sendMail
    • ****주요 설정파일
      • /etc/alliases: 메일의 별칭 혹은 특정 계정으로 수신한 이메일을 다른 계정으로 전달하도록 설정
      • # 예시 - webmaster: ihduser, kalituser - admin: include:/etc/main_admin
      • /etc/mail/local-host-names: sendmail에서 수신할 메일의 도메인과 호스트, 즉 메일 수신자를 설정하며 sendmail을 다시 시작하여 적용
      • /etc/mail/access: 메일 서버에 접속하는 호스트의 접근을 제어하는 설정 파일스팸 메일 방지 등에 사용 가능
      • makemap hash /etc/mail/access
      • /etc/mail/virtusertable: 가상의 메일 계정으로 들어오는 메일을 특정 계정으로 전달하는 정보 설정
      • makemap hash /etc/mail/virtusertable
    • 주요 명령어
    • 1) sendmail - sendmail을 관리하는 명령어 - 옵션: -bq(메일 큐 상태 표시), -b(alliases정보갱신), -oQ(특정 큐의 상태 표시) 2) mailq - 메일 큐의 내용을 표시하는 명령어 - mailq -Ac: /etc/mail/submit.cf 파일에 지정된 큐의 상태 표시
  • 메일 서비스 관련 프로그램
    • MTA (Mail Transfer Agent)
      • SMTP 프로토콜 이용하여 메일 전송
      • sendmail, qmail, postfix
    • MDA (Mail Delivery Agent)
      • 일종의 대리인 역할 수행, 메일 박스에 도착한 메일을 대행해서 가져오거나 전달하는 역할 수행
      • 대표 프로그램: procmail → 스팸 메일 필터링, 메일 정렬 등의 역할도 수행
    • MUA (Mail User Agent)
      • 사용자가 메일을 수신 혹은 발신할 때 사용하는 프로그램
  • 메일 암호화 관련 도구: Nmap

✅ DNS (Domain Name Service)

  1. 개념
    • 도메인 이름과 IP 주소를 상호 변환하는 서비스
    • TCP 53, UDP 53을 이용
  2. DNS 서버 종류
    • Primary Server
      • Master Server
      • 필수 항목
    • Secondary Server
      • Slave Server
      • Primary Server의 zone 파일 백업
      • Master DNS에 문제가 있을 경우 보조 DNS
    • Caching Name Server
      • 도메인을 소유하지 않아도 구성 가능
      • 도메인 관리 없이 resolving 역할만 수행
      • 속도를 향상시키는 역할→ DNS 관련 질의가 많은 경우 해당 서버를 구성하여 인터넷 사용 속도 ↑
  3. DNS 서비스 이용
    1. 패키지 설치
    2. # DNS 서버 프로그램 : bind # 데몬: named # 설치 명령어 yum -y install bind # 설치 후 bind, bind-libs, bind-utils 패키지 설치
    3. bind 관련 파일과 디렉토리
      • /etc/named.conf
        • DNS 서버의 주요 환경 설정 역할 → zone 파일, Reverse zone 파일 포함
        • options
          • DNS로 운영 중인 현재 시스템 외에는 네임 서버에 대한 질의를 허가하지 않으려고 할 때 옵션
          • allow-query: {localhost}
        • zone 파일
          • 포함: 도메인 이름, ip주소, 관련 리소스 간 매핑, 리소스 레코드
          # ZONE 파일 설정 일부
          www IN A 192.168.12.22
          WWW1 IN CNAME WWW
          WWW2 IN CNAME WWW
          
        • Reverse zone 파일
          • IP주소에 대한 도메인 정보 조회
        • 명령어
        • # 문법적 오류 검사 $ named-checkconf
      • /var/named
        • root 도메인 서버의 정보를 담은 named.ca
        • 사용자가 설정한 zone 파일 등 저장하는 디렉토리

✅ 가상화 관리 서비스 (Virtualization)

  1. 개념
    • CPU , 메모리 , 디스크와 같은 물리적인 자원을 → 여러개의 논리적인 자원으로 나눔
    • 또는, 다수의 물리적인 자원을 → 하나의 논리적인 자원으로 통합하는 서비스
  2. 특징
    • 논리적인 자원(Resource Pool)에 기반한 효율적인 자원 활용, 물리적인 공간 절약, 데이터 및 서비스에 대한 가용성 증가, 중앙 집중 관리에 따른 보안성 향상 등의 장점 제공
    • 대표적인 특징
      • 공유: 다수의 많은 가상 자원들이 하나의 동일한 물리적 자원과 연결, 가리키는 것을 의미
      • 프로비저닝: 사용자의 요구사항에 맞게 할당, 배치, 배포, 가상화 기반의 자원 할당은 물리적 단위보다 더 세밀한 조각 단위로 가능
      • 단일화
      • 애뮬레이션: 물리적 자원 자체는 원래부터 존재하지 않았지만, 가상 자원은 어떤 기능들이나 특성들을 마치 처음부터 존재했던 것처럼 가질 수 있다.
      • 절연: 하나의 가상화 서비스에 문제가 발생하여도 다른 서비스로 장애가 전이되지 않도록 관리
  3. 가상화 서비스 방식
    • 하드웨어 레벨의 가상화 방식
      • VMM(Virtual Machine Monitor)이 물리적인 하드웨어를 가상머신의 하드웨어와 매핑, 게스트 운영체제의 자원 사용 관리
      • 종류
        • 전가상화(Full Virtualization)
          • CPU의 물리적 가상화 지원 기능을 이용하여 하드웨어를 완전히 가상화
          • 윈도우, 리눅스 등 다양한 게스트 OS를 수정없이 사용 가능
        • 반가상화(Para Virtualization)
          • 게스트 OS는 하이퍼바이저에 하드웨어의 제어를 요청하여 동작
          • 하이퍼바이저가 하드웨어 사용을 통제하므로 상대적으로 높은 성능
          • 게스트 OS수정 필요, 리눅스 등 오픈소스가 주로 지원
    • 호스트 기반 가상화 방식
      • 호스트 운영체제에 VMM을 설치하고 가상 머신을 생성
      • 종류
        • VirtualBox, VMware Player
    • 운영체제 가상화 방식
      • 하드웨어에 설치된 하나의 운영체제 위에 가상화 계층을 두어 가상화 서비스를 제공
      • 종류
        • 컨테이너 방식
          • 호스트 운영체제의 커널을 공유, 각각의 애플리케이션 별로 격리된 컨테이너 생성
          • 경량화 된 가상화 방식
          • 예시- Docker
        • 하드웨어 에뮬레이션 방식
          • 하드웨어를 소프트웨어 방식으로 에뮬레이션 함
  4. 리눅스 대표 가상화 기술
    • KVM
      • 인텔 CPU 지원
      • VT-X & VMD-V 기반 CPU 전가상화 지원 기술 (리눅스 커널 2.6.20 이후)
      • CPU 반가상 기술 지원 X
      • 이더넷, Disk I/O, 그래픽 등 반가상화 지원
      • 호스트 서버에서 보면 게스트 서버는 하나의 프로세스로 간주되기 때문에 오버헤더 거의 X
    • XEN
      • 1990년대 케임브리지 대학교, 오픈소스
      • CPU 전가상화, 반가상화 모두 지원 → 하이퍼바이저 기반의 가상화 기술
      • 리눅수, 윈도우, Solaris 모두 지원
      • 반가상화 구성 시 → 호스트와 다른 아키텍처의 게스트 실행 x
      • 전가상화 구성 시 → QEMU 기반 동작
    • VirtualBox
      • 오라클 주도
      • x86 기반 가상화 소프트웨어
    • Docker
      • 하이퍼바이저, 게스트 운영체제 설치 필요 X
      • 서버 운영에 필요한 프로그램 & 라이브러리만 이미지로 → 프로세스처럼 동작
      • 경량화된 가상화 기술
  5. /proc/cpuinfo
    • flag값으로 CPU 가상화 지원 여부 점검 가능
    egrep 'svm|vmx' /proc/cpuinfo
    
    - svm: AMD-V
    - vmx: Intel VT-v
    결과
    flags :::블라블라
    
  6. 가상화 주요 명령어
    • virt-top
      • 가상화 현황 top과 유사한 형식으로 출력
    • virsh
      • 텍스트 기반의 콘솔 환경에서 가상 머신 관리 도구 (생성, 시작, 재시작, 종료, 강제 종료)
    • virt-manager
      • 가상 머신을 손쉽게 시작 및 종료 가능
      • 가상머신의 cpu 사용량, 호스트 cpu사용량 모니터링 할수 있는 GUI기반 도구
    • libvirt
      • Linux에서 가상화 지원을 위한 api, 데몬, 라이브러리, 관리 툴들 모음
    • libvirtd
      • libvirt 관리시스템의 서버 데몬으로 관리도구와 통신하여 원격 도메인의 명령어 전달
    • xm
    • xen관리하는 명령어

✅ 기타 서비스

📕 슈퍼 데몬

  1. 개념
    • inetd와 같이 다른 서비스를 실행 및 관리하는 데몬
      • 리눅스의 inetd방식
        • 사용자의 요구에 따라 필요한 서비스 실행
        • 요청 완료 시 서비스 종료 → 시스템 자원 효율 ↑
        • standalone 방식에 비해 사용자 요청 처리시간 느림
        • but, 다양한 서비스를 제한된 시스템 자원으로 운영하기에 효율 ↑
        • /etc/inetd.conf 에서 서비스 사용 여부 지정, 접근 제어 (TCP WRAPPER) 사용
  2. CentOS7 서비스 관리 방식
    • systemd 방식 → 소켓기능(ondemand activation)을 통해 효율적으로 메모리 관리 가능
    • 기존 xinetd를 통해 제공하던 rsync, telnet등의 서비스 → systemd 방식으로 통합
    • xinetd, TCP Wrapper를 제공하는 서비스가 제한적, 접근제한이 필요할 경우 이후 iptables, fireawlld사용 권장
  3. xinetd (CentOS7 이후로 해당 방식 중요성 낮음)
    • IP 주소 당 접속 수 제한
    • DOS 공격에 대비한 설정 제공
    • 서비스에 대한 접속 시간 제한
  • 📗 프록시 서비스
    1. 개념
      • 클라이언트와 서버 사이에 위치
      • 요청과 응답 과정에서 데이터를 중계하는 역할 담당
    2. 목적
      • 서버의 데이터를 캐시하여 인터넷 전송 속도를 빠르게 하기 위해 사용
      • 서버의 가용성 향상을 위한 부하분산에 사용 가능
      • 사용 분야
        • 응답 속도 향상
        • 서버 부하 분산 → 다수의 서버를 서버팜으로 구성하여 정해진 규칙에 따라 클라이언트의 요청을 특정 서비스 요청으로 전달
        • 접근 통제 → 프록시 서버에 설정한 접근 통제 정책에 따라 요청 제한
        • 악성 코드 유입 방지
    3. 리눅스 프록시 서버(squid)
      • 리눅스에서 사용할 수 있는 대표적인 프록시 서버
      • GPL 오픈소스 소프트웨어
      • 캐싱을 통해 HTTP, FTP, gopher 등 서비스의 데이터 응답 속도 향상
      • TCP 3128 이용

📒 DHCP 서비스 (Dynamic Host Configuration Protocol)

  1. 개념
    • 클라이언트 호스트가 사용할 IP 주소, 게이트웨이 주소, 네임서버 주소 등을 자동으로 할당하는 속도
    • 제한된 IP주소 풀을 다수의 클라이언트에게 동적으로 할당하여 IP주소 사용의 효율을 향상 가능
      • DHCP 프로토콜을 이용하여 IP 주소 임대기간 설정 가능
    • 저장 장치가 없는 호스트에게 IP 자동 부여, 네트워크 부팅 지원하기 위해 사용 가능 → BOOTP(Bootstrap Protocol) 사용
    • UDP 프로토콜과 브로드캐스트 통신 방식 사용
  2. 서비스 설정 파일
    • /etc/dhcp/dhcpd.conf
      • 설정 문장 뒤에는 반드시 세미콜론 필수
      • 주요 설정 항목
        • option routers : 게이트 웨이 주소 지정
        • # vi /etc/dhcpd.conf options routers 192.168.12.1

📘 VNC (Virtual Network Computing) 서비스

  1. 개념
    • 비트맵 이미지 기반의 RFB(Remote Frame Buffer) 프로토콜 이용
    • GUI방식으로 원격 컴퓨터 접속 기능
    • TCP/5900+[디스플레이번호]
    • 동시에 여러 클라이언트가 접속하여 화면 공유 가능
    • VNC 클라이언트
      • 서버 화면에 전송받아 표시, 마우스 키보드 등 컨트롤 정보를 → 서버로 전달
    • VNC 서버
      • 서버 컴퓨터의 화면을 공유하기 위해 사용
      • VNC 클라이언트로부터 전달받은 마우스, 키보드 신호를 통해 통제

📙 NTP(Network Time Protocol) 서비스

  1. 개념
    • 컴퓨터 간 시간을 동기화하는 NTP 프로토콜을 이용하여 NTP 서버와 시간 동기화
    • UTC기준 1/1000초까지 시간 동기화 가능
    • UDP/123 기본 포트
  2. 계급(Startnum) 구조
    • 클럭소스 수준의 계층적, 반계층화된 시스템을 사용하고 이 계층 구조의 각 수준을 계급이라고 함.
    • 계급 수준은 레퍼런스 시계에서 거리 정의
    • 숫자가 낮은 계급(단계)가 높은 계급(단계)보다 더 품질 우수
  3. 설정 파일
    • /etc/ntp.conf
  4. 주요 명령어
    • ntpdate
      • 원격 서버와 시간을 동기화
    • ntpq
      • NTP 질의 명령어
      • -p옵션으로 연결된 서버의 상태 출력

✅ 기타 용어

  1. DOS 공격 - LAND ATTACK
    • 공격자가 임의로 자신의 ip 주소 및 포트를 대상 서버의 ip 주소 및 포트와 동일하게 하며 서버 공격
    • 이러한 패킷을 공격 시스템에 보내면 해당 시스템은 SYN패킷의 출발지 주소 참조
    • 패킷은 외부로 나가지 않고 자신에게 돌아옴
    • 이 공격법은 syn flooding처럼 동시 사용자 수를 증가 시키므로 CPU부하를 발생시킴
  2. 스크린 호스트 게이트웨이
    • 스크린 라우터와 단일 홈 게이트웨이를 조합한 형태
    • 스크린 라우터에서 패킷 필터링을 1차로 수행하고, bastion 호스트 역할을 수행하는 단일 홈 게이트웨이에서 프록시와 같은 서비스를 통해 2차 방어
  3. iptables 관련 명령어
    • 같은 IP주소에서 60초 동안에 15번 이상 SSH 접속을 시도하면 DROP 시키는 정책을 ssh 사슬에 추가하는 명령어
    	iptables -A SSH -p udp --dport 22 -m recent update --seconds 60 hitcount 15 -j Drop
    
    • /etc/sysconfig/iptables
      • /etc/rc.d/init.d/iptables 스크립트에서 iptables-save 명령어 사용해서 관련 정책 저장
      • 해당 저장 명령 수행 시, 해당 설정 파일에 관련 정책 저장
      • 시스템 재부팅 시에 자동으로 규칙 적용