Linux에서 특정 포트가 열려있는 프로세스를 확인하는 방법은 무엇입니까?


32

내 서버에서 nmap을 실행하고 이상한 포트가 열린 것을 발견했습니다. 해당 포트를 특정 프로세스에 매핑하는 방법이 있는지 알아 내려고하지만 그러한 도구가 있는지는 모릅니다.

어떤 제안?


2018 년 6 월 Gogle에서 1 위 답변으로 찬성 투표
SDsolar

답변:


57

다른 게시물에서 언급 한 Netstat뿐만 아니라 lsof 명령은이 작업을 올바르게 수행 할 수 있어야합니다. 이것을 사용하십시오 :

lsof -i :<port number>

모든 프로세스가 시작되어야합니다. OS X에서 자주 사용합니다.

lsof에 대한 데비안 관리 기사


흥미 롭군 나는 이것에 대해 몰랐다. 그러나 나는 해킹 시도의 결과로 이것을 조사하고 있습니다. 기계는 친구입니다. 문제가있는 포트로 텔넷 할 수 있지만 lsof 및 netstat 모두 포트가 열린 것으로 표시하지 않습니다.
jnman 2016 년

포트는 5631이며 / etc / services에 따르면 pcanywhere 데이터가 매우 의심됩니다.
jnman 2016 년

이제는 좋았습니다. 몰랐습니다! 항상 netstat를 사용하십시오. 감사합니다
버스터

4
netstat 및 lsof가 포트를 사용중인 것으로 표시하지 않지만 시스템이 응답하는 경우 루트 키트가 설치되었을 가능성이 있습니다. 컴퓨터에서 데이터를 다른 곳으로 이동 한 다음 핵을 피하는 것이 좋습니다.
Kamil Kisiel 2016 년

6
이것은 실제로 루트킷입니다. 이전에이 동작을 보았으며 항상 루트킷입니다. 시스템이 손상되어 사용중인 도구를 신뢰할 수 없습니다. 읽기 전용의 신뢰할 수있는 바이너리가있는 Live CD로 부팅하여 데이터, 설정 등을 추출하십시오. 가지고있는 모든 프로그램, 가지고있는 스크립트, 버림. 가져 오지 마십시오. 시스템이 / does /이기 때문에 나병이있는 것처럼 취급하십시오. 완료되면 궤도에서 핵을가하십시오. 가능한 빨리이 작업을 수행하십시오. 아, 그리고 네트워크 연결을 분리하십시오-침입자의 접근을 거부하십시오.
에이버리 페인

23

경고 : 시스템이 손상되었습니다.

필요한 도구는 lsof파일과 소켓 및 포트를 나열합니다. 그것은 가장 가능성이 설치되어, 그것은 가장 가능성이 의미 공격자의 버전이다 거짓말을 당신에게.

이것은 실제로 루트킷입니다. 이전에이 동작을 보았으며 항상 루트킷입니다. 시스템이 손상되었으며 동일한 시스템에서 시작된 도구를 신뢰할 수 없습니다. 읽기 전용의 신뢰할 수있는 바이너리가있는 라이브 CD로 부팅하여 데이터, 설정 등을 추출하십시오. 가지고있는 모든 프로그램, 가지고있는 스크립트, 버림 . 가져 오지 마십시오 . 그들이 있기 때문에 그들이 나병을 가지고있는 것처럼, 그들하고 시스템을 취급 .

완료되면 궤도에서 핵무기를하십시오 .

남자 게임, 게임 끝.

가능한 빨리이 작업을 수행하십시오. 아, 그리고 네트워크 연결을 분리하십시오-침입자의 접근을 거부하십시오.


1
이것은 모든 것을 정말로 말합니다. 무엇이 잘못되었는지 파악하고, 서버를 평평하게하고, 마지막으로 성공한 백업에서 복원하십시오. 인생은 게임을하기에는 너무 짧습니다.
Rob Moir 2016 년

