일일 정리

ICMP, ARP/RARP, 전송계층(Transport Layer) 서비스 개요, 다중화( Multiplexing )와 역다중화( demultiplexing ), UDP, 리눅스 사용자 관리 관련 명령어

mysecurity 2025. 1. 13. 17:51
ICMP

 

ICMP는 인터넷 제어 메시지이다.

 

네트워크 관리 및 오류 보고를 위해 사용된다.

 

시스템 및 경로 확인을 위해 사용된다.

• ping

• traceroute(tracert)

 

ARP/RARP

 

ARP는 시스템이 알고 있는 통신 상대방의 IP 주소를 이용해서 통신 상대방의 MAC 주소를 알아내는 프로토콜이다.

목적지 맥주소를 요청하는 패킷을 브로드캐스트로 보낸다. 상대방의 응답 패킷은 유니캐스트로 온다.

 

RARP는 주로 하드디스크가 없는 diskless 시스템에서 자신의 IP를 알기 위해 자신의 맥주소를 브로드캐스트로 전송하여 RARP 서버에게 자신이 사용할 IP를 질의하는 프로토콜이다.

ARP와 RARP 패킷의 구조는동일하다.

 

  ARP의특징

IP에 의해 자동으로 호출된다. 

IP와 Ethernet 뿐 아니라 다양한 링크 계층과 네트워크 계층 프로토콜에서 사용된다.

보안 기능이 없기 때문에 스푸핑(spoofing) 공격에 취약하다.

 

전송계층(Transport Layer) 서비스 개요

 

전송 계층은 서로 다른 호스트 간에 작동하는 응용 프로세스 간에 논리적인 통신(logical communication)을 제공한다.

논리적인 통신: 중간에 거쳐가는 장치들은 tcp통신과는 무관하다. 즉, 물리적 통신과 상관없이 1대1로 통신한다.

 

전송 프로토콜은 전송 서비스를 제공하는건가?

송신측: 응용 메시지를 세그먼트로 변환 네트워크 계정에 전달한다.

수신측: 네트워크 계정으로부터 전달받은 세그먼트로부터 메시지를 추출 응용 계층에 전달한다.

응용 계층은  전송 계층에 전적으로 의지해서 통신한다.

 

네트워크 계층 : 호스트 간에 논리적인 통신을 제공한다.

전송 계층: 프로세스 간에 논리적인 통신을 제공한다.

 

네트워크 계층이 제공하지 못하는 신뢰적인 전송을 제공할 수 있다.

 

그러나 네트워크 계층의 제약을 받는 경우도 있다.

: 지연이나 대역폭에 대한 보장은 불가능하다.(패킷망이라 그렇다. 서킷망은 이들을 보장한다.)

 

다중화( Multiplexing )와 역다중화( demultiplexing )

 

● 다중화

다중화는 소켓들로부터 데이터를 모으고 각 데이터 의 헤더 정보로 캡슐화하고 하위 계층으로 전달하는 작업이다.

 

  역다중화

역다중화는 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업이다.

 

   전송 계층에서 역다중화를 위한 요구사항

 

각 소켓은 유일한 식별자를 갖는다.

 

각 세그먼트는 출발지/목적지의 포트 번호를 세그먼트가 전달될 적절한 소켓을 가리키는 특별한 필드로서 가지고 있다.

UDP/TCP 세그먼트 형태

  UDP에서 다중화/역다중화

UDP 소켓은 목적지 IP와 목적지 포트번호로 구성된 두 요소로 된 집합에 의해 식별된다.

 

UDP 세그먼트 전달과정은 다음과 같다.

1. 세그먼트의 목적지 포트번호를 검사한다.

2. 세그먼트를 적절한 소켓으로 전달한다.

UDP통신 과정

UDP는 서버쪽 프로세스가 혼자 여러 개의 클라이언트 프로세스와 통신한다.

 

  TCP에서 다중화/역다중화

TCP 소켓은 출발지의 IP/포트번호, 목적지의 IP/포트번호에 의해 식별된다.

 

서버 호스트는 동시에 여러 개의 TCP 소켓을 지원한다.

TCP통신 과정(멀티 스레드)

 

TCP는 같은 소켓에 통신요청이 오면 자기와 같은 프로세스를 복사해서 서비스한다.

