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 상태
기대 결과: 모든 프로파일이 enforce 모드여야 한다. complain 모드인 프로파일이 있으면 enforce로 전환:
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
- NFS
- Security
- Ubuntu
- Linux
- Linux:Security
- NetworkFileSystem:Install:Server - NFS 서버 설치
- NetworkFileSystem:Install:Client - NFS 클라이언트 설치
- NetworkFileSystem:Security