05 Feb 2018
|
용어
네트워크
SSL
SSL(Secure Sockets Layer)는 데이터를 암호화하거나 통신 상대를 인증함으로써 데이터를 보호하는 프로토콜입니다. 보통 HTTP 통신을 할 때, ‘https://’로 시작하는 URL들이 대표적인 예시이며 HTTPS(HTTP over SSL)는 HTTP를 SSL로 암호화한 프로토콜입니다.
대표적인 SSL 서버 프로그램
SSL 서비스를 제공하는 대표적인 서버 프로그램으로는 오픈 소스인 ‘OpenSSL’이나 Windows에 내장되어 있는 ‘IIS’가 있습니다. OpenSL은 주로 Apache 웹 서버와 연계해서 사용합니다.
SSL로 방지할 수 있는 위험
SSL은 데이터 보호를 위해 다음과 같은 기능들을 제공합니다.
- 암호화
- 메시지 다이제스트(Message Digest)
- 디지털 증명서
암호화는 전송하는 데이터를 암호화해서 중간에 누군가가 패킷을 가로채더라도 그 안의 내용을 해석하지 못하도록 하는 기능입니다.
메시지 다이제스트는 메시지(데이터)의 해시값(다이제스트 값)을 계산하여 데이터와 함께 전송하는 방법입니다. 중간에 누군가가 패킷을 변조하더라도 다이제스트 값을 확인하면 데이터의 변조 사실을 확인할 수 있습니다. 데이터의 무결성을 보장해주는 방법입니다.
디지털 증명서는 서버가 신뢰할 수 있는 서버인지 증명하는 파일입니다. 중간에 누군가가 접속 경로를 바꾸어 가짜 서버에 접속했을 때 확인할 수 있도록 하는 기능입니다.
SSL 서버
SSL은 디지털 증명서를 이용해서 해당 서버가 신뢰할 수 있는 서버인지 아닌지 확인합니다. 즉, SSL 서버에는 디지털 증명서를 설치해야하는 작업이 필요합니다.
증명서를 설치하는 절차는 다음과 같습니다.
-
서버 관리자는 비밀키와 공개키를 생성한 후 공개키를 CSR(Certificate Signing Request)이라는 증명서 서명 요청 형태로, 제 3의 기관인 CA(Certification authority)에 제출합니다. 공개키는 제출하고, 비밀키는 별도로 보관합니다.
-
CA에서는 여신 판단을 한 다음 CSR에 ‘신뢰할 수 있습니다’라는 디지털 서명을 합니다. 그 이후 ‘디지털 증명서’를 서버 관리자에게 발행합니다.
-
서버 관리자는 디지털 증명서를 서버에 설치합니다.
SSL 암호화의 흐름
서버에 디지털 증명서를 설치하고 나면, 이제 SSL 서버로 동작을 할 수 있습니다.
-
서버는 클라이언트가 접속하면, 클라이언트에게 공개키와 디지털 증명서를 전송합니다.
-
클라이언트는 디지털 증명서내의 디지털 서명을 보고 증명서의 유효성을 체크합니다. 유효한 증명서임이 확인되면 공통키의 파라메터를 서버에서 보내온 공개키로 암호화한다음 서버에 전송합니다..
-
서버는 클라이언트로부터 받은 데이터를 비밀키를 이용해 복호화한다음 공통키의 파라메터를 확인합니다. 여기까지의 작업을 ‘SSL 핸드쉐이크(SSL Handshake)’라고 합니다.
-
클라이언트와 서버는 공통키의 파라메터로부터 공통키를 만들고 그 이후부터는 공통키를 이용해서 암호화 통신을 수행합니다.
04 Feb 2018
|
Linux
ssh
ssh config
ssh 접속을 하기 위해서는 보통 ssh [사용자ID]@[Target IPAddress]와 같이 사용하거나 그 외 포트, 키(Key) 등을 옵션으로 해서 같이 사용해야 하는 경우가 많아서 번거롭습니다.
ex)
ssh snowdeer@10.13.152.45
ssh snowdeer@10.13.152.45 -i ~/.ssh/snowdeer_aws.pem
이럴 때 ‘ssh config’를 사용하면 보다 간편하게 ssh를 사용할 수 있습니다.
~/.ssh/config 설정 파일
‘ssh config’ 파일의 위치는 ~/.ssh/config 입니다. 폴더나 파일이 존재하지 않는다면 직접 만들면 됩니다. 해당 파일을 생성하고 권한은 다음과 같이 부여합니다.
chmod 440 ~/.ssh/config
그리고 config 파일 내용은 다음과 같이 작성합니다.
Host master
HostName 10.13.152.45
User ubuntu
IdentityFile ~/.ssh/snowdeer-aws-seoul.pem
Host node1
HostName 10.13.152.113
User ubuntu
IdentityFile ~/.ssh/snowdeer-aws-seoul.pem
Host node2
HostName 10.13.11.53
User ubuntu
IdentityFile ~/.ssh/snowdeer-aws-seoul.pem
config 파일 사용법
사용법은 단순합니다. 단순히 ssh <host name>으로 명령을 내리면 됩니다.
ex) ssh node1
04 Feb 2018
|
용어
네트워크
프록시(Proxy) 서버의 역할
프록시 서버는 클라이언트로부터 인터넷에 대한 통신을 대리로 수행해주는 서버입니다. ‘캐시 서버(Cache Server)’라는 이름으로 부르기도 합니다. 프록시 서버를 이용하면 내부 네트워크의 인터넷으로의 접근을 일원적으로 관리할 수 있어서 기업 등에서 많이 도입합니다.
과거의 프록시 서버는 자주 접근하는 웹 사이트의 데이터를 저장해주는 Cache 기능이 주기능이었습니다. 하지만 최근에는 Cache 효과가 적은 동적 웹페이지가 많아졌고 회선 대역폭도 넓어졌기 때문에 Cache 기능만을 목적으로 프록시 서버를 설치하는 경우는 줄어들었습니다.
보안 기능의 강화
최근의 프록시 서버는 ‘URL Filtering’이나 ‘바이러스 감지’ 등의 보안 기능을 강화하고 있습니다. 프록시 서버에서는 여러 사이트들의 URL을 카테고리별로 분류해서 데이터베이스로 관리하고 있습니다. 그래서 목적에 맞지 않거나 위험한 사이트는 접근 거부를 할 수 있습니다.
03 Feb 2018
|
Ubuntu
패키지 관리하기
우분투는 기본적으로 확장자가 deb인 데비안 패키지를 사용합니다. 데비안 패키지를 관리하는 명령은 dpkg입니다.
여기에서 포스팅한 적은 있지만 dpkg 명령어의 상세한 옵션들을 다시 정리해봅니다.
dpkg 명령어
| 옵션 |
설명 |
| -i |
패키지를 설치하거나 최신 버전으로 업그레이드 |
| -r |
설정 파일은 그대로 두고 패키지를 삭제 |
| -P |
패키지와 설정 파일 모두 삭제 |
| -C |
패키지가 정상적으로 설치되었는지 확인 |
| -s |
패키지의 최신 정보 출력 |
| -L |
패키지에 들어있는 파일과 경로 출력 |
우분투 패키지 웹 사이트
우분투 패키지 사이트에 접속하면 우분투에서 사용 가능한 패키지 리스트를 확인할 수 있습니다. 또한 각 항목을 클릭하여 상세 페이지에서는 패키지가 지원하는 시스템 아키텍처(32비트 또는 64비트 운영체제) 정보 및 다운로드할 수 있는 미러 사이트 주소를 볼 수 있습니다.
apt와의 관계
필요한 패키지가 있을 때마다 일일이 찾아서 설치하는 작업은 너무 번거로운 일이기 때문에, apt(Advanced Package Tool)이 등장했습니다.
03 Feb 2018
|
용어
네트워크
DNS 서버의 종류
DNS(Domain Name System) 서비스를 제공하는 서버를 DNS 서버라고 합니다. DNS 서버는 ‘캐시 서버(Cache Server)’와 ‘컨텐츠 서버(Contents Server)’로 나누어집니다.
캐시 서버는 로컬 네트워크(LAN)안에 있는 클라이언트로부터 요청을 받아 클라이언트를 대신해서 인터넷에 요청을 하는 DNS 서버로 클라리언트에서 인터넷에 접근할 때 사용합니다.
컨텐츠 서버는 외부 호스트로부터 자신이 관리하는 도메인에 관한 요청 조회를 받는 DNS 서버입니다. 자신의 도메인내의 호스트명은 ‘zone 파일’이라는 데이터베이스로 관리하고 있습니다.