2023. 3. 15. 15:32ㆍ백엔드/Node.js & Express
백엔드공부를 하면서 자연히 신경써야 한다고 느낀 것이 안정적으로 서버를 운영하는 것이다. 분명 백엔드 현업을 경험해본 적이 없기에 신경쓰지 못한 부분들이 있겠지만, 천천히 적응해가면서 안정적으로 서버를 운영해보고싶다.
https://jobkaehenry.tistory.com/54
[Freeda] 스쿠버/프리다이빙 로그북 작성 서비스
프리다는 회원가입 후, 웹상에서 다이빙 로그를 쉽게 관리할 수 있도록 도와주는 어플리케이션입니다. 자주 작성하는 값들이 미리 작성되어 있어 쉽게 작성할 수 있고, 버디 / 다이브샵 에서 작
jobkaehenry.tistory.com
개인프로젝트로 스쿠버/프리다이빙 로그북앱을 만들면서 문득 든 생각이있다. 나쁜 마음을 가진 해커가 악의적으로 대량의 트래픽을 유발해 서버를 망치려 한다면? 혹은 내가 만든 서비스에 문제가 있어서 유저가 계속해서 똑같은 요청을 다량으로 보내게된다면?
내가 감당못할 트래픽이 들어온다면?
이번에 만든 서버는 AWS EC2를 통해 운영되고 있다. 수익을 추구하지 않고 운영하고 있는 개인프로젝트에 필요이상의 대량 트래픽이 들어온다면 아마 서버비 폭탄을 맞게되지는 않을까하는 걱정이 덜컥 들었다. 실무도 아닌데 비용폭탄은 무서운것이다
만약 9가 잔뜩 찍힌 AWS EC2 폭탄을 맞게된다면? 아찔하다 9가 7개, 오늘 기준으로 13억원이다. Api 서버비용으로 한달에 13억이 꽂힌다면 심장이 쿵쿵뛰고 충격에 잠도 안올 것 같다. 가짜 청구서이기에 망정이지 진짜였으면 심장쿵쿵뛰고 손벌벌 떨릴듯하다..
DOS공격
실제로 이런 형태로 서버를 공격하기도 한다. 서버가 감당할 수 없는 트래픽을 일으켜 서버의 자원을 소모하게 하는 공격인데 아마 DOS는 몰라도 DDOS는 뉴스에서 많이 들어봤을 것이다. 이런 종류의 공격으로 서버가 다운되는것을 막기 위해 여러가지 안전장치를 구축하는게 중요하다.
API Limiter 사용
리미터가 만능은 아니다. 방화벽을 설정하고 적절한 서버 설정을 통해 효율적으로 방어하는 노력을 더해야 하고,
api limiter를 사용하는 것은 가장 기본 설정이라고 볼 수 있다.
# Using npm
> npm install express-rate-limit
# Using yarn or pnpm
> yarn/pnpm add express-rate-limit
이번 프로젝트에 사용한 패키지는 express-rate-limit이라는 패키지이다. 비교적 간단한 설정으로 설정한 시간동안들어오는 api요청을 튕겨낼 수 있으므로 한번쯤 사용해보면 좋을것 같다.
사용법
사용법이 굉장히 쉽다. 먼저 express-rate-limit 라이브러리를 import 한다.
const rateLimit = require('express-rate-limit')
이후 리미터 미들웨어에 필요한 설정을 적용하고, 적용한다.
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 분
max: 100, // 각각의 IP 마다 100 requests 만을 허용한다 (15분간)
standardHeaders: true, // `RateLimit-*` headers 에 요청이 거절됬음을 싣는다
legacyHeaders: false, // 레거시인 `X-RateLimit-*` headers 는 사용하지 않는다.
})
// 모든 api에 대해 리미트를 설정할때
app.use(limiter)
전체 api엔드포인트에 대한 제한을 설정할 수도 있고, 일반적으로는 특정 엔드포인트에 대해서 리미트를 적용한다.
그럴땐 route를 적용해 해당 미들웨어를 사용해주면 된다.
app.use('/api', apiLimiter)
간단하게 요청만을 차단하고자 하면 이정도 설정만으로도 사용할 수 있다. 하지만 해당 미들웨어는 다양한 설정을 사용할 수 있다. (limit에 도달했을때 행할작업 을 설정할 수도 있고, 성공한 요청에 대해서는 limit카운트를 증가시키지 않는등)
따라서 npm 공식문서를 보고 본인 서버에 맞는 설정을 하는것을 추천한다.
https://www.npmjs.com/package/express-rate-limit
express-rate-limit
Basic IP rate-limiting middleware for Express. Use to limit repeated requests to public APIs and/or endpoints such as password reset.. Latest version: 6.7.0, last published: 4 months ago. Start using express-rate-limit in your project by running `npm i exp
www.npmjs.com
'백엔드 > Node.js & Express' 카테고리의 다른 글
[Express] express 초기세팅 하기 (0) | 2022.12.17 |
---|