10/11 — 시스템·네트워크 보안

보안은 신분·파일·서비스·네트워크·관찰·복구를 여러 층에서 통제하고 확인하는 일이다. 시험에서는 공격 이름과 방어 도구를 연결하되 여기서는 공격 실행·외부 스캔·보안 기능 해제를 하지 않는다.

1. 보안의 목표와 접근통제

기밀성은 허용된 사람만 읽기, 무결성은 허용되지 않은 변경 방지·탐지, 가용성은 필요할 때 사용 가능함이다. 인증은 “누구인가”, 인가는 “무엇을 허용하는가”, 감사는 “무슨 일이 있었는가”를 기록한다.

원칙·모델의미
최소권한필요한 범위·기간만 권한 부여
기본 거부명시적으로 허용한 것만 통과
심층 방어한 층이 실패해도 다른 층에서 제한
DAC소유자·UID/GID·권한 등에 따른 재량적 접근통제
MAC중앙 정책·레이블 등에 따른 강제적 접근통제
RBAC역할에 권한을 연결

root 실행의 허용 범위도 capability·SELinux·namespace·마운트 정책 등 적용된 실행 환경과 함께 판단한다. 방화벽은 네트워크 접근, 파일 권한은 파일 접근이라는 서로 다른 대상이다.

2. 계정과 파일 보안

불필요한 계정·서비스를 줄이고 관리 행위에는 sudo 등 통제·감사 경로를 사용한다. 로그인 암호 잠금과 계정 만료·로그인 셸 제한·공개키 접근은 별개의 경로다. 03의 PAM auth/account/password/session을 다시 연결한다.

암호 해시는 암호 검증용 값을 저장하고, salt는 같은 암호도 서로 다른 해시 입력으로 처리하도록 돕는다. 추측에 강한 암호 선택과 적절한 해시 방식·설정을 함께 적용한다. MFA는 지식·소유·생체처럼 서로 다른 인증 요소를 조합한다. 암호 정책·잠금 정책은 서비스·PAM 설정 전체와 연동한다.

점검 항목의미
불필요한 SUID/SGID특권 실행 경로 최소화
world-writable 파일·디렉터리누구나 변경 가능한 범위 점검
/tmp sticky bit공유 공간 항목 삭제 제한
비밀키·shadow 권한민감 인증정보 읽기 제한
소유자 없는 파일계정 삭제 후 UID 연결 등 확인
패키지 검증·무결성 기준예상 변경과 비정상 변경 비교

파일 속성에는 chattr·lsattr를 연결한다. +i는 불변, +a는 추가 전용으로 이해한다. 속성의 적용은 파일시스템 지원과 실행 주체의 특권을 따르며, 적절한 권한을 가진 관리자가 속성을 변경할 수 있다. chattr

체크섬 비교는 신뢰할 수 있는 기준 해시와 현재 파일 해시를 대조해 내용 변경을 탐지한다. AIDE 같은 무결성 도구는 기준 DB를 보호하고 정상 변경 이력을 반영해 결과를 해석한다.

3. SELinux: rwx 다음의 정책

SELinux는 Linux에 MAC 정책을 적용한다. 접근 허용은 파일 소유권·rwx 등 DAC 조건과 프로세스 domain·대상 type 사이의 SELinux 정책을 함께 적용해 판단한다.

모드의미
enforcing정책 위반을 차단하고 기록
permissive위반을 기록하지만 SELinux가 차단하지 않음
disabledSELinux 비활성

getenforce는 현재 모드, sestatus는 상태, /etc/selinux/config는 지속 설정과 연결한다. SELinux가 활성화된 시스템에서 setenforce는 현재 enforcing/permissive 모드를 전환한다. disabled 상태에서의 활성화는 지속 설정·부팅·레이블 준비 등 해당 환경의 절차를 따른다. 여기서는 모드를 변경하지 않는다.

