개발자
안녕하세요 백엔드 취업 준비생입니다 최근 프로젝트를 진행중에 배포서버를 구성해봤습니다 aws ec2에 docker compose로 nginx, WAS, redis를 컨테이너화해 동작시키고, nginx에 의해 3개의 WAS가 로드밸런싱 된 상태입니다(WAS 는 sping boot+spring security+JPA를 사용중입니다) route 53으로 Gabia에서 구매한 도메인을 연결해둬 도메인 접근을 허용해둔 상태입니다 배포 서버가 정상적으로 동작하는지 확인하기 위해 log를 보고 있었는데 이상한 요청이 보였습니다 요청 url에 `chmod 777`이라던지 `rm -rf`가 보여서 식겁해서 일단 서버는 내려뒀습니다 알아보니 RCE라는 공격 방식 같더라고요 그래서 RCE를 막는 최선의 방법이 무엇인지 궁금합니다 또 통상적으로 알고있으면 좋은 보안 방어 기법에는 어떤것들이 있을지 궁금합니다! (가능하면 AWS 과금이 없는방법이면 더 좋을거같아요 😊 😊)
답변 1
최선의 방법인지 모르겠지만 권장되는 원칙은 있습니다. 총 세 가지 정도입니다. 1. 의존 라이브러리들의 패치노트를 구독하세요. RCE 취약점이 발견될 경우 즉각즉각 업데이트나 패치해줘야 합니다. 2. 웹 서버를 통과하는 모든 IO에 대해서 유효성 검사를 진행하세요.(구현은 맘대로 하면 됩니다.) 3. 돈 아깝다고 생각말고 스캐닝이나 방화벽 솔루션을 사용하세요. ## 시스템 설계 사진 보면 draw.io 같은거 쓰신거 같은데 eraser(https://www.eraser.io/) 추천드립니다.
신예찬
작성자
금오공과대학교 컴퓨터공학 • 2024년 05월 14일
답변 감사합니다! AWS WAF를 고려해봐야 할거 같네요 ㅎㅎㅎ
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 05월 11일
안녕하세요. 질문주셔서 감사합니다. 1. RCE를 막는 방법: RCE, 즉 Remote Code Execution은 외부에서 코드를 실행할 수 있는 취약점을 통해 공격하는 방식을 말합니다. 이를 막기 위한 몇 가지 방법은 다음과 같습니다. - 사용자로부터의 입력값 검증와 새니타이징(sanitizing): 사용자로부터 받은 데이터는 반드시 검증하고 필요한 경우 새니타이징 작업을 할 것을 추천드립니다. JVM 기반 언어에서는 대부분의 경우 RCE 공격이 불가능하지만 여전히 SQL Injection 등 다른 공격으로 이어질 수 있습니다. - 최소 권한 원칙: 모든 시스템 및 프로세스는 필요한 최소한의 권한만을 가져야 합니다. 이 will minimize the damage in case of an attack. - 보안 패치 적용: 제품 생산자가 발표하는 보안 업데이트와 패치를 지속적으로 확인하고 적용하는 것이 중요합니다. 2. 통상적으로 알고 있으면 좋은 보안 방어 기법: - 로우렝밸링과 DDoS 보호 설정 - 인바운드 트래픽 제한 (보안 그룹 및 네트워크 ACL 사용) - 각 서비스의 최소 권한 설정 - 시스템과 응용 프로그램의 보안 업데이트를 항상 최신으로 유지 - IAM을 통한 AWS 리소스 액세스 관리 - AWS WAF 나 Shield를 통해 애플리케이션 계층에서의 공격 방어 (추가 비용 발생 가능) 마지막으로,"AWS 과금 없는 방법"에 대한 질문에 대해서는, 보안은 무료로 얻을 수 없는 것이기 때문에 매우 어려운 문제입니다. 하지만 위에서 이야기한 것들처럼 보안 그룹 설정, 필요한 서비스에 대한 최소 권한 설정 등 기본적인 보호 조치들은 추가 비용 없이 수행할 수 있습니다. 그러나 더 확실하게 보호하기 위해서는 일부 유료 서비스인 AWS WAF(웹 애플리케이션 방화벽),Shield(DDoS protection) 등을 사용하는 것도 고려해 볼 만합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!