#1. 네트워크와 방화벽

1. 네트워크의 개념

1) TCP/IP

  • 네트워크 전송 프로토콜이며, 인터넷 표준 프로토콜(규약)이다.
  • Transmission Control Protocol의 줄임말로 Internet Protocol이라고도 한다.
구분 설명
TCP 전송 데이터를 일정 단위(패킷)으로 나누고 포장하는 것에 관한 규약
IP 직접 데이터를 주고 받는 것에 관한 규약

※ 패킷

  • 데이터를 전송 할 때 한번에 다 전송하지 않고 여러 단위로 나누어서 전송하는데 이 단위를 패킷이라고 부른다.
  • 1패킷은 0.5kb(512byte)이다.

 

2) IP주소

  • 네트워크상에 존재하는 컴퓨터의 고유번호.
  • IPv4 방식과 IPv6 방식이 존재하며, IPv6는 잘 사용되지 않는다.
  • 숫자 4개로 IP주소를 표현하며, 각 숫자는 0~255 까지의 범위를 갖는다.
  • 로컬 컴퓨터의 주소를 의미하는 IP는 127.0.0.1( == localhost)로 고정되어 있다.
IP 클래스 범위 설명
A 0.0.0.0 ~ 127.255.255.255 255.0.0.0
B 128.0.0.0 ~ 191.255.255.255 255.255.0.0
C 192.0.0.0 ~ 223.255.255.255 255.255.255.0 (일반 컴퓨터용)
D 224.0.0.0 ~ 239.255.255.255 멀티캐스트용
E 240.0.0.0 ~ 255.255.255.255 연구용 등으로 예약
  • C클래스 IP는 크게 공인 IP사설 IP로 나누어진다.

 

- 공인 IP

  • 공인 기관에서 할당 받아 사용하는 IP.
  • 네트워크 상에 공개된 유일한 IP 번호로서, 공인 IP를 알면 누구나 쉽게 접속이 가능하다.
  • 임대료가 상당히 비싸다.

- 사설 IP

  • 내부적으로만 사용하기 때문에 내부 IP라고도 한다.
  • 주로 공유기 등의 장비를 통해 할당 받는 IP.
  • 외부로부터 접근이 불가능하다.
  • 사설 IP의 대역은 아래와 같이 정해져 있다.
    • 10.0.0.1 ~ 10.255.255.254
    • 172.16.0.1 ~ 172.31.255.254 (학원)
    • 192.168.0.1 ~ 192.168.255.254 (대부분 가정에서 사용)

 

3) 호스트이름과 도메인이름

  • IP 주소는 숫자로 이루어져 있어 사용하기 불편하다는 단점이 있다.
  • 이를 사용하기 편한 문자열 형태로 이루어진 호스트 이름과 도메인 이름이 만들어졌다.
  • 호스트 이름과 도메인 이름을 이용하여 서버에 접속하기 위해서는 해당 이름들이 DNS 서버에 등록되어 있어야 한다.

http://www.example.com

- 호스트 이름

  • 인터넷 주소의 처음에 위치한다. (ex. www)
  • 서버 컴퓨터에 지정된 문자열 이름이다.

- 도메인 이름

  • 해당 기관을 대표하는 인터넷 주소를 나타낸다.

 

4) 서브넷 마스크

  • 하나의 네트워크를 구분하는 단위이다.
  • IP 주소는 네트워크 주소호스트 주소로 나눌 수 있다.
    • 아파트 단지를 예로들면, 아파트 단지를 뜻하는게 네트워크 주소이고, 몇 동인지를 뜻하는게 호스트 주소이다.
  • IP 주소에서 네트워크 주소와 호스트 주소를 구분하는 값으로 사용된다.
    • 예를들어 255.255.0.0 이라는 네트워크 주소가 있다면 앞에 두 자리가 네트워크 주소이고, 뒤에 두 자리가 호스트 주소가 된다.
  • 내부 IP 사용시 네트워크 주소가 동일한 컴퓨터 끼리 접속이 가능하다.

※ 브로드캐스트(Broadcast) 주소

  • 네트워크상의 모든 컴퓨터와 통신하는 IP 주소로서 네 번째 값이 255이다. (ex. 192.168.83.255)

 

5) 게이트웨이 (Gateway)

  • 외부 네트워크로 통신을 하기 위한 통로.
  • 내부 네트워크에서 외부 네트워크로 연결되는 컴퓨터 혹은 라우터가 게이트웨이 역할을 한다.
    • 라우터: 네트워크 트래픽을 포워딩 해야 하는 최적 경로를 결정하는 장비 (공유기)

 

6) DNS

  • IP 주소를 호스트와 도메인 이름으로 변환해 주는 서비스를 제공하는 서버이다.
    • 즉, IP 주소와 도메인이 매칭되어 있는 데이터베이스.
  • KT가 운영하는 DNS의 경우 168.126.36.1과 168.126.36.2 가 있다.

 

2. 네트워크 관련 명령어

1) IP 주소 확인하기

  • ifconfig 명령어로 IP주소를 확인 할 수 있지만, 이 명령어를 사용하기 위해서는 net-tools를 설치해야 한다.
  • Mac에서는 설치 없이 사용할 수 있지만, Ubuntu에서는 설치해야 사용할 수 있다.
$ sudo apt-get update
$ sudo apt-get install net-tools

$ ifconfig

# ifconfig 장치명
# 형식의 명령어로 특정 장치에 대한 정보만 확인할 수 있다.

 

