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 정책이 결합되어야 완성됨
- 핵심은 차단, 최소 권한, 추적 가능성, 문서 일관성임