대부분의 사람들은 열려 있는 포트를 확인하는 것이 보안 전문가만이 수행하는 작업이라고 생각합니다. 자신이 듣고 있는지도 몰랐던 노출된 포트를 통해 서버가 손상될 때까지 말이죠. netstat, ss, lsof, nmap 및 netcat과 같은 내장 명령을 사용하여 Linux에서 열려 있는 포트를 확인하거나 Windows 시스템에서 PowerShell을 사용하여 원격으로 포트를 스캔할 수 있습니다. 각 방법은 다양한 세부 수준을 제공하며 다양한 권한이 필요합니다.
항구 관리는 그 어느 때보다 중요합니다. 자동화된 정찰 활동이 계속 증가하고 있으며 공격자는 취약한 진입점을 지속적으로 조사합니다. 프로덕션 서버를 보호하든 로컬 서비스를 테스트하든 포트 보안을 마스터하는 것은 안전하고 기능적인 시스템을 유지하는 데 필수적입니다.
요약: 간략한 개요
- 추가 도구를 설치하지 않고도 ss 또는 netstat를 사용하여 수신 포트를 빠르게 확인할 수 있습니다.
- 상세한 서비스 감지를 통해 포괄적인 포트 스캐닝이 필요한 경우 nmap을 배포하세요.
- lsof를 사용하여 특정 포트를 사용하는 특정 프로세스를 식별합니다.
- Windows에서 PowerShell의 Test-NetConnection을 사용하여 원격 Linux 서버의 포트를 확인하세요.
간단히 말해서 포트란 무엇입니까?

포트를 서버의 번호가 매겨진 출입구로 생각하십시오. 각 포트는 네트워크 트래픽이 시스템에 들어오고 나가는 통신 끝점 역할을 합니다. 포트 번호 범위는 0부터 65,535까지이며 잘 알려진 포트(0~1023), 등록된 포트(1024~49151) 및 동적 포트(49152~65,535)의 세 가지 범주로 나뉩니다.
간단히 말해서, 웹 사이트를 탐색할 때 브라우저는 HTTP의 경우 포트 80을, HTTPS의 경우 포트 443을 두드립니다. 이메일 서버는 SMTP용 포트 25에서 응답하고 SSH 원격 액세스는 포트 22에서 작동합니다. 이러한 수신 포트는 합법적인 트래픽에 대한 게이트웨이 역할을 하지만 보호되지 않은 채로 두면 공격자의 진입점이 될 수도 있습니다.
포트는 두 가지 주요 전송 프로토콜인 안정적인 연결 지향 통신을 위한 TCP와 보다 빠르고 연결 없는 데이터 전송을 위한 UDP와 함께 작동합니다. 포트의 작동 방식을 이해하면 더 나은 보안을 위해 열어 둘 포트와 닫아야 할 포트에 대해 정보에 입각한 결정을 내리는 데 도움이 됩니다.
Linux에서 열린 포트를 확인하는 방법

