IPv4 프로토콜
① 개념
- 비연결형(연결상태 유지x)/비신뢰적(신뢰성 통신 x) 프로토콜
- 목적지 주소(IP Address)를 기반으로 라우팅을 담당하는 인터넷 계층의 대표 프로토콜
- 라우팅: 라우팅 알고리즘을 통해 최적의 경로를 선정하여 목적지를 찾아가는 것
② 구조
- VER : IP 버전 정보
- HLEN : 헤더길이
- Service Type: QoS를 위한 용도. 현재 사용 x
- Total Length: 헤더 + 데이터 전체 길이
- (단편화/재조합) Identification : 단편화 전 IP 데이터그램을 식별하기 위한 ID
- (단편화/재조합) Flags
- 첫 번째 비트 : 사용 안함
- 두 번째 비트 : Don't fragment (1 : 패킷 단편화 하지마 0 : 패킷 단편화 해)
- 세 번째 비트 : More fragments bit (1 : 재조합할 단편화 뒤에 더 있다. 0: 더 없다.)
- (단편화/재조합) Fragmentation offset : IP 특성상 원본 단편들이 순서대로 전송되지 않기때문에 순서조합을 위해 만들어진 현재 단편의 상대위치(offset)
- Time to live: IP 생존시간을 지정하는 필드
- 최초엔 초단위 -> 홉카운트(라우터/l3 스위치 통과개수)로 의미 바뀜
- 목적은 루핑이 발생해 목적지에 도달할 수 없는 패킷이 무한히 생존하여 네트워크 대역만 차지하는 상태를 방지하기 위해서다.
- linux(64) window(128) unix (255)로 설정. -> OS 핑거 프린터로 사용
- Protocol : 상위 프로토콜을 식별하기 위한 프로토콜 번호 저장하는 필드. ICMP(1), TCP(6) UDP(17)
- Header Checksum : 데이터부 제외한 헤더부분의 오류 검사값
- Source IP address : 출발지 IP 주소
- Destination IP address : 출발지 IP 주소
- 주요 IP 옵션 헤더
- Loose Source Route : 라우팅 경로를 출발지에서 지정하며 경우에 따라 다른 경로로 라우팅
- Strict Source Route : 출발지에서 지정한 경로로 무조건 라우팅
③ 라우팅
- 규칙
- 첫째로 목적지 주소가 자신과 동일한 네트워크에 있다면 -> 직접전송한다.
- 둘째로 목적지 주소가 자신과 동일한 네트워크에 속하지 않는다면 -> 직접 전송이 불가하기 때문에 1차 경유지(gateway)주소를 라우팅 테이블을 참조하여 찾는다.(netstat -rn을 통해 호스트의 라우팅테이블 정보 확인 가능)
- 셋째로 목적지 주소와 자신의 주소가 동일한 경우 목적지가 자신이므로 상위계층으로 데이터를 전달한다.
- 라우팅 테이블 검색 방식 및 우선순위
- 검색방식 : IP 패킷의 목적지 IP와 라우팅 테이블의 netmask/genmask를 bit and 연산 수행 후 라우팅 테이블의 destination 필드와 비교, 일치하는 경로를 선택하여 패킷을 전송한다.
- 패킷의 목적지 IP와 netmask/genmask 간에 bit and 연산 : 목적지 IP에서 네트워크 ID 부문만을 추축하기 위한 과정
- 검색 우선순위
- 목적지 호스트(IP) 주소와 일치하는 경로를 찾는다.
- 목적지 호스트(IP) 주소와 일치하는 경로가 없으면 목적지 네트워크 주소와 일치하는 경로를 찾는다.
- 일치하는 경로가 없으면 Default gateway(0.0.0.0)로 보낸다.
- 실습
- 라우팅 테이블 설정 일부(Linux/netstat -rn 명령)
Destination Gateway Genmask Flags Interface 10.0.96.100 10.0.160.1 255.255.255.255 UGH eth0 10.0.64.0 10.0.160.2 255.255.224.0 UG eth0 10.0.64.0 10.0.160.3 255.255.192.0 UG eth0 0.0.0.0 10.0.160.4 0.0.0.0 UG eth0
- Destination : 목적지 호스트 또는 네트워크 주소
- Gateway : 목적지로 전송하기 위한 Gateway 주소
- Genmask : 범용(General) 목적의 마스크
- 목적지 Host를 식별하기 위한 마스크 : 255.255.255.255
- 목적지 Network를 식별하기 위한 마스크 : 넷마스크(Netmask)
- default gateway를 식별하기 위한 마스크 : 0.0.0.0
- Flags : 해당 경로에 대한 상태정보 플래그
- U(route is Up) : 경로가 활성화되어 있음
- G(use Gateway) : gateway를 사용함
- H(target is a Host) : 목적지가 호스트를 의미
- Interface : 해당 목적지로 보내기 위한 인터페이스 이름
- 라우팅 경로 계산 1 : 10.0.122.100 목적지로 패킷 전송 시 gateway 주소
- 목적지 주소(10.0.122.100)와 세 번쨰 행의 Genmask 결과 : 10.0.64.0. 즉, Destination 주소와 일치한다. -> 해당 경로의 Gateway (10.0.160.3)로 전송
- 라우팅 경로 계산 2 : 10.0.192.199 목적지로 패킷 전송 시 gateway 주소
- 목적지주소와 모든 행의 genmask간에 bit and 연산 수행 시 일치하는 Destination이 없다. -> default gateway(10.0.160.4)로 전송
- 라우팅 경로 계산 3 : 10.0.96.100 목적지로 패킷 전송 시 gateway 주소
- 첫번째 행의 호스트 주소와 일치 genmask (255.255.255.255) -> gateway(10.0.160.1)에 전송
- 라우팅 테이블 설정 일부(Linux/netstat -rn 명령)
- 검색방식 : IP 패킷의 목적지 IP와 라우팅 테이블의 netmask/genmask를 bit and 연산 수행 후 라우팅 테이블의 destination 필드와 비교, 일치하는 경로를 선택하여 패킷을 전송한다.
④ 공격
- IP Spoofing
- 개념
- IP를 속이고 통신하는 공격. 1995년 캐빈 미트닉이 이를 이요해 실제 해킹을 시도함으로써 널리 알려짐
- 시스템 간의 트러스트 관계를 이용
- 트러스트 관계가 맺어진 서버와 클라이언트를 확인한 후 신뢰 관계가 있는 클라이언트를 연결 불가능한 상태로 만들고(Dos 공격 등) 공격자가 클라이언트의 IP로 위조(스푸핑)하여 서버에 접속하는 공격 방식
- 트러스트 관계 : ID/PWD 기반 로그인 x, 신뢰관계에 있는 IP를 등록해 해당 IP로 접근하는 것을 허용 -> ID/PWD 스니핑엔 강하지만 IP 스푸핑엔 매우 취약하여 보안상 권장 x
- 실습
- 트러스트 설정(hosts.equiv/.rhost 파일)
- 유닉스, 리눅스 시스템에서 트러스트 관계 설정 파일로 /etc/hosts.equiv와 $HOME/.rhost 파일이 있다
- /etc/hosts.equiv : 시스템 전체에 영향
- $HOME/.rhost : 사용자별로 설정하는 파일
레코드 형식 의미 host_name 해당 호스트(IP/호스트명)의 접근 허용 host_name user_name 해당 호스트에 해당 사용자로 접근 허용 + 모든 호스트의 접근 허용(계정은 아이디, 패스워드 인증 필요) + User_name 모든 호스트의 해당 사용자로 접근 허용 -host_name 해당 호스트의 접근 차단 host_name -username 해당 호스트에서 해당 사용자만 접근 차단 + @group 모든 호스트에서 해당 group 사용자로 접근허용 - 설정방식을 보면 앞에 있는 것이 호스트명, 띄어쓰기 후 나오는 것이 사용자명(계정명)이다.
- +는 모두 허용, -(호스트명 or 계정명)는 차단. 만약 "+ +"으로 설정하면 모든 호스트에 대해 모든 계정을 신뢰한다는 의미로 매우 취약한 설정이다.
- 유닉스, 리눅스 시스템에서 트러스트 관계 설정 파일로 /etc/hosts.equiv와 $HOME/.rhost 파일이 있다
- rlogin 서비스 활성화
- r계열 서비스 (rlogin, rsh, rexec 등)는 인증 없이 신뢰 관계에 있는 시스템들의 원격 접속을 허용해주는 서비스들이다. rlogin의 경우 telnet과 유사하지만, 인증 없이 접속할 수 있다.
- xined 데몬의 rlogin 서비스를 활성화한 후, xinetd 데몬을 재기동한다. netstat명령으로 소켓 상태를 확인해보면 513.tcp 포트가 리슨 상태에 있는 것을 확인할 수 있다.
- rlogin 클라이언트 명령어를 통한 원격 접속
- "rlogin 서버IP" 명령을 통해 접속하면 아이디, 패스워드 확인 없이 해당 IP에 연결되는 것을 확인할 수 있다. 공격자는 신뢰관계에 있는 클라이언트를 사용 불능 상태로 만든 후 해당 클라이언트의 IP로 위조하여 해당 서버에 접속할 수 있다.
- 트러스트 설정(hosts.equiv/.rhost 파일)
- 대응책
- 시스템 간 트러스트 설정을 사용하지 않는다. 반드시 사용해야 할 경우에는 트러스트된 시스템의 MAC 주소를 정적으로 구성하여 단순히 IP만을 위조한 접속을 차단한다.
- $HOME/.rhosts, hosts.equiv 사용 금지
- r계열 서비스(rlogin,rsh,rexec 등)을 통한 원격접속은 보안상 매우 취약하여 서비스 포트가 열려있을 경우 중요 정보 유출 등 침해사고의 원인이 될 수 있다. 따라서 R계열 서비스를 허용하지 않는다. 만약, 불가피하게 사용할 경우에는 트러스트 관계 설정 파일인 $HOME/.rhosts, hosts.equiv에 적절한 보안 조치를 해야 한다.
- 보안 조치
- /etc/hosts.equiv 및 $HOME/.rhosts 파일 소유자를 root 또는 해당 계정으로 변경한다. (ex. chown root /etc/hosts.equiv
- /etc/hosts.equiv 및 $HOME/.rhosts 파일 권한을 600이하로 변경한다. (ex. chmod 600 /etc/hosts.equiv)
- /etc/hosts.equiv 및 $HOME/.rhosts 파일에서 "+"를 제거하고 반드시 필요한 호스트 및 꼐정만 등록한다
- 개념
IPv6 기본
① 개념
- IPv4 주소가 고갈되는 문제를 해결하기 위하여 새로운 128비트 체계로 2^128개의 주소를 갖는 인터넷 프로토콜 주소를 갖는다.
- 16bit 단위로 구분하며 각 단위는 16진수로 변환되어 콜론(:)으로 구분하여 표시한다.
- 앞의 64bit는 네트워크 주소를 의미하고 뒤의 64비트는 네트워크에 연결된 통신장비 등에 할당되는 인터페이스 주소를 의미한다.
② 장점
- 확대된 주소공간 :주소길이가 128비트로 증가하여 2^128개의 주소 사용 가능
- 단순해진 헤더 포멧 : IPv4 주소 헤더의 불필요한 필드를 제거하여 보다 빠른 처리 가능
- 간편해진 주소 설정 기능 : IPv6 프로토콜에 내장된 주소 자동 설정 기능을 이용하여 플러그 앤 플레이 설치 가능(IPv4의 경우 DHCP를 통해 할당)
- 강화된 보안성 : IPsec을 기본 사항으로 제공
- 개선된 모바일 IP : IPv6 주소 헤더에서 이동성 지원
③ IPv6 전환기술(<-> IPv4)
- 듀얼스택 : IPv4와 IPv6 프로토콜을 동시에 설정. 통신 상대에 따라 선택정 사용 -> 장기적으로 봤을 때 가장 추천
- 터널링 :IPv6가 IPv4 네트워크 경유 시, 가상의 경로를 만들어 IPv6를 IPv4 패킷으로 캡슐화 해 전송 (IPv6 -> IPv4 -> IPv6)
- 주소 변환/헤더 변환 : IPv4 주소를 IPv6로 변환하거나 IPv6주소를 IPv4 주소로 변환하여 통신하는 방식. 패킷 앞부분에 변환 헤더를 추가해 송신하고 수신측에서는 변환 헤더를 제거하는 방식으로 통신한다. (IPv6 -> IPv4 / IPv4->IPv6 통신할 때 사용)
'정보보안 > 네트워크 보안' 카테고리의 다른 글
[네트워크 기본학습] TCP 프로토콜 (0) | 2024.11.14 |
---|---|
[네트워크 기본학습] ICMP 프로토콜 (0) | 2024.11.14 |
[네트워크 기본학습] ARP/RARP(TCP/IP 인터넷 계층) (0) | 2024.11.13 |
[네트워크 기본학습] TCP/IP 4 Layer (0) | 2024.11.13 |
[네트워크 기본학습] OSI 7 Layer (0) | 2024.11.13 |