문맥은 user:role:type:level 형태다. ls -Z 파일 문맥, ps -Z 프로세스 문맥으로 확인한다. targeted 정책의 서비스 접근에서는 type/domain이 핵심이다. httpd_t 프로세스가 httpd_sys_content_t 파일을 읽는 관계처럼, 프로세스 domain·대상 type·요청 동작을 연결해 읽는다. 실제 허용 범위는 적용된 정책으로 확인한다. RHEL 8 SELinux 시작

  • chcon: 현재 파일 문맥 변경. 재레이블·restorecon으로 바뀔 수 있음.
  • semanage fcontext: 경로에 대한 지속적 문맥 규칙 관리.
  • restorecon: 정책의 경로 규칙에 맞춰 파일 문맥 적용. semanage fcontext, restorecon
  • getsebool / setsebool: 정책 Boolean 조회·설정. -P는 지속 변경과 연결.
  • semanage port: 서비스 type과 포트 레이블 관리.

웹 문서를 다른 경로로 옮긴 뒤 403이면 OS 권한·Apache 설정·SELinux 레이블·로그를 순서대로 확인한다. 경로의 의도된 레이블과 실제 레이블을 대조하고 필요한 레이블을 복원한다. audit2allow가 제안하는 규칙은 거부 원인·필요 권한·허용 범위를 검토한 뒤 채택 여부를 결정한다.

4. 방화벽의 방향과 상태

호스트 자신에게 오는 패킷은 INPUT, 호스트가 만든 것은 OUTPUT, 호스트를 통과해 다른 곳으로 가는 것은 FORWARD로 구별한다. 들어온 패킷의 최종 목적지가 로컬 호스트이면 INPUT, 다른 호스트로 라우팅되면 FORWARD 경로로 연결한다.

stateless 필터는 패킷 속성 중심, stateful은 연결 추적 상태도 이용한다. ESTABLISHED는 기존 연결, RELATED는 관련 연결·오류 등과 연결한다. 응답 트래픽을 어떻게 허용할지 따로 생각해야 한다.

NAT는 주소·포트 변환, 방화벽 필터는 허용·거부다. SNAT는 출발지, DNAT는 목적지, MASQUERADE는 동적 외부 주소에 맞춘 출발지 변환과 연결한다. 주소 변환 규칙과 접근 허용·거부 규칙을 각각 구성해 통신 정책을 완성한다.

5. iptables·nftables·firewalld

iptables

table주요 역할
filter패킷 허용·차단
nat연결의 주소 변환
mangle패킷 필드·표시 조정
raw연결 추적 예외 등
security보안 레이블 관련 정책

-A 추가, -I 삽입, -D 삭제, -L 목록, -S 규칙 표현, -P 기본 정책, -F 규칙 비우기다. -F는 해당 범위의 규칙을 비우므로 방어·접속 상태에 큰 영향을 준다. 실행 전 대상·기본 정책·관리 접속 복구 수단을 확인해야 한다.

-p 프로토콜, -s 출발지, -d 목적지, —dport 목적지 포트, -i 입력 인터페이스, -o 출력 인터페이스, -j target으로 읽는다. ACCEPT 허용, DROP 응답 없이 폐기, REJECT 거부 응답, LOG 기록이다. LOG는 패킷 정보를 기록한 뒤 후속 규칙 평가로 이어지며, 허용·차단은 ACCEPT·DROP·REJECT 등의 판정으로 정한다.

규칙 순서·사용자 chain·RETURN·기본 policy를 함께 본다. 대표적으로 POSTROUTING의 SNAT는 송신 직전 출발지를, PREROUTING의 DNAT는 라우팅 판단 전 목적지를 변환한다. 로컬 생성 트래픽 등에는 해당 패킷 경로의 NAT chain을 적용한다. iptables

nftables

nftables는 Linux 패킷 필터링 체계이며 nft 명령을 쓴다. table·chain·rule·set, hook·priority·policy를 구별한다. nft list ruleset은 전체 규칙 조회다. inet family는 IPv4·IPv6를 함께 다루는 데 쓰인다. iptables 명령에는 nft 백엔드를 사용하는 호환 형태도 있으므로 실제 백엔드는 배포판 구성과 도구 정보로 확인한다. nftables 프로젝트 문서

firewalld

firewalld는 zone·service 등의 추상화로 방화벽을 관리하며 RHEL 8의 기본 백엔드는 nftables와 연결된다. zone은 신뢰 수준·정책을 적용할 묶음이며 인터페이스·source가 어느 zone에 연결됐는지가 중요하다. firewalld의 service는 허용할 포트·프로토콜 등을 정의한 묶음이다. 서버 프로세스 실행은 systemd 등 서비스 관리자가 담당한다.

