Linux에서 열린 포트를 확인하는 방법: 1. nmap 도구를 사용하여 열린 포트를 감지합니다. 2. netstat 도구를 사용하여 열린 포트를 감지합니다. 3. lsof 도구를 사용하여 열린 포트를 감지합니다. 5. netcat 도구를 사용하여 열린 포트를 감지합니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
네트워크 기술에서 포트에는 논리적 포트와 물리적 포트의 두 가지 유형이 있습니다. 물리적 포트는 RJ-45 포트, SC 포트 등과 같은 다른 네트워크 장치에 연결하는 데 사용되는 ADSL 모뎀, 허브, 스위치 및 라우터의 인터페이스와 같은 물리적으로 존재하는 포트를 의미합니다. 논리적 포트는 TCP/IP 프로토콜의 서비스 포트와 같이 논리적인 의미에서 서비스를 구별하는 데 사용되는 포트를 의미합니다. 포트 번호의 범위는 웹 브라우징 서비스의 경우 포트 80, FTP 서비스의 경우 포트 21입니다. . 기다리다. 물리적 포트와 논리적 포트의 수가 많기 때문에 포트를 구별하기 위해 각 포트에 번호가 지정됩니다.
포트는 포트 번호에 따라 3가지 주요 범주로 나눌 수 있습니다. 잘 알려진 포트 포트)
인식되는 포트 번호 범위는 0부터 1023까지입니다. 일부 일반 서비스와 밀접하게 연결되어 있습니다. 예를 들어 FTP 서비스는 포트 21을 사용합니다. /etc/services에서 이 매핑 관계를 볼 수 있습니다.
2: 등록된 포트:
1024부터 49151까지. 일부 서비스와 느슨하게 연결되어 있습니다. 즉, 이러한 포트에는 많은 서비스가 바인딩되어 있으며 이러한 포트는 다른 많은 목적으로도 사용됩니다.
3: 동적 및/또는 개인 포트
동적 포트, 즉 개인 포트 번호)는 인터넷의 전송 제어 프로토콜 또는 사용자 전송 프로토콜을 사용하여 소프트웨어가 다른 소프트웨어와 통신하는 데 사용할 수 있는 포트 수입니다. 동적 포트 범위는 일반적으로 49152에서 65535까지입니다.
Linux에는 제한된 포트 범위가 있습니다. 내 프로그램에 대해 특정 포트를 예약하려면 이 포트 범위를 제어해야 합니다. /proc/sys/net/ipv4/ip_local_port_range는 로컬 TCP/UDP 포트 범위를 정의할 수 있습니다. net.ipv4.ip_local_port_range = 1024 65000
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 [root@localhost ~]# echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
포트와 서비스에 관해서는 공중 화장실에 비유한 적이 있습니다. 공중 화장실의 화장실은 시스템의 각 포트와 같습니다. 사람들에게 편의를 제공하는 것이 소위 서비스입니다. 이러한 서비스를 제공하려면 누군가가 화장실에 갈 때 포트(화장실)를 열어야 합니다. 링크는 이러한 포트에 설정됩니다. 그 화장실을 누군가가 점유하고 있다면 그것은 서비스가 포트번호를 점유하고 있다는 뜻이다. 어느 날 여기에 공중화장실 서비스가 없고 공중화장실이 철거된다면 당연히 포트번호는 없을 것이다. 사실 좀 더 생생한 예는 은행 로비와 같고, 포트번호는 카운터이고, 그 번호를 받아 업무를 처리하는 사람들은 서버에 연결된 다양한 클라이언트와 같다. 포트 리디렉션 기술을 통해 카운터에 비즈니스 연락처를 보냅니다. 또 다른 이해하기 쉬운 예를 들자면, 항구 번호는 고속철도의 각 역과 같습니다. 예를 들어 창사(Changsha), 웨양(Yueyang) 등은 각각 기차표를 통해 해당 역으로 가는 항구 번호를 나타냅니다. 이는 각 응용 프로그램이 서버로 보내는 포트 IP 패킷과 같습니다.
1: nmap 도구는 열린 포트를 감지합니다.
nmap은 네트워크 스캐닝 및 호스트 감지 도구입니다. nmap 설치는 rpm 설치를 위해 아래와 같이 매우 간단합니다.
[root@DB-Server Server]# rpm -ivh nmap-4.11-1.1.x86_64.rpm warning: nmap-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:nmap ########################################### [100%] [root@DB-Server Server]# rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm warning: nmap-frontend-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:nmap-frontend ########################################### [100%] [root@DB-Server Server]#
nmap 사용에 관해서는 길게, 클로즈업해서 작성하셔도 되지만 여기서는 확장하지 않겠습니다. 아래와 같이 nmap 127.0.0.1은 이 머신의 열려 있는 포트를 확인하고 모든 포트를 검색합니다. 물론 다른 서버 포트도 스캔할 수 있습니다.
[root@DB-Server Server]# nmap 127.0.0.1 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2016-06-22 15:46 CST Interesting ports on localhost.localdomain (127.0.0.1): Not shown: 1674 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 631/tcp open ipp 1011/tcp open unknown 3306/tcp open mysql Nmap finished: 1 IP address (1 host up) scanned in 0.089 seconds You have new mail in /var/spool/mail/root [root@DB-Server Server]#2: netstat 도구는 열린 포트를 감지합니다
[root@DB-Server Server]# netstat -anlp | grep 3306
tcp 0 0 :::3306 :::* LISTEN 7358/mysqld
[root@DB-Server Server]# netstat -anlp | grep 22
tcp 0 0 :::22 :::* LISTEN 4020/sshd
tcp 0 52 ::ffff:192.168.42.128:22 ::ffff:192.168.42.1:43561 ESTABLISHED 6198/2
[root@DB-Server Server]#
위에서 볼 수 있듯이 이 도구는 nmap보다 덜 간결하고 명확하지 않습니다. 물론 nmap만큼 강력하지는 않습니다.
3: lsof 도구는 열린 포트를 감지합니다[root@DB-Server Server]# service mysql start
Starting MySQL......[ OK ]
[root@DB-Server Server]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 7860 mysql 15u IPv6 44714 TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]#
[root@DB-Server Server]# lsof -i TCP| fgrep LISTEN cupsd 3153 root 4u IPv4 9115 TCP localhost.localdomain:ipp (LISTEN) portmap 3761 rpc 4u IPv4 10284 TCP *:sunrpc (LISTEN) rpc.statd 3797 rpcuser 7u IPv4 10489 TCP *:1011 (LISTEN) sshd 4020 root 3u IPv6 12791 TCP *:ssh (LISTEN) sendmail 4042 root 4u IPv4 12876 TCP localhost.localdomain:smtp (LISTEN)4: Telnet을 사용하여 포트가 열려 있는지 감지합니다
서버 포트가 수신 대기 상태에 있지만 방화벽 iptables가 포트를 차단하는 경우에도 포트가 열려 있으므로 이 방법을 사용할 수 없습니다.
5: netcat 도구는 포트가 열려 있는지 감지합니다.[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
0
[root@DB-Server ~]# nc -vv 192.168.42.128 1433
nc: connect to 192.168.42.128 port 1433 (tcp) failed: No route to host
관련 추천: "
위 내용은 Linux에서 열려 있는 포트를 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!