2) 네트워크 접속 가능 여부 확인하기

  • 1초마다 목적지 컴퓨터로 패킷을 전송하고 다시 수신함으로서 대상 컴퓨터가 네트워크에 접속 되어 있는지를 확인하는 명령이다.
  • ping에 응답한다는 것은 접속 가능하다는 의미이며, 이는 해킹이 가능하다는 의미로 해석될 수 있기 때문에 최근에는 방화벽을 통해 ping에 응답하지 않도록 설정한다.
$ ping 접속대상주소

※ 명령어가 동작하거나 대기중인 상태에서 ctrl + c를 눌러 동작을 중단해야 한다.

 

- ping에 정상적으로 응답하는 경우

  • ctrl + c 를 눌러 ping을 종료하면 7패킷을 보냈고(보낸 시간에 따라 다름), 7패킷을 수신했다는 메세지가 나온다. (0% 손실)
  • 0% 손실이라는 것은 100% 접속 가능하다는 것을 뜻한다.

 

- ping에 응답이 없는 경우

  • ctrl + c 를 눌러 ping을 종료하고 하면 6패킷을 보냈지만, 0패킷을 수신했다는 메세지가 나온다. (100% 손실)

 

3) DNS 상태 점검 명령어

  • DNS 서버에 접속하여 동작이 잘 되는지 검사하는 명령어.
  • DNS로 부터 특정 도메인에 대한 IP주소를 조회한다.
$ nslookup 조회할도메인주소

naver는 4대의 시스템을 가지고 있는것을 볼 수 있다. (로드밸런싱, 부하분산)

 

4) 방화벽

  • 미리 정의된 보안 규칙에 기반하여 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다.
  • 일반적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성한다.
  • 우분투 리눅스에서의 방화벽은 ufw 라는 서비스가 담당하고, 우분투 설치시 기본으로 설치된다.

방화벽 설정

 

- 방화벽 활성화

$ sudo ufw enable

 

- 방화벽 비활성화

$ sudo ufw disable

 

- 방화벽 상태 확인

$ sudo ufw status

 

- 모든 외부 접속 차단하기

  • 효율적인 방화벽 운용방법은 모든 외부 접근을 차단한 상태에서 외부 접근을 허용하고자 하는 포트만 부분적으로 오픈하는것이다.
$ sudo ufw default-deny

 

- 모든 외부 접속 허용하기

  • 이 명령어를 수행하는 순간 내 컴퓨터를 오픈 ..
  • Mac의 경우에 모든 외부 접속을 허용하는게 기본값이다.
$ sudo ufw default allow

 

- 특정 포트 접근 허용하기

  • ufw는 기본적으로 모든 port에 대해 외부 접근을 차단하기 때문에 ufw allow 명령어를 사용하면 서버의 특정 port로의 접근을 허용할 수있다.
  • 허용할 port의 범위 지정 가능.
$ sudo ufw allow [port_number]

# SSH를 위한 22번 port 접근 허용
$ sudo ufw allow 22

# 2222번 port 접근 허용
$ sudo ufw allow 2222

# 2222번 port tcp 접근 허용
$ sudo ufw allow 2222/tcp

# 3000~3010 port tcp 접근 허용 
$ sudo ufw allow 3000:3010/tcp

 

- 특정 IP 접근 허용하기

  • port 뿐만 아니라 ip를 통한 접근 권한 부여도 가능하다.
  • 똑같이 ufw allow 명령어를 사용하여 해당 동작을 수행
$ sudo ufw allow from [IP address]

# 123.4.56.7 IP에 대해 모든 port 접근 허용
$ sudo ufw allow from 123.4.56.7

 

- 특정 IP 접근 제한하기

  • 특정 IP로 부터 공격이 들어오는 경우 ufw deny 명령어를 통해 특정 IP를 차단할 수 있다.
$ sudo ufw deny from [IP address]

# 123.45.6.78 IP에 대해 모든 port 접근 제한
$ sudo ufw deny from 123.45.6.78

 

- 방화벽 규칙 삭제

  • ufw delete 명령어를 사용하여 ufw rule을 삭제할 수 있다.
$ sudo ufw delete [rule]

# 2222/tcp 접근 허용 rule을 제거
$ sudo ufw delete allow 2222/tcp

 

- 방화벽 규칙 다시 로드

  • 설정한 규칙을 적용하기 위해서는 반드시 수행해야 한다.
$ sudo ufw reload

 

- 방화벽 규칙 리셋

$ sudo ufw reset

 

5) ping 차단하기

  • ufw는 기본적으로 ping 요청을 허용한다. 보안을 위해서 ping 요청을 차단하는 것이 좋다.
# vi편집기로 아래 파일을 연다

$ sudo vi /etc/ufw/before.rules

위 이미지의 해당 부분을 찾아 ACCEPT라고 되어 있는 부분을
DROP으로 바꾸고 :wq로 저장한다.

  • 설정이 완료 되면 sudo ufw reload 명령어로 방화벽을 다시 로드해준다.

리눅스 서버를 종료하고 외부에서 ping 요청을 시도하면 실패하는것을 볼 수 있다.

'국비수업 > Linux' 카테고리의 다른 글

[Linux] SSH 서비스  (0) 2022.07.24
[Linux] FTP (File Transfer Protocol)  (0) 2022.07.23
[Linux] 서비스와 리눅스 패키지  (0) 2022.07.21
[Linux] 쉘(Shell)  (0) 2022.07.20
[Linux] 프로세스 관리  (0) 2022.07.20

+ Recent posts