Q1) 공인 IP, 사설 IP 차이
IP 주소
컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호. 네트워크에 연결된 장치가 라우터이든 일반 서버이든, 모든 기계는 이 특수한 번호를 가지고 있어야 함. 이 번호를 이용하여 발신자를 대신하여 메시지가 전송되고 수신자를 향하여 예정된 목적지로 전달한다.
공인 IP: 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소. 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소
=> 세상에서 단 하나뿐인 IP
- 전세계에서 유일한 IP 주소
- 외부에 공개되어 있기에 인터넷에 연결된 다른 PC로부터의 접근이 가능. 따라서 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 O
사설 IP: 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소이며, 로컬 IP, 가상 IP라고도 한다. IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC 나 장치에 할당된다.
=> 내부망 전용 IP
사설IP 주소는 다음 3가지 주소대역으로 고정된다.
- Class A : 10.0.0.0 ~ 10.255.255.255
- Class B : 172.16.0.0 ~ 172.31.255.255
- Class C : 192.168.0.0 ~ 192.168.255.255
*사설 IP 대역 제외 모두 공인 IP 대역
사설 IP와 공인 IP의 차이
공인 IP (Public IP) | 사설 IP (Private IP) | |
할당 주체 | ISP(인터넷 서비스 공급자) | 라우터(공유기) |
할당 대상 | 개인 또는 회사의 서버(라우터) | 개인 또는 회사의 기기 |
고유성 | 인터넷 상에서 유일한 주소 | 하나의 네트워크 안에서 유일 |
공개 여부 | 내/외부 접근 가능 | 외부 접근 불가능 |
사설 IP 주소만으로는 인터넷에 직접 연결할 수 없다. 라우터를 통해 1개의 공인(Public) IP만 할당하고, 라우터에 연결된 개인 PC는 사설(Private) IP를 각각 할당 받아 인터넷에 접속할 수 있게 된다.
- 사설 IP를 할당받은 스마트폰 혹은 개인 PC가 데이터 패킷을 인터넷으로 전송하면, 라우터(공유기)가 해당 사설 IP를 공인 IP로 바꿔서 전송한다.
- 인터넷에서 오는 데이터 패킷의 목적지도 해당하는 사설 IP로 변경한 후 개인 스마트폰 혹은 PC에 전송한다.
고정 IP와 유동 IP
고정 IP: 컴퓨터에 고정적으로 부여된 IP로 한번 부여되면 IP를 반납하기 전까지는 다른 장비에 부여할 수 없는 IP 주소
유동 IP: 장비에 고정적으로 IP를 부여하지 않고 컴퓨터를 사용할 때 남아 있는 IP 중에서 돌아가면서 부여하는 IP 주소
인터넷 상에서 서버를 운영하고자 할 때는 공인 IP를 고정 IP로 부여해야 한다는 것이 중요. 즉, 공인 IP를 부여받지 못하면 다른 사람이 내 서버에 접속할 수가 없고, 고정 IP를 부여하지 않으면 내 서버가 아닌 다른 사람의 서버로 접속이 될 수도 있기 때문.
반면에 우리가 집에서 사용하는 인터넷 서비스 업체는 각 가정마다 공인 IP를 유동 IP로 부여하고, 공유기 내부에서는 사설 IP를 유동 IP로 부여하는 것이 일반적이라고 보면 될 것이다.
*127.0.0.1 ip 주소의 뜻은?
루프백 혹은 localhost 주소라고도 불림.
네트워크 통신이란 인터넷 상에 존재하는 호스트와 서로 패킷을 주고 받는 것이다. 이때, 호스트 A에서 B로 패킷을 전달하고 싶다고 생각해 보자. 그러면 A의 네트워크 계층에서 B의 네트워크 계층으로 패킷을 전송해야 한다. 패킷엔 목적지(B)의 IP 주소가 담겨 있다. 이 정보를 통해 B의 네트워크 계층에 도달한다면, B의 네트워크 계층은 수신한 패킷을 상위 계층들로 전달하고, 각 상위 계층은 알아서 패킷을 분해하고 순수 데이터(페이로드)를 수신할 것이다.
그런데 만약 목적지 IP 주소를 127.0.0.1로 설정하게 되면 A의 네트워크 계층은 이 패킷을 외부로 전송하지 않는다. 전송하지 않고 고스란히 자신이 다시 받은 것처럼 처리하여, 상위 계층으로 올려 보낸다. 즉 자신이 송신한 패킷을 그대로 수신한 효과를 준다.
사실 기술적으로는 127.0.0.X에 해당하는 모든 주소가 루프백이라고 한다. 하지만 일부 운영체제가 정확히 127.0.0.1을 입력해야 루프백으로 인식한다고 한다.
호스트: 네트워크에 연결되어 있는 컴퓨터들. 즉 ip를 가지고 있고 양방향 통신이 가능한 컴퓨터
Q2) iptables 명령어 액션값 공부
리눅스에서 방화벽을 설정하는 도구
netfiter 기능을 사용자 공간에서 제어하는 수준으로 사용 가능
특정 조건을 가지고 있는 패킷에 대하여 ACCEPT, DORP을 지정할 수 있으며 , 특정 조건등을 통해 다양한 필터링과 처리 방식을 지원한다.
*패킷필터링 : 패킷을 헤더(도착지,출발지, 프로토콜, 옵션, 체크썸)을 걸러준다.
iptable 정책은 여러 구분으로 나눠지며 중요한 부분은 chain이라고 볼 수 있는다
패킷이 조작될 상태를 지정하며 iptables에 내장된 기본 chain은 INPUT, OUTPUT, FORWARD가 있다. 이외 -N으로 지정하는 사용자 정의 chain이 있다.
INPUT: 호스트 컴퓨터를 향한 모든 패킷
OUTPUT: 호스트 컴퓨터에서 발생하는 모든 패킷
FORWARD: 호스트 컴퓨터가 목적지가 아닌 모든 패킷, 즉 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷.
ㅈ
명령어 구조
iptables -A INPUT -s [발신자] --sport [발신자 포트] -d [목적지] -dport [목적지 포트] -j [정책]
1. 기본정책을 accept로 설정하기
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD ACCEPT
2. 현재 방화벽 규칙보기
#iptables --list or iptables -L
3. 규칙 추가 후에 저장하기
# service iptables save -> /etc/sysconfig/iptables에 저장
4. 현재 규칙 초기화하기
iptables -F
5. 적용 상태 확인
iptables -nvL
6. 특정 IP 차단
#iptables -I INPUT -s xxx.xxx.xxx -j DROP
7. 특정 IP 허용
#iptables -A INPUT -s xxx.xxx.xxx -j ACCEPT
8. 특정 포트 차단
#iptables -A INPUT -p tcp --dport xxxx -j DROP
9. 특정 IP 포트 허용
#iptavles -A INPUT -p tcp -s xxx.xxx.xxx.xxxx --dport xxxx -j ACCEPT
127.0.0.1 즉 로컬에서 요청되는 모든 ICMP 패킷에 대해 무시하려면?
iptables -A INPUT -s 127.0.0.1 -p imcp -j DROP
기본 명령어 | 설명 |
-N (new chain) | 새로운 체인 만듬 |
-L (--list) | 새로운 규칙을 만듬 |
-X (--delete-chain) | 비어 있는 체인 삭제 |
-P (--policy) | 기본 정책 변경 |
-F (--flush) | 체인의 모든 규칙을 삭제 |
-A (--append) | 새로운 규칙을 추가 |
-I (--insert) | 새로운 규칙을 삽입 |
-R (--replace) | 새로운 규칙을 교체 |
-D (--delete) | 규칙을 삭제 |
-C (--ckeck) | 패킷을 테스트 |
제어 명령어
제어 명령어 | 설명 |
-s | 출발지 주소 |
-d | 목적지 주소 |
--sport | 출발지 포트번호 |
--dport | 목적지 포트번호 |
-p | 프로토콜 |
-i | 패킷이 들어오는 네트워크 인터페이스 |
-o | 패킷이 나가는 네트워크 인터페이스 |
-f | 분절된 패킷 |
-j | 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시 |
타겟
ACCEPT: 패킷을 받아들임
DROP: 패킷을 버림(패킷이 전송된 적이 없던 것처럼)
REJECT: 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송
LOG: 패킷을 syslog에 기록
RETURN: 호출 체인 내에서 패킷 처리를 지속
Q3) netstat -nat 액션값 정확히 이해
nestat 명령어: netstat - 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구
netstat [옵션] [| grep 포트 번호 or 서비스 명]
option | |
-l | 연결 가능한 상태 |
-n | 포트 넘버 |
-t (tcp) | tcp |
-u (udp) | udp |
-p | 프로그램 이름 / PID |
-a | 모두 |
-i | 이더넷 카드별 정상/에러/드랍 송수신 패킷 수 확인 |
-r | 라우팅 테이블 |
-s | 네트워크 통계 |
자주 사용 하는 옵션
netstat -nap : 연결을 기다리는 목록과 프로그램을 보여준다
netstat -an | grep 포트번호 : 특정 포트가 사용 중에 있는지 확인
netstat -nlpt : TCP listening 상태의 포트와 프로그램을 보여준다
- Proto : 프로토콜 종류. TCP / UDP / RAW
- Recv-Q : 해당 process가 현재 받는 바이트 표기
- Send-Q : 해당 process가 현재 보내는 바이트 표기
- Local Address : 출발지 주소 및 포트. 자신의 주소 및 포트
- Foreign Address : 목적지 주소 및 포트
- State : 포트의 상태 표기.
netstat 상태 값
State | description |
CLOSED | 완전히 연결이 종료된 상태 |
CLOSING | 흔하지 않으나 주로 확인 메시지가 전송 도중 유실된 상태 |
CLOSE_WAIT | TCP 연결이 상위 응용프로그램 레벨로부터 연결 종료를 기다리는 상태 |
ESTABLISHED | 서버와 클라이언트 간에 세션 연결이 성립되어 통신이 이루어지고 있는 상태 (클라이언트가 서버의 SYN을 받아서 세션이 연결된 상태) |
FIN_WAIT1 | 클라이언트가 서버에게 연결을 끊고자 요청하는 상태(FIN을 보낸 상태) |
FIN_WAIT2 | 서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태 (서버가 클라이언트로부터 최초로 FIN을 받은 후, 클라이언트에게 ACK를 주었을 때 |
LAST_ACK | 호스트가 원격지 호스트의 연결 종료 요구 승인을 기다리는 상태 (서버가 클라이언트에게 FIN을 보냈을 때의 상태) |
LISTEN | 서버의 데몬이 떠 있어서 클라이언트의 접속 요청을 기다리고 있는 상태 |
SYN_SENT | 클라이언트가 서버에게 연결을 요청한 상태 |
SYN_RECEIVED | 서버가 클라이언트로부터 접속 요구(SYN)을 받아 클라이언트에게 응답(SYN/ACK)하였지만, 아직 클라이언트에게 확인 메시지(ACK)는 받지 못한 상태 |
TIME_WAIT | 연결은 종결되었지만 당분간 소켓을 열어 놓은 상태, 약 1분 정도이며 시간이 지나면 사라짐 |
UNKNOWN | 소켓의 상태를 알 수 없음 |
Local Address column은 현재 열려있거나 혹은 리스닝하고있는 ip, port를 나타낸다. 만약 해당 ip가 0.0.0.0이라면 all interface를 받는 다는 뜻이며 모든 ip에 대해서 열려있다는 뜻이다. 반대로 127.0.0.1로 되어있다면 loopback이라는 뜻으로 자기자신만 호출가능한 상태
Q4) OSI 7계층
OSI 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문임. 또한 특정한 곳에 이상이 생기면 이상이 생긴 단계만 고쳐서 해결할 수 있음.
물리계층(Physical Layer)
7계층 중 최하위 계층입니다. 주로 전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송하게 됩니다. 데이터는 0과 1의 비트열, 즉 On, Off의 전기적 신호 상태로 이루어져있지요.
이 계층은 단지 데이터를 전달하기만 합니다. 어떤 에러가 있는지 등 그런 기능에는 전혀 관여하지 않습니다.
데이터링크 계층(Data-Link Layer)
물리 계층에서 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 합니다.
데이터 링크 계층의 데이터 전송은 Point-To-Point 간 입니다.
안전한 정보의 전달이라는 것은 오류나 재전송하는 기능을 갖고 있다는 이야기죠. 또한 우리가 언젠가 한번 들었을 MAC주소를 갖고 있습니다. 그래서 통신을 할 수 있지요.
이 계층에서 부르는 데이터의 단위는 프레임(Frame)이라고 합니다.
네트워크 계층(Network Layer)
네트워크 계층은 네트워크에서 아주 중요합니다.
중요한 기능 중 한가지는 바로 라우팅이라고 하는데요. 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능을 말합니다. 따라서 최적의 경로를 설정해야하지요.
이런 라우팅 기능을 맡고 있는 계층이 네트워크 계층입니다.
또한 어느 컴퓨터에게 데이터를 전송할지 주소를 갖고 있어서 통신을 합니다. 우리가 자주 듣는 IP 주소가 바로 네트워크 계층 헤더에 속해있습니다.
네트워크 계층에서 부르는 데이터 단위는 패킷(Packet)이라고 합니다.
전송 계층(Transport Layer)
전송 계층 역시 네트워크에서 중요한 계층입니다. 전송 계층은 양 끝단의 사용자들이 신뢰성있는 데이터를 주고 받게 해주는 역할을 합니다.
송신자와 수신자 간의 신뢰성있고 효율적인 데이터를 전송하기 위하여 오류검출 및 복구, 흐름제어와 중복검사 등을 수행합니다.
중요한 것은 데이터 전송을 위해서 Port 번호가 사용이 됩니다. 대표적인 프로토콜로는 TCP와 UDP가 있습니다. 이 계층에서 사용하는 데이터 단위는 세그먼트(Segment)라고 합니다.
세션 계층(Session Layer)
세션 계층은 응용 프로세스가 통신을 관리하기 위한 방법을 정의합니다.
이 계층은 세션을 만들고 없애는 역할을 하고 있지요.
표현 계층(Presentation Layer)
데이터를 어떻게 표현할 지 정하는 역할을 하는 계층으로 일종의 확장자라고 이야기하면 편하겠네요.
표현 계층은 세가지의 기능을 갖고 있습니다.
1. 송신자에서 온 데이터를 해석하기 위한 응용계층 데이터 부호화, 변화
2. 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
3. 데이터의 암호화와 복호화
MIME 인코딩이나 암호화 등의 동작이 표현계층에서 이루어집니다. EBCDIC로 인코딩된 파일을 ASCII 로 인코딩된 파일로 바꿔주는 것이 한가지 예이지요.
응용 계층(Application Layer)
사용자와 가장 가까운 계층이 바로 응용 계층입니다. 우리가 사용하는 응용 서비스나 프로세스가 바로 응용계층에서 동작합니다.
공인(Public) && 사설(Private) IP의 차이점
💻➡🌏 : 사설 IP를 할당받은 스마트폰 혹은 개인 PC가 데이터 패킷을 인터넷으로 전송하면, 라우터(공유기)가 해당 사설 IP를 공인 IP로 바꿔서 전송한다.
velog.io
https://woo-dev.tistory.com/190
https://base-on.tistory.com/379
https://brownbears.tistory.com/151
https://blog.voidmainvoid.net/201
[Linux] iptables 설정
iptables 세팅을 잘못하면 서버접속을 못하는 상황이 생기므로 신중하게 해야합니다. iptables 옵션 테이블(tables) 우선 iptables에는 테이블이라는 광범위한 범주가 있는데, 이 테이블은 filter, nat, mang
brownbears.tistory.com
리눅스)iptables 명령어 알아보기
iptables 리눅스에서 방화벽을 설정하는 도구구이며 netfiter 기능을 사용자 공간에서 제어하는 수준으로 사용가능하다. 특정 조건을 가지고 있는 패킷에 대하여 ACCEPT,DORP을 지정할 수 있으며 , 특정
base-on.tistory.com
IP 주소 127.0.0.1 의 의미 - 루프백(loopback) or 로컬호스트(localhost) 주소
네트워크에선 특수한 IP 주소로 127.0.0.1이라는 IP 주소가 있다. 한 번씩 봤을 법한 주소인데, 이는 루프백(loopback) 혹은 로컬호스트 주소(localhost)라고도 불린다. 네트워크 통신이란 인터넷 상에 존
woo-dev.tistory.com
공인(Public) && 사설(Private) IP의 차이점
💻➡🌏 : 사설 IP를 할당받은 스마트폰 혹은 개인 PC가 데이터 패킷을 인터넷으로 전송하면, 라우터(공유기)가 해당 사설 IP를 공인 IP로 바꿔서 전송한다.
velog.io
'CS' 카테고리의 다른 글
ARP 스푸핑, 공격 기법, 과정 (0) | 2021.07.27 |
---|---|
NAT 개념 공부 (0) | 2021.07.27 |
[보안기술 3주차] (0) | 2021.07.05 |
OWASP TOP 10, 국정원 8대 취약점 (0) | 2021.06.28 |
[1주차] 보안 기술 공격:: 크롬 개발자 모드 공부해보기 (0) | 2021.06.28 |