Linux는 포트 분석을 위한 몇 가지 강력한 도구를 제공하며 각각에는 뚜렷한 장점이 있습니다. 일부는 사전 설치되어 제공되지만 다른 일부는 설치가 필요합니다. 올바른 도구를 선택하는 것은 권한 수준, 필요한 세부 정보 및 특정 사용 사례에 따라 다릅니다.
netstat 명령 사용
netstat 명령은 수십 년 동안 네트워크 분석을 위한 신뢰할 수 있는 도구였습니다. 열린 포트를 확인하려면 다음을 사용하십시오. netstat -tuln 여기서 각 플래그는 특정 용도로 사용됩니다. -t는 TCP 연결을 표시하고, -u는 UDP 연결을 표시하고, -l은 수신 포트만 필터링하며, -n은 호스트 이름을 확인하는 대신 숫자 형식으로 결과를 표시합니다.
이 명령을 실행하면 프로토콜, 포트 번호가 포함된 로컬 주소, 외부 주소 및 연결 상태를 보여주는 출력이 표시됩니다. 예를 들어, 0.0.0.0:22 SSH가 포트 22의 모든 네트워크 인터페이스를 수신하고 있음을 나타냅니다. 각 항목은 활성 서비스와 해당 네트워크 상태에 대한 즉각적인 가시성을 제공합니다.
그만큼 리눅스 netstat 명령 보다 자세한 분석을 위해 추가 플래그를 제공합니다. -p를 추가하면 각 연결을 소유한 프로세스가 표시되지만 루트 권한이 필요합니다. 예를 들어, sudo netstat -tulnp 포트와 이를 사용하는 프로세스 ID가 모두 표시됩니다.
ss 명령 사용
ss 명령은 netstat의 최신 대체 명령으로 탁월한 성능과 보다 자세한 소켓 통계를 제공합니다. 사용 ss -툴른 비교 가능한 출력을 위해 netstat와 동일한 플래그를 사용합니다. 그러나 ss는 특히 연결 수가 많은 시스템에서 정보를 더 빠르게 처리합니다.
고급 필터링으로 열린 포트를 확인하기 위해 ss는 강력한 구문 옵션을 제공합니다. 달리기 ss -tulnp | 그렙 :22 SSH 관련 연결만 표시합니다. 명령 ss -tn 상태가 설정되었습니다. 설정된 모든 TCP 연결을 표시하여 활성 세션을 모니터링하는 데 도움이 됩니다.
ss의 한 가지 장점은 특정 기준으로 필터링할 수 있다는 것입니다. 예를 들어, ss -t '( dport = :80 또는 스포츠 = :80 )' 포트 80의 웹 트래픽과 관련된 연결만 표시합니다. 이러한 정밀도 덕분에 ss는 특정 서비스 문제를 해결하는 데 매우 중요합니다.
lsof 명령 사용
lsof 명령은 어떤 프로세스가 특정 포트를 사용하고 있는지 식별하는 데 탁월합니다. 달리기 sudo lsof -i -P -n 프로세스 세부 정보와 함께 모든 네트워크 연결을 표시합니다. -i 플래그는 인터넷 연결을 필터링하고 -P는 포트 번호가 서비스 이름으로 변환되는 것을 방지하며 -n은 더 빠른 결과를 위해 DNS 확인을 건너뜁니다.
특정 포트를 사용하는 것이 무엇인지 찾아야 할 때 lsof가 답을 제공합니다. 예를 들어, sudo lsof -i :3306 MySQL이 실행 중인지, 어떤 프로세스 ID가 이를 소유하고 있는지를 나타냅니다. 이는 포트 충돌 문제를 해결하거나 승인되지 않은 서비스를 식별할 때 중요합니다.
특정 애플리케이션별로 결과를 필터링할 수도 있습니다. 특정 프로그램이 예상치 못한 포트에서 수신 대기하고 있다고 의심되는 경우, sudo lsof -i -a -p [PID] 해당 특정 프로세스 ID에 대한 모든 네트워크 연결을 표시합니다.
포트 스캐닝에 Nmap 사용