위의 그림은 멀티 스레드를 이용하여 프로세스의 추가 생성 없이 하나의 프로세스에서 여러 개의 통신을 처리한다.

 

UDP

 

UDP는 전송계층에서 할 수 있는 최소한의 기능으로 동작한다.

 

  UDP의 특징

- 연결 설정이 없다.

예비 동작 없이 전송하므로 설정에 따른 어떠한 지연도 없다

 

- 연결 상태가 없다.

연결 상태 유지를 위한 변수가 없으므로 TCP보다 많은 앱을 수용할 수있다.

 

- 헤더가 작다.

8 byte (TCP : 20 byte)

 

- 혼잡제어를 하지 않는다.

네트워크의 혼잡도를 고려하지 않으므로 앱이 요구하는 전송을 전송량 제한 없이 전송한다.

 

- best effort

패킷의 온전한 전송을 보장하지 않는다.

UDP 세그먼트 형태

리눅스 사용자 관리 관련 명령어

 

● 사용자등록정보 /etc/passwd

# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

계정 : 암호 : UID : GID : 주석 : 홈디렉토리 : 쉘

 

계정: 사용자 계정이름이다.

UID: 유저 식별 번호를 나타낸다. 0~1023은 시스템 id이다.

GID: 자신의 기본 그룹 번호를 나타낸다.

쉘: 내가 하는 작업을 실질적으로 안에서 실행하는 부분을 나타낸다.

 

  사용자패스워드, 암호정책정보 ‐/etc/shadow

# cat /etc/shadow

ora12c:$6 $bo580c3Q$ te9……9f2S9Bq/:18162:0:99999:7:::

 

$6 : 해시 알고리즘 종류를 나타낸다.

$bo580c3Q$ : salt 값을 나타낸다.

te9……9f2S9Bq/: salt + passwd의 해시값을 나타낸다.

 

  그룹의등록정보 ‐/etc/group

# cat /etc/group

root:x:0:

그룹명 : 암호 : GID : 소속계정

 

암호 항목은 이제 쓰이지 않는다.

계정은 여러 그룹에 속하고 기본 소속 그룹은 /etc/passwd 파일에 등록된다.

 

  groupadd

groupadd 는 그룹을 등록하는 명령어다.

사용자를 등록하기 전에 반드시 사용자가 속할 그룹이 먼저 만들어져 있어야 한다.

# groupadd [‐g  [그룹번호]]   [그룹명]

그룹번호는 반드시 직접 지정한다.

 

‐g  : 생성그룹의GID 번호를지정한다.

       할당하지 않으면1000 이상 중복되지 않은 값으로 GID가 자동으로 할당된다.

‐r  : 1000번 이하의 GID 번호를 자동으로 할당한다.

      1000번 이하의 GID는 시스템이 daemon이나 관리 목적으로 사용한다.

 

  groupdel

groupdel 은 그룹을 삭제하는 명령어다.

그룹 삭제는 반드시 그룹 명을 이용한다.

# groupdel   [그룹명]

 

  useradd(adduser)

useradd(adduser) 는 계정을 생성하는 명령어다.

# useradd [옵션] [사용자명]

 

‐u  : uid를 지정한다.

‐g  : gid나 그룹 명을 지정한다. (default : 계정명)

‐d  : 홈 디렉토리를 지정한다. (default : /home/[계정명])

‐G  : 보조 그룹을 지정

‐s : 쉘을 지정한다. 로그인이 필요 없는 관리용 계정은 /sbin/nologin으로 설정한다.

 

uid와 gid는 목록을 종이로 뽑아 가지고 있어야 한다.

 

  userdel

userdel 은 계정을 삭제하는 명령어다.

# userdel  ‐r  [사용자명]

 

‐r  : 계정에 귀속된 홈 디렉토리와 mailbox 등을 모두 삭제한다.

      계정 삭제 시 반드시 사용한다.

 

  특별한 사용자 생성 옵션

‐M : 메일 전용 계정을 생성한다.

       홈 디렉토리가 생성되지 않는다.

‐r : 999번 이하의 UID를 자동 할당한다.

     홈 디렉토리가 생성되지 않는다.

     서비스를 위한 더미 계정으로 보통 실사용자가 없다.

 

  passwd

사용자의 암호를 변경하는 명령어다.

관리자는 다른 사용자의 암호 임의 변경이 가능하다.

 

# passwd  [사용자계정]

or

# passwd