Skip to content

NetworkFileSystem:Security

보안 검증 체크리스트

리눅스 보안 구성

Linux:Security 항목을 참조.

방화벽 상태 확인

# UFW 상태 상세 확인 / Check UFW status
sudo ufw status verbose

# 열린 포트 최소화 확인 / Verify minimal open ports
sudo ss -tulnp

기대 결과: 22/tcp(SSH)와 2049/tcp(NFS)만 허용 상태여야 한다. 그 외 불필요한 포트가 열려 있으면 즉시 차단한다.

NFS 내보내기 확인

# 현재 내보내기 목록 확인 / Verify current exports
sudo exportfs -v

# NFS 서버 상태 확인 / Check NFS server status
sudo systemctl status nfs-server

확인 사항:

  • root_squash 또는 all_squash가 적용되어 있는지 확인
  • IP 제한이 올바르게 설정되어 있는지 확인
  • sec=sys 또는 sec=krb5p가 명시되어 있는지 확인

AppArmor 상태

sudo aa-status

기대 결과: 모든 프로파일이 enforce 모드여야 한다. complain 모드인 프로파일이 있으면 enforce로 전환:

# complain → enforce 전환 / Switch to enforce mode
sudo aa-enforce /etc/apparmor.d/<profile_name>

Fail2Ban 상태

# 전체 상태 확인 / Check overall status
sudo fail2ban-client status

# SSH jail 상세 확인 / Check SSH jail details
sudo fail2ban-client status sshd

기대 결과: sshd jail이 활성화되어 있고, 차단된 IP 목록이 정상적으로 관리되고 있어야 한다.

감사 로그 확인

# NFS 설정 변경 감사 / Audit NFS config changes
sudo ausearch -k nfs_exports -ts recent

# 사용자/그룹 변경 감사 / Audit identity changes
sudo ausearch -k identity -ts recent

# sudoers 변경 감사 / Audit sudoers changes
sudo ausearch -k sudoers -ts recent

# 파일 삭제 감사 / Audit file deletions
sudo ausearch -k delete -ts recent

커널 보안 파라미터 확인

# 주요 sysctl 값 확인 / Verify key sysctl values
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.tcp_syncookies
sysctl kernel.randomize_va_space
sysctl kernel.dmesg_restrict
sysctl kernel.kptr_restrict
sysctl net.ipv4.ip_forward

파라미터

기대 값

의미

net.ipv4.conf.all.rp_filter

1

IP 스푸핑 방지 활성화

net.ipv4.tcp_syncookies

1

SYN flood 방지 활성화

kernel.randomize_va_space

2

ASLR 최대화

kernel.dmesg_restrict

1

일반 사용자 dmesg 접근 차단

kernel.kptr_restrict

2

커널 포인터 주소 숨김

net.ipv4.ip_forward

0

IP 포워딩 비활성화

NFS 클라이언트 마운트 확인

# 마운트 옵션 확인 / Verify mount options
mount | grep nfs4

# noexec, nosuid, nodev 적용 여부 확인 / Check security mount options
cat /proc/mounts | grep nfs4

기대 결과: 마운트 옵션에 noexec, nosuid, nodev가 모두 포함되어 있어야 한다.

SSH 설정 확인

# SSH 설정 테스트 / Test SSH configuration
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|x11forwarding|maxauthtries|allowusers'

항목

기대 값

permitrootlogin

no

passwordauthentication

no

pubkeyauthentication

yes

x11forwarding

no

maxauthtries

3

전체 보안 아키텍처 요약

보안 계층

구성 요소

상세

1. 네트워크

UFW + NFSv4 Only

IP 단위 접근 제한, 포트 2049만 개방

2. 인증 || sec=sys / sec=krb5p

all_squash + 전용 NFS 사용자 (Kerberos 가능 시 krb5p)

3. 권한

root_squash / all_squash

전용 NFS 사용자, 최소 디렉토리 권한 (770)

4. 마운트

noexec, nosuid, nodev

클라이언트 측 실행/권한상승 차단

5. 감사

auditd

/etc/exports 변경 추적, 사용자 변경 모니터링

6. 시스템

sysctl + AppArmor + Fail2Ban

커널 강화, MAC, 브루트포스 방어

7. SSH

키 인증 전용

패스워드 차단, 알고리즘 제한, 사용자 제한

정기 점검 스크립트

아래 스크립트를 cron에 등록하여 주기적으로 보안 상태를 점검할 수 있다.

#!/bin/bash
# security_check.sh - 보안 상태 정기 점검 / Periodic security check

echo "========== Security Check Report: $(date) =========="

echo ""
echo "[1] UFW Status"
sudo ufw status | head -20

echo ""
echo "[2] Listening Ports"
sudo ss -tulnp | grep LISTEN

echo ""
echo "[3] NFS Exports"
sudo exportfs -v

echo ""
echo "[4] Fail2Ban Banned IPs"
sudo fail2ban-client status sshd 2>/dev/null | grep "Banned"

echo ""
echo "[5] AppArmor Profiles"
sudo aa-status 2>/dev/null | head -5

echo ""
echo "[6] Recent Auth Failures"
sudo grep "Failed password" /var/log/auth.log 2>/dev/null | tail -5

echo ""
echo "[7] NFS Mount Options"
mount | grep nfs4

echo ""
echo "[8] Critical sysctl Values"
for param in net.ipv4.ip_forward kernel.randomize_va_space kernel.dmesg_restrict; do
    echo "  $param = $(sysctl -n $param)"
done

echo ""
echo "========== Check Complete =========="
# 실행 권한 부여 및 cron 등록 / Make executable and add to cron
chmod +x /usr/local/bin/security_check.sh
echo "0 6 * * 1 root /usr/local/bin/security_check.sh >> /var/log/security_check.log 2>&1" | sudo tee /etc/cron.d/security-check

See also