본문 바로가기

웹개발/CS

[server] 공개 서버의 기본

공개 서버

온프레미스의 DMZ 안 또는 클라우드에 배치해서 인터넷 상의 클라이언트에 대해 서비스를 제공하는 서버이다. 

배치하는 곳이 온프레미스든 클라우드든 서버 자체의 기능은 바뀌지 않고 운용 관리 방법이 달라진다.

  • 클라우드에 배치하게 되면 서버의 관리를 클라우드에 일임할 수 있고 재해를 입어도 클라우드에서 서비스를 계속할 수 있다. 하지만 온프레미스와 연계하여 사용하는 경우 통신보안을 확보해야 하고 떨어진 거리만큼 속도나 리스폰스가 떨어지게 된다. 또한 과금체계인 경우 고액의 요금이 청구될 수 있다. 
  • 반면 온프레미스에 배치하게 되면 통신 효율이 좋아지지만 고도의 운용관리 능력이 요구되며 서버나 네트워크 기기 등과 같은 하드웨어 설치 공간이 필요하다. 

 

 

온프레미스 환경 서버 공개 과정 

  1. 인터넷 회선 서비스를 선정한다. - 요금이나 회선 속도, 지원 체계등을 고려해서 선택.
  2. 글로벌 IP 주소를 취득한다. - 대부분의 경우 고정 IP 취득
  3. 도메인명을 신청한다. 
  4. 공개 서버를 마련한다. - 네트워크 안의 DMZ에 배치
  5. 방화벽에서 NAT한다.NAT 한다. - 공개 서버에 설정한 프라이빗 IP주소와 고정 글로벌 IP주소를 방화벽에서 NAT 한다.
  6. 방화벽에 필요한 통신을 허가한다. - 허가할 통신을 최소한으로 제한하여 보안 레벨이 떨어지지 않도록 함

클라우드 환경 서버 공개 과정

  1. 도메인명을 신청한다.
  2. 공개 서버를 마련한다.
  3. 글로벌 IP주소를 할당한다.
  4. 클라우드의 DNS 서비스에 도메인을 등록한다. 
  5. 도메인 등록업체에 클라우드 DNS 서버를 등록한다.
  6. 클라우드의 DNS 서비스에서 글로벌 IP 주소와 호스트명을 연결시킨다. 
  7. 클라우드의 방화벽 기능에서 필요한 통신을 허가한다. 

 

웹 서버

 웹이란 인터넷 상의 정보를 URL로 지정하거나 정보들이 페이지 링크로 연결되는 구조로, 웹 서비스에는 HTTP라는 프로토콜을 사용한다. 

웹 서버를 제공하는 서버 소프트웨어로는 'Apache'와 Windows Server에 내장되어 있는 'IIS'가 유명하고 둘은 똑같이 웹서비스를 제공하지만 지원하는 플랫폼이 다르다. 

웹 클라이언트가 되는 소프트웨어로는 웹 브라우저가 일반적으로 'Internet Explorer', 'Chrome' 등이 있다.

 

 클라이언트는 HTTP 규칙에 따라 URL과 메서드로 서버에게 요청하고 서버는 요청에 대한 처리 결과를 반환하는데 이때 HTTP를 '클라이언트/서버형 프로토콜'이라고 부른다. URL은 스킴명, 호스트명, 도메인명, 파일 경로로 이루어져 있다. 

 

 

 웹 서버의 웹 브라우저로부터 요청을 받으면 요청에 따른 처리를 하는데 이때 요청한 URL에 지정된 파일이 정적 웹 콘텐츠를 만드는지, 동적 웹컨텐츠를 만드는지에 따라 달라진다. 

  • 정적 웹 컨텐츠를 보내는 경우: 미리 저장되어 있는 파일을 꺼내서 클라이언트에게 반환하게 된다. 때문에 속도가 빠르고 정보가 바뀔 때마다 갱신해주어야 해서 관리가 번거롭다.
  • 동적 웹 콘텐츠를 보내는 경우: 클라이언트로부터 받은 정보에 따라 표시 내용이 달라도록 처리를 한 뒤 클라이언트에 반환한다.  동적 컨텐츠를 만드는 대표적인 수단은 'CGI'와 'Web API'가 있는데 요즘에는 모든 처리를 서버에서 하는 CGI가 아닌 페이지 생성 처리를 클라이언트 측에서 수행하게 하는 Web API를 사용한다.

SSL 서버의 역할

데이터를 훔쳐보거나 변조할 위험을 방지하기 위해 데이터를 암호화하거나 통신 상대를 인증하기 위한 SSL(Secure Sockets Layer)이라는 프로토콜을 사용한다. HTTPS는 HTTP를 SSL로 암호화한 프로토콜이다.

 

대표적인 SSL 서비스를 제공하는 서버 소프트웨어는 'OpenSSL'과 Window Server에 표준으로 내장되어 있는 'IIS'가 있다. 이 둘은 지원하는 플랫폼과 애플리케이션이 다르다.

 

SSL 통신을 이용함으로써 얻을 수 있는 보호는 3가지로 볼 수 있다.

  • 암호화로 데이터의 도청을 막는다.
  • 메시지 다이제스트로 데이터의 변조를 막는다. 
  • 디지털 증명서로 통신 상대의 위장을 막는다.

두 가지 암호화 기술

SSL은 데이터의 암호화와 복호화의 키를 사용한다.

