TIL

[에스넷시스템 부트캠프] TIL Day 46 - SELinux, DHCP, NFS, AutoFS

yulee_to 2025. 7. 25. 16:22
728x90
반응형

1. SELinux (Security-Enhanced Linux)

SELinux는 NSA(미국 국가안보국)에서 개발하고 Red Hat 등에서 배포하는 리눅스 커널 보안 모듈이다.

리눅스 시스템에 강제 접근 제어(MAC: Mandantory Access Control)를 도입하여 기존의 권한 기반 보안 모델(DAC)보다 훨씬 정교하고 세분화된 보안 제어를 가능하게 해준다. 

 

1) SELinux 정책 구성 요소

1-1) 보안 컨텍스트 

리눅스 객체인 파일, 디렉토리, 포트, 프로세스 등에 부여되는 보안 라벨로 다음과 같은 형태이다. 

user:role:type:level
  • user : SELinux 사용자
  • role : 역할 (Role Based Access Control)
  • type : 주요 결정 기준. 대부분 _t로 끝남. ex) httpd_sys_content_t
  • level : 민감도 수준 (MLS 정책에서 사용)

 

 

1-2) 모드

SELinux가 어떻게 동작할지를 설정하는 전역 상태이다. 

  • Enforcing (강제) : 정책을 엄격하게 적용, 허용되지 않은 액세스는 거부하고 로그 기록
  • Permissie (허용) : 정책은 적용하지 않고, 거부될 행동을 로그에만 기록하는 문제 해결용 모드
  • Disabled (비활성화) : SELinux 완전히 비활성화. 재부팅 필요 

 

1-3) Boolean 

SELinux 정책의 일부 기능을 켜고 끌 수 있는 스위치이다. 

예시로 웹 서버가 NFS 공유를 사용할 수 있는지, FTP로 파일 업로드 허용 여부 등이 있다. 

 

2) 정책 유형

SELinux는 몇가지 정책 모델을 지원하며 기본적으로 Targeted Policy를 사용한다.

  • Targeted Policy : 주요 데몬만 SELinux 제어 대상
  • MLS(Multi-Level Security) : 등급 기반 보안 정책으로 군사 시스템에 사용
  • MCS(Multi-Category Security) : SELinux의 다중 범주 접근 제어
  • Strict Policy : 시스템 전체에 엄격한 MAC 적용 (실무에서 잘 사용 X)

 

2. DHCP (Dynamic Host Configuration Protocol)

DHCP는 네트워크 상에서 클라이언트에게 IP 주소 및 각종 네트워크 설정을 자동으로 할당해주는 프로토콜이다. 이 프로토콜은 네트워크 관리의 효율성과 자동화를 위해 고안되었으며, IP 임대 개념을 통해 일시적인 주소 할당을 수행한다.

즉, 클라이언트는 고정된 설정 없이 자동으로 IP, 서브넷 마스크, 게이트웨이, DNS 등 필수 정보들을 DHCP 서버로부터 받아 사용한다.

 

1) DHCP 특징

  • 자동화 : 사용자 개입 없이 IP 및 기타 설정을 자동 부여
  • 임대 : IP 주소는 일정 시간 동안만 유효
  • 효율적인 자원 관리 : 제한된 IP 자원을 효과적으로 분배 가능
  • 정적 할당 지원 : MAC 주소 기반으로 고정 IP 할당 가능 (예약 IP)

 

2) BOOTP와의 관계 

항목  BOOTP  DHCP
고안 시기 1980년대 1990년대
동작 방식 정적 할당 위주 동적 할당 중심 (자동 회수 및 갱신)
유연성 낮음 높음 (임대, 갱신, 예약 가능)
호환성 일부 DHCP는 BOOTP도 지원  

 

 

3) DHCP 동작 원리

1. DHCP 클라이언트는 부팅하면서 현재 네트워크 안에 DHCP 서버가 있는지 찾기 위해 DHCP Discover 메시지를 브로드캐스트

2. DHCP 클라이언트로부터 메시지를 받은 DHCP 서버에서는 네트워크 서비스 정보를 담은 DHCP Offer 메시지를 DHCP 클라이언트에게 전송

3. DHCP 서버로부터 DHCP Offer 메시지를 받은 클라이언트는 메시지에 포함되어 있는 IP 주소와 서비스 정보를 이용해 네트워크를 설정한 후, DHCP 서버에 사용 의사를 알리는 DHCP Request 메시지를 DHCP 서버로 보내게 됨

4. DHCP Request 메시지를 수신한 DHCP 서버는 DHCP Acknowledge 메시지를 통해 사용 허가를 해주게 되고, DHCP 클라이언트는 DHCP 서버에서 보내준 정보(IP, DNS, Gateway 등)를 받아서 설정

 

4) DHCP 서버 

  • 서버가 제공하는 기능
    • IP와 관련된 값(IP, Netmask 등)
    • 부가적인 정보 (Router IP, DNS Server IP, Boot Server IP, 벤더 정보 등)
  • 서버 용도
    • 효율적인 IP 관리 : 수동 설정 불필요, 충돌 방지
    • 보안 : 허가된 장치에만 IP 제공 가능
    • 무선 AP 관리 : 무선 AP 및 장비 IP 자동 할당으로 유동적 대응 가능
    • 네트워크 부트 지원 : PXE, Diskless 환경 지원

 

5) DHCP 클라이언트

Linux의 경우 dhclient 명령이 대표적인 DHCP 클라이언트이다. 설정 파일은 /etc/dhclient.conf이다. 

