안녕하세요.
핀코인입니다.
이번 글의 제목은 웹 방화벽을 써야 하는 이유입니다. 웹 방화벽을 쓰는 이유로 작성하려고 했다가 이젠 선택이 아니라 필수라는 생각이 들어서 "써야 하는"이라고 고쳐 쓰게 됐습니다.
현재 국내 여러 보안 업체에서도 웹 방화벽 솔루션을 제공하는 것 같으나 일반적인 블로그나 쇼핑몰 등 기타 홈페이지 운영하는 개인 또는 업체에서 가장 저렴하고 좋은 웹 방화벽 솔루션이 cloudflare.com인 것 같습니다.
저희 핀코인도 웹 방화벽을 적용한 것은 사실 얼마 되지 않습니다. 단순히 iptables나 ufw 같은 일반적인 네트워크 방화벽 정도면 쇼핑몰 운영에 큰 문제는 없을 것이라고 생각했기 때문입니다. 그러나 적용한 이후 여러 가지 제공하는 기능을 살펴보고 적용하기를 참 잘 했다는 생각이 듭니다.
예전에 오픈카트를 기반으로 핀코인 사이트를 운영하던 때 중국으로부터 DDoS 공격을 받은 적이 있습니다. 당시 사드 외교 문제로 중국에서 한국 웹사이트를 대대적으로 공격하던 때였습니다. 여러 중소업체 홈페이지들까지 무작위로 공격 받았고 저희 핀코인도 약 3일에 걸쳐서 하루에 2~3번 정도 공격 받았습니다.
당시 공격은 워낙 전 세계의 좀비 컴퓨터로부터 무차별적으로 로그인 시도를 했기 때문에 어떻게 막아낼 방도가 없었습니다. 공격을 받던 시간 30~60분은 그냥 개점 휴업 상태였습니다. 그래서 사이트 리뉴얼하면서 회원 로그인 시 무조건 구글 reCAPTCHA를 입력하도록 조치했습니다. (현재는 처음부터 reCAPTCHA 입력을 요구하는 것이 아니라 1회 이메일/비밀번호 입력 오류 시 요구합니다.)
그런데 cloudflare는 DDoS 방어를 해준다고 합니다. 물론 많은 사람들이 월 20달러 PRO 플랜이 DDoS 방어를 완벽히 해줄 것이라 기대하지는 않습니다. 하지만 1차적인 거름망 장치를 둔 다음 필요에 따라 좀 더 비싼 BUSINESS 플랜을 적용하여 방어를 할 수도 있다는 기본 방벽을 구비했다는 것에 든든함을 느낍니다.
위 도표에서 보다시피 정말 공격을 받았다면 고급 DDoS 지원을 연중무휴 24시간 받을 수 있는 적어도 월 200달러 BUSINESS 플랜을 적용해야 할 수도 있습니다. 소규모 업체에서 지불하기엔 좀 비싼 가격이지만 소 잃고 외양간 고치는 격이 되지 않으려면 가끔 보안상 플랜 상향 조정할 수도 있을 것 같습니다. 피해를 보는 것보다 어느 정도 비용을 지출하더라도 튼튼한 서비스를 제공하는 편이 더 나을테니까요.
DDoS 공격 대비보다도 cloudflare 웹 방화벽을 사용하는 더 중요한 진짜 이유들이 있습니다.
1. 웹 방화벽 뒤에서 실제 서버의 IP를 숨길 수 있다.
일반적으로 웹 방화벽이 없는 경우에는 DNS 질의를 통해 서버의 IP를 쉽게 알 수 있습니다. 그러나 웹 방화벽을 사용하면 실제 서버의 IP는 공개되지 않습니다. 기존 네임서버 변경 내역이나 여러 가지 캐시를 통해서 추측하는 사례가 있다고 하나 실제 서버를 숨긴다는 것은 보안상 매우 유리합니다.
DNS 네임서버를 cloudflare의 서버로 지정하고 실제 서버로 아래와 같이 매핑합니다. 이 때 status를 보면 주황색 구름을 지나가는 화살표의 의미는 트래픽이 cloudflare을 통과하고 cloudflare가 보호한다는 뜻입니다.
기본적으로 네트워크 방화벽을 써서 기본 서비스 외에 여러 가지 포트를 모두 막고 방어를 합니다만 애초에 웹 서비스 공격자에게 IP를 노출하지 않는다는 것만큼 좋은 방어책이 없습니다. 개인적으로 이 부분에 대해서 제일 인상 깊었습니다.
2. 다양한 무료 SSL 옵션을 제공한다.
저희 핀코인은 wildcard SSL 인증서를 구매해둔 상태입니다. 그러나 다음부터는 굳이 SSL 인증서를 구매할 필요가 없습니다. 그 이유는 cloudflare 서명 TLS 인증서를 대신 nginx 서버에 설치하고 cloudflare와 실제 서버 사이에 암호화 통신을 할 수 있기 때문입니다. 그리고 cloudflare는 무료 SSL을 제공합니다. 무료 공용 SSL은 ssl123456.cloudflaressl.com 같은 주소로 표시됩니다. 월 5달러를 주고 전용 SSL을 설치하는 방법이 있습니다만 연 5달러가 아니라 월 5달러라서 좀 비싸다는 생각이 듭니다. ssls.com에서 PositiveSSL은 연간 5.88 달러 밖에 하지 않기 때문이죠.
저희 핀코인도 이 부분은 그냥 cloudflare 제공 무료 SSL을 이용합니다. 월간 5달러 추가 비용은 생각보다 부담스럽네요.
3. 웹방화벽의 다양한 룰셋을 제공한다.
저희 핀코인이 cloudflare 웹 방화벽을 사용하는 이유입니다. 무료에서도 꽤 강력히 지원하지만 이 기능만으로 PRO 플랜의 월 20불 달러의 가치는 충분히 한다고 생각합니다.
핀코인 기반 웹 프레임워크인 Django의 경우도 다양한 XSS 방어, SQL 인젝션 방어 등을 위해서 다양한 보안 옵션을 제공합니다. Django의 보안 대책도 훌륭하지만 웹 방화벽은 개발자가 놓칠 수 있는 부분에 대하여 최전방에서 방어해준다는 점을 높이 사고 싶습니다.
OWASP 보안 취약점도 걸러주고 특히, 워드프레스 같은 대중적인 PHP 웹 솔루션의 취약점 방어도 해줍니다.
이 화면은 공격자가 서버 정보를 빼내기 위해 git 설정 파일 같은 것에 접근하는 걸 차단한 결과 화면입니다. cloudflare는 이러한 룰셋을 상당히 많이 준비하고 있어서 실수로 서버 정보를 노출할 수 있는 것을 미연에 방지해줍니다.
이 화면은 공격자가 워드프레스의 취약점이 있는 사이트를 대상으로 공격하는 부분을 cloudflare가 차단한 결과 화면입니다. 저희 핀코인은 워드프레스/PHP 솔루션을 사용하지 않지만 이러한 접근을 하는 공격자에 대하여 cloudflare가 아예 차단을 해준다는 것이 혹시 모를 사고를 대비할 수 있게 해주는 것 같아 만족스럽습니다.
4. CDN으로서 minify나 캐싱 같은 다양한 옵션을 제공한다.
빠른 웹 서비스를 위해서는 이미지, 자바스크립트, 스타일시트 같은 정적 파일을 적은 용량으로 빠르게 제공해야 합니다.
cloudflare는 CDN 기능을 제공하기 때문에 이러한 정적 파일의 크기를 줄여서 캐시로 제공해줍니다. 이 부분은 조금이나마 웹 서비스의 속도를 개선하는데 도움이 됩니다.
개발자가 굳이 minify하지 않더라도 웹 방화벽 단에서 이러한 처리를 해준다는 것은 매우 편리하기도 합니다.
결론
개인적으로 cloudflare가 아니더라도 웹 방화벽은 모든 쇼핑몰에 강제적으로 적용해야 하지 않나 싶습니다. 조금이라도 보안을 고민해본다면 주저하지 않고 cloudflare를 추천합니다.
어떤 블로그 게시물에서는 cloudflare를 쓰지 않아야 하는 이유로 느린 TTFB를 언급하기도 합니다. 이는 개인 블로그와 비즈니스 사이트의 관점이 좀 다르기 때문인 것 같습니다. 개인 블로그는 구글 검색 결과와 SEO 최적화를 통한 수익 향상에 관심이 있을지 몰라도 비즈니스 사이트는 트래픽 유입을 위해 네이버 키워드, 구글 애드워즈 등 광고비를 집행하고 있는 마당에 더 중요한 것은 보안과 안정적 서비스가 아닐까요.
저희 핀코인은 고객 여러분의 소중한 개인정보를 지키고 편리한 상품권 구매를 위해 최선을 다합니다.
대한민국 1등 온라인 상품권 쇼핑몰 핀코인!
감사합니다.