네트워크 암호화 방식은 클라이언트와 서버가 암호화 키와 복호화 키를 어떻게 가지느냐에 따라 두 가지로 나뉜다.

  • 공통 키 암호화 방식: 암호화 키와 복호화 키에 동일한 키를 사용하는 암호화 방식으로 구조가 간단하여 컴퓨터에 부하가 걸리지 않는다.
  • 공개키 암호화 방식: 암호화 키와 복호화 키에 서로 다른 키를 사용하는 암호화 방식으로 공개키로 암호화한 것은 그와 페어가 되는 비밀키로만 복호화할 수 있으며 처리가 복잡하므로 컴퓨터에 부하가 걸린다. 

두 방식은 각자 장단점이 정반대 관계에 있어 SSL은 이 두 방식을 조합하여 사용함으로써 키 배송 문제와 처리 부하 문제를 해결하고 있다. 

 

 

SSL은 디지털 증명서로 통신 상대가 진짜인지 아닌지 확인한다. 따라서 SSL 서버에는 반드시 디지털 증명서를 인스톨해야 한다. 

 

증명서를 인스톨하는 과정

  1. 관리자가 서버 소프트웨어에서 비밀키와 공개키 파일을 작성
  2. 공개키를 CSR(증명서 서명 요청)로 인증국에 제출
  3. 인증국은 여신 판당을 하고 디지털 증명서를 발행
  4. 디지털 증명서를 서버에 인스톨함

SSL로 암호화할 때의 흐름

  1. 서버에 연결
  2. 서버는 클라이언트에게 디지털 증명서를 반환
  3. 클라이언트는 디지털 서명으로 서버의 신원을 확인하고 공통 키의 재료로 공개키를 암호화한 후 서버에게 보냄
  4. 암호화된 데이터를 비밀키로 복호화(핸드 셰이크)하여 공통키로 만듦
  5. 클라이언트로 공통키의 재료로 공통키를 만듦
  6. 공통키를 이용하여 암호화 통신을 수행함

 

 

 

FTP 서버

FTP(File Transfer Protocol)를 이용하여 파일을 효율적으로 전송하는 서버이다. 

대표적인 FTP 클라이언트 소프트웨어는 웹 브라우저로 주소창에 'ftp://'로 시작하는 주소를 입력하면 FTP 서버와 데이터를 주고받을 수 있다. 

FTP 서버는 인증 기능이 있어 사용자별로 액세스 권한을 부여할 수 있다. 하지만 데이터 암호화의 기능은 없어 이를 보완하기 위해 FTPS(FTP over SSL)나 SFTP(SSH File Transfer Protocol)이 등장했다. 

 

 

 

웹 애플리케이션 서버

웹 서버와 데이터를 저장하는 데이터베이스 사이의 다리 역할을 제공하는 서버로 웹 클라이언트로부터 받은 요청에 따라 프로그램을 실행하거나 데이터 베이스에 연결하여 동적 콘텐츠를 생성한다. 

 

 

 

데이터베이스 서버

데이터를 모아서 관리하는 서버로 웹 애플리케이션 서버로부터 요청받은 데이터의 검색, 등록, 수정, 삭제를 수행한다. 

현재는 열과 행으로 구성된 표로 데이터를 관리하는 데이터베이스인 '관계형 데이터베이스'가 주류이다. 

관계형 데이터베이스의 기능을 제공하는 소프트웨어는 RDBMS(Relational DataBase Management System)로 대표적으로는 MySQL, SQL Server 등이 있고 관계형 데이터베이스를 조작할 때 사용하는 언어를 SQL이라고 한다.  

 

 

 

VPN 서버

VPN은 인터넷에 암호화된 통신로를 만듦으로써 두 거점을 잇는 가상의 전용 회선으로 이용할 수 있게 하는 기술이다. 

VPN은 '거점 간 VPN'과 '원격 액세스 VPN'이 있다. 

 

거점 간 VPN

  • 여러 개의 거점 LAN들을 연결하기 위해 사용한다. 
  • 거점 간의 VPN에 사용하는 프로토콜은 'IPsec'으로 거점 간을 인증하여 통신을 암호화한다.
  • 라우터나 방화벽 등 네트워크 기기가 갖고 있는 VPN 기능을 VPN 서버로 사용한다. 

원격 액세스 VPN 

  • 인터넷상에 있는 모바일 사용자의 원격 액세스에 사용한다.
  • IPsec VPN: IPsec을 이용하며 라우터나 방화벽 등 네트워크 기기가 갖고 있는 VPN 기능을 VPN 서버로 사용한다. 자유도가 높지만 설정이 어렵다. 
  • SSL-VPN: SSL을 이용하며 SSL-VPN 전용 VPN 어플라이언스 서버를 사용한다. 컴퓨터의 웹 브라우저에서 VPN 어플라이언스 서버에 액세스 하면 연결할 수 있는 사내 서버 링크가 표시되거나 SSL-VPN 클라이언트 모듈이 인스톨되어 연결 가능해진다. 이용은 간단하지만 자유도가 낮다. 

 

 

 

 

 

 

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

[server] 서버 보안  (0) 2021.06.21
[server] 서버 장애 보호  (0) 2021.06.21
[server] 사내 서버의 기본  (0) 2021.06.17
[server] 서버 준비하기  (0) 2021.06.16
[network] 네트워크 기초 지식  (0) 2021.06.16