- 커버로스, 게이트웨이
- Kerberous Overview (RFC 1510,1964,4120)
- 커버로스는 미국 MIT대에서 개발된 대칭키(암,복호화 키가 동일) 방식의 인증 시스템이다. 정확히는 개방된 네트워크 내에서 서비스 요구를 인증하기 위해 대칭키 암호기법에 바탕을 둔 티켓 기반 인증 프로토콜이다. 동시에 KDC(key distribution center) 역할도 한다.
- 커버로스 = 인증 프로토콜 + 키 분배 센터 기능
- 인증 절차
- 클라이언트는 인증서버(AS)에 인증을 요청(로그인)
- 인증서버(AS)는 사용자가 입력한 패스워드를 기반으로 세션키와 임의의 값을 생성
- 클라이언트는 티켓 발급서버(TGS)에 세션키를 보냄
- 티켓 발급 서버(TGS)는 특정 서버와 통신할 수 있는 티켓을 클라이언트에게 발급
- 클라이언트는 티켓을 이용하여 특정 서버와 통신 ex) 게이트웨이에 접속 후 kinit 명령어를 통해 패스워드를 입력하고 티켓을 발급 받은 뒤 개발 및 리얼 서버로 접속을 하는 것
- 장점과 단점
- 데이터의 기밀성과 무결성을 보장 - 데이터의 암호된 체크섬을 계산하기 떄문에 전송 중에 패킷이 변조 되었는지 확인함
- Replay Attack 방지
- KDC SPoF 가능성과 많은 수의 요청을 처리한다는 단점
- 사전 공격에 취약 (5부터는 passwrod guessing 어렵)
- 버전 4와 5의 차이점
- 암호화 시스템 의존성
- 버전 4 : DSE만 사용
- 버전 5 : 모든 종류의 대칭키 암호 알고리즘 사용 가능
- 인터넷 프로토콜 의존성
- IP 주소만 사용해야 했지만, 버전5부터는 다른 형식의 주소 사용도 가능
- 티켓 유효기간
- 최대 2의8승 * 5 = 1280분만 사용이 가능했지만, 버전 5에서는 시작 시간과 만료시간을 명시하여유효기간이 따로 없음
- 암호화 시스템 의존성
- 자세한 정보 - http://www.ietf.org/rfc/rfc1510.txt http://www.gnu.org/software/shishi/wu99realworld.pdf
- Kerberous Overview (RFC 1510,1964,4120)
- SSL VPN(Secure Access Point)
- VPN은 Virtual Private Network의 약자로 공중망을 암호화된 규격을 통해 마치 전용 사설망처럼 사용할 수 있게 해주는 기술이다. 또한 라우터 체계의 비공개, 데이터 암호화, 사용자 인증, 액세스 권한 제한 등의 기능을 제공한다. 주로 보안이 철저해야 하는 서버를 직접 인터넷망을 이용하여 구축하기 힘든 경우 VPN을 이용한다.
- 기능 : 기밀성, 무결성, 접근통제,근원인증
- 터널링 프로토콜 PPTP, L2TP, IPSEC, MPLS
- SSL VPN은 일반 사용자가 쉽게 사용할 수 있는 보안 프로토콜
- IPsec 에 비해 설치와 관리가 편리하며 비용 절감
- 클라 <-> 서버 사이의 안전한 통신 채널 관리
- 상호인증(X.509), 기밀성(AES), 데이터 무결성(SHA-1) 기능을 통해 안정성 보장
- PKI의 공개키와 개인키를 이용한 웹 사이트 통신 보안 가능
- 프로젝트 요구사항 확인 후 기획안 작성
- jekyll 을 통한 깃허브 블로그 만들기
- 스토리보드
- Git 이론과 실습
- Spring 과 Spring boot
- HTTP와 HTTPS
- HTML과 CSS
- JavaScript
- TDD with JUnit4
- Clean Code 작성
- TC Deploy
- TC Object Storage (오픈스택 스위프트)
- 웹서버 스케일 아웃 - Redis(세션 관리 서버)
- DB 스케일 아웃 - 샤딩(데이터소스분리), 레플리케이션
- L7 health Check
- js, css 파일 갱신(해쉬코드 붙이기), gzip 압축 적용
- nClavis
- Log&Crash, nSight, Watchdog
- 성능 테스팅 - 스카우터(오픈소스)
9주동안의 교육기간을 되새겨보며 주마다 배웠던 중요한 요소들을 키워드별로 나열해보았다. 웹 개발은 학교 CS수업에서 얕게 이론만 배운편이라 실제 프로젝트를 정하고 여러명이 협업하여 개발한적은 처음이라 우여곡절도 많았지만 현업을 단시간에 많이 배운것 같아 성장한 기분이 든다. 부서 배치이후에는 웹을 다시 다뤄볼 기회가 적어질것 같아 개인적인 프로젝트로 커뮤니티 사이트를 만들어보면 어떨까 고민중이다. 그러나 부서 배치이후에 배워야 할것, 하고 싶은것들이 많기 때문에 아마 시간이 부족하여 흐지부지 되지 않을까ㅠㅠ
무엇보다도 교육기간을 통해 이용자수가 급등할경우 이를 해결하기 위한 다양한 방법들을 배운게 개인적으로 가장 알찬 경험이 아닐까 싶다. 필자는 서버를 연동하여 안드로이드 어플리케이션을 운영중인데 기획부터 설계, 개발, 운영까지 단 한번도 스케일 아웃에 대해 고민해 본적이 없었다. 막상 이용자수가 급등하여 서버에 장애가 발생할 경우 나는 과연 어떻게 해결했을까? 아마 스케일업으로 급한 불부터 끄지 않았을까? 교육 과정은 이러한 이슈들을 해결해나가는 과정, 몇년동안 실무에서 겪어야 얻을 수 있는 이 값진 경험들을 9주 과정에 함께 고민해보고 배울 수 있다. 이러 교육을 받았다는게 우리 회사에 오길 정말 잘했다고 느낀다. 여담으로 이 과정들을 책으로 집필해서 내면 베스트셀러가 되지 않을까?