2013년 9월 22일 일요일

cvs 와 subversion 차이점 정리

CVS와 Subversion 비교

항목
CVS
Subversion
비고
리비전(revision) 번호 형식
#.#.#.# #
#은 정수형 숫자

버전 관리 대상
파일
파일,디렉토리

원자적 커밋(atomic commit)
지원 안 함
지원
커밋시 중단할 때 롤백(rollback)이 가능한지 여부
변경 셋(changeset
파일 단위만 지원
효율적이며 적은 시간 소요

네트워크 접근성
CVS 프로토콜만 지원


Network Security #06

18강. Ethernet의 구조
개요
- CSMA/CD
  • carrier sense : 반송 신호 감지
  • multiple access : 다중 접근
  • collision detection : 충돌 검출
- 대역폭 : 10Mbps(100M,1G)
- 문제 : 공유 매체에 공평하게 접근할 수 있는 분산 알고리즘
물리적 특성
- 고전적인 이더넷(Classical Ethernet) : thick-net
최대 세그멘트 : 500m
트랜


10BaseT Network
-대안기술
  • 10Base2(thin-net) : 200m, 데이지 체인(daisy-chain) 형태
  • 10BaseT(twisted-pair) : 100m , 성형(star)


프레임 형식(Frame format)


64
48
48
16
--
32
Preamble
Dest addr
Src addr
Type
Body (~~)
CRC


- 주소(Address)
  • 각각의 어탭터에 유일한 48bit 유니캐스트 주소가 할당됨
  • 주소예)
  • 브로드캐스트(Broadcast): 모든 비트가 1
  • 멀티캐스트(Multicast): 첫 비트가 1
- 어탭터는 모든 프레임을 수신 : 다음 경우에 받아들임 (즉 , 호스트로 보냄)
  • 주소항이 자신의 유니캐스트 주소인 프레임
  • 브로드캐스트 주소로 지정된 프레임
  • 수신하도록 프로그램된 멀티캐스트 주소로 지정된 프레임
  • 무차별 모드(promiscuous mode) 일 때는 모든 프레임


전송 알고리즘(전송)
  • 회선이 유휴(idle)상태 이면
    • 즉시 전송
    • 메시지 사이즈의 상한선은 MTU(1500바이트)
    • 연속해서 프레임을 보낼 때는 9.6 us을 기다려야 함.
  • 회선이 사용중이라면
    • 유휴 상태가 될때 까지 대기하였다가 즉시 전송
    • 1-persistent라 불림 (p-persistent의 특정형태)
전송 알고리즘(충돌)
  • 32비트의 jam 신호를 발송하고 프레임 전송을 멈춤
  • 최소 프레임의 길이는 64바이트 (헤더 + 46 바이트의 데이터)
  • 지연시간(delay)을 가진후 재시도 (단위 us)
    • 첫번째 : [0,51.2] 중에서 택일
    • 두번째 : [0,51.2,102.4] 중에서 택일
    • 세번째 : [0,51.2,102.4,153.6] 중에서 택일
    • N번째  : k x 51.2 us for randomly selected k=0...2^n -1
    • 여러번 시도후에 포기 (보통 16번)
    • 지수 백 오프(exponential backoff)
이더넷 확장
  • 속도
    • FastEthernet : 100Mbps
    • Gigabit Ethernet : 1Gbps
  • 스위치 기능
    • Repeater 대신 Bridge 사용 : 각 세그먼트가 독립적으로 사용 가능
    • Switched Ethernet
      • HUB에 Switch로 동작
      • 각 호스트는 대역폭을 점유해서 사용 가능
Network Adapter (NIC, 랜카드)
개요
데이터 링크 기능이 구현되는 곳
  • Framing
  • 오류 검출 (Error Detection)
  • 매체 접근 제어(MAC : Media Access Control)
  • ** 버퍼는 수신과 송신 버프 두개 존재 한다.
