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)
- 응용계층 메시지를 상대방 응용계층까지 오류 없이 전달
- TCP segment
- Timer 설정
- ACK
- TCP header, data에 checksum을 이용
- 중복 데이터 제거
- Flow control
TCP Connection
Establishment (연결시작)
- Three-way handshaking
- A : SYN flag=1
- B : SYN flag=1, ACK flag=1 ,ACK num = A’s sequence num + 1
- A : ACK flag=1, ACK num = B’s sequence num + 1
- Termination (연결 종료)
- A : FIN flag=1 , ACK flag=1, PSH flag=1
- B : ACK flag=1 , ACK num = A’s sequence num + 1 , PSH flag =1
- B : FIN flag=1, ACK flag=1 ,ACK num=A’s sequence num + 1
- 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의 종류 및 내용을 표시CodeDescrURG긴급 유효한 포인터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를 중심으로 연결하는 방법
- 보안 기능이 강력하지만 구축비용이 고가이고 서비스 속도가 지연됨