[리눅스] 포트 오픈 확인 (feat. telnet, ncat/nc, curl, bash)
- IT/linux
- 2024. 4. 7. 12:51
반응형
리눅스에서는 일반적으로 상대 장비의 방화벽이나 서비스 정상 여부를 판별할 때 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
반응형
'IT > linux' 카테고리의 다른 글
[리눅스] SELinux 개념 및 설정 방법, on/off (feat. semanage) (2) | 2024.04.09 |
---|---|
[리눅스] ACL과 POSIX 권한: 개념과 우선순위 (0) | 2024.04.08 |
[리눅스] RHCSA 9(5), SELinux 트러블 슈팅 (feat. semanage, sealert, curl, ncat) (1) | 2024.04.04 |
[리눅스] RHCSA 9(4), 계정/그룹 생성 및 패스워드 설정(feat. nologin, --stdin) (0) | 2024.04.01 |
[리눅스] RHCSA 9(3), Repository 등록 (feat.gpgkey, gpgcheck) (0) | 2024.03.28 |