2
추가 : 방금 제거한 것과 동일한 루트킷을 복원 할 수 있으므로 침입 날짜를 알고 있어야합니다. 그렇지 않으면, 그 날짜에서 / before /에서 복원하십시오.
에이버리 페인

1
재미있는 그래픽입니다. 시스템이 손상되었음을 알고 있습니다 (감사하게 내 시스템이 아닙니다). 내가 더 궁금했던 질문은 그가 어떻게 들어 왔는지 추적하는 것이 었습니다. 나는 php / joomla를 통해 의심하지만 루트 키트 감지 도구가 해당 포트를 표시하지 않을 때이 포트가 어떻게 열려 있는지 / 왜 이해하고 싶었습니다.
jnman 2016 년

1
lol @ "아, 그리고 네트워크 연결을 해제"
theman_on_osx

6
이 결론으로 ​​넘어 가기 전에 예상치 못한 포트가 열려있는 다른 가능한 설명이 있습니다. 설치했지만 잊어 버린 패키지와 같은
David J.

14
sudo netstat -lnp  

들어오는 연결을 수신 대기하는 포트와 포트가 열린 관련 프로세스를 나열합니다.


4

netstat -anp

"-p"는 포트가 열린 프로세스 ID를 나열하도록 지시합니다. -an은 수신 포트를 나열하고 이름을 확인하지 않도록 지시합니다. 사용량이 많은 시스템에서 시스템 속도를 크게 높일 수 있습니다.

netstat -anp | grep "LIST"

그것은 당신에게 열린 포트를 줄 것입니다.


4

운영 체제 도구로 포트가 열리지 않고 침입이 의심되는 경우 루트킷이 설치되었을 수 있습니다.

루트킷은 특정 프로세스와 포트 또는 변경된 커널 모듈을 피하기 위해 시스템 도구를 변경했을 수 있습니다.

여러 자동화 도구를 사용하여 루트킷을 확인할 수 있습니다. 'apt-cache search rootkit'은 우분투에서 다음을 보여줍니다.

chkrootkit - rootkit detector
rkhunter - rootkit, backdoor, sniffer and exploit scanner
unhide - Forensic tool to find hidden processes and ports

루트킷이 있으면 '변경된'시스템으로 되돌릴 수 있지만 침입이 어떻게 이루어 졌는지 확인하고 시스템이 반복되지 않도록 강화하는 것이 좋습니다.


그것들은 우분투 독점이 아니며 CentOS에서도 사용할 수 있습니다. 패키지를 찾거나 해당 페이지에서 다운로드하십시오.


해당 포트의 출력으로 실제로 pcanywhere를 실행중인 것 같습니다. " < 프로세스가 프로세스 목록에 표시되지 않는 이유를 모르겠습니다. 당신은 뿌리입니까?

재부팅을 시도하여 한 번만 실행중인 프로세스인지 확인할 수 있습니다.


centos에 대한 제안?
jnman 2016 년

이상하게도 unhide-tcp는 의심스러운 포트를 표시하지 않습니다. chkrootkit / rkhunter보고 모두 지우기 (하지만 난이 질문을하기 전에 의심스러운 DIRS 삭제 주로하기 때문에)
jnman

FWIW, 루트킷은 / var / tmp / ... 및 /var/tmp/.ICE-Unix/*에 아파치로 설치되었습니다. bash 프로세스는 죽인 후에도 계속 생성됩니다.
jnman 2016 년

크래커가 크론 작업을 설치 한 것으로 나타났습니다.
jnman 2016 년

0

@bjtitus의 답변을 설명하려면 다음과 같은 매우 자세한 정보를 얻을 수 있습니다.

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

나는 바로 오징어가 과정이라는 것을 알 수 있지만 실제로 squid-deb-proxy항구를 차지하고있는 것은 내 것입니다.

자바 앱의 또 다른 좋은 예 :

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

당신은에서 볼 수있는 lsof것이 도움이 미만 자바이라고 (목록 열기 파일). psPID로 명령을 실행하면 CrashPlan이라는 것을 즉시 알 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.