명령보는 것
firewall-cmd —state데몬 상태
firewall-cmd —get-active-zones사용 중인 zone과 연결
firewall-cmd —zone=public —list-all특정 zone의 런타임 구성
firewall-cmd —permanent —zone=public —list-all저장된 구성

runtime은 현재, permanent는 재적용할 저장 구성이다. —permanent 변경은 저장 구성에 반영하고, reload는 그 저장 구성을 runtime에 적용한다. runtime 변경은 현재 적용 상태를 바꾸며 지속시키려면 저장 구성에도 반영한다. 현재만 허용한 SSH를 잃지 않도록 실제 작업에서는 관리 경로와 복구 수단을 먼저 확보한다. firewall-cmd 공식 매뉴얼

TCP Wrappers의 hosts.allow·hosts.deny는 libwrap 지원 서비스에만 적용되는 레거시 접근통제다. 적용 여부는 서비스의 libwrap 지원과 해당 배포판 구성을 확인한다. 지원 시 allow 먼저, 이어 deny, 둘 다 불일치하면 허용이라는 전통 순서를 비교한다.

6. 침해 유형은 “원리 → 영향 → 방어”로

유형원리·영향방어 관점
무차별·사전·자격증명 재사용인증정보 추측·재사용MFA·속도 제한·노출 축소·로그
스니핑통신 내용 관찰TLS·신뢰 네트워크·권한 통제
스푸핑·ARP 위조주소·신원 관계 속임인증된 통신·스위치 보안·검증
중간자 공격양쪽 사이에서 가로채기인증서·host key 확인, 암호화
DNS 캐시 오염이름 해석을 잘못된 대상으로resolver 제한·패치·DNSSEC 검증
SYN flood연결 상태 자원 고갈SYN cookies·필터·용량·상위 대응
반사·증폭 DDoS제3자의 응답을 피해자에게 집중open resolver/서비스 제한·출발지 검증·상위 방어
명령·SQL 삽입입력을 코드로 해석안전한 API·매개변수화·입력 검증·최소권한
버퍼 오버플로메모리 경계 위반패치·메모리 안전·완화 기법
악성코드·랜섬웨어실행·변조·암호화·유출실행 통제·분리·탐지·복구 가능한 백업

DoS는 서비스 방해, DDoS는 분산된 여러 원천의 방해다. 상위 회선이 포화된 DDoS에는 통신사·상위 네트워크에서 트래픽을 걸러내는 대응이 필요하다.

레거시 이름도 의미만 연결한다. Smurf는 브로드캐스트 반사 ICMP, Ping of Death는 비정상 크기 IP 재조립, Teardrop은 조각 재조립, LAND는 출발지·목적지 자기 참조 형태의 옛 공격으로 배운다. 각 유형의 실제 영향은 운영체제 버전과 패치 상태에 따라 판단한다.

IDS는 탐지·경보, IPS는 인라인 차단까지 수행하는 역할로 비교한다. signature는 알려진 패턴, anomaly는 정상 기준과의 차이다. 탐지 경보는 원본 이벤트·정상 활동·다른 로그를 대조해 실제 침해 여부를 판단한다. 탐지 성능은 오탐과 미탐을 함께 평가한다. WAF는 웹 요청 중심, 호스트 방화벽은 네트워크 정책이라는 범위 차이를 본다.

7. 로그·감사·침해 대응

auditd는 보안 관련 이벤트를 감사 규칙에 따라 기록한다. 대표 파일은 /var/log/audit/audit.log, 규칙은 auditctl과 /etc/audit/rules.d/ 등을 통해 관리한다. ausearch는 이벤트 검색, aureport는 집계 보고다. AVC는 SELinux 거부 단서와 연결한다. 감사 기록의 범위는 활성화된 규칙·수집 설정·보존 상태로 확인한다. RHEL 감사

시간 동기화·로그 보존·원격 전송·권한 보호가 있어야 여러 시스템 사건을 연결하기 좋다. journal·인증 로그·서비스 접근 로그·네트워크 흐름은 서로 다른 관찰이다. 패키지 검증 결과는 파일 변경의 단서, 로그인 실패는 해당 인증 시도의 실패 기록이다. 관련 시각·주체·행위를 대조해 사건을 분석한다.

