본문 바로가기

웹개발/CS

[server] 서버 보안

시스템의 보안 리스크는 '위험'과 '취약성'의 관계로 이루어진다. 

  • 위험: 시스템에 손해를 입할 기능성이 있는 사고의 잠재적 원인을 나타낸다. 
  • 취약성: 시스템에 존재하는 약점이나 결함을 나타낸다. 

 

시스템이 안고 있는 취약성을 위협이 뚫었을 때 보안 리스크가 되어 여러 가지 손해가 발생한다. 

인터넷의 위협은 끊임 없이 존재하지만 모든 보안 리스크를 방어할 필요 없이 어느 정도 리스크는 허용하고 영향도가 클 것 같은 것만 선별하여 대응한다. 이러한 보안 대책을 끊임없이 되풀이 해 PDCA 사이클을 실시해야 한다. 

*PDCA: 계획(Plan) -> 실시(Do) -> 검사(Check) -> 재검토(Action)

 

 

 

방화벽 

인터넷에 공개하는 서버를 IP 주소나 포트 번호를 바탕으로 통신을 허가하거나 거부하여 보호한다. 

이때 어떤 통신을 거부할지를 정한 것이 '보안 정책'으로 인터넷에서 들어오는 통신(인바운트 통신)과 LAN에서 인터넷으로 나가는 통신(아웃바운드 통신)으로 나누어 결정하고 인바운드 통신은 기본적으로 거부하고 최소한의 필요한 통신만 허가하는 반면 아웃바운드 통신은 기본적으로 허용하고 최소한으로 필요한 통신만 거부한다. 

보안 정책이 정해지면 실현할 수 있는 방화벽을 선정해야 한다. 현재의 방화벽은 4종류로 나누어진다.

 

  • 트레디셔널 방화벽: 최소한의 보안 수준
  • UTM: 보안 관리를 편하게 하고싶은 경우
  • 차세대 방화벽: 인터넷에 대한 사용자 트래픽을 애플리케이션 레벨에서 제어하고 싶은 경우
  • 웹 어플리케이션 방화벽: 인터넷에 공개하는 웹서버를 애플리케이션 레벨에서 보호하고 싶은 경우 

 

 

보안 존과 서버 배치

일반적인 시스템은 방화벽을 중심으로 4개의 보안 존으로 구성되어 있다. 

*보안존: 동일한  보안 레벨을 가지고 있는 네트워크의 모음 

  • Untrust 존: 방화벽의 바깥쪽에 배치하는 존,  신뢰할 수 없는 존으로 보안 레벨이 가장 낮아 서버를 배치해서는 안된다. ex) 인터넷
  • DMZ: 보안 레벨이 Untrust 존보다 높고 Trust 존보다 낮은 완충역할을 하는 존으로 여기에 공개 서버(웹 서버, DNS 서버, 프록시 서버)를 배치한다.  
  • Trust 존: 방화벽 안쪽에 배치되어 제일 신뢰할 수 있는 존이다. 인터넷에 공개하지 않는 서버(도메인 컨트롤러, 방화벽)나 사내 사용자를 배치한다. 다른 존으로부터의 통신은 기본적으로 거부하지만 다른 존으로 가는 통신은 허가한다. 
  • WAN 존:  Trust 존 안에 다른 거점과 연결(VPN 등으로)하는 존으로 Trust 존과 보안 레벨이 동일하다. 

 

 

IDS와 IPS

네트워크를 흐르는 수상한 통신을 식별하여 관리자에게 통지하거나 통신을 차단하는 기능이다. 최근에는 방화벽이나 UTM의 기능 중 하나로 탑재되고 있다. 

 

  • IDS: 통신의 움직임으로부터 침입을 감지하는 기능으로 수상한 통신의 움직임이나 공격 패턴을 '시그니처'라는 형태로 저장하고 기존 시그니처와 대조하여 부정 통신으로 식별되면 관리자에게 경고를 한다. 
  • IPS: 통신의 움직임으로부터 공격이나 부정 침입을 방어하는 기능으로 IDS를 향상시킨것이다. 서버에 대해 부정 통신을 시그니터로 감지하면 즉시 차단한다. 최근에는 공격 수법이 복잡하고 교묘해져서 일단 IDS로 감지만 하고 서버의 상태를 확인한 후 IPS로 차단한다. 

 

 