Nmap은 사용 가능한 가장 포괄적인 포트 스캐닝 도구 중 하나입니다. 먼저 다음을 사용하여 설치하십시오. sudo apt 설치 nmap Ubuntu 또는 Debian 시스템에서. 로컬 포트를 확인하려면 다음을 사용하세요. nmap 로컬 호스트 or nmap 127.0.0.1 기본 스캔을 위해
원격 서버의 경우 IP 주소를 지정합니다. nmap 192.168.1.100. Nmap은 열린 포트, 서비스 버전, 고급 플래그를 통한 운영 체제 감지에 대한 자세한 정보를 제공합니다. 명령 nmap -sV 로컬호스트 서비스 버전 감지를 수행하여 각 포트에서 실행 중인 소프트웨어가 무엇인지 정확하게 드러냅니다.
보안팀은 방화벽 규칙을 테스트하는 Nmap의 능력을 높이 평가합니다. 달리기 nmap -Pn [IP] Ping이 차단되어도 호스트를 검사합니다. 그러나 승인되지 않은 포트 스캔은 보안 정책을 위반할 수 있으므로 원격 서버를 스캔하기 전에 항상 권한이 있는지 확인하십시오.
Netcat(nc)을 사용하여 열린 포트 확인
Netcat은 최소한의 오버헤드로 포트 검사에 대한 간단한 접근 방식을 제공합니다. 명령 nc -zv 로컬호스트 22-80 포트 범위 22~80을 검색하여 연결을 허용하는 포트를 표시합니다. -z 플래그는 데이터를 보내지 않고 스캔 모드를 활성화하는 반면, -v는 자세한 출력을 제공합니다.
단일 포트 검증의 경우, nc -zv 호스트 이름 443 HTTPS에 액세스할 수 있는지 빠르게 확인합니다. 이 방법은 스크립트 및 자동화 작업 흐름에 유용한 것으로 입증되었습니다. 더 넓은 범위의 스캔을 위해 netcat을 셸 루프와 결합할 수 있습니다. {1..1000}의 포트용; do nc -zv localhost $port 2>&1 | grep이 성공했습니다. 완료
그만큼 넷캣 리스너 기능은 포트 확인을 넘어 실제 서비스 테스트 및 데이터 전송까지 확장되므로 모든 관리자 툴킷의 다목적 도구가 됩니다.
PowerShell을 사용하여 열린 포트 확인
PowerShell을 사용하면 Windows 사용자가 추가 소프트웨어를 설치하지 않고도 원격 Linux 서버에서 열려 있는 포트를 확인할 수 있습니다. 명령 Test-NetConnection -컴퓨터 이름 [Linux-IP] -포트 22 Windows 시스템에서 SSH 접근성을 확인합니다.
여러 포트를 스캔하려면 간단한 PowerShell 루프를 만듭니다. 1..1024 | ForEach-Object { Test-NetConnection -ComputerName 192.168.1.100 -Port $_ -WarningAction SilentlyContinue } | Where-Object { $_.TcpTestSucceeded }. 이 방법은 Windows 시스템에서 Ubuntu, Debian 또는 기타 Linux 배포판의 포트를 확인할 때 효과적으로 작동합니다.
PowerShell의 장점은 Windows 인프라와의 통합에 있습니다. 결과를 CSV로 내보내거나, 이메일을 통해 경고를 보내거나, 포트 상태에 따라 자동 응답을 트리거할 수 있어 하이브리드 환경 모니터링에 이상적입니다.
포트 스캐닝 방법 비교
| 도구 | 명령 구문 | 최고의 대상 | 전제조건 |
| netstat | netstat -tuln | 청취 포트에 대한 간략한 개요 | 대부분의 시스템에 사전 설치됨 |
| ss | ss -툴른 | 빠른 성능, 자세한 소켓 정보 | 사전 설치됨(최신 Linux) |
| 이소프 | sudo lsof -i -P -n | 포트를 사용하는 프로세스 찾기 | 루트/Sudo 액세스가 필요합니다. |
| nmap | nmap 로컬 호스트 | 포괄적인 포트 스캐닝 | 별도로 설치해야 함 |
| 넷캣 | nc -zv 호스트 포트 | 간단한 포트 연결 테스트 | 사전 설치 또는 간편한 설치 |
| 파워셸 | 테스트-NetConnection | Windows에서 원격 스캔 | Windows 머신 필요 |
일반적인 Linux 포트 및 관련 서비스
| 포트 | 서비스 | 규약 | 일반적인 사용 |
| 22 | SSH | TCP | 다음을 통한 보안 원격 액세스 SSH 원격 연결 |
| 80 | HTTP | TCP | 암호화되지 않은 웹 트래픽 |
| 443 | HTTPS | TCP | 암호화된 웹 트래픽 |
| 21 | FTP | TCP | 파일 전송 |
| 25 | SMTP | TCP | 이메일 전송 |
| 3306 | MySQL | TCP | 데이터베이스 연결 |
| 5432 | 포스트그레SQL | TCP | 데이터베이스 연결 |
포트 구성에는 방화벽 설정 및 서비스 바인딩에 대한 지식이 필요합니다. 많은 관리자 Linux에서 SSH 포트 변경 자동 공격 시도를 줄이기 위해 기본 22 포트를 비표준 포트로 변경했습니다. 그만큼 텔넷 대 SSH 논쟁에서는 포트 22의 암호화된 SSH 프로토콜을 위해 포트 23(Telnet)이 닫힌 상태로 유지되어야 하는 이유를 강조합니다.
Linux의 열린 포트 이해