DHCP 클라이언트는 IP 주소와 함께 다음을 요청할 수 있다. 

  • Gateway
  • DNS
  • Broadcast 주소
  • Hostname 등
한 개의 네트워크 안에 DHCP 서버는 하나만 존재해야 한다. 따라서 Linux DHCP 서버와 VMware DHCP 서버가 같은 네트워크에 존재하면 안 된다.

 

6) 추가 개념

  • Lease Time (임대 시간) : 임시 IP를 클라이언트에 제공하는 기간으로 만료되면 클라이언트는 갱신 요청을 통해 다시 임대
  • 예약 IP : MAC 주소를 기준으로 항상 같은 IP를 할당
  • DHCP Replay : DHCP 서버가 다른 네트워크에 존재할 경우 라우터나 L3 스위치가 중계

 

3. NFS (Network File System)

NFS는 리눅스/유닉스 기반의 네트워크 파일 공유 프로토콜로, 원격지 파일 시스템을 마치 로컬 디스크처럼 마운트하여 사용할 수 있게 해준다. 클라이언트/서버 구조로 동작하며 TCP/IP 프로토콜을 기반으로 통신한다.

 

1) NFS 서버 데몬

NFS 서버는 여러 데몬 프로세스를 통해 클라이언트 요청을 처리한다.

  • rpc.mountd : NFS에서 마운트 요청을 처리하기 위해 사용되는 데몬
  • rpc.nfsd : NFS 버전과 프로토콜이 정의되도록 하고 사용자 레벨을 제공
  • rpc.rquotad : 원격 사용자에게 사용자 할당 정보 제공
  • rpc.statd : NFS 클라이언트 상태 감시 (장애 감지 시 유용)
  • rpc.lockd : 파일 잠금 관리

클라이언트가 서버를 마운트할 때는 반드시 이 데몬들이 활성화되어 있어야 한다.

 

2) NFS 구성 파일

  • /etc/exports : NFS 서버에서 부팅시에 공유하는 정보를 담는 파일
  • /etc/fstab : NFS 클라이언트에서 부팅시에 마운트하는 정보를 담는 파일

마운트가 완성된 클라이언트를 부팅하는 경우에는 항상 NFS 서버를 먼저 기동하고서 클라이언트를 부팅한다.

 

3) NFS 클라이언트 - 서버 구조 

 

 

  1. 응용 프로그램이 파일 시스템(예: 파일 읽기/쓰기 등)에 접근 요청을 하면,
  2. 커널은 이 요청을 VFS (Virtual File System) 를 통해 처리함
    1. VFS는 다양한 파일 시스템(NFS, ext4 등)에 대해 추상화된 공통 인터페이스 역할을 수행
  3. 파일이 NFS 파일 시스템에 존재하면,
    → VFS는 요청을 NFS 클라이언트 모듈로 전달
  4. NFS 클라이언트는 요청을 RPC/XDR 프로토콜을 통해 NFS 서버로 전달
    1. 이 요청에는 NFS 서버 주소, 공유 디렉토리 경로 등의 정보 포함

 

 

4) NFS 관련 명령어

  • exportfs : NFS Server 공유자원을 확인 할 때 사용하는 명령어
  • showmount : NFS Client 공유할 자원 확인 할 때 사용하는 명령어
  • mount : NFS Client 공유된 자원 마운트 할 때 사용하는 명령어

 

4. AutoFS

AutoFS는 NFS 공유를 자동으로 마운트하고, 더 이상 사용하지 않는 경우 NFS 공유를 자동으로 마운트 해제하는 서비스이다. 

 

1) AutoFS의 장점

  • 루트 권한 없이 사용 가능 : 사용자는 cd, ls 등 기본 명령만으로 자동 마운트가 실행됨
  • 여러 사용자와 공유 가능 : 액세스 권한이 있다면 시스템의 모든 사용자가 마운트된 공유 자원 사용 가능
  • 리소스 절약 : 필요할 때만 마운트되고, 사용하지 않으면 자동으로 마운트 해제되어 시스템 자원 절약
  • 간단한 클라이언트 측 설정 : 서버 측 설정 없이 클라이언트 측 구성만으로 자동 마운트 동작 (서버는 일반 NFS 서버)
  • 보안 옵션 지원 : mount 명령과 동일한 보안 및 마운트 옵션을 그대로 사용할 수 있음
  • 다양한 파일 시스템 지원 : NFS 외에도 CIFS, ISO9660, USB 등 여러 파일 시스템 자동 마운트 가능
  • 유연한 마운트 방식 제공 : 간접 마운트와 직접 마운트 방식을 모두 지원하여 구성 유연성 확보

2) 작동 방식

1. 사용자가 특정 경로 (/net/server/home)에 접근

2. AutoFS 데몬이 설정된 매핑 파일을 참고하여 마운트 시도

3. 파일 시스템 마운트 수행

4. 일정 시간 사용되지 않으면 자동으로 언마운트

 

3) 마운트 방식

  • 간접 마운트
    • 특정 디렉토리 하위에 여러 공유 자원을 동적으로 마운트
    • 사용자가 하위 디렉토리에 접근할 때마다 해당 자원이 마운트
  • 직접 마운트
    • 마운트 지점이 시스템의 특정 디렉토리 경로에 직접 지정되는 방식
    • 사용자 입장에서는 마치 정적 마운트처럼 보이지만, 사용 시점에만 동적으로 마운트됨
728x90
반응형