호스트의 관점
  • 상태제어 레지스터(CSR:Control Status Register)
  • 특정 메모리 주소로 사용가능
  • CPU는 읽고 쓸 수 있음
  • CPU는 어댑터에게 명령(예,전송)
  • 어댑터는 CPU에게 정보를 알려줌(예, 수신오류)
    예)
    LE_RINT 0x0400 Received packet Interrupt (RC)
    LE_TINT 0x0200 Transmitted packet Interrupt (RC)
    LE_IDON 0x0100 Initialization Done (RC)
    LE_IENA 0x0040 Interrupt Enable(RW)
    LE_INIT 0x0001 Initialize (RW1)


호스트와 어댑터 사이의 프레임 이동
  • 직접 메모리 접근 (DMA)
    • CPU 관여 없이 어댑터 버퍼에서 메모리 사이 이동
    • buffer descriptor list 이용
  • 프로그램(Programmed) I/O (PIO)
    • CPU가 어댑터 버퍼에서 읽어 메모리로 이동


브리지 및 확장 LAN (Bridges and Extended LANs)
LAN의 확장
  • LAN은 물리적인 제한이 있음(2500m)
  • 두개 또는 그 이상의 LAN들을 repeater/bridge 를 이용하여 연결
  • 브리지에 의해서 연결된 LAN의 집합을 extended LAN (확장 LAN)이라고 함.
브리지(bridge) 동작
  • 동작 : 수신(accept) 및 포워드(forward) , 스위치에는 있는 기능 필터링
  • 여러 개의 포트를 가지는 브리지 : LAN 스위치
  • 계층-2 연결 (패킷 헤더를 붙이지 않음) : 라우터와의 차이
    • 브리지는 네트워크 주소를 갖지 않음.
    • invisible component 즉 link component
    • 브리지로 연결된 LAN은 하나의 네트워크
학습 브리지 (Learning Bridges)
  • 불필요할 때는 포워드 하지 않음.
  • 포워딩 테이블의 유지
  • 발신지 주소에 기초해서 데이블의 엔트리를 작성
  • 표는 최적화가 목적: 완벽할 필요는 없음
  • 브로드캐스트(방송) 프레임은 항상 포워드
스패닝 트리 알고리즘
  • 확장 LAN은 때때로 루프를 가짐
  • 루프는 브리지에게 혼동 발생
  • 브리지는 분산 스패닝 트리 알고리즘을 수행
    • 어떤 브리지가 프레임을 포워드하는 “활성화된 브리지"가 될지를 선택
    • DEC의 Radia Perlman에 의해서 개발됨.
    • 현재 IEEE 802.1 specification
  • 알고리즘 개요
    • 각 브리지는 유일한 식별자(id)를 가짐
    • 식별자가 가장 작은 브리지를 루트로 선정
    • 각 LAN에서 루트에 가장 가까운 브리지를 해당 LAN의 지정(designated) 브리지로써 선택(거리가 같은 경우 에는 식별자를 사용)
    • 각 브리지는 자신의 지정 브리지로 선정된 LAN을 통과하는 프레임을 포워드함.
브로드캐스트 및 멀티캐스트
  • 현재는 모든 브로드캐스트와 멀티캐스트 프레임을 포워드함.
  • 하위 LAN에


19강. TCP
TCP Services
UDP와 같은 transport layer에 위치
UDP와 다른 특성의 서비스에 응용계층에 제공
  • 연결위주 전송방식(connection-oriented)
    • TCP를 이용하는 응용간의 데이터를 교환 시, 서로 연결이 확립되었음을 확인 해야 한다-> 신뢰성 무결성 보장 가능
  • 신뢰성 있는 전송(Reliability)
    • 응용계층 메시지를 상대방 응용계층까지 오류 없이 전달
    1. TCP segment
    2. Timer 설정
    3. ACK
    4. TCP header, data에 checksum을 이용
    5. 중복 데이터 제거
    6. Flow control


TCP Connection
Establishment (연결시작)
  • Three-way handshaking
  1. A : SYN flag=1
  2. B : SYN flag=1, ACK flag=1 ,ACK num = A’s sequence num + 1
  3. A : ACK flag=1, ACK num = B’s sequence num + 1
  • Termination (연결 종료)
  1. A : FIN flag=1 , ACK flag=1, PSH flag=1
  2. B : ACK flag=1 , ACK num = A’s sequence num + 1 , PSH flag =1
  3. B : FIN flag=1, ACK flag=1 ,ACK num=A’s sequence num + 1
  4. A : ACK flag=1, ACK num=B’s sequence num+1


