Knowledge Map
netstat 본문
출처:
http://idchowto.com/?p=13190
http://studyforus.tistory.com/244
http://blog.naver.com/pkd0427/140051923696
아직 내용 추가안한거..
http://najuung.tistory.com/41
--------------------------------------------------------------------------------------------------------
netstat 명령어는 리눅스, 윈도우 둘다 가능하다. 전반적인 사용법은 동일하다.
netstat이라고 치면 죽~ 나온다.
--------------------------------------------------------------------------------------------------------
LISTENING : 현재 서비스를 대기중
ESTABLISHED : 다른 컴퓨터와 연결된 상태
CLOSED : 연결이 완전히 종료된 상태
TIME WAIT : 연결은 종료되었지만 당분간 소켓은 열어놓은 상태
사용포트 확인하여 불필요한 포트를 사용하고 있다면 외부해킹이나 트로이목마로 의심가능
*. 윈도우 Netbios
TCP 139번 포트를 이용해 다양한 정보를 넘겨주는 API
보안에 취약해 인증되지 않은 사용자가 아이디/패스워드 인증 없이 원격지 서버의 정보를 가지고 갈수 있다
--------------------------------------------------------------------------------------------------------
TCP : 프로토콜의 종류 (TCP/UDP)
192.168.0.2:2250 : 로컬 (자신) IP와 포트번호, 0.0.0.0 은 특정 아이피와 연결되어 있지 않음을 의미
x9.xx.2×0.5:65364 : 상대측 IP와 포트번호, 0.0.0.0 은 아직 통신이 시작되지 않았으며 특정한 IP와 포트가 연결되지 않았음을 의미
UDP프로토콜은 소켓을 상대측의 주소와 포트를 연결하지 않으므로 상대측은 *:* 표시됨
TIME_WAIT : 대기상태
LISTENING : 상대로 부터 접속을 기다리고 있는 상태
ESTABLISHED : 접속동작이 끝나고 데이터 통신중임을 표시
964 : 이소켓을 사용하고 있는 PID 프로세스 식별자
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
netstat /? 을 쓰면 위와 같은 도움말이 나온다. 이걸로 적당히 검색을 할수 있다.
--------------------------------------------------------------------------------------------------------
예를 들어서 모든 연결과 수신대시 포트를 표시 + 프로세스 ID를 표시 + 주소와 포트를 숫자 형식으로 표시 하고 싶을때에는
netstat -aon 이라고 치면 된다.
-a : 모든 포트를 표시
-n : IP주소:포트 형태로 보여줌 (예 - 192.168.0.22:1234)
-o : PID (프로세스 ID)를 표시 (해당 프로그램 중지시에 사용)
--------------------------------------------------------------------------------------------------------
window
netstat -nap tcp | find "LISTEN"
<!--현재 local컴터에 열린 포트를 보여준다.-->
<!--tcp만 보여준다.-->
netstat -nap udp | find "LISTEN"
<!--현재 local컴터에 열린 포트를 보여준다.-->
<!--udp만 보여준다.-->
netstat -nao | find "LISTEN"
<!--현재 local컴터에 열린 포트를 보여준다.-->
<!--tcp와 udp둘다 보여준다.-->
netstat -nao | find "80"
<!--현재 local컴터에 80포트로 접속한 ip를 보여준다.-->
netstat -nao | find "122:80"
netstat -nao | find "특정아이피:80"
<!--현재 local컴터에 80포트로 특정아이피가 접속한 리스트를 보여준다.-->
netstat -nao | find "80" /c
netstat -nao | find "특정아이피:80" /c
<!--현재 local컴터에 80포트로 접속한 리스트의 수를 보여준다.-->
linux
netstat -na
<!--해당 컴터에 연결된 컴터의 ip와 열려진 port와 protocal 타입이 나옵니다.-->
netstat -nap
<!--해당 컴터에 연결된 컴터의 ip와 열려진 port와 실행되는 데몬명(SID)과 protocal 타입이 나옵니다.-->
netstat -nao | grep ESTABLISHED
<!--local컴터에 접속한 IP 리스트가 보입니다.-->
netstat -na | grep LISTEN
<!--local컴터의 tcp/udp 열린 포트가 보입니다.-->
netstat -nau | grep LISTEN
<!--local컴터의 열린 udp 방식 포트가 보입니다.-->
netstat -nat | grep LISTEN
<!--local컴터의 열린 tcp 방식 포트가 보입니다.-->
netstat -nao | grep 80
<!--현재 local컴터에 80포트로 접속한 ip를 보여준다.-->
netstat -nao | grep 특정아이피:80
<!--현재 local컴터에 80포트로 특정아이피가 접속한 리스트를 보여준다.-->
netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l
# 해당 포트의 접속상황을 가지고 동시접속자를 체크하는 방법
※netstat 의 status는 현재 상태이며 ESTABLISHED는 연결되어있는 상태를 말하며 CLOSED는 이미 연결이 끊어졌음을 말한다. LISTENING은 현재 시스템에서 열려있는 포트며 연결을 기다리는 포트입니다.
3.해당 port사용하는 프로그램 종료하기
Windows
netstat -nao | grep LISTEN 로 열린 포트를 확인한후 해당 포트가 어떤 프로그램에서 실행되는지 알려면 PID값을 기억한후
tasklist | grep pid 나 tasklist | find "pid" 이나 으로 해당 프로그램명을
알아내어 보안에 위반되는 프로그램이면 window작업관리자에서 해당 프로세서를 죽입니다.
※tasklist는 현재 컴터에서 돌아가는 프로그램명과 메모리사용량,PID가 나옵니다.
※본 자료실에 Fport-5620.exe은 포트PID와 해당 프로그램과 해당 포트가 연결되어 목록으로 나와서 보기 편합니다.
Unix or Linux
ps -ef | grep 프로세스명 또는 pid
설명
현재 실행되고 있는 프로세서중에서 프로세스명 만을 검색하여 정보를 출력한다.
출력 항목
출력 항목은 실행시킨소유자, pid, ppid, 점유율, 실행했을때의 시간, 실행되고 있는 시간, 실행파일명(위치) 순이다.
ex : nobody 26673 3615 0 05:00 00:00:12 /usr/sbin/apache
안나오는 항목
CPU점유율과 MEM점유율은 안나온다.
사용 예제
ps -ef | grep mysql
ps -ef | grep apache
결과 예제
vmsdev 98978 84210 3 17:30:50 pts/23 0:00 grep mvtm
※ pid 는 현재 시스템에서 유일한 프로세스 아이디이며 ppid 는 부모 프로세스 아이디이다.
ps -e | grep 프로세서명 또는 pid
설명
ps -ef 보다 좀더 간략하게 나온다.
출력항목
출력항목은 pid, 실행되고 있는 시간, 실행파일명(위치) 순이다.
안나오는 항목
CPU점유율과 MEM점유율은 안나온다.
사용 예제
ps -e | grep mysql
ps -e | grep apache
결과 예제
100310 - 0:07 mvtmtodb.exec
ps -ef 와 ps -e 의 차이점
ps -ef 는 검색 프로세서가 없어도 최소 한개의 검색결과는 나오지만 ps -e 는 검색프로세서가 없으면 검색결과가 아무것도 나오지 않는다.
ps auxw|more
# ps -ef 보다 자세하게 나오며 CPU, MEM 점유율이 추가되어 나온다.
"ps auxw|more" 결과에서 나오는 STAT 항목의 종류와 의미
----------------------------------------------------
부호 의 미
----------------------------------------------------
R 수행 가능/수행중
T 일시 정지
P 페이지인을 기다림
D 디스크 입출력 대기 같은 인터럽트 할 수 없는 대기중
S 20초 미만의 짧게 잠듦
I 20초 이상의 길게 잠듦
Z 좀비 프로세스
----------------------------------------------------
pid 값을 이용해 실행중인 프로세서 죽이기
"kill pid값" 명령을 하게 되면 해당 pid값에 해당하는 프로세서가 종료된다.
※ 위의 명령으로 제대로 종료가 안되면 "kill -9 sid값" 과같이 -9 옵션을 붙여 다시 실행한다.
ex : kill -9 pid값
4.해당 port 접근차단하기
window
해당 포트 막는것은 프로그램을 까시거나 네트웍쪽 등록정보를 보시면 해당 연결속성에서 TCP/IP속성에서 고급/옵션에 속성을 누르시면 해당 포트만 열수 있던가.포트에 해당 하는 보안 항목이 있습니다
linux
lokkit명령으로 보안수준을 활성화로 놓고 사용자설정에서 열고싶은 포트만 지정할수있습니다.하지만 보안수준이 비활성화면 모든 port가 열립니다.