대응은 탐지·분석 → 범위 확인과 격리 → 원인 제거 → 신뢰 가능한 복구 → 재발 방지라는 사고 흐름으로 읽는다. 최신 NIST SP 800-61r3는 CSF 2.0의 위험관리와 대응 활동을 연결한다. 위 흐름은 대응 활동을 연결해 기억하기 위한 학습용 정리다. NIST 사고 대응 지침

침해가 의심되면 업무 영향·진행 중 피해·휘발성 증거·권한을 고려해 격리와 증거 보존의 순서를 결정한다. 원인 제거에는 악성 파일·지속성 수단 정리, 노출된 자격증명 교체, 침투 경로 보완, 다른 시스템 영향 확인을 포함한다. 복구에는 신뢰 가능한 시점의 백업을 사용하고 실제 복원 결과와 재발 징후를 확인한다.

필기용 압축

  • 기밀성은 허용된 읽기, 무결성은 정당한 변경의 유지·검증, 가용성은 필요한 때의 사용을 목표로 한다. 인증은 신원 확인, 인가는 권한 결정, 감사는 행위 기록이다.
  • 파일 접근은 DAC의 소유권·권한과 SELinux의 domain·type 정책을 함께 적용한다. enforcing은 위반 차단·기록, permissive는 위반 기록, disabled는 비활성 모드다.
  • chcon은 현재 레이블을 변경하고 semanage fcontext는 경로 규칙을 관리하며 restorecon은 규칙에 맞는 레이블을 적용한다.
  • INPUT은 로컬 호스트 목적 트래픽, OUTPUT은 로컬 생성 트래픽, FORWARD는 호스트를 통과하는 트래픽을 다룬다.
  • firewalld runtime은 현재 적용, permanent는 저장 구성이다. reload는 저장 구성을 적용한다. firewalld service는 통신 허용 묶음, systemd service는 프로세스 관리 단위다.
  • NAT는 주소·포트 변환, 필터는 접근 허용·거부를 담당한다. SNAT는 출발지, DNAT는 목적지를 변환한다. DROP은 폐기, REJECT는 거부 응답, LOG는 기록이다.
  • IDS는 탐지·경보, IPS는 인라인 차단, WAF는 웹 요청 보호를 담당한다. 경보는 원본 이벤트와 관련 로그를 대조해 해석한다.
  • 대응은 탐지·분석 → 범위 확인·격리 → 원인 제거 → 신뢰 가능한 복구 → 재발 방지로 연결한다. 증거·자격증명·지속성·다른 시스템 영향을 함께 확인한다.

회상점검 — 단원 끝 한 번

  1. 인증·인가·감사와 기밀성·무결성·가용성을 구별해봐.
  2. 파일 접근에 DAC 권한과 SELinux domain·type 정책이 각각 어떻게 적용되나?
  3. enforcing·permissive·disabled, chcon·restorecon·semanage fcontext의 차이는?
  4. INPUT·OUTPUT·FORWARD에 어떤 패킷이 지나가나?
  5. firewalld의 runtime·permanent와 reload 관계는?
  6. DROP·REJECT·LOG, SNAT·DNAT를 구별해봐.
  7. IDS·IPS·WAF 역할 차이와 DDoS에 상위 네트워크 대응이 필요할 수 있는 이유는?
  8. 침해 대응에서 격리·증거 보존의 순서를 정할 때 고려할 것은 무엇이며, 원인 제거와 복구 후에는 무엇을 확인하나?

출처·검증 범위

2026-09-09 작성. SELinux·firewalld·iptables·nftables·audit·chattr·NIST 원천을 참조했다. SELinux 비표준 경로 안내의 조회 실패 뒤 semanage-fcontext·restorecon 매뉴얼로 도구 역할을 추가 확인했다. 전체 정책 조합의 실행 검증은 남아 있다. 공격 분류는 방어용 개념 설명이며 공격 절차·코드·실제 스캔은 제공·실행하지 않았다. 모든 보안 설정 조합과 서비스 버전의 전수 검증은 미완료다. 기출 미사용, 사전 작성은 실제 학습 완료와 별개다.

학습 공간 연결