CS

[LINUX] 서버 간 방화벽 포트 열려있는지 확인하기 - telnet, curl, nc

뭉치v 2024. 5. 31.

 실무에서 종종 서버간 방화벽 포트를 열어야 될 때가 있다. 방화벽 작업 이후 정상적으로 열렸는지 확인하는 방법을 정리해두자. 회사 서버 보안 정책으로 telnet은 차단해놓는 경우가 있어서 추가로 몇가지 명령어를 알고 있으면 좋을 것 같아 정리해두었다.


telnet

설명

 `텔넷(TELNET)`은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜이다.  telnet이라는 용어는 프로토콜의 클라이언트 일부 기능이 추가된 소프트웨어를 일컫는다. TCP/IP 스택을 갖춘 대부분의 네트워크 장비와 운영 체제들은 원격 구성(윈도우 NT 기반)을 위해 몇 가지 종류의 텔넷 서비스 서버를 지원한다. 텔넷의 보안 문제 때문에 사용률이 감소하여 원격 제어를 위해 SSH로 대체됐다.

아래 간단한 방화벽 확인 커맨드를 확인해보자.

방화벽 확인방법 : telnet

# command
$ telnet ip port

# 연결 성공(5444포트 서비스가 떠있다면)
$ telnet 10.10.2.123 4567
Trying 10.10.2.123...
Connected to 10.10.2.123.
Escape character is '^]'.

# 바로 "Connection refused"가 뜬다면, 방화벽은 열려있지만 서비스 포트가 안올라와 있을 경우가 큼
# 연결 성공했으나, 서비스 포트가 안올라옴
$ telnet 10.10.2.123 80
Trying 10.10.2.123...
telnet: connect to address 10.10.2.123: Connection refused

# 연결 실패, 방화벽 상태 확인 필요 (trying에서 행이 걸림)
$ telnet 10.10.2.123 8080
Trying 10.10.2.123...

 

curl

설명

`cURL(/kɝl/ 또는 /kə:l/)`은 다양한 통신 프로토콜을 이용하여 데이터를 전송하기 위한 라이브러리와 명령 줄 도구를 제공하는 컴퓨터 소프트웨어 프로젝트이다. 이 이름은 "client URL"을 줄인 것이다.

방화벽 확인방법 : curl

# command
$ curl -v ip:port

# 연결성공 했으나, 해당 서버에 80포트 서비스가 없음
$ curl -v 10.10.2.123:80
*   Trying 10.10.2.123:80...
* connect to 10.10.2.123 port 80 failed: Connection refused
* Failed to connect to 10.10.2.123 port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to 10.10.2.123 port 80: Connection refused

# 연결성공 후, 4567 포트 상태 확인 성공
$ curl -v 10.10.2.123:4567
*   Trying 10.10.2.123:4567...
* Connected to 10.10.2.123 (10.10.2.123) port 4567 (#0)
> GET / HTTP/1.1
> Host: 10.10.2.123:4567
> User-Agent: curl/7.76.1
> Accept: */*
>
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer

# 연결 실패, 방화벽 상태 확인 필요
$ curl -v 10.10.2.123:8080
*   Trying 10.10.2.123:8080...

 

nc

설명

`netcat`, 또는 줄여서 nc는 TCP 또는 UDP를 사용하여 네트워크 연결을 읽거나 기록하는 컴퓨터 네트워킹 유틸리티이다. 이 명령어는 의존 가능한 백엔드로 설계되어 있으며 다른 프로그램이나 스크립트에 의해 직접 사용되거나 쉽게 구동할 수 있다. 동시에 기능이 풍부한 네트워크 디버깅 및 탐색 도구이다.

방화벽 확인방법 : nc

# command (-z:  , -v: verbose)
$ nc -zv ip port
# 범위 포트스캐닝도 가능하다
$ nc -zv 1.1.1.1 5400-5500 

# 연결 성공
$ nc -zv 10.10.2.123 4567
Connection to 10.10.2.123 4567 port [tcp/tram] succeeded!
# 연결 성공 했으나, 서비스 포트가 안올라와 있음
$ nc -zv 10.10.2.123 80
nc: connect to 10.10.2.123 port 80 (tcp) failed: Connection refused

# 연결 실패(trying 행)
$ nc -zv 10.10.2.123 8080
Trying 10.10.2.123...

 


참고로

ping은 TCP 통신이 아닌 ICMP 통신으로 port를 사용하지 않는다. ping은 인터넷 연결만 확인하고 특정 포트의 서비스 확인은 불가능하다.

OSI 7 LAYER

 

 

https://ko.wikipedia.org/wiki/%ED%85%94%EB%84%B7

https://ko.wikipedia.org/wiki/CURL

 

 

반응형

댓글

💲 추천 글