콘텐츠로 이동

Laravel 운영 보안(Security) 기준

운영 서버에서 Laravel 서비스를 보안적으로 유지하기 위한 설정 기준, 책임 경계, 금지 패턴을 정리함.

보안은 패키지 추가가 아니라, 운영 구조 통제의 문제임.


1. 기본 원칙

  • 보안은 기능이 아니라 운영 기준
  • 최소 권한 원칙을 모든 계층에 적용
  • 운영 환경에서 디버그/관리 엔드포인트 노출 금지
  • 보안 설정 변경은 반드시 문서와 동기화

2. 계층별 보안 책임 분리

계층 책임
Nginx TLS, 보안 헤더, 접근 제어, 속도 제한
Laravel 인증/인가, 입력 검증, 비즈니스 보안 규칙
OS/SELinux 프로세스 권한, 파일/포트 접근 통제

한 계층에 모든 보안을 몰아넣지 않음.


3. 필수 보안 설정 (.env)

APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:...
SESSION_SECURE_COOKIE=true
SESSION_SAME_SITE=lax

운영 기준:

  • APP_DEBUG=true 운영 금지
  • APP_KEY 누락/재생성 이력 미관리 금지
  • 세션/쿠키 보안 옵션을 명시적으로 관리

4. 인증/인가 운영 기준

  • 관리자 경로는 추가 보호(IP 제한, 2FA 등) 적용
  • 민감 API는 권한 검증 로직을 중앙화
  • 비밀번호 재설정/권한 변경은 감사 로그 남김
  • 토큰/세션 만료 정책을 명시적으로 운용

5. 요청 보호 기준

  • CSRF 보호 비활성화 금지
  • CORS * 운영 금지 (허용 출처 명시)
  • 업로드 파일은 MIME/확장자/크기 제한
  • 요청 크기 제한(client_max_body_size)을 Nginx와 일치시킴

6. 운영에서 자주 놓치는 항목

  • .env, .env.backup 파일 노출
  • Debugbar/Telescope 등 개발 도구 운영 노출
  • storage 디렉터리 인덱싱 허용
  • queue 실패 누적을 장기간 방치

7. 운영 차단 전략 (중요)

  • 운영 환경에서 테스트/관리 라우트 비활성화
  • 유지보수 명령은 접근 통제된 터미널에서만 수행
  • 관리자 기능은 네트워크 레벨 제어와 함께 운영

가장 강한 보안은 "노출하지 않는 것"임.


8. 절대 하지 말아야 할 것

  • 운영 서버에서 임시 디버그 코드 반영
  • 민감 정보가 포함된 예외 메시지 외부 노출
  • 문제 해결을 위해 SELinux/Firewall 무력화

9. 정리

  • Laravel 보안은 프레임워크 기능 + Nginx + OS 정책이 결합되어야 완성됨
  • 핵심은 차단, 최소 권한, 추적 가능성, 문서 일관성임