UTM (Unified Threat Management)

각종 보안 기능을 하나로 모은 방화벽이다. IDS/IPS 기능, 안티 바이러스 기능, 안티 스팸 기능, 'URL 필터일 기능', 'VPN 기능' 등을 통합한다. 기기 한 대로 해결되므로 비용이 저렴하고 도입하기 쉽고 운용 관리가 쉽다. 하지만 많은 기능을 하나에 넣고 있기 때문에 퍼포먼스 저하에 주의해야 하고 어떤 한 기능에 병목 현상이 생기더라도 그 기능만을 업그레이드할 수 없다는 단점이 있으니 모든 기능을 UTM에 맡기는 것이 아니라 전용 어플라이언스나 전용 소프트웨어에 맏기는 것도 고려해봐야 한다. 

 

 

 

차세대 방화벽

UTM의 기능에 '애플리케이션 식별'이나 '가시화'기능을 추가한 제품이다.

 

  • 애플리케이션 식별: 차세대 방화벽은 포트 번호를 그대로 애플리케이션으로서 식별하는 것이 아니라 제5~7 계층인 응용 계층의 정보를 보고 식별한다. URL이나 콘텐츠 정보 등 여러 정보를 보고 더욱 세분화해 식별해서 애플리케이션에 따라 제어할 수 있다. 
  • 가시화: 애플리케이션 레벨로 식별한 통신을 그래프나 표로 만들어 정리해서 관리자가 보기 쉽고 알기 쉽게 해 준다. 

 

 

웹 애플리케이션 방화벽(WAF)

서버의 방어로 특화된 방화벽이다. 포트 번호뿐만 아니라 HTTP에서 주고받는 모든 데이터를 애플리케이션 레벨에서 감시하여 웹 애플리케이션에 대한 공격을 찾아낸다. 

웹 애플리케이션에 대한 공격으로는 대표적으로 3가지가 있다. 

  • SQL 인젝션: 데이터베이스 서버와의 연계에 사용하는 SQL 문을 이용해 공격한다.
  • XSS(Cross-Site Scripting): 웹 브라우저의 표시 처리를 이용하여 공격한다.
  • CSRF(Cross-Site Request Forgery): 가짜 웹사이트로부터 의도하지 않은 HTTP 요청을 보낸다.

이러한 공격을 대처하기 위해 처음에 총신을 차단하지 말고 투과시켜 공격 수법의 템플릿을 처음 '시그니처'로 저장하고 학습시킨 후 그 정보들을 바탕으로 허가해야 할 통신과 거부해야 할 통신을 설정한다.  

 

 

 

 

메일의 보안 대책 

메일은 '메일 보안 시스템'을 통해 메일로 주고받는 애플리케이션 레벨에서 감시하여 통신을 방어한다. 

메일 서버에게 전달하기 전에 메일 보안 시스템을 통해 송신자 IP주소 체크, 바이러스 체크, 스팸 체크 등 각종 검사를 하고 합격하면 메일 서버로 전달된다. 

메일 보안 시스템은 '호스트형', '어플라이언스형', '클라우드형' 이 있지만 메일을 검사하는 장소가 다를 뿐 기본적인 동작은 차이가 없다. 

 

 

 

 

'웹개발 > CS' 카테고리의 다른 글

[network] 네트워크 기초 지식2  (0) 2021.06.22
[server] 서버의 운용 관리  (0) 2021.06.21
[server] 서버 장애 보호  (0) 2021.06.21
[server] 공개 서버의 기본  (0) 2021.06.21
[server] 사내 서버의 기본  (0) 2021.06.17