[리눅스] 포트 오픈 확인 (feat. telnet, ncat/nc, curl, bash)

반응형

 

리눅스에서는 일반적으로 상대 장비의 방화벽이나 서비스 정상 여부를 판별할 때 IP와 Port 번호를 가지고 조회하는데, 이때 보통 telnet을 가장 많이 사용하는 것 같다. 하지만 telnet 서비스 자체가 보안에 취약하며, 기본적으로 설치가 안되어 있는 곳도 있다 보니 최근에는 다른 명령어를 사용해 확인하고 있는 곳이 많다.

 

어떤 방법들이 있는지 알아보자.

 

1. telnet

telnet [IP] [Port]

* 포트가 오픈된 경우
[servera]# telnet 172.30.1.200 82
Trying 172.30.1.200...
Connected to 172.30.1.200.
Escape character is '^]'.


* 포트가 차단된 경우
[servera]# telnet 172.30.1.200 80
Trying 172.30.1.200...
telnet: connect to address 172.30.1.200: Connection refused

 

 

2. ncat

ncat -zv [IP] [Port]

또는

nc -zv [IP] [Port]

 

-z : 오픈 여부 상태만 표시

-v : 상세 내용 표시

* TCP가 아닌 UDP 프로토콜 확인 시 -u 플래그 사용해야 함

* 포트가 오픈된 경우
[servera]# ncat -vz 172.30.1.200 82
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 172.30.1.200:82.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.


* 포트가 차단된 경우
[servera]# ncat -vz 172.30.1.200 80
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connection refused.

 

 

3. curl

curl -v [IP]:[Port]

-v : 상세 내용 표시

* 포트가 오픈된 경우
[servera]# curl -v 172.30.1.200:82
*   Trying 172.30.1.200:82...
* Connected to 172.30.1.200 (172.30.1.200) port 82 (#0)
> GET / HTTP/1.1
> Host: 172.30.1.200:82
> User-Agent: curl/7.76.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 403 Forbidden
< Date: Fri, 05 Apr 2024 18:37:58 GMT
< Server: Apache/2.4.57 (Rocky Linux)
< Last-Modified: Wed, 21 Feb 2024 13:12:33 GMT
< ETag: "1dc4-611e4146a7240"
< Accept-Ranges: bytes
< Content-Length: 7620
< Content-Type: text/html; charset=UTF-8

<!doctype html>
<html>
  <head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <title>HTTP Server Test Page powered by: Rocky Linux</title>
    <style type="text/css">
      /*<![CDATA[*/

      html {
        height: 100%;
        width: 100%;
      }
(...생략)


* 포트가 차단된 경우
[servera]# curl -v 172.30.1.200:80
*   Trying 172.30.1.200:80...
* connect to 172.30.1.200 port 80 failed: Connection refused
* Failed to connect to 172.30.1.200 port 80: Connection refused
* Closing connection 0

 

 

4. bash 쉘의 butil in 기능

echo > /dev/tcp/[IP]/[Port]

위 명령어 실행 후 아래 명령어로 상태 확인

echo $?

결과값은 0 또는 1

0 : 정상 연결

1 : 연결 안됨

* 포트가 오픈된 경우
[servera]# echo > /dev/tcp/172.30.1.200/82
[servera]# echo $?
0


* 포트가 차단된 경우
[servera]# echo > /dev/tcp/172.30.1.200/80
-bash: connect: Connection refused
-bash: /dev/tcp/172.30.1.200/80: Connection refused
[servera]# echo $?
1

 

반응형

댓글

Designed by JB FACTORY