열려 있는 모든 포트는 시스템에 대한 잠재적인 진입점을 나타냅니다. 자동화된 포트 검색 활동이 급증하면서 보안에 대한 영향이 더욱 강화되었습니다. 전 세계적으로 16.7%, 위협 행위자가 취약한 진입점을 지속적으로 조사함에 따라. 이러한 정찰 활동은 매달 수십억 개의 포트를 검사하여 잘못 구성된 서비스나 오래된 소프트웨어를 검색합니다.
충분히 그럴듯합니다. 하지만 공격자가 열린 포트를 발견하면 실제로 어떤 일이 발생합니까? 항구 주에서 그 이야기를 들려드립니다. LISTEN 상태의 포트는 들어오는 연결을 수락하고, ESTABLISHED는 활성 데이터 전송을 나타내며, TIME_WAIT는 최근에 닫혔지만 여전히 추적되는 연결을 표시합니다. 공격자는 SSH(포트 22)에 대한 무차별 대입 공격, 웹 포트(80/443)를 통한 SQL 주입, 취약한 서비스를 통한 원격 코드 실행 등 다양한 방법을 통해 개방형 포트를 악용합니다.
포트를 안전하게 열려면 심층적인 방어 접근 방식이 필요합니다. 기본 거부 방화벽 정책으로 시작하세요. 다음을 사용하여 구성을 확인하세요. iptables 표시 규칙. 적극적으로 사용하는 서비스에 대해서만 포트를 열고 더 이상 필요하지 않으면 즉시 닫으십시오. 자동화된 검색 성공을 줄이려면 일반 서비스의 기본 포트를 변경하는 것이 좋습니다.
Linux 생태계는 패치가 필요한 수백 개의 취약점으로 인해 심각한 보안 문제에 직면했습니다. 정기적인 포트 감사를 통해 공격자보다 먼저 승인되지 않은 서비스를 발견할 수 있습니다. 다음과 같은 보안 경계를 존중하는 파일 전송 도구를 사용하십시오. SSH를 통해 파일 복사 암호화되지 않은 FTP 대신. 시스템 간에 파일을 이동할 때 다음을 사용합니다. 원격에서 로컬 시스템으로 파일을 복사하는 SCP SSH의 보안 채널을 통해 암호화된 전송을 제공합니다.
모범 사례에는 민감한 서비스에 대한 포트 노킹 구현, 반복되는 인증 실패를 차단하기 위한 fall2ban 사용, 연결 시도에 대한 자세한 로그 유지 관리가 포함됩니다. 정기적인 보안 감사 일정을 계획하여 열려 있는 포트와 여전히 합법적인 목적으로 사용되는지 여부를 검토하세요.
Cloudzy의 Linux VPS가 포트 관리를 단순화하는 방법
잘 구성된 인프라를 사용하면 포트 관리가 훨씬 쉬워집니다. Cloudzy의 리눅스 VPS 솔루션은 직관적인 제어판을 통해 지능형 방화벽 규칙과 간소화된 포트 관리를 포함하는 사전 구성된 보안 설정을 제공합니다. 전체 루트 액세스를 통해 열거나 닫을 포트를 완벽하게 제어할 수 있습니다.
가장 저렴한 가격으로 웹 사이트 또는 원격 데스크톱 호스팅을 위한 경제형 또는 프리미엄 Linux VPS를 구입하세요. Linux KVM에서 실행되는 VPS는 효율성을 높이고 속도를 높이기 위해 NVMe SSD 스토리지를 갖춘 강력한 하드웨어에서 작동합니다.
자세히 알아보기포트를 확인하고 관리할 때는 성능이 중요합니다. Cloudzy의 NVMe 스토리지는 포트 스캐닝 도구의 효율적인 실행을 보장하는 동시에 최대 10Gbps 연결로 병목 현상 없이 대용량 트래픽을 처리합니다. 인프라는 Linux가 글로벌 서버 인프라의 상당 부분을 지원하여 이러한 최적화된 구성을 전투 테스트를 거쳐 안정적으로 만들어준다는 사실로부터 이점을 얻습니다.
월 $3.96부터 시작하여 항만 관리 기술을 연습하는 데 완벽한 전문가급 환경을 얻을 수 있습니다. 여러 데이터 센터 위치를 통해 지리적으로 분산된 설정을 테스트할 수 있으며 연중무휴 지원은 복잡한 방화벽 구성 또는 포트 관련 문제 해결을 지원합니다. Linux에서 열려 있는 포트를 확인하는 방법을 배우거나 프로덕션 서비스를 배포하는 방법을 배우거나 유연한 VPS 환경을 갖추면 보안 구현이 가속화됩니다.
결론
그렇다면 열린 포트를 확인하는 가장 좋은 방법은 무엇입니까? 아주 간단하게 말하면 하나도 없습니다. 빠른 로컬 확인을 위해 ss 또는 netstat를 사용하면 번거로움 없이 작업을 완료할 수 있습니다. 포괄적인 보안 감사가 필요할 때 Nmap은 모든 것을 보여줍니다. 어떤 프로세스가 포트를 소유하고 있는지 추적하기 위해 lsof는 추측 시간을 절약합니다. PowerShell은 원격 확인이 필요할 때 Windows와 Linux를 연결합니다.
여기서 진짜 교훈은 명령을 암기하는 것이 아닙니다. 패닉 대응 대신 포트 감사를 일상적으로 만드는 것입니다. 주간 검사를 예약하고, 사용하지 않는 포트를 발견하는 즉시 닫고, 어떤 서비스에 어떤 포트가 필요한지 문서화하세요. 이러한 접근 방식은 포트 검사를 대응적 소방에서 사전 예방적 방어로 전환합니다.