외로운 Nova의 작업실
시험 대비 취약한 부분 정리 본문
해당 문서는 시험 전에 다시한번 봐야할 부분을 정리해보도록 하겠습니다.
1. 동기식 스트림암호화 비동기식 스트림 암호의 특징
- 동기식 스트림 암호와 비동기식 스트림 암호
<동기식 스트림 암호>
동기식 스트림 암호 : 스트림 암호에서 키 스트림은 평문 혹은 암호문 스트림과 독립적인 암호를 말합니다.
ex) One time pad : 암호화를 수행할때 랜덤하게 생성된 키 스트림을 사용합니다. 전수공격법으로 해독을 하여도 여러가지 버전의 평문을 얻게되므로 이론적으로 해독 불가능하다고 알려져 있습니다.
- 암호화와 복호화에서 상호 동기화가 필수입니다. 암호화에서 만든 키스트림을 복호화에서도 똑같이 키스트림을 만들어야하기때문에 입을 맞춰야하기때문이빈다.
- 전송도중 변조되어도 후속 암호문에 오류의 영향이 파급되지 않습니다. 암호스트림을 전송할때는 암호문의 형태로 여러개 전송하게되는데 전송 도중 변조되면 변조된 암호문에만 영향이 있을뿐입니다.
- 의도적인 변조를 복호화단계에서 검출 불가능합니다. 키스트림이 어떠한것과 연관성이 없으므로 검출불가능합니다.
<비동기식 스트림 암호>
비동기식 스트림 암호 : 스트림 암호에서 키 스트림은 이전 평문이나 암호문에 종속적으로 결정됩니다.
- 암호문이 전송도중 변경되어도 자기 동기화가 가능합니다. 동기화란 키스트림을 만들어낼 수 있는지 물어보는 것으로 변경되어도 키스트림은 만들어낼 수 있습니다.
- 변조된 암호문이 후속 암호문 복호화에 사용되지 않아 오류파급이 제한적입니다. 복호화할때 하나의 암호문 내에서 암호스트림을 가지고 복호화하므로 후속 암호문 복호화에는 사용되지 않습니다.
2. 암호학 개요 - DRM
- 디지털 저작권 관리(DRM, digital right management)
DRM은 디지털 콘텐츠 소유자가 자신의 콘텐츠에대한 접근을 자신 또는 자신의 위침자가 지정하는 다양한 방식으로 제어할 수 있게 하는 기술적인 방법 또는 방법의 집합을 의미합니다. DRM이 제어하는 콘텐츠 접근은 실행, 보기, 복재, 출력, 변경등을 모두 포함하고 디지털콘텐츠는 오디오, 비디오, 이미지, 텍스트, 멀티미디어, 소프트웨어 등을 포함합니다.
<DRM 구성요소>
메타데이터 : 콘텐츠 생명주기 범위내에서 관리되어야할 각종 데이터의 구조 및 정보입니다.
패키저 : 보호대상인 콘텐츠를 메타데이터와 함께 secure container 포맷으로 패키징하는 모듈입니다.
시큐어 컨테이너 : DRM의 보호범위 내에서 유통되는 콘텐츠의 배포단위입니다.
식별자 : 콘텐츠를 식별하기 위한 식별자 입니다.
DRM 제어기 : 콘텐츠를 이요하는 사용자의 PC 또는 디바이스에서 콘텐츠가 라이선스에 명신된 범위 내에서 지속적으로 보호될 수 있도록 제어합니다.
3. 대칭키 암호 - 대칭키 알고리즘의 종류 및 특징
- 기타 대칭키 암호 알고리즘
<국제>
IDEA(International Data Encryption Algorithm) : DES를 대체하기위해 스위스 연방기술 기관에서 개발한 알고리즘으로 8.5라운드 구조를 갖고있다.
RC5 : 미국 RSA 연구소의 라이베스트가 개발한 것으로 빠른 암호화와 복화기능을 제공하며 모든 하드웨어에 적합하다. 속도는 DES의 약 10배 빠르다.
<국내>
SEED : 한국정보진흥원과 국내 암호전문가들이 함께 개발한 알고리즘으로 인터넷, 전자상거래, 무선 통신등에서 개인정보를 보호하기위해 만든 대칭키 알고리즘이다. 128비트 비밀키에서 생성된 16개의 64비트 라운드 키를 사용하여 128비트 평문을 128비트 암호문으로 암호화한다. Fiestel 구조이다.
ARIA : 전자정부 구현등을 이유로 암호화 알고리즘이 필요하게 됨에 따라 국가보안기술연구소 주도로 학계, 연구소, 정부기관으로 구성하며 공동 개발했다. ARIA-128, ARIA-192, ARIA-256으로 키에따라 구분한다.
HIGHT : 고려대와 KISA가 공동개발한 64비트 블록암호이다.
LEA : 국가보안기술연구소가 개발한 128비트 경량 고속 블록 암호 알고리즘이다. AES보다 2배가량 빠르다.
4. 대칭키 암호 - 블록 암호 모드
ECB(Electronic CodeBook) 모드 : 평문을 n개의 비트로 분할하여 사용한다. 만약 평문의 크기가 블록 크기의 배수가 아니라면 패딩을 통해 부족한 부분을 채워준다. 각각의 블록에 사용되는 키는 동일하다.
CBC(Cipher Block Chaning) 모드 : 이전의 평문이 현재의 평문과 XOR, 암호화한후 다음 평문으로 넘겨지는 방식, 처음에는 이전의 평문이 없기에 예측 불가능한 초기 벡터(IV)라고 불리우는 허구의 블록이 사용된다.
CFB(Cipher FeedBack) 모드 : 이전의 평문값을 암호화하고 현재의 평문값과 XOR 한후 다음 평문으로 넘겨지는 방식
OFB(Output FeedBack) 모드 : 초기화벡터를 암호화하고 평문(전달)과 XOR, 다시 암호화해서 그 다음 평문(전달)과 XOR 하는 방식으로 평문, 암호문과 관계없이 전달 되는 방식
CTR(CounTeR) 모드 : 의사난수로 카운터를 만들어 키처럼 사용하는 방식
5. 비대칭키 암호 - diffe-hellman
<Diff-Hellmam 키 교환에 의한 해결>
Diff-Hellmam 키 교환은 1976년 휘트필드 디피(Whiutfield Diffe)와 마틴 헬먼(Martin Hellman)이 발명한 알고리즘으로 유한체상의 이산대수 문제를 풀기 어렵다는 사실(Diff-Hellmam 키 교환은 R1과 g,p를 가지고 x값을 유추하기 어렵다)로 만들어낸 알고리즘입니다. 키 교환이라는 이름이 붙어있지만 실제로는 키를 교환하는 것이 아닌 공유할 키를 계산하여 만들어내는 것으로 키 합의 라고도 불립니다. 아래는 간단한 절차입니다.
1. 앨리스는 임의의 x를 선택하여 R1 = g^x mod p 를 계산하여 밥에게 R1을 보냅니다..(이때 g와 p는 공개되며 p는 소수입니다.)
2. 밥은 임의의 y를 선택하여 R2 = g^y mod p 를 계산하여, R2를 앨리스에게 보냅니다.
3. 앨리스는 K = (R2)^x mod p를 계산하여 K(대칭키)를 구합니다.
4. 밥은 K = (R1)^y mod p를 계산하여 K(대칭키)를 구합니다.
(R2)^y mod p = (R1)^x mod p = g^xy mod p
6. 비대칭키 암호 - RSA
RSA는 공개키 암호 알고리즘 중의 하나이며 세계적으로 표준 알고리즘입니다. RSA의 키 생성 알고리즘은 간단하게 아래와 같습니다.
1. p, q라고하는 두개의 서로다른 소수를 고릅니다.
2. 두수를 곱하여 N = pq를 찾습니다.
3. O(N) = (p-1)(q-1)을 구합니다.
4. O(N) 보다 작고, O(N)과 서로소인 정수 e를 찾습니다.
5. de mod O(N) = 1인 d를 구합니다.
<RSA를 이용한 암,복호화 과정>
1. 수신자 밥은 송신자 앨리스에게 공개키(e, n)을 알려줍니다.
2. 앨리스는 P(평문)^e mod n의 값인 C(암호문)을 수신자인 밥에게 보냅니다.
3. 밥은 자신의 개인키인 (d, n)을 이용해 C^d mod n 값인 P를 얻어냅니다.
7. 비대칭키 암호 - Elgamel, Rabin,ECC
- 공개키 암호 Rabin
Rabin 암호시스템은 합성수 모듈로에 관하여 제곱근을 찾기 어렵다는 사실로부터 안전성을 얻습니다. 즉, 소인수 분해 문제를 푸는 어려움과 동등한 문제입니다. Rabin 암호시스템에서 암호화는 매우 간단합니다. 따라서 성능이 낮은 플랫폼에서 잘 활용되며 예시로 스마트카드를 들 수 있습니다.
- 공개키 암호 ElGamel
ElGamel 방식은 이산대수 문제에 근거해서 만든 시스템입니다. 실제로 Diffe-Hellman 알고리즘의 확장판으로 다른 알고리즘에 비교했을때 가장 느립니다.
- 공개키 암호 타원 곡선 암호(ECC, Elliotic Curvce Cryptosystem)
RSA와 ElGamel은 안전한 비대칭키 암호시스템이기는 하지만 보안을 위해서는 키의 길이가 매우커야한다는 단점이 있습니다. 연구원들은 이들과 동일한 수준의 보안성을 제공하면서 키의 길이는 짧아도 되는 암호시스템에대해서 연구하였고 그 결과물이 ECC입니다. ECC는 유한체 위에서 정의된 타원 곡선 군에서의 이산대수의 문제에 기초한 공개키 암호알고리즘입니다. RSA보다 키의 비트수를 적게하면서도 동일한 성능을 제공합니다.(160비트 ECC는 1024비트 RSA와 동이라한 보안수준) E :y^2 = x^3+ax+b 의 형태로 정의되는 타원곡선상의 점들간의 덧셈 연산을 통해 키를 산출합니다. 타원 곡선을 주기적으로 바꿔 보안을 강화할 수 있습니다.
8. 해시함수 - 해시함수 특성 및 종류
- 전자서명에 이용되는 해시함수의 특성
1. 해시값을 고속으로 계산할 수 있다.
2. 약 일방향성 : H=h(M)일때, H로부터 M을 찾는 것이 계산상 불가능해야한다.
3. 강 일방향성 : H=h(M)일때, H=h(M')을 만족하는 M'을 찾는 것이 계산상 불가능해야한다.
4. 충돌 회피성 : H=h(M)=h(M')을 만족하는 M과M'을 찾는 것이 계산상 불가능해야한다.
9. 전자서명 - 전자투표 방식
<전자 투표 방식>
- PSEV방식 : 이미 정해져 있는 기존 투표소에서 투표기를 사용하여 투표
- 키오스크 방식 : 정해지지 않은 임의 투표소에서 전자투표
- REV 방식 : 가정이나 직장에서 인터넷을 통해 투표
10. 전자서명 - 여러가지 전자서명
- RSA 전자서명 : 송신자 앨리스는 자신의 비밀키로 전자서명을 합니다. 이후 수신자 밥은 전자서명을 앨리스의 공개키로 복호화를 하여 M와 비교합니다. 같을경우 M은 앨리스가 보낸것임을 증명할 수 있습니다.
- ElGamel 전자서명 : ElGamel 전자서명은 ElGamel 암호시스템과 동일한 키를 사용하지만 알고리즘은 다릅니다. 거의 사용되지 않으며 DSA라 알려진 그 변형이 더 많이 사용됩니다.
- Schnorr 전자서명 : ElGamel 전자서명의 문제점은 p가 매우 큰 소수가 되어야한다는 것입니다. p의 크기를 줄이기 위해 Schnorr 를 제안했습니다.
- 전자서명 표준(DSS, digital signature standard) : DSS는 이산대수 문제를 기반으로 하며 암호화나 키 교환에 사용되지 않고 전자서명에만 사용되는 알고리즘입니다. DSA는 미 연방 표준 DSS이고 NIST가 제안했습니다.
11.전자서명 - 인증서 기본영역 및 x.509버전 2에 추가된 목록
<인증서 기본영역> <버전2에 추가된 목록>
버 : 버전
알 : 알고리즘 인증기관 고유 식별자
일 : 일련번호 주체 고유 식별자
사이 : 사용자 이름
날 : 유효기간 날짜
공 : 공개키정보
12. 접근통제 - 인증 시스템의 구성 요소
<접근 통제 절차>
- 식별 : 본인이 누구라는 것을 시스템에 밝히는 것
- 인증 : 누구라는 것으 검증하기위한 사용 증명 활동
- 인가 : 인증된 주체에게 접근을 허용하고 특정 업무를 수행할 권리를 부여하는 과정
13. 사용자 인증 - 개인식별
- 사용자인증과 개인 식별
사용자 인증 : A가 B에게 자신의 신원을 증명하고 B는 C에게 A인척 가장하여 증명할 수 있는 인증
개인 식별 : A가 B에게 자신의 신원을 증명하지만 B는 C에게 A인척 가장하여 증명할 수 없는 인증
14. 사용자인증 - 인증의 유형
- 사용자 인증의 유형
type1(지식) : 본인이 알고 있는 것을 보여줌으로서 신원을 증명합니다. ex)패스워드
type2(소유) : 본인이 가지고 있는 것을 보여줌으로서 신원을 증명합니다. ex)토큰
type3(존재) : 본인임을 나타내내어 신원을 증명합니다. ex)지문
type3(행위) : 본인이 하는 것을 보여주어 신원을 증명합니다. ex)서명, 움직임
Two factor : 위 타임중 두가지 인증 메커니즘을 결합하여 신원을 증명합니다.
multi factor : 가장 강한 인증으로 세가지 이상의 메커니즘을 결합하여 신원을 증명합니다.
16. 사용자인증 - 서버보안관리 크래킹 도구
<크래킹 s/w>
- John the Ripper : 패스워드 점검도구입니다.
- pwdump : 윈도우에서 패스워드를 덤프할 수 있는 도구 입니다.
- L0phtCrack : 패스워드 취약점 점검도구입니다.
- ipccrack : 패스워드를 원격지에서 추측하여 취약점을 점검하는 도구입니다.
- chntpw : 물리적 접근이 가능한 시스템에서 패스워드를 리셋시키는 프로그램입니다.
- ERD commander : 윈도우 시스템에서 패스워드를 복구해야하는 경우에 사용합니다.
17. 사용자인증 - 일회용 패스워드 종류
<일회용 패스워드(OTP, one time password)>
OTP용 프로그램에서 사용자 비밀번호와 일회용 비밀번호 생성용 입력값을 입력하면 암호 알고리즘을 사용해서 일회용 패스워드를 생성하는 사용자 인증 방법입니다. OTP 생성 및 인증 방식에는 질의응답방식과 시간과 이벤트 동기화 방식, S/KEY 방식이 있습니다.
- 질의 응답 방식 : 인증서버는 사용자에게 시도라고도 부르는 임의 값을 보내고 사용자는 임의값을 토큰장치에 입력하여 인증을 실행합니다.
- 시간 동기화 방식 : 토큰 잧이와 비밀키에 나타나는 시간값을 OTP를 생성하는데 사용합니다.OTP 생성 매체와 인증서버의 시간 정보가 동기화 되어있어야 합니다.
- 이벤트 동기화 방식(계수기 동기화 방식) : 토큰 장치의 버튼을 누르면 인증 서버의 계수기 값에따라 인증값이 생성됩니다.
- S/KEY 방식 : 벨 통신 연구소에서 개발한 OTP 생성 방식으로, 첫번째 비밀키는 클라이언트에서 정하고 그 첫번째값으로 하여 해시 체인 방식으로, 이전 결과값에 대한 해시값을 구하는 작업을 n번 반복하여 n개의 OTP를 서버에 저장하여 사용합니다.
18. 사용자인증 - 스마트카드와 메모리카드 비교
<메모리 카드>
메모리카드는 정보를 저장할 수 있지만 정보를 처리할 수 는 없습니다. 대부분 흔하게 볼 수 있는 카드는 신용카드입니다.
<스마트카드>
스마트카드는 정보를 저장하고 정보를 처리할 수 있습니다. 집적회로가 내장되어있기에 장비보호 기능이 있어야합니다.
19. 사용자인증 - sso
- 통합 인증 체계(SSO, single sign on)
한 번의 시스템 인증을 통하여 접근하고자 하는 다양한 정보시스템에 재인증 절차없이 접근할 수 있도록 하는 통합 로그인 솔루션을 통합 인증 체계라고 합니다.
<SSO의 구성요소>
- 사용자 : 로그인 시도를 하는 사람
- 인증 서버 : ACL을 통한 통합 인증 서버
- LDAP(Lighweight directory access protocol) : 네트워크상의 자원을 식별하고 사용자와 애플리케이션들이 자원에 접근할 수 있도록 하는 네트워크 디렉터리 서비스
- SSO Agent : 각 정보시스템에 자동인증 정보 송수신 진행
<SSO의 특징>
SSO 개발 및 운영비용이 발생하나 홈페이지의 운영비용이 감소하며 보안성이 강화되며 사용자의 편의성이 증대됩니다. 하지만 SSO 서버는 단일실패지점으로 해킹이된다면 전체시스템이 위험합니다.
<최근 SSO의 발전>
- 엑스트라넷 접근 관리(EAM, Extranet access management) : 하나의 아이디와 암호 입력으로 다양한 시스템에 접근할 수 있고 각 ID에 따라 사용 권한을 차등 부여하는 통합 인증과 권한 관리 시스템입니다.
- 식별/접근 관리(IAM, identity and access management) : EAM을 확장 보완한 시스템입니다.
20. 사용자인증 - 커버로스와 세사미
- 커버로스(Kerberos)
1980년대 중반 MIT의 Athena 프로젝트의 일환으로 개발된 것으로 대칭키 암호기법에 바탕을 둔 티켓 기반 인증 프로토콜이며 동시에 KDC입니다. 커버로스는 SSO의 한 예시이며 혼합 네트워크를 위한 사실상의 표준입니다. 광범위한 보안 능력을 통합하며 많은 유연성과 확장성이 있습니다. 특히 기업의 접근 통제를 위한 네가지 요소 확장성,투명성,안정성,보안을 가집니다. NeedHam-Schroeder에 기초한 프로토콜 입니다.
<커버로스의 구성요소>
- KDC(key distribute center) : 키 분배서버로 TGS와 AS로 구성되어있습니다.
- AS(authentication service) : 실질적인 인증을 수행하는 서버입니다.
- TGS(ticket granting service) : 티켓을 부여하고 분배하는 서버입니다.
- Ticket : 사용자에대해 신원과 인증을 확인할 수 있는 토큰이며 사용자가 다른 주체들과 통신이 필요할때마다 패스워드를 입력하지 않게 도와줍니다.
- principals : 인증을 위하여 커버로스를 사용하는 모든 실체
<커버로스 사용 방법>
- 커버로스는 모슨 사용자의 패스워드를 알고있고 AS에 저장됩니다.. AS는 각 서버와 유일한 비밀키를 공유합니다.
- TGS는 AS에게 인증 받은 사용자에게 티켓을 발행합니다. 그래서 사용자는 우선 AS에게 티켓 승인 티켓을 받습니사용자 워크스테이션의 클라이언트 모듈은 이 티켓을 보관합니다.
- 사용자가 새 서비스를 요청할때마다 클라이언트는 티켓 승인 티켓을 이용하여 TGS에 접속하여 티켓을 발행 받습니다.
- 클라이언트는 서비스-승인 티켓을 보관하고 특정 서비스가 필요할때마다 티켓을 사용하여 서버에게 인증합니다.
- 타임스탬프를 따로 사용하여 시간제한을 두어 다른사람이 티켓을 복사하여 나중에 그 사용자인 것처럼 위장하여 티켓을 사용하는 것을 막습니다.
<커버로스의 취약점>
- KDC는 실패 단일 지점이될 수 있어서 해킹이된다면 큰 피해를 입을 수 있습니다.
- 비밀키는 사용자의 워스테이션에 임시로 저장되며 이것은 침입자가 암호화된 키를 획득하는 것이 가능하다는 것을 의미합니다.
- 커버로스는 패스워드 추측 공격에 취약하여 이를 방지할 수 있는 보호를 제공해야합니다.
<커버로스 버전 4와 5의 차이점>
- 버전 5 티켓의 수명이 더깁니다.
- 버전 5 티켓의 갱싱ㄴ이 가능합니다.
- 버전 5는 모든 대칭키 알고리즘을 수용합니다.
- 버전 5는 데이터 유형을 기술하는데 다른 프로토콜을 사용합니다.
- 버전 5는 4보다 오버헤드를 더 많이 필요로합니다.
- 세사미(SESAME)
세사미는 커버로스의 기능을 확장하고 약점을 보완하기위해 개발된 기술로 대칭 및 비대칭 암호화 기법을 사용하여 인증서비스를 제공합니다.
21. 접근 통제 보안 모델
- 강제적 접근통제(MAC, mandatory access control)
자원의 보안 레벨과 사용자의 보안 취급 인가를 비교하여 접근 제어를 합니다. 보안전문가에 의해 규칙이 생성되며 운영자에 의해 보안레벨과 보안 취급 인가가 설정됩니다.
- 임의적 접근통제(DAC, discretionary access control)
주체 또는 그들이 속해 있는 그룹의 신분에 근거해 객체에대한 접근을 제한하는 정책입니다. 파일마다 사용자마다 접근 권한이 다른게 특징입니다. 관련 통제 기법에는 접근제어 행렬, 자격 목록, 접근제어 목록이 있습니다.
- 접근제어 행렬(access control matrix)
주체를 행으로 객체를 열로 구성하고 주체가 객체에 수행할 수 있는 접근 권한을 주체의 행과 객체의 열이 만나는 셀에 기록하여 접근제어 정책을 관리합니다.
- 자격 목록(capability list)
권한(자격)은 주체가 객체에 대해 갖는 접근 권한을 의미하며 주체는 객체에 대한 권한(자격)을 갖는다. 이는 접근제어 행렬을 행단위로 관리하는 것과 같습니다. 자격 목록의 예시로는 커버로스가 있습니다.
- 접근 제어 목록(ACLs, access control lists)
접근 제어 목록은 객체의 관점에서 객체에 어떤 주체가 어떤 접근 권한을 갖는지 명시하여 접근을 통제합니다.
- 임의적 접근 제어의 장단점
장점 : 세분화된 접근제어가 가능하고 유연한 제어 서비스를 제공할 수 있습니다.
단점 : 높은 접근 권한을 가진 사용자가 다른사용자에게 자료에대한 접근을 임의로 허용할 수 있고, 신분을 속여 불법적인 접근이 이루어질 수 있습니다. 또한, 멀웨어에 치명적이다보니 바이러스, 웜, 루트킷이 DAC시스템에 설치되어 실행될 수 있으며 특히 트로이목마 공격에 취약합니다.
- 역할기반 접근 통제(RBAC, role base access control)
역할에따라 접근 권한을 나누고 사용자에게 역할을 부여하여 그 역할의 접근 권한에따른 접근만 가능하게 합니다. 주체의 인사이동이 잦은 조직에 적합한 접근 통제 방식입니다.
-벨라파듈라 보안 모델(BLP, bell-lapadula confidentiality model) = MAC
주체는 자신보다 높은 상급의 정보를 읽지 못하고 자신보다 낮은 하급의 정보를 읽을 수 있습니다. 주체는 자신보다 높은 상급의 정보에 쓰기가 가능하고 자신보다 낮은 하급의 정보에는 쓰기를 할 수 없습니다. 이러한 보안 규칙은 트로이 목마를 방어하는데 효과적입니다. 권한이 높은 사용자A가 악성소프트웨어를 실행시키면 권한이 낮은 공격자 B가 볼수 있도록 권한이 높은 파일의 내용을 권한이 낮은 파일에 쓸 수 없으므로 트로이목마를 방어할 수 있습니다. 사용자 A는 쓰기를하려면 자신보다 높은 보안등급의 파일에 써야하고 그 파일은 공격자 B는 볼수 없습니다.
하지만, 자신보다 높은 파일에 쓰기가 가능하므로 무결성 유지에 문제점이 노출되며 보안단계가 높은 사용자와 낮은 사용자가 공유 메모리 또는 같은 네트워크를 공유하고 있을경우 기밀성 유지가 훼손될 수 있습니다.
- 비바무결성 보안 모델(biba integrity model) = MAC
주체는 자신보다 높은 상급의 정보를 읽을 수 있고 자신보다 낮은 하급의 정보를 읽을 수 없습니다. 주체는 자신보다 높은 상급의 파일에 쓰기를 할 수 없고 자신보다 낮은 하급의 파일에 쓰기를 할 수 있습니다. 추가로 호출 속성이 있는데, 주체는 자신보다 높은 권한을 가진 주체에게 서비스를 요청할 수 없고, 자신 보다 낮은 권한을 가진 주체에게 서비스를 요청할 수 있습니다. 이는 자신이 읽을 수 없는 정보를 자신보다 낮은 주체에게 서비스를 요청해 읽을 수 있습니다. 무결성을 위한 상업용 모델입니다.
-클락 윌슨 무결성 보안 모델(clark-wilson integrity mode) = MAC
비바무결성 보안모델은 무결성의 3가지 목표중 첫번째 목적만을 취급하지만, 클락 윌슨 무결성 보안 모델은 무결성의 3가지 목표를 모두 다룹니다. 아래는 무결성의 3가지 목표입니다.
- 허가되지 않은 사용자로부터의 수정을 예방합니다.
- 허가된 사용자의 부적절한 수정을 예방합니다.(임무 분할, 직무 분리)
- 내부 및 외부 일치성을 유지합니다.(정확한 트렌젝션)
- 만리장성 보안 모델(chinese wakk model, mrewer-nash model) = MAC,DAC
만리장성 보안 모델은 주체와 객체 사이에서 이해 충돌을 야기하는 방식으로 정보가 흐르지 않게하는 보안 모델입니다. 예시로 사용자는 은행 A와 은행 B를 사용한다면, 은행 A의 정보가 은행 B로 넘어가게 하지않는 것으로 들 수 있습니다.
- 신뢰 컴퓨팅 기반(TCB, trusted computing based)
신뢰 컴퓨팅 기반 매커니즘은 하나의 컴퓨터 시스템 내의 모든 보호 매커니즘의 총체로서 시스템과의 조화를 통하여 보안 정책을 적용할 책임을 갖습니다. 컴퓨터내에 신뢰 구성요소와 비신뢰 구성요소를 보안경계로 나눕니다. 보안경계는 실제가 아닌 개념적인 부분입니다.
- 참조모니터(Reference monitor)
참조 모니터란 주체의 객체에 대한 모든 접근 통제를 담당하는 추상머신으로 모든 접근통제를 중재합니다. 주체가 객체에 접근할때는 참조모니터를 호출하여 접근해야하고 참조 모니터는 보안 커널 데이터베이스를 참조하여 객체에대한 접근허가 여부를 결정해야합니다. 참조 모니터는 다음의 3가지 규칙을 가집니다.
- 반드시 부정조작이 없어야합니다.
- 항상 무시되지 않고 호출되어야합니다.
- 모든 동작을 항상 분석과 테스트를 통해 검증할 수 있어야합니다.
- 신뢰 플랫폼 모듈(TPM)
신뢰 플랫폼 모듈은 컴퓨팅 그룹이라는 산업체 컨소시엄에 의해 표준화된 개념으로 신뢰 컴퓨팅에서 핵심이 되는 하드위어 모듈을 말합니다. TPM은 핵심이다보니 훼손 방지가 필수적이라 하드웨어 칩으로 구성하는 게 일반적이지만 물리적인 도난의 경우도 많다보니 소프트웨어로 구현하기도합니다. TPM의 신뢰 관련 기능으로는 암호화 키의 생성과 저장, 패스워드 저장, 무결성 검증 및 측정값 저장, 디지털 인증서 관련 신뢰 연산등이 있습니다.
23. 클라이언트 보안
- 바이러스
바이러스는 컴퓨터 상의 프로그램이나 실행 콘텐츠의 전송자 속에 은밀히 내장되며 자신을 완벽하게 복제할 수 있는 비법을 가진 명령 코드를 가지고 있어 자신을 복제하여 다른 파일을 감염시킵니다.
- 웜(worm)
웜은 자신을 복제하여 네트워크 연결을 통해서 컴퓨터에서 컴퓨터로 그 복제본을 전송합니다. 일단 한 컴퓨터에 도착하게되면 웜은 복제를 시작하고 다시 확산하기 시작합니다. 웜은 다른 시스템에 직접적인 영향을 미치지 않는다는 점에서 트로이목마와 구분되며 다른 프로그램에 기생하지 않는다는 점에서 바이러스와 구분됩니다.
- 트로이목마(trojan horse)
트로이목마는 다른 프로그램의 한 유형인 것 처럼 가장하여 활동하는 프로그램으로 안티바이러스 소프트웨어같이 유용하거나 재미있는 소프트웨어로 가장하여 설치하게 함으로써 다른 시스템으로 침투하는 악성 소프트웨어입니다. 트로이목마는 자기 복제를 하지 않으며 다른 파일을 감염시키거나 변경시키지 않습니다. 다만, 트로이목마가 포함된 프로그램이 실행되는 순간 시스템은 공격자에게 시스템을 통제할 수 있는 권한을 부여하게됩니다. 트로이목마의 또 다른 목적은 데이터파괴로 겉보기에는 유용한 활동을 하는 것처럼 보이지만 몰래 사용자 파일을 지우고 있을 수 있습니다. 대표적인 트로이목마 Back Orifice는 해커들이 백도어로 이용하기에 적합하도록 개발되었습니다. 트로이목마의 일반적인 기능은 다음과 같습니다.
<스파이웨어>
스파이웨어는 트로이 목마와 비슷한 종류로 민감한 정보를 수집하여 주기적으로 원격지의 특정한 서버에 보내는 프로그램으로 대상 컴퓨터에 은밀하게 설치되는 악성 소프트웨어의 유형입니다. 수집된 데이터는 신원 도용, 스패밍, 사기 등과 같은 악의적인 활동을 위해 사용됩니다.
24. 윈도우 서버 보안
- 윈도우 파일 시스템
FAT16 : 파일의 최소단위인 cluster(32KB)를 2^16개 만들수 있다. 따라서 총 용량은 2GB이다. 하지만 얼마 지나지않아 작은 용량으로 여겨지고 이를 해결한 것이 FAT32이다.
FAT32 : 파일의 최소단위인 cluster(32KB)를 2^32개 만들 수 있다. 따라서 총 용량은 128TB 이다. 하지만, 접근제어를 설정할 수 없다는 큰 문제점이 있어서 보안과는 거리가 먼 파일 시스템이다.
NTFS(new technology file system) : 개별 폴더와 사용권한을 설정할 수 있고, 각 파일과 폴더에 해당 계정만 접근하여 읽을 수 있게 암호화할 수 있다. 암호화된 폴더나 파일은 복사나 이동해도 암호화 속성을 잃지않는다. 또한, 특정 계정의 사람이 언제 파일을 열었는지 감사 기능도 제공한다. 이에따라 NTFS 파일시스템은 보안관점에서 비교적 훌륭하다.
<NTFS 파일 시스템 구조>
MBR(master boot record) : 파티션 생성시 물리적 디스크의 첫번째 섹터에 위치하는 512-Byte 크기의 영역입니다. MBR은 부트 코드, 파티션 테이블, 시그니처로 구성되어있으며 운영체제가 부팅될때 BIOS에 의해 POST(power on self test) 과정을 마친후 MBR의 부트코드를 호출하고 부트코드는 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션 VBR의 부트코드를 호출하여 운영체제를 가동시킵니다.
VBR(volume boot record) : 윈도우 부팅을 위한 기계어 코드와 볼륨 및 클러스터의 크기, MFT의 시작주소 등 설정 정보를 담고 있으며 파티션의 가장 마지막 섹터에 VBR 백업본을 가지고 있습니다.
MFT(master file table) : 파일 시스템에 존재하는 모든 파일과 디렉터리에 대한 정보를 담고 있는 테이블로 NTFS에서 가장 중요한 영역입니다. 파일의 위치, 시간 정보, 크기, 파일 이름 등 다양한 속성 정보들을 담고 있는 자료구조 입니다.
시스템 파일 : 시스템이 오류를 일으키면 복구하는데 사용할 로그파일, 디스크 볼륨 이름등 디스크 자체에대한 정보를 담는 파일이 저장됩니다.
파일 영역 : 각 파일에대한 실제 데이터가 저장됩니다.
- SID(security identifier)
SID는 윈도우의 각 사용자나 그룹에 부여되는 고유한 식별번호 입니다. 아래는 SID의 예시 및 설명입니다.
The SID for account NEWGERATION\admnistrator is
S-1-5-21-1801674531-839522115-1708537768-500
S : SID를 의미합니다.
1 : revision number(SID 버전)
5 : Identifier authority value(윈도우 보안 권한, 48비트)
21-1801674531-839522115-1708537768 : 시스템의 고유한 숫자로 로컬 컴퓨터의 구분자입니다. 시스템을 설치할때 시스템의 특성을 수집하여 생서됩니다.
500 : 관리자는 500번, Guest는 501번, 일반 사용자는 1000번 이상의 숫자를 갖습니다.
- 윈도우 인증의 구조
윈도우 인증의 구조중 가장 중요한 구성요소는 LSA와 SAM, SRM입니다.
- SRM(service reference monitor) : LSA로부터 SID를 받아 사용자에게 부여하며 SID에 기반하여 파일이나 디렉터리에대한 접근을 허용할지 결정하고 감사 메시지를 설정합니다.
- LSA(local security authority) : 모든 계정의 로그인에대한 검증을하고 접근 권한에 대해 검사합니다. SID를 생성하여 이름과 매칭하며 SRM이 생성한 감사로그를 기록하는 역할도 합니다. 보안 서브시스템이라고 불리기도합니다.
- SAM(security account manager) : 사용자/그룹 계정에대한 데이터베이스를 관리합니다.
<공유 폴더 숨기기>
공유 리소스를 설정할때 공유 이름 끝에 $기호를 붙이면 네트워크창에서 원격 컴퓨터를 열때 리소스의 목록에 나타나지 않습니다. 즉, 다른사람이 리소스의 존재를 알 수 없습니다. 하지만 CMD 창에서 net share을 입력하면 숨겨진 폴더가 보여지기떄문에 숨기는것 보단 기본 공유 비활성화를 해야합니다.
하지만 단순히 기본 공유 비활성화를 한다고해서 완전히 중지된것은 아닙니다. 기본 공유가 중지된 이후에 운영체제가 재시작되면 운영체제가 다시 자동으로 기본 공유 폴더를 만들기 때문입니다. 따라서 완전히 제거하려면 레지스트리 편집기(\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\parameter)에서 DOWRD로 새로 만들어 0으로 설정합니다.
<윈도우 기본 공유폴더>
C$ : C드라이브에대한 관리 목적 공유폴더입니다. 인가 받지 않은 사용자가 기본 공유 폴더에 접근하여 바이러스가 침투한 사례가 있어 상당히 보안적으로 위험합니다.
ADMIN$ : 윈도우 설치 폴더에 접근하는 관리 목적 공유 폴더입니다. 공유 폴더에 접근하면 윈도우 설치폴더가 열리게됩니다.
IPC$(inter orocess communication) : 프로세스간 통신이 필요할때 사용하는 인터페이스 입니다. IPC$를 제거하면 네트워크 서비스 일부에 문제가 발생할 수 있으므로 레지스트리 값을 수정해서 익명 사용자의 네트워크 접근 이 불가능하도록 설정하는 것이 좋습니다. 또한 윈도우 2000, 2003, 테, 7 버전은 net use 192.168.0.200\ IPC$" "\u" " 명령어와 같이 원래 IPC$ 공유폴더에 접근할때 IPC$ 옆의 ""사이에 비밀번호를 입력해줘야하지만, 아무것도 입력하지않은 null 을 넣어줘도 동작합니다. 이를 널세션 동작이라고 합니다.
<볼륨 암호화>
볼륨 암호화를 지원하는 BitLocket은 윈도우 운영체제에서 제공하는 데이터 암호화 기능입니다. 여기서 말하는 볼륨은 파티션과 같은 만ㄹ입니다. 다만, 컴퓨터를 시작하는데 필요한 시스템 파티션 부분은 암호화 하지 않습니다. 악의적인 사용자가 시스템에 물리적으로 접근한다하더라도 암호화되어있어서 읽을 수 없게됩니다.
레지스트리는 윈도우 부팅시 하이브 파일에서 값을 읽어들여 구성됩니다. 하이브 파일은 시스템의 중요한 정보들을 비화발성 메모리에 저장한 파일들입니다. 하이브 파일에서 직접 읽어 들여 구성되는 키를 Master Key라고 하며, Master Key로부터 값을 가져와서 재구성한 키를 Derived Key라고 합니다.
- Master Key : HKEY_LOCAL_MACHINE, HKEY_USERS
- Derived Key : HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG
<Root key>
루트키란 Master Key 와 Derived Ket를 합친 5가지의 키를 의미합니다. HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG 이 있습니다.
- HKEY_LOCAL_MACHINE(HKLM) : 컴퓨터에 설치된 하드웨어어와 하드웨어를 구동시키는 필요한 드라이버나 설정 사항에 관련된 정보를 가지고 있으며 루트키 중에서 가장 다양한 하이브(구조)로 구성되어 있습니다. 주요서브키는 아래와 같습니다.
- HKLM/HARDWARE : 부팅시 감지된 모든 하드웨어와 그 하드웨어 장치의 드라이버 맵핑 정보들이 보관됩니다.
- HKLM/SAM : 사용자의 패스워드, 소속 그룹, 도메인 정보와 같은 로컬 계정 정보와 그룹 정보를 가지고 있습니다.
- HKLM/SECURITY : 시스템 범위의 보안 정책과 사용자 권리 할당 정보를 가지고 있습니다.
- HKLM/SOFTWARE : 소프트웨어 목록과 그 환경 설정 정보가 저장되어 있습니다. 환경 설정 정보에는 애플리케이션 이름, 경로, 라이선스 정보, 만료 날짜등이 있습니다.
- HKLM/SYSTEM : 시스템이 부팅될때 필요한 시스템 범위의 환경설정 정보를 가지고 있으며 여기에는 로드할 디바이스 드라이버, 시작시킬 서비스 목록등이 포함됩니다. 이러한 정보는 시스템을 시작할때 매우 중요하기때문에 성공적으로 부팅됬을때의 값을 복사본으로 만들어 두었다가 시스템이 비정상적으로 종료되었을때 복사해둔 정보를 바탕으로 부팅할 수 있는 옵션을 사용자에게 제공합니다.
- HKEY_USERS(HKU) : 시스템에 있는 모든 계정과 그룹에 관한 정보를 저장하고 있습니다. 모든 계정의 프로파일이 있다는 것을 제외하고는 HKCU와 동일합니다. 윈도우를 사용하는 사용자가 한명일경우 모든 설정 사항이 HKCU의 내용과 일치합니다.
- HKEY_CLASSES_ROOT(HKCR) : 시스테메 등록된 파일 확장자와 그것을 열때 필요한 애플리케이션에대한 맵핑 정보 그리고 COM 오브젝트 등록 정보를 저장하고 있습니다.
- HKEY_CURRENT_USER(HKCU) : 현재 시스템에 로그인하고 있는 사용자와 관련된 시스템 정보를 저장하고 있습니다. HKCU는 HKU보다 우선권을 갖게됩니다. 만약 HKCU가 변경된다면 HKU의 보안 식별자에 해당되는 키의 내용도 변하게됩니다.
- HKEY_CURRENT_CONFIG(HKCC) : 시스템이 시작할때 하드웨어 프로파일에대한 정보를 저장하고 있습니다. 레지스트리 부분에서 가장 단순한 곳이며 HKLM에 서브로 존재하는 config의 내용만 담고 있습니다. 따라서 디스플레이와 프린터에대한 설정 정보를 갖고 있습니다.
- 계정 관리
- Guest 계정 상태 : 일반적으로 Guest 계정은 비활성화 되어있으나 화성화가 되었다면 Gurest 계정으로 로그인하여 시스템의 정보를 확인하거나 관리자 그룹에 추가하여 악용할 수 있는 위험이 존재하므로 불필요한 경우에는 사용못하게 변경해야합니다. 컴퓨터관리-로컬 사용자 및 그룹-Guest-속성-계정 사용안함으로 설정 변경이 가능합니다.
- 서비스 관리
- Everyone 공유계정 삭제 : 기본 공유 폴더이외의 공유폴더에 Everyone이 공유계정에 포함되어 있으면 익명 사용자의 접근이 가능하므로 확인하고 삭제해줘야합니다.
- 불필요한 공유제거 : 기본 공유 폴더 이외에 사용하지 않는다면 제거해야합니다. 제거 방법은 net share 폴더이름 /delete 명령어로 가능하며 레지스트리 HKML\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\AutoShareServer의 키값을 0으로 수정합니다. 만약 없다면 새로 생성합니다.
- NULL Session 접근 차단 설정 : 비인가된 사용자가 NULL Session을 통해 인증을 거치지 않고 서버에 접근 시 시스템 내부로의 접근이 가능한 취약점이 존재하므로 인증된 사용자만 접속하도록 설정해야합니다. HKLM\SYSTEM\CurrentControlSet\Control\LSA\restrictanonymous 키값을 0에서 1이나 2로 변경하여줍니다.
25. 유닉스 서버보안- UNIX의 파일 시스템
<디렉터리 구조>
유닉스의 디렉터리는 트리 구조를 가지며 최상위 디렉터리는 루트입니다. 대부분의 UNIX 운영체제는 아래와 같은 시스템 디렉터리 구조를 가지며 각 디렐터리별로 사용용도 또한 유사합니다.
- / : 최상위 디렉터리입니다.
- /etc : 시스템의 환경 설정 및 주요 설정 파일을 담고습니다.
- /dev : 프린터나 터미널 같은 물리적인 장치를 다루기위한 특수 파일을 담고 있습니다.
- /usr/bin : 기본적으로 실행 가능한 파일을 담고 있습니다.
- /usr/include : c 언어 라이브러리 헤더 파일이 저장되는 디렉터리입니다.
- /usr/lib : 기본 프로그램의 모듈을 담고 있습니다.
- /usr/sbin : 시스템의 관리 명령어가 저장되는 디렉터리 입니다.
- /home : 사용자 홈 디렉터리가 저장되는 디렉터리입니다.
- /tmp : 프로그램 실행 설치시 생성되는 임시파일을 담고 있습니다.
- /var : 시스템 로그가 저장되는 디렉터리 입니다.
- 권한 상승(SetUID, GetGID)
UID와 GID는 각각 RUID(Real UID)와 RGID(Real GID)라고 불립니다. 하지만 특이하게 유닉스에서 어떤 권한을 가지고 있는가에대한 UID, GID로 EUID(Effective UID)와 EGID(Effective GID)가 있습니다.
RUID : 프로세스를 실행시킨 사용자의 UID
RGID : 프로세스를 실행시킨 사용자의 GID
EUID : 프로세스가 실행중인 동안에만 부여되는 UID로 자원에대한 접근을 판단하기 위한 UID
EGID : 프로세스가 실행중인 동안에만 부여되는 GID로 자원에대한 접근을 판단하기 위한 GID
일반적인 프로그램을 실행할때는 RUID와 EUID는 같지만, SetUID 비트를 가진 프로그램을 실행했을때만 프로세스 안에서 잠시 일치하지 않는 상태가 발생합니다. 보통 SetUID가 설정되어 있다면 권한이 프로그램을 실행한 사용자의 권한이 아닌 프로그램의 소유주의 권한으로 변경됩니다. 따라서 시스템 관리자는 주기적으로 SetUID가 설정된 프로그램을 확인할 필요가 있으며, SetUID가 설정된 파일은 모두 해킹 대상이 되므로 목록화 하여 관리하는 작업이 필요합니다. EGID는 SetGID로 소유주의 그룹 권한을 갖게됩니다.
<SetUID, SetGID 권한 변경 방법>
구분 | 기호방식 | 8진수 방식 | 특수권한설정 |
setuid(4) | s | 4000 | chmod 4777 a.out chmod u+s a.out |
setgid(2) | s | 2000 | chmod 2777 a.out chmod g+s a.out |
- 디렉터리 접근 권한(sticky-bit)
UNIX 시스템에서 sticky-bit를 이용하여 특별한 접근권한을 부여할 수 있습니다. sticky-bit가 설정된 디렉터리는 시스템에 있는 모든 사용자가 파일이나 하위 디렉터리를 생성할 수 있찌만 해당 디렉터리를 지우는 것은 소유주나 root인 경우에만 가능합니다. 그래서 sticky-bit를 공유모드라고 합니다. 아래는 종류에따른 기호와 쓰이는 방법의 예시입니다.
구분 | 기호방식 | 8진수 방식 | 특수권한설정 |
sticky-bit(1) | t | 1000 | chmod 1777 /nova chmod o+t /nova chmod u+t /nova |
- 접근 권한 마스크
시스템 관리자는 /etc/profile에 umast를 설정하여 전체 사용자에게 획일적인 umask 값을 적용하여 사용자가 파일이나 디렉터리를 만들때 가지는 기본적인 권한을 조정할 수 있습니다. 일반적으로 파일을 만들때는 666에서 umask를 빼고 디렉터리의 경우 777에서 umask를 뺍니다.
문법 : umasl [mask]
예시) umask 222 : 파일을 만들때 r 권한만 사용자가 얻습니다.
- UNIX 정기적 스케줄 관리(cron)
cron 데몬 프로세스는 UNIX 시스템에서 정기적인 작업을 지정시간에 처리하기 위해 사용합니다. 만약 작업이 일괄적으로 한번에 처리해야하고 작업에 대한 요구가 불규칙하지 않은 경우 cron 데몬 프로세스로 처리하는 것이 좋습니다. 사용자가 corntab 명령어로 crontab 파일을 작성하면 cron 데몬 프로세스는 crontab 파일을 읽어서 정의된 내용대로 작업을 처리합니다. cron 데몬 프로세스는 UNIX 시스템에서 기본적으로 지원하는 프로세스이므로 사용자는 crontab 명령으로 작업목록을 정의하는 방법만 이해하면됩니다.
-리눅스 PAM 옵션
debug
=> 모듈이 동작을 보여주기 위해 syslog에 정보를 남기는데 이 옵션을 사용하면 패스워드정보를 남기지 않는다.
type=LINUX
=> 모듈의 기본 동작은 패스워드를 물어볼 때 "New UNIX password: "라고 묻는데, 이 옵션을 사용하여 'UNIX'라는 말 대신 'LINUX'로 바꿀 수 있다.
retry=N
=> 새 패스워드를 물어보는 횟수로서 기본값은 1이다. 이 옵션을 사용하면 N만큼 횟수를 늘릴 수 있다.
difok=N
=> 새 패스워드에서 예전 패스워드에 있지 않는 문자들을 몇자나 사용해야 하는지 나타내는 수로 기본값은 10이고 새 패스워드에서 1/2이상의 글자가 이전과 다르다면 새 패스워드로 받아들여 진다.
minlen=N
=> 새 패스워드의 최소 크기에 1을 더한 크기이다. 새 패스워드엔 사용된 문자열의 길이외에 각 문자종류(숫자, 대문자, 소문자, 특수문자)를 사용한 것에 대해 각각 크레디트(credit)를 준다.
dcredit=N
=> 숫자문자가 가질 수 있는 크레디트값을 지정한다. 기본값은 1이다.
ucredit=N
=> 대문자가 가질 수 있는 크레디트값을 지정한다. 기본값은 1이다.
lcredit=N
=> 소문자가 가질 수 있는 크레디트값을 지정한다. 기본값은 1이다.
ocredit=N
=> 특수문자가 가질수 있는 크레디트값을 지정한다. 기본값은 1이다.
use_authok
=> 이 인자는 사용자에게 새 패스워드를 묻지말고 앞서 실행된 패스워드모듈에서 받은 것을 사용하도록 모듈에게 강제한다.
26. 서버 보안
<윈도우 감사 정책>
감사 정책이란 어떤 로그를 남길지 정의한 규칙을 말합니다. 감사 정책에 의해 지정된 이벤트 범주에대해서 로그가 남게됩니다. 아래는 윈도우 감사 정책의 종류입니다.
- 개체 액세스 감사 : 특정 파일이나 디렉터리, 레지스트리 키, 프린터 등과 같은 객체에 대하여 접근을 시도하거나 속성 변경등을 탐지합니다. 감사를 안하는 것을 추천합니다.
- 계정 관리 감사 : 도메인 계정에대해 신규 사용자, 그룹의 추가, 사용자 그룹의 변경, 패스워드 변경등을 감사합니다. 실패시 기록되게 하는 것을 추천합니다.
- 계정 로그인 이벤트 감사 : 로컬 계정의 로그인에대한 사항을 계정 관리 검사 처럼 감사합니다. 성공과 실패시 기록되게 하는 것을 추천합니다.
- 권한 사용 감사 : 권한 설정 변경이나 관리자 권한이 필요한 작업을 수행할때 감사합니다. 실패시 기록되게 하는 것을 추천합니다.
- 로그인 이벤트 감사 : 로컬 계정의 접근시 생성되는 이벤트를 감사합니다. 다계정 로그인 이벤트감사에 비해 다양한 종류의 이벤트를 확인 할 수 있습니다. 성공과 실패시 기록되게 하는 것을 추천합니다.
- 디렉터리 서비스 액세스 검사 : 시스템 액세스 제어 목록(SACL)이 지정되어있는 액티브 디렉터리 객체에 접근하는 사용자에대한 감사 로그를 제공합니다. 실패시 기록되게 하는 것을 추천합니다.
- 정책 변경 감사 : 사용자 권한 할당 정책 , 신뢰 정책의 변경과 관련된 사항을 감사합니다. 성공과 실패시 기록되게 하는 것을 추천합니다.
- 프로세스 추적 감사 : 프로세스를 시작하거나 중지할때 해당 이벤트가 발생합니다.
- 시스템 이벤트 감사 : 시스템의 시동과 종료 보안 로그 삭제등 시스템의 주요한 사항에대한 이벤트를 남깁니다.
<윈도우 시스템 이벤트 로그 종류>
- 윈도우 시스템은 응용 프로그램 로그, 보안 로그, 시스템 로그와 같은 세가지 로그를 이벤트에 기록합니다. os 구성에따라서 디렉터리 서비스 로그, 파일 복제 서비스로그, DNS 서버 로그가 추가될 수 있습니다.
- 응용 프로그램 로그 : 응용프로그램이 기록한 다양한 이벤트가 저장되며 기록되는 이벤트는 소프트웨어 개발자에 의해 결정됩니다. AppEvent.Evt 파일에 저장됩니다.
- 보안 로그 : 로그인 시도 및 파일 생성, 열람, 삭제 등의 리소스 사용에 관련된 이벤트를 기록합니다. secEvent.Evt파일에 저장됩니다.
- 시스템 로그 : window 시스템 구성요소거 기록하는 이벤트로 구성요소의 오류를 이벤트에 기록합니다. SysEvent.Evt 파일에 저장합니다.
- 디렉터리 서비스 로그 : windows active directory 서비스에서 발생하는 이벤트를 기록합니다.
- 파일 복제 서비스 로그 : windows 파일복제 서비스에서 발생하는 이벤트를 기록합니다.
- DNS 서버로그 : Winbdows DNS 서비스에서 발생하는 이벤트를 기록합니다.
- ISS 웹 서버 로그
윈도우의 IIS(internet information services) 웹서버에서 로그는 기본 W3C 형식으로 남도록 설정되어있습니다. 먼저 제어판->프로그램_>window 기능 사용/사용안함->인터넷 정보서비스 체크 를 하여 인터넷 정보 서비스(IIS)를 켠 후에 제어판->시스템->관리도구->IIS 관리자에서 로그 파일의 경로를 확인할 수 있습니다. 아래는 로그파일의 필드의 일부입니다.
- cs-uri-steam : www.xxx.com/bs/bs.asp?id=23 를 /bs/bs.asp를 의미합니다.
- cs-uri-query : www.xxx.com/bs/bs.asp?id=123 에서 id=123을 의미합니다.
<로그 예제>
2019-06-03 09:53:12 195.168.137.128 GET /XSS/GetCookie.sap?cookie=ASPSESSIONIDQQCAQDDA
80 - 192.168.137.1 Mozila/5.0+(cimpatible;+MEIE+9.0+windows_NT_6.1;) 200 0 0 225
- 2019-06-03 09:53:12 : 날짜와 시간입니다.
- 195.168.137.128 : 서버 IP입니다.
- GET /XSS/GetCookie.sap?cookie=ASPSESSIONIDQQCAQDDA : HTTP 접근 방법과 접근 URL입니다.
80 : 서버 포트입니다. - 192.168.137.1 : 클라이언트 IP입니다.
- Mozila/5.0+(compatible;+MEIE+9.0+windows_NT_6.1;) : 클라이언트의 웹 브라우저 입니다.
- 200 : 실행 결과 코드입니다.
- 0 : 서버에서 클라이언트로 전송한 데이터의 크기입니다.
- 0 : 클라이언트에서 서버로 전송한 데이터의 크기입니다.
- 225 : 처리 소요 시간입니다.
- 유닉스/리눅스 로그 분석과 설정
유닉스에는 로그를 집중적으로 관리하는 syslog 데몬이 있지만 각 데몬이 로그를 별도로 남기는 경우가 많습니다. 다양한 로그를 바탕으로 해커를 추적할 수 있습니다. 시스템마다 로그가 저장되는 경로가 다르고 두개 이상의 경로에 로그가 나누어서 저장되기도 합니다. 아래는 로그들에대한 설명입니다.
- utmp(x) 로그 :유닉스의 가장 기본적인 현재 시스템에 로그인한 사용자의 상태를 utmp 데몬이 로그로 남깁니다. utmp 로그는 utmp.h에서 정의된 구조체로 데이터가 저장되며 바이너리 형태로서 파일을 직접열어보지 않고 명령어를 통해 로그를 확인합니다. 명령어는 w, who, users, whodo, finger등이 있습니다.
- wtmp(x) 로그 : utmp.h 파일의 구조체를 그대로 사용하며 사용자의 로그인, 로그아웃, 시스템 재부팅 정보들이 로그에 있습니다. 바이너리 형태로 last 명령어를 통해 로그를 확인할 수 있습니다.
- sulog(unix/sunos) : 권한 변경에대한 로그로 /var/adm/sulog 파일에 텍스트 형식으로 남습니다. 권한은 600으로 관리자만이 해당 파일을 열어 확인할 수 있습니다. 출력형식은 아래와 같습니다. 만약 권한 변경 실패를 여러번 한다면 여러개의 [-]로 저장되어 패스워드 추측 공격을 수행한 계정을 추적할 수 있습니다.
- [날짜] [시간] [+(성공) -(실패)] [터미널종류] [권한 변경 전 계정 - 권한 변경 후 계정]
- acct/pacct 로그 : pacct(process account) 로그는 사용자가 수행한 프로그램에 대한 정보를 저장하는 로그입니다. 사용자가 사용한 터미널의 종류와 시간, 명령어등을 로깅합니다. 다만 시스템 자원을 비교적 많이 소모하여 해커를 추적하려는 목적으로 쓰징낳고 각 사용자에대한 요금을 부과하기위해 사용됩니다. /usr/adm/pacct 로그파일은 바이너리 형태로 저장되며 acctcom, lastcomm 명령을 통해 로그를 확인할 수 있습니다.
- .sh_history 또는 . bash_history : 유닉스에서는 실행한 명령에대한 기록이 [셸의 종류]_history 형식으로 각 계정의 홈 디렉터리에 저장됩니다. hisotry 명령을 내리면 실행한 명령어들의 로그를 확인할 수 있습니다. 텍스트 형태로 저장되며 cat이나 more 명령으로 확인이 가능하며 권한은 600으로 파일 소유자가 읽을 수 있습니다.
- loginlong(unix/sunos) : 5회 이상 로그인에 실패한 로그를 남깁니다. /var/adm/loginlog에서 확인 가능하며 텍스트 파일로 되어있어 vi등의 편집기를 통해 확인할 수 있습니다.
- btmp(Linux) : 로그인에 실패한 모든 로그를 남깁니다. /var/log/btmp에 바이너리 형태로 되어있어 lastb 명령어로 로그를 확인 할 수 있습니다.
- lastlog : 가장 최근에 성공한 로그인 기록을 담고 있는로그 파일입니다. 바이너리 형태로 저장되어 있어 lastlog(linux), finger(unix/sunos/linux) 명령어를 사용하여 로그를 확인합니다.
- HTTPD 로그 : 웹 서비스에대한 로그는 /usr/local/apache/logs 디렉터리에 Access_log, Error_log 등과 같은 로그파일로 남습니다.
- xferlog(FTP 파일 전송 로그) : FTP 로그 파일로서 proftpd 또는 vsftpd 데몬들의 서비스 내역을 기록하는 파일입니다. 공격자가 FTP 서비스를 이용해 어떤 파일을 복사하고 파일을 전송한 날짜와 시간 접근 시스템의 IP 전송한 파일을 확인할 수 있습니다. /var/log/xferlog에서 확인이 가능합니다. 아래는 로그의 예시이며 그에대한 설명입니다.
Thu Feb 3 18:43:46 2011 1 192.168.1.1 861486 /tmp/12-67-ftp1.bmp b - o r nova ftp 0 * c 861486 0
- 861486 : 파일의 크기입니다.
- /tmp/12-67-ftp1.bmp : 전송된 파일의 이름
- b : 전송방법으로 b는 바이너리 a는 아스키 코드로 전송한 것을 뜻합니다.
- - : 특수 동작으로 C면 파일의 압축, U면 파일의 압축해제, T면 파일이 묶이는 것을 뜻합니다.
- o : 방향으로 o는 클라이언트가 서버에게 파일을 복사한 경우 i면 클라이언트가 서버의 파일을 복사한 경우를 뜻합니다.
- r nova : 접근 계정으로 a면 익명 계정, g면 게스트 계정, r이면 r [사용자계정]인 인증된 사용자를 뜻합니다.
- ftp : 서비스이름입니다.
- 0 : 인증서버 사용여부로 0은 인증서버가 없는경우 1은 RFC 931을 이용한 인증을 수행합니다.
- * : 인증 사용자 ID로 *는 인증된 사용자 ID를 사용할 수 없다는 의미입니다.
- c : 파일 전송 성공 여부로 c는 성고 i는 실패 또는 오류를 의미합니다.
- 서버 보안용 취약점 분석 도구
- SATAN(security analysis tool for auditing networks) : 해커와 똑같은 방식으로 시스템에 침입하여 보상의 약점을 찾아 보완할 수 있는 네트워크 분석용 보안 관리 도구입니다. 그래픽 모드로 되어있고 인터넷에 공개되어 무료로 사용가능합니다.
- SARA : SATAN을 기반으로 개발된 취약점 분석도구로 네트워크 기반의 컴퓨터, 서버, 라우터 IDS에대한 취약점 분석, 유닉스 플랫폼에서의 동작, HTML 형식의 보고서 기능이 있습니다.
- SAINT : 유닉스 플랫폼에서 동작하는 네트워크 취약점 분석도구로 원격에서 취약점을 점검하는 기능이 있고 HTML 형식의 보고서 기능이 있습니다.
- COPS : 유닉스 플랫폼에서 시스템 내부에 존재하는 취약점을 점검하는 도구로 취약한 패스워드를 체크합니다.
- Nessus : GUI 형태로 클라이언트-서버 구조에서 클라이언트가 nessus 데몬에 접속하여 대상 시스템에대한 취약점 점검을 실시하고 결과는 txt, html, pdf 등 다양한 포맷으로 저장합니다.
- nmap : 포트 스캐닝 도구로 TCP 방식 뿐만아니라 관리자에게 취약점을 들키지 않는 stealth 모드로 포트 스캐닝 하는 기능을 포함합니다.
- 무결성 점검 도구
- tripwire : 유닉스/리눅스 환경에서 파일시스템의 무결성을 점검하는 대표적인 도구입니다. 다양한 해시함수를 지원하여 변조 여부를 판별합니다. 동작방식은 최초 설정파일에 등록된 파일의 해시값을 생성하여 데이터베이스에 저장하고 주기적으로 tripwire가 동작하면서 데이터베이스 해시값과 현재 해시값을 비교합니다. 만약 다르다면 리포트하여 관리자가 확인하게됩니다. 이때 데이터 파일의 경우 자주 변경되기에 데이터파일 무결성 점검은 적절하지 않습니다. 이외에 Fcheck, AIDE 등이 있습니다.
- 스캔 탐지 도구
- mscan : 도메인 내에 있는 주요 취약점을 한번에 스캔 할 수 있는 해킹 도구 입니다.
- sscan :mscan을 업데이트하여 유닉스/윈도우 네트워크를 통하여 취약점 점검을 수행할 수 있는 도구입니다.
- portsentry : 실시간으로 포트 스캔을 탐지하고 대응하기위한 프로그램으로 정상 스캔과 stealth 스캔을 탐지할 수 있으며 공격 호스트를 /etc/host.deny 파일에 기록하여 자동방어하는 기능이 있습니다.
-네트워크 모니터링 및 침입 탐지 도구
- Snort : 실시간 트래픽 분석과 패킷 처리를 담당하는 공개 소스 네트워크 침입 탐지시스템(IDS)입니다. 다양한 공격을 감지하며 실시간 경고 기능도 지원합니다.
- 방화벽
- TCPWrapper : 유닉스 기반의 방화벽 툴로 호스트가 서비스 요청을 해오면 접속을 허용한 시스템인지 확인하고 통과시켜주는 도구입니다.
- IPchain/IPtable : IPTable은 패킷 필터링 방화벽으로 패킷 필터란 패킷이 어디서 왔는지 어디로 향하는지 어떤 프로토콜을 이용하는지 확인하고 통과시켜주는 도구입니다.
27. 최신보안주제들
- SecaaS 서비스
SecaaS(security as a service)는 서비스 제공자가 제공하는 보안 서비스 패키지를 의미합니다. 이를 통해 보안 책임을 기업에서는 많이 덜어낼 수 있고 보안 서비스 제공자가 그 책임을 지게 됩니다. SecaaS는 보통 신원 및 접근관리, 웹보안, 이메일 보안등을 서비스합니다.
- APT(advanced persistent threat)
지능형 지속 위협(APT)는 특정 대상을 겨냥해 다양한 공격 기법을 이용하여 장기간 지속적으로 공격하는 것을 마합니다. 공격의 가장 큰 특징은 제로데이와 같이 알려지지않았던 취약점을 이용한다는 것입니다. 특정 공격 대상 기관에 맞도록 특별히 개발된 공겨도구와 침입 기술들을 사용합니다. 공격자는 목표가 달성될때까지 지속적으로 내부 공격 행위를 관찰하고 조종합니다. 불특정 다수를 대상으로 하는것보다 국가 기관 중요 산업시설등 특정 기관을 목표로 하는 공격입니다
28. 라우팅
- 라우팅 알고리즘
<거리벡터 알고리즘>
거리벡터(DV, distance-vector) 알고리즘은 인접한 이웃들의 기초정보를 이용하여 각 목적지마다의 최소비용을 적어놓는 알고리즘입니다. 이 알고리즘으로 알 수 있는 최소비용을 이용하여 경로를 탐색하고 라우팅하게됩니다.
<링크 상태 알고리즘>
링크 상태 알고리즘은 플러딩을 통해 인접한 노드들의 최소비용을 알 수 있는 링크상태 데이터베이스를 작성합니다. 이 데이터베이스를 가지고 목적지까지의 최소비용을 산정하고 경로를 정해주며 라우팅하게됩니다.
< 경로 벡터 알고리즘>
경로 벡터 알고리즘은 스패닝 트리에서 여러가지 경로중 매트릭(우선순위)에서 한가지를 적용하여 가장 최소비용이되는 경로를 결정하는 알고리즘입니다.
- 라우팅 프로토콜
<RIP>
RIP(Routing information protocol)은 거리 벡터 알고리즘을 사용하며 AS내의 네트워크에 도착하는 방법과 거리를 홈수로 저장합니다. RIP는 여러 한계가 있지만 설정하기 쉽고 간단해서 널리 사용됩니다. 홉은 네트워크 수를 의미하며 보통 목적지까지가는데 거치는 라우터의 수라고 생각하면된다. RIP에서 경로의 최대비용은 15이다.
<RIP 문제점>
- 느린 수렴 : 모든 라우터가 같은 정보를 갖게 될때까지 오랜 수렴시간이 듭니다.
- 라우팅 루프 : 네트워크에 변화가 생겼을떄 느린 수렴으로 인해 즉시 라우팅 경로에 반영하지못합니다.
- 무한세기 : 라우팅 루프에 의해 도착할 수 없어진 네트워크를 도착할 수 있다고 생각한 라우터가 엉뚱한 RIP 메시지를 생성하여 라우터 사이에서 계쏙 주고받습니다
- 작은 무한값 : RIP는 느린 수렴문제를 줄이기위해 최대 홉수를 15로 지정했습니다. 이는 네트워크 규모에 제한을 받습니다.
<RIPv2>
RIPv2는 RIPv1의 예약필드를 사용하여 기능을 대폭 확장시켰습니다. 아래는 추가적인 기능입니다.
- CIDR과 VSLM지원
- RIPv1은 브로드 캐스팅만을 이용하지만 RIPv2는 브로드캐스팅과 멀티캐스팅 지원
- RIP2는 메시지마다 인증이 가능
- 호환성을 위해 RIP1과 동일한 메시지 포맷사용
<IGRP>
IGRP(internet gateway routing protocol)은 RIP의 문제점을 해소하고자 시스코에서 제안했습니다. IGRP는 하나의 매트릭 값만을 사용하는 대신 다섯가지의 네트워크 파라미터를 이용하여 거리벡터를 계싼합니다. 이는 상황에 맞게 알고리즘을 적절히 변형할 수 있습니다. 아래는 IGRP의 매트릭 계산요소입니다.
- 대역폭 : 회선속도를 의미합니다.
- 지연 : 회선을 사용하여 전송하는데 걸리는 시간입니다.
- 신뢰도 : 라우터가 동적으로 측정합니다.
- 부하 : 라우터의 부하되는 정도를 의미합니다.
- MTU : 회선이 처리할 수 없는 최대 프레임 크기를 나타냅니다.
<EIGRP>
IGRP는 CIDR과 VLSM 지원을 안하기떄문에 기능을 추가시킨 EIGRP를 개발했습니다.EIGRP역시 거리 벡터 프로토콜이지만 링크 상태 라우팅 프로토콜에 더 가까운 특성을 가지고있습니다.
<OSPF>
OSPF(open shortest path firs)는 개방 최단 경로 우선 프로토콜로 링크 상태 라우팅 알고리즘을 기반으로 만들어졌습니다. 보안 인증, 클래스 단위 지원, 서브넷 단위 지원, CIDR을 지원합니다. OSPF에서는 큰 네트워크를 잘 관리할 수 있도록 AS를 작은 Area로 묶고 논리적인 백본을 사용하여 연결합니다. 또한 AS와 AS사이의 라우팅은 오직 영역 경계 라우터를 통해서만 수행됩니다.
<BGP4>
BGP4(border gateway protocol version 4) 프로토콜은 현재 인터넷에서 사용하고 있는 유일한 도메인 라우팅 프로토콜입니다. 경로 벡터 알고리즘을 기반으로 하고 있지만 인터넷에서 네트워크의 접근성에대한 정보를 제공하기에 알맞습니다. RIP와 같이 거리벡터에 기초한 알고리즘이지만 AS번호를 매트릭으로 사용합니다.
<ingress 필터링 설정>
ingress 필터링은 라우터 내부의 사내 네트워로 유입되는 패킷의 소스 ip나 목적지 포트를 체크하여 허용하거나 거부하도록 필터링 하는 것입니다. 들어올 수 없는 내부 IP가 들어오는 경우 차단해야한다는 예시를 들 수 있습니다. 내부 주소가 130.18.0.0 인경우 필터링을 설정하는 방법이 아래 있습니다.
Router>enable
Router#conf t
Router(config)#acess-list 15 deny 130.18.0.0 0.0.255.255
Router(config)#interface FastEhernet 0/0
Router(config-if)# ip access-group 15 in
Router(config-if)#end
<egress 필터링 설정>
egress 필터링은 내부에서 라우터 외부로 나가는 패킷의 소스 ip를 체크하여 필터링하는 것입니다. 내부 주소범위가 220.1.2.0/24인 경우 그 와의 주소들은 위조된 패킷일 가능성이 있어 차단해줘야한다는 예시를 들 수 있습니다. 내부주소가 220.1.2.0인경우 필터링을 설정하는 방법이 아래에 있습니다.
Router>enable
Router#conf t
Router(config)#acess-list 16 permit 220.1.2.0 0.0.0.255
Router(config)#acess-list 16 deny any
Router(config)#interface FastEhernet 0/0
Router(config-if)# ip access-group 16 out
Router(config-if)#end
<null routing을 활용한 필터링>
access-list와 함께 사용하는 필터링 기법에는 black-hole 필터링이 있습니다. 특정한 ip또는 ip 대역에대해서 아무것도 하지않는 NULL이라는 가상의 쓰레기 인터페이스로 보내도록 함으로써 패킷의 통신이 되지않도록 하는 것입니다. 2111.1.1.1 ip를 차단해보는 예시를 들겠습니다.
Router>enable
Router#conf t
Router(config)#interface null 0
Router(config-if)# no ip unreachable //null 인터페이스로가면 에러메시지를 발송하지않도록 설정
Router(config-if)ip route 211.1.1.1 255.255.255.255 null 0
Router(config-if)#end
<unicast RPF를 이용한 필터링>
unicast RPF의 원리는 인터페이스를 통해 들어오는 패킷의 소스 ip에 대해 라우팅테이블을 확인했을때 들어온 인터페이스로 다시 나가는지 확인하여 만약 동일한 인터페이스로 다시 나가지않는다면 위조된 패킷으로 판단하고 차단합니다. 아래는 ethernet 0/0 인터페이스에 RPF를 사용하도록 하는 명령어 입니다.
Router>enable
Router#conf t
Router(config)#interface Ethernet 0/0
Router(config-if)# ip verify unicast reverse-path
Router(config-if)#end
<standard 액세스 리스트>
패킷의 소스 IP만으로 패킷을 허용하거나 차단하는 리스트입니다. 아래는 standard 액세스 리스트를 만드는 명령 형식입니다.
Router(config)#acess-list ACL-NO {permit|deny} {source[source-wildcard]|any}
ex) Router(config)#acess-list 5 permit 192.131.256.543 : source ip가 192.131.256.543일 경우 허용
<extended 액세스 리스트>
패킷의 소스 IP뿐만아니라 목적지 IP, 포트, 프로토콜 등을 이용하여 차단할 수 있어 좀더 확장된 기능을 이용할 수 있습니다. 아래는 extended 액세스 리스트를 만드는 명령형식입니다.
Router(config)#access-lost ACL-NO {permit|deny} [protocol] s_ip_addr s_net_mask
d_ip_net_mask [eqlgt] port [established]
ex) Router(config)#access-list 150 deny tcp ip 192.186.159.131 100.100.100.0 0.0.0.255 eq 80 : 출발지가 192.186.159.131이고 목적지가 100.100.100.0/24 대역이고 port가 80인 tcp 패킷에대해 차단합니다. eq는 단일 포트를 지정할때 사용됩니다.
29. 네트워크 장비의 이해
- 네트워크 장비
<물리 계층 장비>
허브(Hub) : 가까운 거리의 컴퓨터들을 연결하는 장치로 각 회선을 통합적으로 관리하며, 신호 증폭 기능을 하는 리피터의 역할을 포함합니다.
리피터(Repeater) : 전송 신호가 선로의 특성 및 외부 충격등의 요인으로 인해 약해지거나 왜곡될경우 원래의 신호형태로 재생하여 다시 전송하는 역할을 수행합니다.
<데이터 링크 계층 장비>
네트워크 인터페이스 카드 (NIC; Network Interface Card) : 정보전송시 정보가 케이블을 통해 전송될 수 있도록 정보 형태를 변합니다.
브리지(Bridge) : LAN과LAN을 연결하거나 LAN안에서 컴퓨터 그룹을 연결하는 기능을 수행합니다.
스위치(Switch) : 브리지의 기능을 포함하며 포트마다 각기 다른 전송속도를 지원합니다.
아래는 스위칭 방법에따른 스위치 종류입니다.
store-and-forwad 방식 : 스위치가 일단 들어오는 프레임을 전부 받아들인 다음 처리를 시작하는 방식입니다. 에러 복구 능력이 뛰어납니다.
cut-through 방식 : 들어오는 패킷의 목적지 주소만 본다음 바로 목적지로 전송합니다. 따라서 처음 48비트만을 보게됩니다. 빠르다는 장점이 있지만 에러 복구능력이 약합니다.
Fragment-free 방식 : 처음 48비트만 보는게아닌 512비트를 보고 목적지로 전송합니다. 에러감지 능력은 cut-through 방식보다 좋습니다.
<네트워크 계층 장비>
라우터(Router) : 브리지의 기능을 포함하며 데이터 전송의 최적 경로를 선택할 수 있는 기능이 있습니다. LAN과 WAN을 연결하는 역할도 합니다.
<전송 계층 장비>
게이트 웨이(Gateway) : 프로토콜 구조가 다른 네트워크의 연결을 수행합니다.
30. 네트워크 기반 공격
<TCP SYN Flooding Attack>
취약점 :
3-way handshaking 과정에서 공격자가 다수의 syn 신호를 공격대상자에게 전송하면 공격대상자는 syn/ack 신호를 공격자에게 전달하게되는데 이때 공격자가 ack 신호를 반송하지않으면 공격대상자의 시스템은 일정 시간동안 신호를 기다리게되어 TCP기반의 서비스(웹서버, FTP, 메일서버) 시스템에 피해를 주게됩니다.
공격 방법 :
공격자는 송신 주소를 위조합니다. 만약 SYN 패킷을 송신하지 않은 TCP가 SYN+ACK 패킷을 수신하면 RST 패킷을 전송하여 연결설정을 중단하기때문에 사용하지 않는 IP주소로 위조합니다. 주소를 위조한 대량의 SYN 메시지를 목적지에 보냅니다. 이에 패킷을 받은 서버는 정보를 저장하고 조작된 주소로 SYN+ACK를 보내게되고 TCP 연결 테이블이 꽉차게되어 이후에 들어오는 연결 요청은 거부됩니다.
대응책 :
1. 방화벽 또는 DDos 대응장비를 이용하여 동일 IP에서의 연결요청에대해 임계치 설정을 통해 과도한 연결요청이 발생하는 것을 차단합니다.
2. SYN+ACK 패킷을 전송하지 말고 Syn_Cooike를 생성하여 보내놓고 세션을 닫는 방법이 있습니다.
3. TCP 연결 테이블이 오버플로우가 될때 일부 엔트리를 삭제하여 새로운 SYN패킷을 처리할 수 있게 할 수 있습니다. 하지만 정상적인 연결을 삭제할 수 있어 근본적인 솔류션이 될 수 없습니다.
<SMULF Attack>
취약점 :
Ping(ICMP) 메시지를 수신한 시스템은 Ping(ICMP) 응답 메시지를 출발지 주소로 전송합니다. 이때, 출발지 주소를 위조할 수 있으며 도착 주소를 직접 브로드캐스트 주소로 위조할 수 있습니다.
공격방법 :
공격자는 Ping(ICMP) 메시지의 출발지주소를 공격할 시스템의 주소로 위조합니다. 또한 Ping 메시지의 도착지 주소를 directed broadcast 주소로 설정합니다. 이후 Ping(ICMP) 메시지를 보내게되면 브로드캐스트 네트워크 이내의 모든 시스템이 Ping 응답 메시지(ICMP Echo)를 출발지 주소인 공격할 시스템의 주소로 보내게되어 시스템을 마비시킵니다.
대응책:
1. 다른 네트워크로 부터 자신의 네트워크로 들어오는 IP direct broadcast 패킷을 막도록 설정합니다.
2.호스트는 IP broadcast address로 전송된 ICMP 패킷에대해 응답하지 않도록 시스템을 설정합니다.
3. ICMP Echo Reply 패킷이 다량으로 발생하면 해당 패킷들을 침입차단시스템을 통해 모두 차단합니다.
<Land Attack>
취약점 :
패킷의 출발지 주소와 목적지 주소를 똑같이 위조할 수 있습니다.
공격 방법 :
패킷을 전송할때 출발지 IP와 도착지 IP 주소값을 표적 IP로 똑같이 맞춰서 패킷을 보내는 것입니다. 동시 사용자 수를 증가시키며 CPU에도 부하를 줄 수 있습니다.
대응책 :
1. TCP 패킷의 소스 IP와 목적지 IP가 동일한지 확인합니다.
2. 공격자가 보내는 횟수를 카운트하여 공격 인정 시간내에 공격인정 횟수가 많으면 탐지하고 차단합니다.
<Ping of Death>
취약점 :
ping을 이용한 ICMP 패킷을 정상 크기보다 아주 크게 만들 수 있습니다. 이는 네트워크를 통해 작은 조각(fragment)로 나누어지기때문에 공격대상은 조각화된 패킷을 모두 처리해야하므로 부하가 많이 걸립니다.
공격 방법 :
공격 툴을 사용하여 ping의 패킷을 크게 만들고 패킷을 보냅니다.
대응책 :
보통 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 차단합니다.
<Teardrop Attack>
취약점 :
IP가 정상적으로 패킷을 전송할때 IP 단편화가 발생하게되는데 수신자는 재조립을 통해 데이터를 복구하게됩니다. 이때 재조립시에 정확한 조립을 위해 오프셋이라는 값을 사용하게되는데, 이 오프셋 값을 단편화 간에 중복되도록 고의적으로 수정하거나 정상적인 오프셋 값보다 더 크게 하여 오버플로우를 일으킬 수 있습니다.
공격 방법 :
공격 툴을 이용하여 패킷의 오프셋값을 중복되게 변조하거나 매우 큰값으로 변조하여 표적에게 보냅니다. 그러면 표적은 네트워크 연결이 끊어지거나 블루스크린을 띄우며 중단됩니다.
대응책 :
Teardrop은 보안 탐지를 우회할 수 있고 변종을 가지므로 완전한 차단에 어려움이 있습니다. 블루스크린이나 네트워크 연결이 끊어지지않도록 운영체제를 패치하는 것이 좋습니다.
같은 취약점을 이용한 다른 공격 방법 :
Bonk : 처음 패킷을 1번으로 보낸후 다음 패킷을 보낼때 오프셋을 모두 1번으로 조작하여 보냅니다.
Boink : 처음 패킷을 1번으로 보낸후 다음 패킷을 100번 200번 정상적으로 보내다가 20번째 패킷을 2002, 21번째 패킷을 100, 22번째 패킷을 2002등으로 중간에 패킷 시퀀스 번호를 비정상적인 상태로 보내는 공격 기술입니다.
<port 스캔>
- Open 스캔 : 스캔하는 포트에 해당되는 서비스의 활성화 여부를 조사하는 방법으로 포트가 열려있다면 포트가 제공하는 서비스를 예측할 수 있습니다.
- TCP - Full Scan : 스캔하고자 하는 포트에 접속을 시도해 완전한 TCP 연결을 맺어 신뢰성 있는 결과를 얻을 수 있으나 속도가 느리고 로그를 남기므로 탐지가 가능합니다.
- TCP - Half Scan(SYN scan): 스캔하고자 하는 포트에 SYN패킷을 보내면 서버로부터 SYN/ACK 응답이 오거나 안올 수 있습니다. 응답이 만약 온다면 RST 패킷을 보내 연결을 끊음으로서 로그를 남기지않지만 공격자의 SYN에대한 응답 기록은 남게됩니다.
- UDP Scan : 포트를 대상으로 UDP 연결을 시도할때 ICMP Port Unreachable 에러메시지가 수신되면 해당 포트의 비활성화를 의미하며 아무런 응답이 없다면 해당 포트의 활성화를 의미합니다. UDP 포트스캔은 라우터나 방화벽에 의해 손실될 수 있어서 신뢰가 힘듭니다.
<Stealth 스캔>
Stealth 스캔 기법은 공격대상에게 로그를 남기지 않고 자신의 위치를 숨기는 스캔을 통칭합니다. 아래는 Stealth 스캔의 종류입니다.
- TCP FIN Scan : FIN 플래그를 설정하여 공격대상 시스템에 메시지를 전송하면 포트가 열려있는경우에는 응답이없고 닫혀있다면 RST 패킷이 되돌아옵니다.
- NULL,Xmass Scan : 헤더내에 플래그값을 설정하지 않고 전송하면 NULL scan 방식, 헤더내에 모든 플래그를 설정하고 보내면 Xmass scan 방식이라하며 경과는 FIN scan 방식과 같습니다.
- TCP ACK Scan : 방화벽의 필터링 정책을 테스트하는 스캔으로 ACK 플래그만 설정해서 보냅니다. 방화벽에서 필터링이 된다면 응답이 없고, 통과했다면 RST+ACK 를 받습니다.
- Decoy Scan : 위조된 주소로 스캔하는 방식을 말합니다.
<대표적인 스캔 도구>
NMAP : 모든 운영체제에서 사용할 수 있으며 서버의 취약점을 이용한 bounce 공격을 수행할 수 있는 스캔도구입니다. 최근에는 윈도우용 GUI 형태도 지원하여 많이 사용됩니다. 아래는 NAMP 사용법입니다.
문법 : nmap [scan type] [options] <target>
[scan type] :
- -sS : TCP SYN(half-open) scan
- -sT : TCP open scan
- -sU : UDP scan
- -sF : TCP FIN SCAN
- -sX : TCP Xmas scan
- -sN : TCP Null scan
- -sA : TCP Ack scan
- -sP- : Ping scan
- D : Decoy scan
31. IDS와 IPS
<탐지방법에의한 분류 - 규칙,기반 침입탐지(오용 탐지)>
오용 탐지는 기존의 침입 방법(시스템 로그, 네트워크 입력정보, 알려진 침입방법, 비정상적인 행위패턴)을 데이터베이스에 저장해두었다가 사용자 행동 패턴이 기존의 침입 패턴과 일치하거나 유사한 경우에 침입이라고 판단합니다.새로운 공격이나 침입 방법이 출현하였을경우에는 그에 맞는 공격 패턴을 생성하여 추가합니다. 시그니처의 예시로는 루트 사용자이름으로 telnet 로그인 시도, 시스템 프로그램 복제 시도 등이 있습니다. 아래는 이에 따른 탐지방법 종류입니다.
- 전문가 시스템 : 침입 또는 오용의 패턴을 실시간으로 입력되는 감사정보와 비교하여 침입을 탐지하는방법으로 비정상적인 패턴과 일치하는 경우에는 정해진 규칙에따라 행동을 수행합니다.
- 상태 전이 모델 : 공격 패턴에 따라 시스템의 상태 변화를 미리 상태전이도로 표현하고 시스템의 상태 변화를 계속 추적하여 침입 상태로 전이하는지를 감시하는 방법입니다.
- 패턴 매칭 : 알려진 공격 패턴을 시나리오 형태로 데이터베이스에 저장한 후 발생하는 사건들의 패턴을 데이터베이스의 시나리오와 비교하여 판단하는 방법입니다.
<탐지방법에의한 분류 - 통계적 변형 탐지(비정상 침입탐지)>
비정상 침입탐지는 정상적인 행위 패턴을 프로파일로 생성하고 실제 시스템상에서의 행위가 프로파일 범위를 벗어날 경우를 탐지하는 방법입니다. 오용 탐지방법보다 데이터베이스 관리가 용이하고 알려지지않은 공격도 탐지가 가능하며 침입 이외의 시스템 운용상의 문제점도 발견할 수 있습니다. 반면 실제 입력정보를 비교하는 시간이 오래걸리므로 실시간 탐지가 어렵고 탐지 정확성을 높이기 위한 기준 조정이 어렵습니다. 프로파일의 예시로는 오전 9시부터 5시까지만 컴퓨터 사용이가능함이 있습니다. 아래는 이에 따른 탐지 방법 종류입니다.
- 통계적 분석 방법 : 정상적인 사용자 또는 시스템 행위에대한 이전 정보를 기반으로 정상행위로 판단되는 통계적인 프로파일을 생성하고 주기적으로 갱신합니다.
- 예측 가능한 패턴 생성 방법 : 정상적인 특정 행위를 이루는 사건의 순서가 불규칙하지않고 일정한 패턴이라는 것에 가설을 두고 현재 사건과 정상적인 패턴간의 상호관계와 순서를 비교하여 정상적인 패턴 범위를 벗어났을 경우에 비정상적인 행위로 판단합니다.
- 신경망 모델 : 적응학습 기술을 사용하여 비정상적인 행위를 탐지하는 방법으로 첫번째 단곙에는 사용자 행위 정보를 학습하며 두번째로는 입력된 사건 정보를 학습된 사용자 행위 정보와 비교하여 비정상적인 행위를 탐지합니다.
<용어>
False Positive : 긍정오류, 해커인데 정상적인 사용자라고 판단하는 오류, 오용탐지는 긍정오류가 낮다.
False Negative : 부정 오류, 정상 사용자인데 해커라고 판단하는 오류, 오용탐지에서 부정오류가 높다.
FDS(Fraud Detection System) : 이상금융거래탐지시스템으로 사용자의 이상행동이 나타나면 회원과 통화하여 확인하는 시스템을 일컫는다.
32. 침입차단 시스템
- 침입차단 시스템의 종류(구축 형태)
<스크리닝 라우터 구조>
스크리닝 라우터 구조(screening router architecture)은 라우터를 이용해 각 인터페이스에 들어오고 나가는 패킷을 필터링하여 내부 서버로의 접근을 가려내는 역할을합니다. TCP/UDP 패킷 헤더를 분석하여 통과시킬건지 차단할지를 판별합니다.
<이중 네트워크 호스트 구조>
이중 네트워크 호스트 구조(dual-homed host architcture)은 두개의 인터페이스를 가지는 장비를 말하며 하나의 인터페이스는 외부 네트워크와 연결되고 다른 인터페이스는 내부 네트워크로 연결되며 라우팅 기능이 없는 방화벽을 설치하는 형태입니다. 네트워크의 모든 패킷을 검사 및 필터링해야하기때문에 상당히 높은 성능의 시스템이 요구되며 소규모 네트워크에 적합니다.
<스크린드 호스트 게이트웨이구조>
스크린드 호스트 게이트웨이 구조(screened host gateway)는 듀얼-홈드 게이트웨이와 스크리닝 라우터를 결합한 형태로 내부 넽ㅡ워크에 놓여있는 배스천호스트와 외부 네트워크 사이에 스크리닝 라우터를 설치하여 구성합니다. 2단계 방어가 가능하기때문에 필터링 규칙이 단순하며, 방어의 깊이가 개선되어 해커의 공격에 잘 대처할 수 있습니다. 하지만, 속도가 느리고 IP스푸핑이나 단편화를 이용한 공격으로 침입해오면 내부 호스트를 보호할 수 없게됩니다.
<스크린드 서브넷 구조>
스크린드 서브넷 구조(sceened subnet architecture)은 스크리닝 라우터들 사이에 듀얼 홈드 게이트웨이가 위치하는 구조로 인터넷과 내부 네트워크 사이에 DMZ라는 네트워크 완충지역 역할을 하는 서브넷을 운영하는 방식입니다. 스크린드 서브넷에 설치된 배스천호스트는 프락시 서버를 이용하여 명확히 진입이 허용되지않은 모든 트래픽을 거절하는 기능을 수행합니다. 보통 DMZ안에 있는 시스템은 외부와 접속해야하는 웺버, 이메일서버, DNS 서버등이 있습니다. DB서버는 내부 네트워크에 설치됩니다. 허니팟 시스템은 일반적으로 DNZ에 위치하며 공격자를 유인할 수 있도록 이용하기 쉬운 서비스와 포트를 사용가능으로 설정합니다. 매우 안전하며 높은 방어의 깊이를 가지지만 구축비용이 많으들며 느려집니다.
- iptables
iptables는 리눅스 커널에 내장된 netfilter 기능을 관리하기위한 툴이며 rule 기반의 패킷 필터링 기능을 제공합니다. 또한 concection tracking 기능을 제공하는데 이는 모든 패킷에 대 연결 상태를 추적하여 이를 메모리에 기억하고 있다가 기존의 연결을 가장하여 접근할 경우 메모리에 저장된 상태 목록과 비교하여 적합하면 통과시키는 기능을말합니다. NAT 기능을 제공하며 패킷 레벨에서의 로깅기능, 확장모듈을 통한 다양한 기능을 제공합니다.
<주요 용어>
- table : iptables가 제공하는 기능을 의미하며 대표적으로 패킷 필터링을 제공하는 fiter 테이블과 NAT 기능을 제공하는 nat 테이블이 있습니다.
- chain : 체인은 패킷이 이동하는 경로를 의미합니다. 종류는 아래에 있습니다.
- INPUT 체인 : 방화벽을 최종목적지로 하는 체인(외부에서 내부로 들어오는 패킷)
- OUTPUT 체인 : 방화벽을 최초 출발지로 하는 체인(내부에서 외부로 나가는 패킷)
- FORWARD 체인 : 방화벽을 경유하는 채널
<사용법>
문법 : iptables [테이블명] [iptables] [체인명] [룰설정] [타깃지정]
가장 먼저 설정된 룰부터 순서대로 매칭여부를 검사하여 일치할 경우 해당 정책을 따릅니다. 모든 룰에 매칭되지않는다면 해당 체인에 defalt 정책을 따릅니다.
테이블명 : 테이블 명에는 filter, nat등이 올 수 있으며 명시하지않으면 filter로 적용됩니다.
iptabels : 룰을 설정할 모드를 설정합니다.
iptables - [A|I|D|F|P]
- A : append 모드로 해당 체인의 제일 마지막에 룰을 추가합니다.
- I : insert 모드로 해당 체인의 첫행에 룰을 추가합니다. 행번호 지정지 측정위치에 룰 추가가 가능합니다.
- D : delet 모드로 행번호를 지정하여 특정 위치의 룰을 삭제합니다.
- F : flush 모드로 해당 체인의 모든 룰을 삭제합니다.
- P : 해당 체인의 default 정책을 설정합니다.
체인명 : INPUT, OUTPUT, FORWARD 체인이 올 수있습니다.
룰 설정 : 쓸 수 있는 명령어는 아래와 같습니다.
- -p : 프로토콜을 지정합니다 ex) tcp, udp
- -s : source ip로 출발지 주소를 지정합니다. 명시하지않으면 any로 됩니다.
- -d : destination ip로 목적지 주소를 지정합니다. 명시하지않으면 any로 됩니다.
- --sport : source port를 지정합니다.
- --dport : destination port를 지정합니다.
- -i : 패킷이 들어오는 인터페이스를 지정합니다.
- -o : 패킷이 나가는 인터페이스를 지정합니다.
타깃 지정 : -j를 쓰고 룰에 매칭될때 적용할 정책을 지정합니다. 아래는 주요 정책입니다.
- ACCEPT : 패킷을 통과시킵니다.
- DROP : 아무런 응답을 하지않고 차단합니다.
- REJECT : icmp 에러 응답을 전송하고 차단합니다.
- LOG : 로그를남깁니다.
<iptables 기본 사용 예시>
출발지 주소가 1.1.1.1인 모든 접속 포트를 차단 : iptables -A INPUT -s 1.1.1.1 -j DROP
목적지 포트가 1024번 이하의 모든 포트인 tcp 프로토콜 패킷을 거부하는 규칙 추가 : iptables -A INPUT --dport:1023 -j DROP
33. VPN
<2계층 터널링 프로토콜>
- PPTP(point-to-point tunneling protocol) : MS사에서 개발한것으로 IP, IPX, NetBEUI 페이로드를 암호화하고 IP헤더로 캡슐화하여 전송합니다. TCP연결을 사용하며 모바일이 서버에 접속하기에 용이하게 구성되어 있습니다.
- L2F(layer 2 forwarding protocol) : 시스코사에서 제안된 프로토콜로 NAS 개시 VPN형이기 때문에 별도의 s/w가 필요없습니다. 다자간 통신이 가능하며 UDP를 사용합니다.
- L2TP(layter 2 tunneling protocol) : L2TP는 PPTP와 L2F를 결합한 방법으로 ms사와 cisco사가 지원하며 호환성이 뛰어납니다.
<3계층 터널링 프로토콜>
- IPSec : AH(authentication header)와 ESP(encapsulation security payload)를 통해 IP 데이터그램의 인증과 무결성 기밀성을 제공합니다. 전송모드는 IP 페이로드를 암호화하여 IP 헤더로 캡슐화하며 터널모드는 IP패킷 모두를 암호화하여 전송합니다. AH는 무결성고 인증을 입증하고 ESP는 무결성과 기밀성 인증을 입증합니다.
- SSL : IPSec vpn보다 저렴하고 안전한 채널 관리를 담당하며 인증을 통한 송수진 경로의 안전성도 보장되며 PKI 공개키/개인키를 이용한 웹사이트 통신 보안이 가능합니다.
<AH 보안서비스>
AH 프로토콜은 네트워크 계층의 보안을 위해 다음과 같은 서비스를 제공합니다.
- 무결성 : 무결성을 증명합니다.
- 인증 : 전달된 메시지가 발신지로부터 온 메시지임을 증명합니다.
- 재전송 공격에대한 보호 : 순서번호를 이용해 재전송공격을 보호합니다.
<ESP 보안서비스>
IP ESP프로토콜은 IP 데이터그램에 암호화 기능을 부가한 것으로 기본3가지와 추가적인 2가지 서비스를 제공합니다.
- 기밀성 : 기밀성을 보장합니다.
- 재전송 공격 방지 서비스 : 순서번호를 이용하여 재전송공격을 방지합니다.
- 제한된 트래픽 흐름 기밀성 : 제한적으로 트래픽 흐름에대한 정보를 보호합니다.
- 무결성 : 무결성을 보장합니다.
- 인증 : 전달된 메시지가 발신지로부터 온 메시지임을 증명합니다.
<IKE>
IKE(internet key exchange)는 보안 정책을 협상하고 키를 관리하기위한 프로토콜입니다. IPSec과는 독립적으로 구현되어 운영되므로 여러가지 키 관리 프로토콜 중에 선택하여 사용해야합니다. IKE는 Oakley, SKEME 및 ISAKMP 프로토콜에 기반을 둔 복잡한 프로톨입니다.
Oakley : diffie-hellman 키 교환 프로토콜에 기반을 둔 복잡한 프로토콜입니다.
SKEME는 또다른 키 교환 프로토콜입니다.
ISAKMP(internet security association and key management protocol)은 미국 국가보안국(NSA)에서 만든 IKE에서 정의된 교환을 실제로 실행하도록 설계된 프로토콜입니다.
34. 최신 네트워크 보안 기술
- ESM
ESM(enterprise security management)이란 기업과 기관의 보안정책을 반영하고 다양한 보안 시스템을 관제, 운영, 관리함으로써 조직의 보안 목적을 효율적으로 실현하는 시스템입니다. 통합보안관제를 위해 구축된 다양한 보안 솔류션/장비에서 발생하는 로그, 보안 이벤트를 취합하고 이들 간에 상호 연관 분석을 함으로써 실시간 보안 위협을 파악하고 대응하는 역할을 수행합니다.
- UTM
UTM(unified threat management)란 방화벽, 가상 전용 네트워크, 침입 차단 시스템, 웹 콘텐츠 필터링, 안티 스팸 소프트웨어 등을 포함하는 여러개의 보안 도구를 이용한 관리 시스템입니다. 다양한 보안 솔루션 기능을 하나로 통합했습니다. 보안 정책, 필터링 시그니처를 통합관리하여 일관성과 운영 효율성을 제공합니다.
- NAC
NAC(networl access control)은 네트워크에 접속하는 접속 단말의 보안성을 검증하여 보안성을 강제화하고 접속을 통제할 수 있는 보안 인프라입니다. 사용 단말이 내부 네트워크에 접근하기전에 보안 정책을 준수했는지 여부를 검사해 네트워크 접속을 통제하는 보안 솔루션입니다.
<NAC의 주요기능>
- 접근 제어/인증 : 네트워크의 모든 IP 기반 장치를 접근 제어합니다.
- PC 및 네트워크 장치 통제 : 백신, 패치, 자산을 관리합니다.
- 해킹, 웜, 유해 트래픽 탐지 및 차단 : 유해 트래픽을 탐지하고 차단합니다.
<NAC의 원리>
NAC는 IP주소에 대응하는 MAC주소를 기반으로 수행합니다. 따라서 먼저 네트워크에 접속하려는 사용자는 네트워크 접속에 사용할 시스템의 MAC주소를 IP관리 시스템의 관리자에게 알려줘야합니다. 관리자가 해당 MAC주소를 NAC에 등록하면 사용자는 비로소 해당 네트워크를 사용할 수 있는 권한을 가집니다. 또한, 라우터로 구분된 서브넷마다 에이전트 시스템이 설치되어있어야합니다.
- PMS
PMS(patch management system)은 운영체제의 패치를 유도하는 기업용 솔류션으로 보안 패치와 소프트웨어 업데이트는최상의 보안을 위한 필수 사항이기때문에 개인에게 맡겨두는 대신 패치관리시스템을 이용하여 중앙에서 강제로 설치합니다.
<PMS 구성>
PMS 서버 : 강제적으로 정책에 맞는 수준의 보안을 적용하는 역할을 수행합니다.
PMS 에이전트 : 서버로부터 패치를 적용합니다.
- SIEM
SIEM(security information event management)는 수많은 IT 시스템 및 보안 시스템에서 발생하는 로그를 분석하여 이상 징후를 파악하고 그 결과를 경영진에게 보고할 수 있도록 해주는 시스템입니다.
<SIEM 기능>
로그데이터를 실시간으로 수집 및 분석할 수 있고 침해 공격 로그에대한 포렌식과 컴플라이언스 또는 법적 조사를 위해 해당 데이터의 신속한 검색 및 리포팅 기능도 제공하고 있습니다. 대부분의 SIEM은 데이터를 정규화 과정을통해 데이터를 표준화하여 분석을 수행합니다.
35. 애플리케이션 보안
- 파일관련 프로토콜
<FTP>
FTP(file transfer protocol)은 파일 전송 프로토콜로 하나의 연결은 데이터를 전송을 위하여 사용되고 또 다른 하나는 명령과 응답 등의 제어 정보를 위하여 사용합니다. 이러한 제어와 데이터 전송의 분리는 FTP를 좀 더 효율적으로 사용할 수 있도록 만들어줍니다. FTP는 포트 21번을 제어연결을 위해 포트 20번을 데이터 연결을 위해 사용합니다.
<FTP 로그인 순서>
USER 명령을 통해 사용자 명령을 전송하고 PASS 명령을 통해 사용자의 비밀번호를 전송합니다.
<FTP 연결 - Active mode>
일반적으로 능동모드가 FTP 클라이언트의 기본값으로 설정됩니다. 클라이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성하고 데이터는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식입니다. 만약 클라이언트가 방화벽이 설치되어 외부에서 접속을 허용하지않는다면 FTP 접속은 되지만 데이터 채널 연결이 불가능하여 파일을 받을 수 없는 문제가 발생합니다.
<FTP 연결 - Passive mode>
방화벽에의해 FTP사용에 문제가 있는 점을 해결하기위해서 고안된 방식으로 클라이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성하고 데이터 채널도 클라이언트에서 서버로 접속하여 데이터를 보내는 방식입니다. 서버는 1024 이후 포트를 모두 엽니다.
<TFTP>
TFTP(trivial file transfer protocol)은 FTP의 기능을 전부 지원할 필요가 없거나 모두 지원하는 것이 비현실적인 경우를 위해 더 간단히 개발된 파일 전송 프로토콜입니다. TFTP는 UDP(69번)포트를 사용합니다. 소프트웨어 패키지를 읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할때 주로 쓰입니다. UDP는 오류제어를 위한 기능이 없으므로 TFTP는 연속적인 데이터 블록으로 파일을 전송할때는 흐름제어와 오류제어 메커니즘을 생성해야합니다.
<TFTP와 FTP 차이점>
- FTP는 다양한 명령어를 지원하지만 TFTP는 파일을 보내고 받는 기능만 지원합니다.
- FTP는 데이터 표현 방식을 여러개 지원하지만 TFTP는 ASCII와 바이너리만 지원합니다.
- FTP는 인증기능이 있지만 TFTP는 인증기능이 없습니다.
<TFTP 보안>
TFTP는 보안에 대한 고려가 없습니다. 심지어 비밀번호 확인조차 없기때문에 해커로부터 파일을 보호해야합니다. 이를 수행하는 방법중 하나는 중요하지 않는 파일에만 TFTP가 접근할 수 있도록 제안하고 TFTP 서버 근처에 있는 라우터에 보안을 구현하여 특정한 호스트만 서버에 접근할 수 있도록 하고 secure mode에서 chroot 기능으로 지정한 디렉터리를 최상위 디렉터리로 지정하여 지정한 디렉터리의 상위 디렉터리로 접근하지 못하도록 제한해야합니다.
<Samba>
Samba는 SMB(server message block) 프로토콜을 사용하여 유닉스 계열 시스템과 윈도우 시스템 간에 파일 및 프린터 자원을 공유할 수 있는 기능을 제공합니다.
<Bounce Attack>
취약점 : 능동모드에서 데이터 채널을 생성할때 목적지를 확인하지 않아, 다른 호스트의 포트를 줘도 FTP는 연결하여 데이터를 전송합니다.
공격 방법 :
1. 능동모드에서 FTP 서버로 파일을 요청할떄 클라이언트는 파일을 받을 IP와 포트를 지정해서 전달해줍니다.(PORT 명령)
2. 이때 IP와 포트를 요청한 클라이언트가 아닌 표적의 주소와 포트번호를 주면 FTP는 표적으로 데이터를 전송합니다.
보안 대책 :
1. FTP의 원래 규약을 어느정도 제한합니다.
2. 표적에서는 다른 서비스가 20번 port 접속을 요청하면 거절합니다.
36. 이메일 보안
<POP3>
POP3(post office protocol 버전 3)은 수신자가 전자우편을 내려받을 필요가 있을때 클라이언트에서 시작됩니다. 클라잉너트는 TCP 포트 110번으로 서버에 연갈을 하고 편지함에 엑세스하기위해 USER 명령과 PASS 명령을 통해 아이디와 비밀번호를 송신합니다. 대표적인 POP3 클라이언트로는 MS의 outlook이 있습니다.
<IMAP4>
IMAP4(internet mail access protocol ver4)는 pop3보다 더많은 기능을 가지고 있으며 데이터를 신뢰성 있게, 제대로된 순서로 보내고 받을 수 있게 하기위해 TCP 143번 포트에서 IMAP4 클라이언트의 연결 요청을 대기하고 있습니다. IMAP4는 아래와 같은 추가적인 기능을 제공합니다.
- 전자우편을 내려받기전에 헤더를 검사할 수 있습니다.
- 전자우편을 내려받기전에 특정 문자열로 내용을 검색할 수 있습니다.
- 전자우편을 부분적으로 내려받을 수 있습니다.
- 메일서버에서 편지함을 생성, 삭제, 이름을 변경할 수 있습니다.
- 폴더내에 편지함들을 체계적으로 생성할 수 있습니다.
- 이메일 콘텐츠 보안을 위한 보안 기술
<PEM>
PEM(privacy enhanced mail)은 IETF에서 드래프트로 채태한 이메일 보안기술입니다. 기밀성, 인증, 무결성, 부인방지를 지원하지만 구현이 복잡하여 많이 사용되지 않습니다.
<PGP>
PGP(prtty good privacy)는 미국의 phil zimmermann이 개발하였고 파일보흐를 위해 암호화를 사용합니다. 상업용 뿐만아니라 오픈 소스로 제작된 것도 있습니다. PGP는 전자서명을 이용하여 인증을 제공하고, 대칭 블록암호를 이용해서 기밀성을 제공하고, ZIP알고리즘을 이용하여 압축을 제공하고, 기수-64 부호화 시스템을 이용해 전자우편 호환성을 제공하며 길이가 긴 데이터를 전송할 수 있도록 단편화 조립을 제공합니다. 매우 안전하고 다양한 영역에 응용할 수 있어서 현재 널리 사용되고 있습니다.
<PGP - 키링>
PGP에서 소유자의 공개키/개인키 쌍의 데이터구조를 개인키 고리라고 부르고 다른 사용자의 공개키의 데이터 구조를 공개키 고리라고부릅니다. Alice는 다수의 사람들에게 메세지를 전송하고자할때 키링이 필요하게됩니다.
<PGP의 인증서 및 신뢰>
PGP는 X.509 호환용 인증서를 작성할 수 있지만 CA가 따로 필요없습니다. 키링을 통하여 인증서에 서명할 수 있기 때문입니다. PGP에서는 신뢰에대한 계층 구조가 존재하지않으면 트리또한 존재하지 않습니다. 신뢰하는 방법은 아래와 같습니다.
1. 특정 사용자(A)의 공개키를 신뢰하는 사용자들이 자신의 개인키로 사용자(A)의 공개키에 디지털 서명합니다.
2. 사용자(A)의 공개키를 입수한 사용자(B)는 공개키에 첨부된 다른 사용자이 서명중에 자신이 신뢰할 수 있는 사용자의 서명을 발견하면 사용자(A)의 공개키를 신뢰합니다.
<MIME>
MIME(multipurpose internet mail extenstions)는 전자우편을 통하여 ASCII가 아닌 데이터가 송신될 수 있도록 허용하는 부가적인 프로토콜입니다. MIME는 ASCII가 아닌 NVT ASCII데이터로 변환하고 이를 통해 데이터양식이 다른 두 호스트에게 메일 서비스를 제공합니다.
<S/MIME>
S/MIME(secure multipurpose internet mail extenstions)는 PEM 구현의 복잡성, PGP의 낮은 보안성과 기존 시스템과의 통합이 용이하지않는다는 점을 보완하기위해 IETF의 작업 그룹에서 RSADSI(RSA data security incororation)의 기술을 기반으로 개발된 전자 우편 보안 시스템입니다. S/MIME는 네트워크를 통해 전자 우편 보안 서비스를 제공할 뿐만 아니라 모든 프로토콜에서 보안 서비스를 이용할 수 있게합니다.. 또한 기밀성, 무결성, 사용자 인증, 송신 사실 부인 방지가 포함합니다.
37. 웹보안
<서버 응답>
200 - 응답 완료
201 - 처리 완료
202 - 처리 안함
203 - 다른 사람한테 줌
204 - 그냥 안줌
<클라이언트 오류>
400 - 뭔말이야?
401 - 누구야?
403 - 안돼(차단)
404 - 없어(자료 존재안함)
405 - 메소드 안돼
406 - 형식 안돼
- SSL/TLS
SSL/TLS는 클라이언트/서버 환경에서 TCP 기반의 애플리케이션에대한 종단간 보안서비스를 제공하기위해 만들어진 전송 계층 보안 프로토콜입니다. . SSL은 네스케이프사이에서 1990년대 초 처음으로 제안되었으며 SSL/TLS는 현재 가장 많이 이용되고 있는 암호 통신 방법입니다. 그 후 SSL은 version 3/.0이 되었는데 POODLE 공격이 가능한 취약점이 발견되었습니다. 이때문에 IETF가 SSL 3.0을 기반으로 TLS를 만들었습니다. SSL/TLS에서는 대칭키 암호, 공개키 암호, 일방향 해시함수, 메시지 인증코드, 의사난수 생성을 조합해서 안전한 통신을 수행합니다. 또한 SSL.TLS는 암호스위트(SSL/TLS에서 사용하는 암호 기술의 추천 세트를 암호 스위트라고합니다.)를 변경해서 암호 알고리즘을 선택할 수 있습니다. 즉, SSL/TLS는 특정 암호기술에 의존하지않고 어느 대칭키가 약하다고 판명되면 그 대칭키 암호를 사용하지않는 암호 스위트를 선택하면됩니다. 이는 기계의 부품이 고장 났을때 고장난 부품많을 교환하는 것과 같습니다.
<SSL/TLS상의 HTTP>
HTTP는 암호화하지 않기때문에 중간에 도청당하면 쉽게 정보를 획득할 수 있습니다. 이때문에 통신내용을 암호화해주는 프로토콜로 SSL 혹은 TLS를 사용합니다. 그리고 SSL/TLS 상에 HTTP를 올립니다. 이때 URL은 https://로 시작됩니다.
<handshake 프로토콜>
SSL에서 가장 복잡한 부분으로 서버와 클라이언트끼리 서로를 인증하고 암호화 알고리즘 그리고 데이터를 보호하는 암호키를 협상하는 프로토콜입니다. 아래는 프로토콜의 과정입니다.
1단계 : 초기협상 단계
- HelloRequest : 서버가 아무때나 클라이언트에게 Client Hello를 보내어 협상을 시작하자고 요구하는 메시지입니다. 중복적인 HelloRequest를 보내면 안됩니다.
- ClientHello : 클라이언트는 서버에 처음으로 연결을 시작하거나 HelloRequest 메시지에 대한 응답으로 ClientHello를 보냅니다. ClientHello 메시지에는 세션 식별자, CipherSuite 리스트, 압축 알고리즘 리스트, 클라이언트의 SSL버전, 클라이언트가 생성한 난수를 서버에 전달합니다.
- ServerHello : ClientHello 메시지에대한 응답으로 ServerHello 메시지를 보냅니다. ServerHello 메시지는 세션 식별자, 서낵한 CipherSuite, 선택한 압축방법, 서버 SSl 버전, 서버가 생성한 나수를 클라이언트에 전달합니다.
2단계 : 서버 인증 단계
- ServerCertificate : 서버의 인증이 필요한 경우 서버의 인증서가 포함된 certificate를 보냅니다. 이때 서버의 인증서는 chiper suite의 키 교환 알고리즘에 맞는 타입이여야합니다.
- ServerKey Exchange : 서버가 인증서를 보내지 않았거나 보낸 인증서에 키교환에 필요한 정보가 부족할때 보내는 메시지입니다.
- CertificateRequest : 서버는 클라이언트에게 인증함과 동시에 클라이언트에게 인증서를 통한 인증을 요구합니다.
- ServerHelloDone : 서버가 보낼 메시지를 다 보냈음을 알려주는 메시지입니다. 클라이언트는 이 메시지를 기다립니다.
3 단계 : 클라이언트 인증 단계
- ClientCertificate : 서버가 클라이언트의 인증을 요구할 경우 클라이언트가 보내는 메시지입니다.
- ClientKeyExchange : 클라이언트는 세션키를 생성하기위해 임의의 비밀정보인 48바이트 pre_master_secret을 생성하고 선택된 공개키 알고리즘을 이용해서 pre_master_secret을 서버와 공유합니다.
- CertificateVerify : 클라이언트 인증서의 명백한 확인을 위해서 전자 서명을 하여 전송합니다.
4단계 : 종료 단계
- ChangeCipherSpecs : 이 메시지는 이 메시지 이후에 전송되는 메시지는 새롭게 협상된 알고리즘과 키를 이용할 것임을 나타냅니다.
- Finished : 이 메시지는 ChangeChiperSpecs 메시지 이후에 전송되며 협상된 알고리즘과 키가 처음으로 적용됩니다.
<Record 프로토콜>
레코드 프로토콜은 응용 메시지를 다룰 수 있는 크기의 블록으로 잘라내고 압축하고 MAC을 적용하고 암호화를 하고 헤더를 추가하여 TCP 단편으로 전송합니다. 수신된 데이터는 역의 연산을 거쳐 상위 계층 사용자에게 전달됩니다.
<Alert 프로토콜>
SSL/TLS 통신 과정에서 발생하는 오류를 통보하기위해 경고 할때 사용합니다. Alert 메시지는 경고메시지와 경고에대한 상세한 정보를 전달하며 치명적 레벨의 Alert 메시지는 연결을 즉시 단절하게됩니다. 이 프로토콜 안의 메시지는 각 2바이트로 구성도이ㅓ 첫바이트는 경고 혹은 심각이라는 2가지 값을 갖고 두번째 바이트에서는 특정 경고를 나타내는 코드가 있습니다.
<하트비트 프로토콜>
시스템의 다른 부분과 동기화하기위해서 하드웨어나 소프트웨어가 생성하는 주기적인 신호를 말하며 프로토콜 개체의 가용성을 모니터링 할때 사용합니다.
38. DHCP 보안
<DHCP>
DHCP(dynamic host protocol)은 UDP 기반 프로토콜이며 서버가 네트워크 클라이언트에게 IP주소를 실시간으로 부여할 수 있도록 합니다. 응용 계층의 프로그램입니다. 아래는 DHCP 동작 절차입니다.
- 데이터베이스 보안 통제
- 흐름 제어 : 임의의 객체에 포함되어 있는 정보가 명시적으로 혹은 암시적으로 보다 낮은 보호수준의 객체로 이동하는 것으 검사하여 접근 가능한 객체 간의 정보흐름을 조정하는 것입니다.
- 추론 제어 : 사용자가 Y=f(X)에서 Y를 유도하기위한 X를 찾는 것을 말하며 이를 제어하기위해 비밀정보 은폐, 사용자의 데이터 지식 추적, 통계적 추론공격을 방지하는 데이터위장을 해야합니다.
- 접근 제어 : 모든 직접적 접근이 보호정책에서 세운 모드와 규칙에따라 움직이게 하는 접근제어로 데이터베이스와 운영체제의 접근제어는 다음과 같은 특징이 있습니다. 운영체제에서는 파일끼리 관련성이 없지만 데이터베이스에서 객체는 상화연관되어있어 하나의 데이터 요소를 읽고 다른 데이터 내용을 결정할 수 있습니다.
- SET
SET(sercure electronic transaction)은 비자와 마스터카드가 합동을 개발하였으며 인터넷상에서 신용카드를 이용한 상품구매시 안전한 대금결제과정 처리를 위해 RSA 암호화와 인증기술을 이용합니다. 현재까지 가장 안전한 전자결제방안으로 평가받고 있습니다. SET에서 가장 중요한 기술은 전자봉투와 이중서명입니다.
<SET 참여주체>
- 카드 소지자 : 소비자입니다.
- 발행사 : 카드 발행사입니다.
- 가맹점 : 상인입니다.
- 지불 은행 : 상인의 은행입니다.
- 지불 게이트웨이 : 카드 지불 네트워크의 통로입니다. 지불은행과 연결됩니다.
- 인증기관 : 공개키 인증서를 발행하는 기관입니다.
<이중 서명 프로토콜>
이중서명의 목표는 상점이 카드 사용자의 계좌번호와 같은 지불정보를 모르게하는 동시에 상점에 대금을 지불하는 은행은 카드 사용자가 상점에서 산 물건을 모르지만 상점이 요구한 결제대금이 정확한지 확인할 수 있게하는 것입니다. 이중서명은 구매정보와 지불정보를 해시값으로 두기때문에 이중서명이라 합니다.
아래는 이중 서명 프로토콜 기본적인 흐름도 입니다.
아래는 상세 절차입니다.
1. 구매자는 구매정보와 지불정보를 대칭키로 암호화하고 이 대칭키를 구매정보는 구매자 개인키로 지불정보는 은행 공개키로 암호화합니다. 그리고 아래와 같은 데이터를 상점에게 보냅니다.
2. 상점은 구매자의 공개키고 구매정보의 해시값을 구해내고 구매자의 신청한 물건에 대한 구매정보를 직접 구한 후 해시한 후 구매자의 지불정보와 합쳐 다시 해시하여 이중 해시값을 구한후 구매자의 이중 해시값과 비교합니다.
3. 상점은 둘을 비교했을때 동일하다면 지불 게이트웨이로 아래와 같은 값들을 보내게됩니다.
4. 은행은 상점이 보내온 이중해시값에서 지불정보를 은행의 사설키로 복호화하여 해시값을 구합니다. 이후 구매자의 정보를 바탕으로 직접 지불정보를 직접 구한 후 구매정보와 지불정보를 합한 이중 해시값을 구하고 상점이 보내온 이중해시값과 비교합니다.
5. 만약 비교했을때 맞다면 지불을 실행합니다.
<SET 장단점>
- 장점 : 전자거래의 사기를 방지하고 기존의 신용카드 기반을 그대로 활용하며 SSL의 단점(상인에게 지블정보 노출)을 해결합니다.
- 단점 : 암호 프로토콜이 복잡하며 RSA동적으로 프로토콜 속도를 크게 저하시킵니다. 카드소지자에게는 전자지갑을 요구하며 상점에게는 소프트웨어를 요구합니다. 지불게이트웨이에는 하드웨어와 소프트웨어를 요구합니다.
<ebXML 구성요소>
- 비즈니스 프로세스 : 다양한 비즈니스 거래절차에대한 내용을 표준화된 방법으로 모델링해 시스템이 자동으로 인식, 처리할 수 있도록 하는 표현방법에대해 규정합니다.
- 핵심 컴포넌트 : 메시지를 이루는 항목을 미리 잘 정의해 재사용 가능하도록 표준화 작업을 합니다.
- 등록 저장소 : 저장소는 거래상대자들에 의해 제출된 정보를 저장하는 안전한 장소입니다.
- 거래당사자 : 비즈니스 거래 당사자에 대한 각종 정보 및 협업을 위한 프로파일을 통일된 규칙으로 표현합니다.
- 전송, 교환 및 패키징 : ebXML 메시지 서비스를 제공하여 상호운영성과 보안을 유지하면서 메시지를 어떻게 전달할 것인가에대한 표준을 정립니다.
<ebXML 사용 효과>
컴포넌트 중 모든 문서에서 공통적으로 사용되는 컴포넌트를 골라내어 핵심 컴포넌트를 만들고 XML 문서를 만들때 핵심컴포넌트를 사용하여 XML문서를 만듭니다. XML문서를 만들때마다 고민할 필요없이 만들어져있는 핵심 컴포넌트에서 필요한 항목만 뽑아쓰기만하면됩니다.
<WPKI>
WPKI(wireless public key infrastructure)은 WAP상에서 공개키 기반 구조를 말합니다. 아래는 구성요소입니다.
- CA : 인증서 발급, 관리
- RA : 인증서 발급, 관리 요청 중계
- client : 인증서 발급
- directory : CA가 발행한 인증서 정보를 저장
<정량적 방법의 종류>
- 과거자료 분석법 : 과거의 자료를 통해 위험발생 가능성을 예측합니다.
- 수학 공식 접근법 : 위협의 발생 빈도를 계산하는 식을 이용하여 위협 발생 빈도를 추정하고 분석합니다.
- 확률 분포법 : 확률적 편차를 이용하여 최저, 보통, 최고의 위험분석을 예측할 수 있습니다. 정확성은 낮습니다.
- 점수법 : 위험 발생 요인에 가중치를 두어 위험을 추정합니다. 정확도는 낮습니다.
<정성적 위험분석>
- 델파이법 : 전문적인 지식을 가진 전문가 집단이 위험을 분석 및 평가하여 정보시스템이 직면한 다양한 위협과 취약점을 토론을 통해 분석하는 방법입니다. 정확도가 낮습니다.
- 시나리오 법 : 일정 조건하의 위협에 대해 발생가능한 결과를 추정하는 방법입니다. 적은 정보를 가지고 가능성을 추론할 수 있지만 이론적인 추측에 불과합니다.
- 순위 결정법 : 비교 우위 순위 결정표에 위험 항목들의 서술적 순위를 결정합니다. 각각의 위협을 상호 비교하여 취종 위협 요인의 우선순위를 도출합니다.
- 퍼지 행렬법 : 자산의 가치를 화폐로 표현하고 위협발생확률의 높고 낮음을 변수로 표현하여 수학적으로 계산합니다.
- BCP(business continuty planning, 비즈니스 연속성 계획)
BCP(business continuty planning)는 재난 발생시 비즈니스 연속성을 유지하려는 방법을 정의하는 문서로써 재해, 재난에도 정상적인 운영이 가능하도록 데이터 백업 및 단순 복구 뿐만아니라 고객 서비스 지속성 보장, 핵심 업무 기능을 지속하는 환경 조성을 목적으로 합니다. BCP(business continuty planning) 개발을 위해서는 기업이 운영하고 있는 시스템의 파악과 함께 비즈니스 영향 평가(BIA)가 선행되어야합니다. BCP는 사업활동이나 프로세스가 중단되는 것에대응하기위해 만들어졌습니다.
- DRP(disaster recovery planning, 재난 복구 계획)
DRP(disaster recovery planning)은 장기간에 걸친 재해나 재난같은 비상사태 발생 후 대체 사이트에서의 목표 시스템, 응용 프로그램, 컴퓨터 설비의 운영 재개와 같은 IT 중심의 계획을 말합니다. DRP는 정보시스템과 데이터가 중단되는 것에 대응하기위해 만들어졌습니다.
- RAID(redundancy array of inexpensive disk)
RAID는 데이터 중복 지원 시스템의 대표적인 방법으로 이중화 및 성능향상을 위한 기술입니다. 몇개의 물리적인 디스크를 묶고 이것들을 논리적 어레이로 정의하지만 실제 데이터는 여러개의 물리적인 디스크에 저장됩니다.
<level 0>
level 0는 stripped disk array without fault tolerance라고도 하며 하나의 데이터가 여러 드라이브에 분산 저장함으로써 빠른 입출력을 가능하게해줍니다.
<level 1>
level 1은 disk mirror라고도하며 두개 이상의 디스크에 동시에 저장되고 하나의 디스크에 오류가 발생해도 다른 드라이브의 동일한 데이터를 사용할 수 있습니다.
<level 2>
harmming code ECC라고도 하며 데이터 striping이 모든 드라이브에서 일어나고 패리티 데이터는 오류식별을 위한 해밍코드와함께 따로 저장됩니다.
<level 3>
parallel transfer with parity 라고도하며 바이트 단위로 데이터를 분산 저장합니다. 데이터 스트라이핑은 모든 드라이브에서 일어나고 패리티는 별도의 디스크에 따로 저장합니다.
<level 4>
block level parity라고하며 level 3과 같은 구조이지만 ㄷ이터가 블록단위로 분산 저장되어 한번의 작업으로도 블록 즉, 데이터를 읽을 수 있기때문에 성능이 향상됩니다.
<level 5>
independent access with parity 라고도하며 데이터와 패리티가 따로 저장되지 않고 모든 드라이브에 저장됩니다.
<level 0 + 1>
level 0 과 1을 조합한 것으로 빠른 성능과 복구 능력을 가지게 했습니다.
- 데이터 백업 유형
- 완전 백업 : 모든 데이터들을 백업해 놓는 것입니다. 백업시간은 늦지만 복구는 빠릅니다.
- 차등 백업 : 기준일 이후로 수정되는 파일에 대해서만 백업해놓는 것입니다. 백업시간은 보통이고 복구도 보통입니다.
- 증분 백업 : 기준일 이후로 수정되는 데이터에대해서 백업해 놓는 것입니다. 백업시간은 빠르지만 데이터가 어디에 위치해야하는지에대한 정보가 필요하므로 실제 복구 시에는 시간이 많이 걸립니다.
<TCSEC(trusted computer system evaluation criteria)>
TCSEC는 orange book이라 불리는 rainbow series 라는 미국방부 문서중 하나입니다. TCSEC는 1960년대부터 시작된 컴퓨터 보안 연구를 통하여 1972년에 그 지침이 발표되었고 1983년에 세계 최초로 미국 정보보안 조례로 공표되었고 1995년에 공식화 되었습니다. TCB, 참조모니터, 보안 커널등의 개념을 도입하였고 효과적인 정보보호시스템 평가기준과 이러한 기준에 맞게 개발된 제품들을 평가하는데 초점을 두고 있습니다.
<TCSEC 보증 수준>
- A : 검증된 보호를 뜻합니다.
- B : 강제적 보호를 뜻합니다.
- C : 임의적 보호를 뜻합니다.
- D : 최소 보호를 뜻합니다.
<TCSEC 단계별 보안 수준>
- D : 보안 설정이 이루어지지 않은 단계입니다.
- C1 : 일반적인 로그인 과정이 존재하는 시스템입니다. 최그의 유닉스 시스템이 C1등급에 해당합니다.
- C2 : 각 계정별 로그인이 가능하며 그룸 ID에 따라 통제가 가능한 시스템입니다. 현재 사용되는 대부분의 유닉스 시스템이 C2등급에 해당합니다.
- B1 : 시스템 내에 보안정책을 적용할 수 있고 각 데이터에대해 보안 레벨 설정이 가능합니다. 시스템 파일이나 시스템에대한 권한을 설정할 수 있습니다.
- B2 : 시스템에 정형화된 보안 정책이 존재하며 B1 등급의 기능을 모두 포함합니다.
- B3 : 운영체제에서 보안에 불필요한 부분을 모두 제거하고 분석 및 테스트가 가능합니다. 시스템 파일 및 디렉터리에 대한 접근 방식을 지정하고 백업까지 자동으로 이루어집니다. 현재까지 B3 등급을 받은 시스템은 극히 일부입니다.
- A1 : 수학적으로 완벽한 시스템으로 현재까지 A1등급을 받은 시스템은 없습니다.
<TCSEC의 문제점>
오렌지 북은 군서용 컴퓨터 시스템의 요구사항과 기대사항을 주로 다룹니다. 따라서 상업적인 영역에서의 시스템에 적용될때는 많은 결점이 있습니다. 네트워킹, 데이터베이스와 같은 논점에는 주목하지 않고, 기밀성에만 집중하며 무결성과 가용성에는 집중하지않습니다. 또한 민간 상업 부문용의 보호 분류와는 동작하지않습니다.
<레드북>
레드북은 TNI라는 책의 표지색깔 때문에 붙은 이름으로 네트워크 및 네트워크 구성요소에대한 보안 평가 주제를 다룹니다.
<ITSEC(information technology securiry evaluation criteria)>
ITSEC는 독일, 프랑스, 네덜란드, 영국등 유럽 4개국이 평가제품의 상호인정 및 평가 기준이 상이함에따른 불합리함을 보완하기 위하여 작성한 유럽형 보안 기준입니다. TCSEC보다 나은 유연성을 제공하고 무결성, 가용성, 기밀성에대해 모두 대처합니다. 또한 네트워크 시스템을 다룹니다.
<공통평가 기준(CC, common criteria)>
오렌지북과 레드북은 비즈니스 세계에서 사용하기엔 엄격하다보니 사용하지 못했고 ITSEC는 기능성과 보증성은 분리하고 유연하게 가려했지만 복잡성이 증가되어 CC를 만들게되었습니다. ISO가 만들었습니다. CC는 요구조건과 평가 방법을 자세히 설명하며 운영하는 중에 IT변화에따른 새 취약점또한 자세히 설명합니다. 평가 기준으로 보증 수준(EAL)이 부여되며 보증 수준이 올라감에따라 엄격한 시험이 이루어집니다.
<CC의 등급별 보안수준>
- EAL1 : 기능적 시험
- EAL2 : 구조적 시험
- EAL3 : 방법론적 시험, 검사
- EAL4 : 방법론적 설계, 시험, 검토
- EAL5 : 준정형적 설계, 시험
- EAL6 : 준정형적 검증된 설계, 시험
- EAL7 : 정형적 검증된 설계, 시험
<CC의 구성요소>
패키지 : 보안목표를 만족하게 하기위한 컴포넌트의 집합
EAL : Evaluation으로 보증 등급을 말합니다
TOE : target of evaluation으로 평가 대상을 말합니다.
PP : protection profile로 정보제품이 갖추어야할 공통적인 보안 요구사항을 모아놓은 것입니다. PP는 ST를 수용할 수 없습니다.
ST : security target으로 필요에따라 CC에 정의되지않은 보안요구를 포함하는 것입니다. ST는 PP를 수용할 수 있습니다.
<CC의 문서 구성>
ISO/IEC 15408-1 : CC평가 모델의 일반적 개념과 원칙을 설명합니다.
ISO/IEC 15408-2 : 평가중에 진단될 보안 기능 요구사항을 정의합니다.
<국제상호 인정 협정(CCRA, CC recongnition arrangement)>
CCRA는 CC기반의 국제상호인정협정을 말합니다. 정보보호제품의 국가 간 교역장벽을 낮추어 수출을 용이하게 하는 수단이라고 할 수 있습니다. CCRA 가입국 간에 평가 인증 받은 제품은 협정에 참여한 어떤 국가에서도 다시 평가를 거치지않고 동일한 효력을 가질 수 있도록 하자는 것입니다. CCRA는 MRA라고 불리던 CCMRA의 체제가 모체이며 달라진점은 CCMRA의 참가국 형태가 평가와 수용을 같이하는 일원화된 체제였지만 CCRA는 평가국*CAP, certificate authorization paricipant)와 수용국(CCP, certificate consuming participant)로 이원화되었습니다. 우리나라는 CCRA에 CAP 자격으로 가입하였고 EAL4등급까지 상호 인정하고 있습니다.
<국내 동향>
현재 한국정보통신기술협회가 정보 통신 단체 표준 관련 업무를 담당하고 있습니다. 예전에는 단체 표준이었지만 현재는 기술 표줜원과 합의하여 국가 표준으로 인정받고 있습니다. CCRA의 평가는 한국인터넷진흥원이 맡고 인증서 발행은 국가정보원이 수행하고 있습니다.
- 정보보호관리체계 인증
정보보호관리체계 인증은 내부적인 평가만으로는 대외 신뢰도를 제고하기 어렵다는 문제점을 해결하기위해 개발되었습니다.
<BS7799(ISO/IEC 17788)>
BS7799는 정보보호 관리체계 구축을 위한 하나의 지침일 뿐만 아니라 한 조직이 정보보호 관리치계를 제대로 운영하고 있는지 평가하고 인증하는 표준으로 사용되고 있습니다. 영국에서 개발되었습니다. 여러나라의 기업들이 인증을 획득하였거나 추진중이며 이와 유사한 정보보호관리 표준을 그나라 나름대로 제정하고 운영중입니다.
'Certification > 정보보안기사' 카테고리의 다른 글
정보보안기사 실기 - unix 서버 취약점 분석 평가 (3) | 2023.03.27 |
---|---|
정보보안기사 실기 - 1(시스템) (3) | 2023.03.20 |
정보보안기사 필기 - 44(정보 보호 관련 법규 2) (0) | 2023.01.17 |
정보보안기사 필기 - 43(정보 보호 관련 법규 1) (0) | 2023.01.11 |
정보보안기사 필기 - 42(정보보호 인증제도) (0) | 2023.01.06 |