09/11 — 파일·인증·메일·가상화 서비스
이번 단원은 서비스가 많지만 같은 틀로 읽는다. 각 서비스 이름을 파일 전송·공유, 신원 정보·인증, 메일 전달·열람, 기반 서비스, 가상 실행 환경의 역할에 연결한다. 현재 시스템에 서버를 설치하거나 외부에 공개하는 작업은 하지 않는다.
1. 파일 서비스 세 가지
| 서비스 | 무엇을 하는가 | 대표 연결 |
|---|---|---|
| FTP | 파일을 업로드·다운로드 | vsftpd, 제어 TCP 21 |
| NFS | 원격 디렉터리를 파일시스템처럼 마운트 | Linux/Unix, 2049 |
| Samba/SMB | SMB 기반 파일·프린터 공유 | Windows와 상호운용, TCP 445 |
FTP는 클라이언트와 서버 사이에서 파일을 전송한다. NFS는 원격 디렉터리를 마운트해 로컬 경로처럼 사용한다. Samba는 Linux에서 SMB 파일·프린터 공유를 제공해 Windows 등과 상호운용하는 대표 구현이다.
2. FTP와 vsftpd
FTP는 제어 연결과 데이터 연결이 분리된다. 제어 연결은 로그인·명령을, 데이터 연결은 파일 목록·파일 내용을 전달한다. 목록 조회와 전송을 확인할 때 데이터 연결의 방화벽·NAT 설정을 함께 본다.
- Active: 클라이언트가 알려준 쪽으로 서버가 데이터 연결을 시작. 전통적으로 서버 데이터 포트 20과 연결.
- Passive: 서버가 알려준 데이터 포트로 클라이언트가 연결. 서버 측 passive 포트 범위와 방화벽·외부 주소 설정이 중요.
- 데이터 연결의 포트·시작 주체는 Active·Passive 방식과 설정된 포트 범위로 판단한다.
- 기본 FTP는 자격 증명·데이터를 평문으로 보낼 수 있다. FTPS는 TLS를 적용한 FTP, SFTP는 SSH 기반으로 별개다.
vsftpd의 RHEL 대표 파일은 /etc/vsftpd/vsftpd.conf, upstream·Debian 계열에서는 /etc/vsftpd.conf도 본다. 옵션=값 형식이며 보통 등호 주위 공백을 넣지 않는다.
| 옵션 | 역할 |
|---|---|
| anonymous_enable | 익명 로그인 |
| local_enable | 로컬 사용자 로그인 |
| write_enable | 쓰기 관련 명령 허용 |
| anon_upload_enable | 익명 업로드 허용 조건 |
| local_umask | 로컬 사용자 생성 파일 마스크 |
| chroot_local_user | 로컬 사용자 경로 제한 |
| chroot_list_enable | chroot 목록 사용 |
| pasv_enable / pasv_min_port / pasv_max_port | passive 동작·포트 범위 |
| xferlog_enable | 전송 로그 |
chroot 목록은 chroot_local_user와 chroot_list_enable을 함께 읽는다. chroot_list_enable=YES에서 chroot_local_user=NO이면 목록 사용자를 제한 대상으로, chroot_local_user=YES이면 목록 사용자를 제한 예외로 해석한다. 업로드는 서버 지시어뿐 아니라 파일시스템 권한·SELinux 등도 허용해야 한다. vsftpd 공식 설정
3. NFS: export와 mount를 양쪽에서 보기
서버는 공유할 경로와 클라이언트 범위를 /etc/exports에 정의하고 클라이언트는 마운트한다.
/srv/share 192.0.2.0/24(ro,sync,root_squash)문서용 주소를 사용한 구조 예제다. 호스트와 괄호 사이 공백은 의미를 바꿀 수 있으므로 한 묶음으로 읽는다.
| 옵션 | 의미 |
|---|---|
| ro / rw | 읽기 전용 / 쓰기 허용 |
| sync / async | 안정 저장과 응답 시점 관련 |
| root_squash | 클라이언트 root 신분을 익명 신분으로 매핑 |
| no_root_squash | 위 매핑을 하지 않음. 특권 위험 |
| all_squash | 모든 사용자 신분을 익명 매핑 |
| anonuid / anongid | 익명 매핑 UID/GID |
exportfs -v는 export 정보, -ra는 설정 재반영과 연결한다. NFS 접근에는 UID/GID 신분 해석과 서버 파일 권한이 적용된다. root_squash는 원격 root의 신분을 매핑하고, ro/rw는 공유의 읽기·쓰기 정책을 정한다. exports 매뉴얼
NFSv3에서는 rpcbind 111과 mountd 등 추가 RPC 서비스·포트가 흔히 필요하다. NFSv4는 일반적인 접근을 TCP 2049 중심으로 통합한다. 버전에 따라 UDP·RPC·잠금 서비스 차이를 구별한다. showmount -e는 MOUNT 프로토콜의 export 정보를 조회한다. NFSv4-only 구성은 서버 export 설정과 NFSv4 마운트 결과를 중심으로 확인한다.
autofs는 접근할 때 자동 마운트하고 유휴 시 해제하는 방식이다. /etc/auto.master가 map 파일을 연결하고 간접 map은 기준 디렉터리 아래 키별 경로를 만든다. 부팅 때 늘 붙이는 fstab과 목적이 다르다.
4. Samba: 공유 정책과 실제 권한
대표 설정은 /etc/samba/smb.conf다. [global]은 전역, [공유이름]은 공유별 설정이다. smbd는 파일·프린터 서비스, nmbd는 레거시 NetBIOS 이름·브라우징, winbindd는 도메인 사용자·그룹 연동과 연결한다.
[study]
path = /srv/study
read only = yes
browseable = yes
valid users = studentpath는 실제 경로, read only는 공유 쓰기 정책, browseable은 목록 표시, valid users는 접근 사용자 범위다. guest ok와 Linux 파일 권한도 별도로 본다. 실제 쓰기 허용은 read only·write list 등 공유 설정과 해당 사용자의 서버 파일시스템 권한을 함께 적용해 판단한다.
testparm은 설정 검사, smbclient -L은 공유 조회, smbpasswd는 SMB 암호·계정 관리 도구다. Unix 계정과 Samba 인증 DB의 관계는 standalone·도메인 구성에 따라 다르다. smbpasswd는 Samba 인증 정보를 관리하며, Unix 암호와의 동기화 여부는 연동 설정으로 정한다.
직접 SMB는 TCP 445, 레거시 NetBIOS는 UDP 137·138과 TCP 139를 연결한다. SMB1을 현대 보안 권장값으로 다시 켜는 학습은 하지 않는다. Samba 공유 쓰기는 공유 정책과 서버 파일시스템 접근 정책이 모두 허용할 때 가능하다. Samba smb.conf
5. 인증 서비스: NIS·LDAP·Kerberos·SSSD
| 요소 | 역할 |
|---|---|
| NIS | 전통적인 계정·그룹 등의 중앙 map 배포 |
| LDAP | 디렉터리 항목을 조회·변경하는 프로토콜 |
| Kerberos | 티켓 기반 네트워크 인증 |
| SSSD | 클라이언트의 신원·인증 제공자 연결·캐시 |
| NSS / PAM | 로컬 프로그램의 정보 조회 / 인증 처리 통합 |
NIS는 ypserv 서버, ypbind 클라이언트 연결, ypwhich 서버 확인, ypcat map 조회, domainname으로 NIS domain과 연결한다. NIS domain은 계정 map 배포 영역을 묶고, DNS domain은 DNS 이름 공간을 구성한다. 오래된 NIS는 신뢰망 전제·보안 한계가 크므로 시험의 역사적 구성으로 이해한다.
LDAP는 계층적 디렉터리에 속성값을 저장한다. entry는 항목, attribute는 속성, DN은 전체 식별 이름, RDN은 해당 수준의 상대 이름이다.
uid=student,ou=People,dc=example,dc=testuid=student라는 항목이 People 아래, example.test 디렉터리 아래에 있다는 구조다. LDAP bind는 인증·연결 신분과 관련되고 검색 base·scope·filter는 어떤 항목을 찾을지 정한다. LDAP 디렉터리는 사용자·그룹·조직 등 다양한 항목의 속성 정보를 저장하고 조회한다. OpenLDAP 개요
OpenLDAP 서버는 slapd, LDAP TCP 389·LDAPS TCP 636, 도구는 ldapsearch·ldapadd·ldapmodify와 연결한다. StartTLS는 389 연결을 TLS로 올리는 방식이고 LDAPS의 처음부터 TLS와 구별한다. slapd.conf는 전통 형식, cn=config와 slapd.d는 동적 설정 방식이다. LDIF는 디렉터리 항목·변경을 표현하는 형식이다. 동적 설정은 cn=config를 대상으로 LDAP 관리 인터페이스를 통해 변경한다. OpenLDAP 설정
Kerberos는 KDC, realm, principal, TGT와 서비스 티켓으로 연결한다. 클라이언트는 TGT를 바탕으로 서비스 티켓을 얻고, 대상 서비스에는 그 티켓으로 신원을 증명한다. 시간 오차·DNS·신원 이름이 인증 문제의 원인이 될 수 있다. kinit 티켓 획득, klist 조회, kdestroy 제거가 대표 도구다. MIT Kerberos 개념
SSSD의 대표 설정은 /etc/sssd/sssd.conf이며 Linux 클라이언트를 LDAP·AD 등과 연결한다. NSS 조회로 계정 정보를 확인하고 실제 로그인으로 인증 경로를 확인한다. LDAP는 디렉터리 정보, Kerberos는 티켓 인증, SSSD는 제공자 연결·캐시, PAM은 서비스별 인증 처리를 담당한다.
6. 메일의 전달 흐름
MUA(사용자 프로그램) → 제출/송신 서버(MTA) → 수신 MTA → 배달(MDA/LMTP 등) → 보관함 → IMAP/POP3로 열람MUA는 메일 작성·열람, MTA는 서버 간 전달·중계, MDA는 보관함 배달 역할이다. 하나의 제품이 여러 역할을 가질 수 있다.
| 프로토콜 | 대표 TCP 포트 | 역할 |
|---|---|---|
| SMTP | 25 | 서버 간 전달 |
| Submission | 587 | 사용자 메일 제출, 보통 인증·TLS 정책 |
| Implicit TLS submission | 465 | TLS로 시작하는 제출 |
| POP3 / POP3S | 110 / 995 | 보관함 메일 가져오기 |
| IMAP / IMAPS | 143 / 993 | 서버 보관함·폴더 동기화·접근 |
POP3는 서버의 메일을 가져오며 서버 사본의 보존 여부는 클라이언트 정책으로 정할 수 있다. IMAP은 서버 보관함과 폴더 상태에 접근해 여러 장치에서 관리하는 데 쓴다. SMTP는 메일 제출·전달을 담당한다.
메일 도메인의 MX는 수신 서버를 고른다. MX의 대상 이름은 다시 주소로 해석해야 한다. 낮은 preference가 우선이다. 08의 DNS 설정과 메일 설정이 만나는 지점이다.
7. Postfix·Sendmail·Dovecot
Postfix의 주 설정은 /etc/postfix/main.cf, 서비스 구성은 master.cf다. postconf -n은 기본값과 다른 명시 설정, postfix check는 기본 구성·권한 등의 검사, mailq 또는 postqueue -p는 큐 조회와 연결한다.
| Postfix 항목 | 의미 |
|---|---|
| myhostname | 서버 FQDN |
| mydomain | 도메인 |
| myorigin | 로컬 발신 주소 도메인 기준 |
| mydestination | 자신이 최종 수신할 로컬 도메인 |
| mynetworks | 신뢰 클라이언트 네트워크 |
| relayhost | 외부 송신을 넘길 다음 서버 |
| inet_interfaces | 수신 인터페이스 |
mydestination은 받는 도메인, mynetworks는 신뢰 클라이언트 범위로 구별한다. 넓은 네트워크를 신뢰해 open relay가 되면 타인의 메일 남용 경로가 된다. 릴레이 허용은 인증·목적지·정책을 함께 제한한다. Postfix 기본 구성
Sendmail은 전통적인 /etc/mail/sendmail.mc와 생성되는 sendmail.cf, /etc/aliases와 newaliases, 접근 DB와 makemap 등의 역할을 비교한다. mc를 고치는 것과 cf를 생성·적용하는 과정이 따로 있다는 점을 기억한다. 실제 생성 명령·위치는 패키지에 따라 확인한다.
Dovecot은 대표적인 IMAP·POP3 서버다. /etc/dovecot/dovecot.conf와 conf.d/, protocols·mail_location·인증·TLS 설정을 연결한다. doveconf -n은 유효 설정 확인에 사용한다. Postfix의 SMTP 수신·배달 경로와 Dovecot의 인증·보관함 경로를 연결해 구성하고, IMAP 로그인과 메일 조회로 확인한다. Dovecot 프로토콜
mbox는 여러 메일을 하나의 파일에 보관하는 방식, Maildir은 메일별 파일과 tmp/new/cur 구조를 사용하는 방식이다. 소유권·경로·용량 부족·로그를 양쪽에서 확인한다. RHEL의 maillog와 Debian의 mail.log 등은 로깅 구성에 따른 대표 경로다.
8. 프록시·DHCP·시간·관리 서비스
Squid
Forward proxy는 클라이언트를 대신해 외부로 요청하고, reverse proxy는 서버 앞에서 요청을 받아 백엔드로 전달한다. 둘 다 “대신 요청”하지만 보호·관리하는 쪽이 다르다.
Squid 대표 설정은 /etc/squid/squid.conf, 기본 예시 포트는 3128이다. http_port 수신, acl 조건 정의, http_access 허용·거부, cache_dir 캐시 저장으로 연결한다. acl은 대상 조건을 정의하고, http_access는 그 조건에 허용·거부 동작을 연결한다. 규칙은 순서를 보며 마지막에 명확한 거부를 두는 구성이 흔하다. squid -k parse는 문법 검사다. Squid http_access
DHCP
DHCPv4는 Discover → Offer → Request → ACK, DORA로 외운다. 서버 UDP 67·클라이언트 UDP 68이고 임대 시간·주소 풀·게이트웨이·DNS 정보를 제공한다. DHCP 브로드캐스트는 해당 링크에서 전달되며, 다른 서브넷의 DHCP 서버와 연결할 때 DHCP relay가 요청·응답을 중계한다.
전통 ISC dhcpd.conf에서는 subnet·netmask·range, option routers, option domain-name-servers, default-lease-time·max-lease-time, host·hardware ethernet·fixed-address 등을 읽는다. 예약과 동적 풀·기존 사용 주소가 충돌하지 않아야 한다. ISC DHCP는 upstream에서 유지 종료된 제품이므로 시험용 레거시 지식과 신규 운영 선택은 구별한다. ISC DHCP 상태
시간·원격 관리
NTP는 UDP 123, chrony는 chronyd·chronyc·/etc/chrony.conf와 연결한다. server·pool은 시간 원천, allow는 클라이언트 허용, chronyc sources·tracking은 상태 조회다. stratum은 기준 시계에서 떨어진 계층 수준이다. 시간 원천의 품질은 지연·오차·안정성 등의 상태와 함께 평가한다. 시간 동기화는 로그 상관분석·인증서·Kerberos에도 중요하다. chrony 설정
SNMP는 agent·manager·MIB/OID, 조회 UDP 161·통지 UDP 162를 연결한다. v1/v2c의 community와 v3의 인증·프라이버시 기능을 구별한다. Telnet TCP 23, TFTP UDP 69 등 레거시 프로토콜의 평문·기능 제한도 비교 대상으로 알아둔다.
9. 가상화·컨테이너
가상머신은 가상 하드웨어 위에서 별도 게스트 커널을 실행한다. 컨테이너는 보통 호스트 커널을 공유하면서 프로세스·자원 관점을 격리한다.
| 개념 | 연결 |
|---|---|
| 전가상화 | 게스트에 가상 하드웨어 환경 제공 |
| 반가상화 | 게스트가 가상화 환경을 인식하고 협력 |
| 하드웨어 지원 | Intel VT-x·AMD-V 등 |
| KVM | Linux 커널의 가상화 기능 |
| QEMU | 장치 모델·에뮬레이션 등 사용자 공간 역할 |
| libvirt | 가상화 관리 API·도구 계층 |
| virsh / virt-manager | CLI / GUI 관리 도구 |
KVM은 커널 가상화, QEMU는 사용자 공간 장치 모델, libvirt는 관리 계층으로 협력한다. virtio는 가상 I/O 성능을 위한 반가상화 인터페이스와 연결한다. 하이퍼바이저 Type 1/2 분류는 베어메탈·호스트 OS 위라는 전통 구분이며 KVM은 호스트 Linux와 결합된 구조를 함께 설명한다. RHEL 8 가상화
virsh list —all은 VM 목록, start는 실행, shutdown은 정상 종료 요청이다. destroy는 VM 실행을 강제로 종료하고, undefine은 영구 VM 정의를 제거한다. 저장장치 삭제는 해당 옵션과 대상을 지정하는 별도 작업이다. suspend/resume은 일시 정지/재개다. storage pool·volume, 가상 네트워크의 NAT·bridge·isolated를 구별한다. virsh 공식 참조
컨테이너에서 namespace는 프로세스가 보는 PID·마운트·네트워크 등의 관점 격리, cgroup은 CPU·메모리 등의 자원 관리, image는 실행 원형, container는 그 실행 인스턴스다. volume은 데이터 지속성과 연결한다. VM은 게스트 커널 단위로, 컨테이너는 호스트 커널 위의 프로세스·자원 단위로 격리한다. Docker·Podman은 컨테이너 관리 도구다. rootless 실행은 일반 사용자 권한으로 컨테이너를 관리하며, 데이터·장치·네트워크 접근은 적용된 권한과 격리 정책을 따른다. Linux namespaces
필기용 압축
- FTP는 파일 전송, NFS는 원격 파일시스템 마운트, Samba는 SMB 파일·프린터 공유를 제공한다. FTP Active는 서버가, Passive는 클라이언트가 데이터 연결을 시작한다.
- NFS root_squash는 클라이언트 root를 익명 신분으로 매핑한다. 공유의 실제 쓰기는 공유 정책과 서버 파일시스템 접근 정책을 함께 적용한다.
- NIS는 계정 map 배포, LDAP는 디렉터리 조회·변경, Kerberos는 티켓 인증, SSSD는 신원·인증 제공자 연결과 캐시를 담당한다.
- MUA는 메일 작성·열람, MTA는 전달·중계, MDA는 보관함 배달이다. SMTP는 제출·전달, POP3는 메일 가져오기, IMAP은 서버 보관함 접근을 담당한다.
- Postfix mydestination은 최종 수신 도메인, mynetworks는 신뢰 클라이언트 범위, relayhost는 다음 송신 서버를 지정한다. Dovecot은 IMAP·POP3 접근을 제공한다.
- Forward proxy는 클라이언트의 외부 요청을 대신하고, reverse proxy는 서버 앞에서 요청을 받아 백엔드로 전달한다.
- DHCPv4는 Discover → Offer → Request → ACK로 주소 구성을 제공한다. NTP는 시간 동기화, SNMP는 관리 정보 조회·통지를 담당한다.
- KVM은 커널 가상화, QEMU는 장치 모델, libvirt는 가상화 관리를 담당한다. VM은 별도 게스트 커널을 실행하고 컨테이너는 호스트 커널을 공유한다.
- virsh shutdown은 정상 종료 요청, destroy는 강제 종료, undefine은 영구 정의 제거다. namespace는 프로세스 관점 격리, cgroup은 자원 관리를 담당한다.
회상점검 — 단원 끝 한 번
- FTP·NFS·Samba를 이용 방식으로 구별해봐.
- FTP 제어 연결과 데이터 연결은 무엇을 전달하며, Active·Passive의 연결 시작 주체는 누구인가?
- root_squash는 어떤 신분을 어떻게 매핑하나? Samba 쓰기에 함께 적용되는 공유·파일시스템 정책은 무엇인가?
- NIS·LDAP·Kerberos·SSSD·PAM 역할을 각각 말해봐.
- SMTP·IMAP·POP3와 MUA·MTA·MDA를 연결해봐.
- Postfix mydestination·mynetworks·relayhost는 무엇이 다른가?
- DHCP 네 단계, forward·reverse proxy 차이는?
- KVM·QEMU·libvirt의 역할과 VM·컨테이너의 커널 구성을 설명해봐. virsh destroy와 undefine은 각각 어떤 동작을 수행하나?
출처·검증 범위
2026-09-09 작성. vsftpd·exports·Samba·OpenLDAP·Squid·chrony·ISC DHCP·libvirt 등의 공식 문서·프로젝트 매뉴얼을 참조했다. Postfix는 본문 조회 실패 후 공식 검색 결과로 핵심 항목을 확인했고 Dovecot는 프로토콜 입구·검색 확인 범위다. NIS·Sendmail·SNMP·컨테이너 세부 버전의 전수 대조는 남아 있다. 실제 서버 설치·공유·메일 발송·VM 종료는 하지 않았다. 기출 미사용·자체 설명. 사전 작성은 읽음·학습 전달·숙달이 아니다.