개요
Spring Boot 애플리케이션을 실행하기 위해 8080 포트를 열어야 했습니다. 과연 안전할까요
포트 개방으로 인한 보안 문제
- 전체 개방으로 인한 무분별한 접근
포트를 개방함으로서 인터넷 또는 로컬 네트워크를 통해 누구나 애플리케이션에 접근할 수 있습니다. - 서비스 거부 공격(DoS/DDoS)
열린 포트로 과도한 요청이 들어오면 애플리케이션이 중단될 수 있습니다. - 데이터 유출 위험
HTTP를 사용하는 경우 민감한 정보가 노출될 가능성이 있습니다. - 포트 스캐닝 공격
공격자가 연린 포트를 찾아 취약점을 분석할 수 있습니다.
해결방법
- 특정 IP나 로컬 네트워크에서만 허용
방화벽 규칙 추가 시 "로컬 서브넷" 또는 "특정 IP"만 허용하도록 구성합니다. - Spring Security로 인증 설정
Spring Boot에 Spring Security를 적용하여 애플리케이션에 접근하려면 로그인 등 인증 절차를 거치도록 설정합니다. - HTTPS 설정
SSL/TLS 인증서를 통해 HTTP 대신 HTTPS를 사용하여 데이터를 암호화 합니다.
application.properties 에 HTTPS 설정을 추가
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=your-password
server.ssl.key-store-type=PKCS12
- IP 필터링
애플리케이션이 외부에 노출되지 않도록 로컬에서만 접근 가능하게 설정합니다.
server.address-127.0.0.1
server.port=8080
- Docker 네트워크 관리
Spring Boot 애플리케이션을 Docker를 통해 컨테이너화 하여 배포하였다면 네트워크를 bridge로 설정하여 외부 네트워크에 노출시키지 않을 수 있습니다.
bridge 네트워크
기본적으로 컨테이너 간에 격리된 환경을 제공하면서도, 동일한 네트워크 내의 컨테이니끼리 통신할 수 있도록 지원
'IT' 카테고리의 다른 글
OAuth2의 4 가지 흐름 (1) | 2024.12.05 |
---|---|
Windows, python 가상환경에 환경변수 생성했는데 모듈을 찾지 못할 때 (0) | 2024.10.31 |
MQTT Python Client -paho (0) | 2024.04.12 |
Python, api로 xml데이터 가져와 json으로 변경 (0) | 2024.04.12 |
SSH 왜 필요한가? (0) | 2024.04.12 |