인프런 커뮤니티 질문&답변
AWS EC2 서버 보안
해결된 질문
작성
·
44
·
수정됨
0
안녕하세요! 늘 좋은 강의에 감사하며 듣고 있는 학생입니다!
EC2 서버를 운영하는데, 보안적 이슈들을 어떻게 처리해야할까에 대한 고민때문에 질문드립니다.
상황
sudo cat /var/log/auth.log, sudo last -f /var/log/btmp 를 보는데, 모르는 IP로 SSH 접속 요청이 많이 찍혀있는 것을 봤습니다. 대부분 시도하자마자 실패한 것 같은데, 일부 요청에선 세션이 21시간정도 머물러 있는 이력들을 포착했습니다.
또한 악성 웹봇(?)으로부터 무작위 api 요청하는 것 또한 포착했습니다. (api/.env, api/vendor, api/...php,..)
이때 약간 뭔 심정이였냐면...


이런걸 당하는 느낌이었습니다.
일단 제가 적용한 해결책은 ...
SSH 연결 세션이 장시간이라는건 위험 -> 서버를 새로 갈자
Inbound에서 SSH 접속을 0.0.0.0 으로 둔게 문제이지 않을까
내 IP로 제한하자
CICD는? 깃헙 러너 IP에 대해 일시적으로 자동으로 보안그룹에서 허용해주고 흐름끝나면 다시 제거하자
IP는 근데 바뀌지 않나? 고정 혹은 유동 IP 뭐 어쩌구 있었던거 같은데
그럼 그때가서 AWS Console가서 바꿔주면 된다.
그래도 SSH 접속 요청이 계속 오면 어떻게 해?
Fail2Ban으로 동일 IP 요청 시도 오면 밴 먹이자
보니까 여러 포트로 시도가 들어오던데?
80, 443, 8080, 22만 허용하자 -> ufw 라는 방화벽?을 사용하자
GPT 형님이 PasswordAuthentication과 PermitRootLogin을 no라고 하라던데..
sshd_config 에서 막아두고, 철저히 pem 접속만 가능하게 하자
근데 저렇게 막아놔도 일단 22포트로 시도는 계속 들어올 수 있잖아
그럼 SSH 접속을 22가 아닌 내가 설정한 임의 포트로 제한하자
CICD에서 SCP, SSH 접속 시 설정한 포트로 접속하도록 수정하자
sshd_config에서 내가 원하는 포트로 설정
ufw에 내가 지정한 포트를 allow로 설정
지정한 포트로 접속 테스트
Inbound에서 22 포트 제거, ufw allow 22포트 제거, sshd_config에서 22포트 제거
22포트 접속 시도 -> 실패해야함 -> OK
근데 무작위 API 요청은 도메인만 알면 가능하잖아? 이건 어떻게 막지?
일단 API의 공통 Prefix 단위로 필터링 -> 허용 및 인증필요 API를 제외한 모든 요청 denyAll 처리
브루투포스 요청이니까 Prefix로 제한해도 결국엔 뚫림
그렇게 뚫려도 물론 .authenticated() 에서 막히기는 하지만.. 일단 여기까지 오는 것도 불안하다
내가 하고 싶은건 무작위 요청 자체를 막았으면 하는데 어떻게하지?
사람이 작정하고 요청하는건 어쩔 수 없어도 웹봇 대상으로는 할 수 있을 것 같은데...
고민
저정도로 과연 보안이 지켜질까 하는 걱정이 있습니다. 울타리 좀 쳤다고 빈틈이 메워지는건 아니잖아요. 백엔드 팀원 중 서버 관리를 제가 도맡아하고 있는데, 저 때문에 팀원들 및 사용자 정보가 노출되면 죄책감이 이만저만 아닐 것 같아요. 현업에서는 보통 저런 무작위 접속/요청 공격에 대해 어떻게 어느수준으로 대응할지 궁금합니다.
강사님의 AWS 중급 강의를 수강할 예정인데, 위의 이슈들을 커버칠 수 있는 내용이 포함되어 있는지 궁금합니다. 목차만 봐서는 잘 감이 안와서요... 근데 일단 제가 무지한 상태이기 때문에 무조건 들을거긴합니다.
혹시 저기서 더 필요한 보안 작업은 뭐가 있을까요? 일단 WAF 방화벽 (혹은 뭐 CloudFront를 쓰면 된다는 Reddit 글을 본거같습니다)과 침입감지, 취약점 점검을 위한 wazuh라는 플랫폼의 도입을 고려하고 있습니다.
혹시 서버 자체가 털리면, 네트워크 상 주고받는 raw 데이터도 털릴 수 있나요?
DB 내부 정보는 중요한 것들은 다 해싱처리해서 털어도 뭐 할 수 있는게 없으니 괜찮겠지~하고 있었는데요. 근데서버 자체가 털려버리는거면 아무리 https로 중간 과정에서의 raw데이터가 보호된다고 해도, 결국 종착지인 EC2 서버에서 그 raw데이터를 가로챌 수도 있는거잖아요?
만약 참이라면, 이것도 고려를 하긴 해야할거같은데... 햐 어렵네요 무섭기도하고 재밌기도하고 난감하기도하고
답변 2
1
안녕하세요 ! 질문 잘해주셨어요 !
보안에 대해 이렇게 깊이 고민하시고 직접 조치까지 취하신 부분 너무 좋네요 !
질문해 주신내용에 대해 답변드려볼게요 ~
"현업에서는 보통 저런 무작위 접속/요청 공격에 대해 어떻게 어느수준으로 대응할지 궁금합니다."
-> 말씀해 주신 조치들 대부분 현업에서도 기본적으로 적용하는 것들이에요 ! 너무 잘하셨네요 ~
현업에서 추가로 많이 사용하는 방법들을 말씀드리면,
SSH 접속의 경우 말씀하신 대로 포트 변경과 IP 제한, 키 기반 인증이 기본이고,
아예 SSH를 퍼블릭에 노출시키지 않고 AWS Session Manager를 통해 접속하는 방식도 많이 써요 !
무작위 API 요청의 경우 사실 도메인이 노출된 이상 요청 자체를 완전히 막기는 어려워요 !
대신 Rate Limiting이라고 해서 일정 시간 내 요청 횟수를 제한하거나,
AWS WAF로 악성 패턴을 필터링하는 방식도 많이 써요 !
말씀하신 Fail2Ban, UFW 설정도 좋은 방법이에요 :)
"강사님의 AWS 중급 강의를 수강할 예정인데, 위의 이슈들을 커버칠 수 있는 내용이 포함되어 있는지 궁금합니다."
-> AWS 중급 강의에서는 외부 접근을 차단해 보안을 강화 시킬수 있는 VPC, 프라이빗 서브넷, 네트워크 구성 등을 다루긴 하지만, 말씀하신 수준의 세부적인 서버 보안을 직접적으로 다루지는 않아요 ! 다만 해당 강의를 통해 네트워크 구성과 AWS 인프라를 이해하시면 보안 설계하실 때 많은 도움이 될거에요 !
"혹시 저기서 더 필요한 보안 작업은 뭐가 있을까요?"
-> 고려하고 계신 방향 좋네요 ~ AWS WAF와 CloudFront 조합은 무작위 요청, SQL Injection, XSS 등 common attack 패턴을 필터링하는 데 효과적이고, 비용 대비 효과가 좋아서 추천드려요! Rate Limiting은 Spring에서 Bucket4j 같은 라이브러리로 구현하거나 API Gateway 레벨에서 처리할 수 있어요 ! Wazuh는 좋은 선택이긴 한데, 소규모 프로젝트라면 운영 부담이 클 수 있어서 상황에 맞게 판단하시면 될 것 같아요!
"혹시 서버 자체가 털리면, 네트워크 상 주고받는 raw 데이터도 털릴 수 있나요?"
-> 네 맞아요 ! 서버 자체가 완전히 탈취되면 HTTPS로 암호화된 통신이라도 서버 내에서는 복호화된 상태로 처리되기 때문에 가로챌 수 있어요 ! 그래서 서버가 털리지 않게 하는 것이 핵심이고, 말씀하신 조치들이 바로 그 역할을 하는 거죠 :)
현실적으로 말씀드리면 완벽한 보안은 없어요 !
현업에서도 100% 막는 건 불가능하고, 공격 비용을 높여서 포기하게 만드는 것이 현실적인 목표예요 ~
지금 하신 조치들만으로도 일반적인 자동화 공격은 충분히 막을 수 있으니 너무 걱정하지 않으셔도 돼요 !
팀원분들 데이터 걱정하시는 마음이 느껴지는데, 책임감이 너무 멋지네요 !
추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
늘 파이팅입니다 ! 💪
0
안녕하세요, 인프런 AI 인턴입니다. Hooby님.
AWS 서버 보안에 대한 고민과 질문을 잘 정리해주셨네요. 여러 가지 시도가 보안에 기여할 수 있으며, 이는 굉장히 중요한 작업입니다. 질문에 대해 도움을 드리고자 관련된 정보와 기존에 제공된 유사한 답변들을 정리하여 안내드립니다.
현재 발생한 문제 및 대응 방안
SSH 접속 보안:
SSH 접속을 가장 안전한 방법으로 설정하는 것이 중요합니다. 22번 포트를 기본으로 사용하지 않고, 특정 IP에서만 접근 가능하게 제한하는 방식은 이미 잘하고 계신 겁니다. Fail2Ban을 통해 반복적인 접속 시도를 차단하는 것도 효과적입니다.
선호 답변: AWS SSH 보안 강화하기
무작위 API 요청 차단:
웹 방화벽(WAF)을 사용하여 특정 유형의 요청을 차단할 수 있습니다. 클라우드프론트를 사용할 경우, 추가적인 보안 계층으로서 작용할 수 있습니다. 인증 체계 설정을 통해 불필요한 요청을 더욱 효과적으로 차단할 수 있습니다.
선호 답변: 무작위 API 접근 차단 설정하기
데이터 가로채기:
- HTTPS로 통신하는 경우, 중간자 공격을 방지할 수 있지만 서버 자체가 손상되면 결국 데이터가 노출될 수 있습니다. 이 경우, 데이터 암호화를 서버 측에서 처리하거나, 민감한 정보에 대해 추가적인 보안 레이어를 구성할 수 있습니다.
- HTTPS로 통신하는 경우, 중간자 공격을 방지할 수 있지만 서버 자체가 손상되면 결국 데이터가 노출될 수 있습니다. 이 경우, 데이터 암호화를 서버 측에서 처리하거나, 민감한 정보에 대해 추가적인 보안 레이어를 구성할 수 있습니다.
현업 보안 대응:
- 현업에서는 보통 AWS WAF, 보안 그룹, VPC 및 네트워크 ACL 등을 활용하여 계층적 보안을 구축합니다. 또한, AWS의 CloudTrail 등 로그 모니터링 서비스를 사용하여 비정상적인 활동을 탐지하고 대응합니다.
- 현업에서는 보통 AWS WAF, 보안 그룹, VPC 및 네트워크 ACL 등을 활용하여 계층적 보안을 구축합니다. 또한, AWS의 CloudTrail 등 로그 모니터링 서비스를 사용하여 비정상적인 활동을 탐지하고 대응합니다.
추가적인 보안 강화를 위한 추천 강의
AWS 중급 강의에서는 이러한 보안 설정 및 실제 운영 사례를 다루며, 여러분이 직면한 문제에 대한 깊이 있는 설명을 제공할 것입니다. 단순히 기술적인 설정뿐 아니라, 보안을 올바르게 적용하는 방법에 대해 학습할 기회를 제공합니다.
질문에 대한 답변이 부족하거나 추가적인 정보가 필요하신 경우, 이어서 질문해 주시면 추가적인 도움을 드릴 수 있습니다. 이해를 돕기 위해 관련 자료와 강의 내용을 참고하여 링크로 제공해드렸습니다. 현재 답변이 만족스럽지 않을 수 있음을 양해 부탁드립니다. 🙏
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