Reset : TCP 연결의 강제 종료 (정확하지 않은 seqment가 도착했을 때에 발생)
  • 존재하지 않는 포트에 대한 연결 요구
    • 연결 요구가 도착할 때에 목적지 포트상에 프로세스가 대기하고 있지 않는 경우
    • 서버에 설치되지 않는 서비스에 접속을 요구한 단말의 SYN패킷에 대한 응답
  • 긴 휴지기간
  • 재부팅되거나 다운되었었던 서버에게 패킷을 전송하는 경우
    • Reset 메시지를 받은 사용자의 화면에 “connection reset by peer” 메시지 출력




TCP 연결
일반적 연결과정
일반적 해제과정


TCP Header

  • port number : TCP 연결을 사용하는 응용 계층 프로그램을 구분하기 위해 사용
    ex) telnet server의 수신측 포트 번호는 23 , ftp 21
  • sequence number : segment의 첫번째 byte를 나타내는 것으로 송신측의 TCP로 부터 수신측의 TCP로 가는 data stream의 byte를 구분하는 것
  • Acknowledgement number : 수신자가 다음에 받기를 원하는 sequence number
  • Header length
    • 4byte(word) 단위로 header길이를 지정
    • Option field가 가변적이기 때문에 필요
    • 60byte header 길이로 제한됨(option이 없을 경우 20byte)
  • Control Code (flag bit) : TCP packet의 종류 및 내용을 표시
    Code
    Descr
    URG
    긴급 유효한 포인터
    ACK
    긍정 응답
    PSH
    수신자는 최대한 빨리 어플리케이션에 데이테를 보내야 함
    RST
    연결 재설정
    SYN
    연결 초기화 시키기 위해 시퀀스 넘버를 동기화 시킴
    FIN
    송신자는 데이터 송신을 끝내는 것

    • Window size (credit size)
      • 수신 측의 수신 가능 버퍼용량을 표시
      • 각 종단이 window size를 알림으로써 flow control을 할 수 있다.
      • 16bit field -> 65535 bytes (2^16)
    • checksum
      • TCP header와 TCP data에 대한 checksum 계산 값
      • 송신측에서 계산, 저장되고 수신측에서 검사함.
      • UDP와 같이 pseudo header를 이용하여 계산
    • Urgent pointer
      • URG flag가 설정되어 있을때 유효
      • Data 영역 중 urgent data의 마지막 바이트를 표시 (RFC 1122)
    • Option
      • TCP 헤더에 옵션을 추가
      • RFC 793,1323은 추가적인 TCP 옵션을 정의
      • 옵션의 유형은 kind의 값으로 구분
      • NOP (no option) : 송신측이 필드를 4바이트의 배수가 되도록
        예) <mss 512,nop,wscale 0, nop,nop ,timestamp 14667 0>
    TCP 관련 해킹
    SYN_Flooding 공격의 원인과 해결책
    일반적인 연결(정상적인)
    • 1단계: A 클라이언트, B서버에 접속을 요청하는 SYN 패킷을 보낸다.
    • 2단계: B 서버는 요청을 받고, A 클라이언트에게 요청을 수락한다는 SYN패킷과 ACK패킷을 발송한다.
    • 3단계: A 클라이언트는 B서버에게 ACK를 보내고 이후로 부터 연결이 이루어지고 본격적으로 데이터가 교환된다.
    SYN Flooding 공격인 경우
    • 정상적인 연결의 3단계에서 A클라이언트가 B서버에계 ACK를 일부로 보내지 않고 그로 인한 서버의 75초 대기를 후 초기화 되면 현상을 이용하여 서비스 거부 상태를 발생시킨다. 즉 비정상 메시지를 계속 전송하여 서비스를 구동되지 않도록 하는 것이다.
    • 백로그큐가 가득 찼을 경우에 공격을 당한 해당 포트로만 접속이 이루어지지 않을 뿐 다른 포트에는 영향을 주지 않고, 또한 서버에 별 다른 부하도 유발하지 않으므로 관리자가 잘 모르는 경우가 많다.
    • 또한 다른 DoS 공격과 달리 많은 트래픽을 유발하는 공격이 아니므로 쉽게 파악이 되지 않는 공격 형태이다.

    SYN Flooding 공격에 대한 대비
    • 백로그 큐를 크기를 늘려 준다 : 서비스 거부에 돌입하게 되는 것은 백로그큐(backlog Queue)가 가득 차서 다른 접속 요구를 받아들이지 못하기 때문이므로 백로그 큐의 크기를 늘려주면 됨. (1024로 조정)
    • syncookies 기능을켠다: Syncookies는 Three-way handshake 진행과정을 다소 변경하는 것으로 Three-way handshake 가 성공적으로 이루어지지 않으면 더 이상 소스 경로를 거슬러 올라가지 않는다.
    • 기타 시스템의 네트워크 설정을 최적화한다. : TCP SYN Flooding 공격뿐만 아니라 다른 여타 Dos 공격에도 효과적으로 방어하므로 적절히 설정할 것을 권장



    20강.IP관련 보안
    외부 공격 방법
    • 암호 빼내기
      • 사용자의 계정 이름이나 암호를 얻는 것이 모든 종류의 해킹에서 가장 기본이 된다.
      • 크랙커(Cracker)를 이용 : 자동으로 암호를 찾아주는 프로그램
      • 신상정보를 이용
    • 스푸핑(Spoofing) : 해킹 방법 중 하나로, 마치 인가된 노드처럼 가장해 해당 네트워크를 공격하는 방법
      • 구체적으로 거짓 발신 주소를 이용해 서비스 프로그램 파괴 시도가 가능한 네트워크 어드레스 스푸핑 공격
      • 인증되지 않는 비밀번호로 접근해 제 3자의 채널을 통한 고객의 비밀번호 추가/변경, 주요 데이터베이스 파괴 시도가 가능한 사용자 인증 스푸핑 공격
    • 흉내내기(Impersonation)
      • 서버 흉내내기
        • 보안 조치가 없는 네트워크 라우팅 장비를 조작 하여 네트워크로 가는 응답을 자신의 컴퓨터로 보내도록 할수 있다.
        • 네트워크 사용자의 이름과 암호를 몰래 수집
      • spartan horse는 실행파일을 사용하지 않고 단지 표준 HTML과 브라우져의 기능을 이용하여 자신을 Winodws 응용 프로그램처럼 흉내내어 사용자를 속인다.
    • 패킷 가로채기(Packet Snipping)
      • TCP/IP 네트워크는 자신에게로 오는 패킷만을 처리한다.
      • 네트워크 모니터링 소프트웨어를 이용 모든 패킷을 검사, 암호, 중요 정보들을 빼낼 수 있다.(128byte)
      • telnet,rlogin.ftp 등은 암호기법을 사용 안함
      • 암호화된 암호지체를 기록하여 다시 네트워크에 보내서 접근권한을 얻을 수 있다.
      • kerberos,MSCHAPv2와 같은 보안 프로토콜을 이용하여 암호를 매번 다른 방법으로 암호화 하여 전송
    • 프로그램 버그 및 백도어(BackDoor)
      • 어떤 프로그램이든 제작하다보면 약간씩의 버그(프로그램상의 오류)가 존재한다. 이것을 이용한 해킹을 하는것을 오류이용법이라고 한다.
      • 쉽게 디버깅 작업을 하기위해 비정상적인 방법으로 접근하는 백도어라는 비밀기능이 있을 가능성이 높음.
    • 오픈도어(Open Door)
      • 관리자나 사용자의 설정 실수로 인하여 해커가 손쉽게 침입.
        네트워크상에서 파일 공유를 하면서 암호설정해두지 않는 경우
      • OS 설치를 막 끝낸 호스트는 루트의 패스워드가 없거나 보안 검사(Security check)기능이 거의 작동되지 않는 상황이므로 누구나 쉽게  침투할 수 있다.
    • 트로이목마, 바이러스
      • 다른 프로그램으로 위장(혹은 문서,그림 파일, 전자우편에 묻어올 수도 있다.)
      • 트로이 목마 프로그램이란 자기 복사 능력은 없이 고의적인 부작용만 가지고 있는 프로그램을 말한다. 자기 자신을 다른 파일에 복사하지 않는다는 점에서 컴퓨터 바이러스와 구별된다. 따라서 어떤 프로그램을 실행시켰을 때 하드디스크의 파일을 지우지만 다른 프로그램에 복사되지 않으면 이것은 컴퓨터 바이러스가 아니라 트로이 목마 프로그램이라 할 수 있다.
      • 인터넷 익스플로러(IE)의 거짓 업그레이드
    • 스누퍼(Snooper)
      • 시스템에 몰래 숨어 있다가 컴퓨터의 여러정보(암호,파일,키보드 에서 입력 내용등)를 저장하거나 외부로 보내는 역할을 한다.
      • 백오리피스(BackOrifice)
        • 트로이목마 , 백도어 기능을 가지고 있다
        • 원격지 네트워크에서 사용자가 모르게 정보 수집,시스템 명령어 수행, 시스템 재구성,네트워크 트래픽 지정변경 등 시스템을 통제할 수 있는 클라이언트/서버 어플리케이션이다.
    • 서비스 거부(Denial of Service)
      • 이는 시스템 내부로 부터 공격으로 ROOT의 권한을 얻는 것이 아니라 내부의 일반사용자가 정상적으로 시스템의 자원을 남용하거나 각종 버그를 이용하여 시스템의 정상동작을 방해하는 공격이다.
      • FLOODING 공격
        • TCP SYN , UPD , Ping , ICMP
    보안
    • 준비과정 : 실제로 외부로 부터의 공격을 받기 전에 불필요한 위험요소를 제거하는 과정
      • 네트워크 보안을 전문으로 하는 인력 채용
      • 네트워크 관리자가 보안에 대해서 공부
      • 인증받지 않는 접속을 거부함(ip filtering)
      • 반드시 필요한 서비스만 설치
      • 버그가 없다고 알려진 소프트웨어만 사용
      • 각 사용자에 대한 계층적인 권한 설정
      • 내부 네트워크의 구성을 노출하지 않는다.
    • 능동적 방어(Active Defense) : 외부에서의 해킹시도를 막기위한 여러가지 방법을 구현
      • 방화벽(firewall), 프록시서버(Proxy Server),게이트웨이(Gateway)를 설치하여 부적절한 접근을 차단
      • 암호화와 사용자 인증을 이용하여 계정 보호
      • 보안 프로그램을 최신 버전으로 유지
    • 테스트 : 해킹을 시도할 때 이를 막을 수 있는 지를 항상 테스트하고 부적절한 접속을 검사
      • 사용자의 암호 등이 cracker 프로그램으로 쉽게 노출이 되는가를 검사한다.
      • 네트워크 모니터링 프로그램으로 이상한 접속이 있는 지를 항상 확인하다.
      • 모든 시스템의 로그파일을 주기적으로 확인하여 해킹시도가 있었는지를 확인한다.
      • 보안 프로그램을 작동시켜 트로이 목마나 스누퍼같은 프로그램이 설치되었나를 검사한다.

    IPsec
    • 개요
      • IETF에서 표준으로 추진되고 있는 암호화완 관련된 시스템 구조 및 Key 관리 프로토콜
      • IPsec은 네트워크 계층의 안정적이고 영구적인 보안을 제공
      • 차세대 IPv6에서는 IPsec을 기본으로 포함하고 있음.
    • 구조
      • 키관리 : 인증과 암호화에 필요한 암호 알고리즘의 키를 생성하고 분배
      • 보안연계 : 보안 서비스를 제공하기 위한 보안 프로토콜 각각에 대한 보안 매개변수 집합을 정의하고 관리하는 기능이 요구됨
      • 보안 프로토콜 : IP계층에서 보안 서비스를 제공하기 위해 IPsec AH(인증헤더) 프로토콜과 IPsec ESP프로토콜이 설계되었음.
      • 암호 알고리즘 : 사용되는 보안 프로토콜에서 제공되는 보안 서비스에 따라 알고리즘이 결정
    • AH(인증헤더)를 적용한 송수신 패킷 처리
      • 송신
        • 패킷에 대응되는 보안 연계 식별
        • AH내의 Sequence Number 생성
        • 인증 데이터 계산
      • 수신
        • 패킷에 대응되는 보안 연계 식별
        • AH의 Sequence Number 확인을 통해 재전송 여부 확인
        • 인증 데이터의 유효성 조사
    • ESP를 적용한 송수신 패킷 처리
      • 송신
        • 패킷에 대응하는 보안 연계 식별
        • 패킷의 암호화
        • 재전송 공격 방지하는데 사용되는 ESP내의 Sequence Number 생성
        • 인증데이터 계산
        • 필요시 IP 데이터그램 단편화
      • 수신
        • 패킷에 대응되는 보안 연계 식별
        • ESP내의 Sequence Number확인을 통해 재전송 여부 확인
        • 인증데이터의 유효성 조사
        • 패킷의 복호화
    방화벽
    • 방화벽 : 네트워크의 보안사고나 위협이 더 이상 확대되지 않도록 특정 네트워크를 막고 격리하는 것
    • 특히 외부에서의 허가되거나 인증된 트래픽만 허용하는 적극적인 방어  대책
    • 방화벽의 주요기능
      • 패킷 필터링 : 네트워크 전송 측에서 패킷의 출발지 및 목적지 IP주소 , Port 번호, TCP SYN비트를 이용하여 패킷을 분석, 조건 부합 패킷만 전달
      • IP 숨기기 : NAT을 이용하여 내부의 모든 호스트 주소들을 가상의 주소로 전환하여 내부 IP주소를 숨김
      • 프록시 : OSI의 응용계층의 프록시를 사용하면 방화벽을 통과한 네트워크 레벨의 프로토콜 흐름을 완전하게 연결 및 해제 할 수 있음.
    • 방화벽의 장점
      • 선택된 프로토콜만이 방화벽을 통과할 수 있기때문에 서브넷 호스트의 위험감소
      • 수정된 S/W와 추가되는 보안S/W를 방화벽에 설치할 수 있어 보안에 집중가능
      • 방화벽은 사이트 이름과 IP주소 유출방지
      • 침입 관련 접근 정보를 기록하므로 통계 정보 제공
      • 내부 전산망에 대한 정책을 효과적으로 수행
    • 방화벽의 단점
      • 내부 구성원의 실수나 의도적 유출에 의한 정보 유출은 막을 수 없다
      • 파일 교환을 이용한 바이러스,메일 가로채기나 변조등을 통제 할수 없다.
      • 해당 프록시가 설치되어 있지 않는 서버스는 사용할 수 없다.
      • 사용자가 방화벽이 설치된 사이트에 접근하려면 검사와 인증을 거쳐야 하므로 정보가 누출될 수 있다.
    • 방화벽 시스템의 종류
      • Screening Router
        • 내부/외부 네트워크를 스크리닝 라우터로 연결하는 것으로 패킷 헤더정보를 분석하고 필터링을 한다.
        • 속도가 빠르고 비용이 저렴하나 로그 관리가 어렵고 패킷 데이터에 대한 분석 불가능
      • Bastion Host
        • 방화벽을 탑재한 호스트로 내부와 외부를 연결하는 방법
        • 인증,접근 통제, 로그 기록, 모니터링
        • 지능적 정보 분석 가능
        • Bastion 호스트 자체에 대한 보안 취약점 고려, 정기적 점검 필요
      • Dual Homed Gateway
        • 내부용과 외부용 두개의 네트워크 카드를 내장한 Bastion Host를 이용하여 연결하는 방법
        • 외부/내부가 분리되어 보안성 강화
        • Bastion Host 자체에 대한 보안 취약점을 고려, 정기적 점검 필요
      • Screened Host Gateway
        • Screening Router와 Dual Homed Gateway를 혼합하여 연결하는 방법
        • 2단계의 보안 점검 기능으로 보안서이 강화되는 장점으로 가장 널리 이용됨
        • 구축비용이 비쌈
      • Screened Subnet Gateway
        • Screening Router를 Bastion Host를 중심으로 연결하는 방법
        • 보안 기능이 강력하지만 구축비용이 고가이고 서비스 속도가 지연됨