리눅스 포트 열려있는지 확인 - linugseu poteu yeollyeoissneunji hwag-in

리눅스 포트 열려있는지 확인 - linugseu poteu yeollyeoissneunji hwag-in

리눅스 포트 및 방화벽 상태와 포트를 Open하는 방법입니다.

리눅스 포트 명령어

리눅스 포트 관련 명령어 입니다.

포트 상태 확인

1. 열려있는 모든 포트 표시

$ netstat -nap

-n: host명으로 표시 안함
-a: 모든소켓 표시
-p: 프로세스ID와 프로그램명 표시 

2. LISTEN 포트 표시

$ netstat -nap | grep LISTEN

3. 특정 포트 상태 확인

$ netstat -nap | grep 포트번호

포트 열기

1. 방화벽 설정 정보 확인

$ iptables -nL

2. Port 열기

* iptables 옵션

-I: 새로운 규칙을 추가한다.
-p: 패킷의 프로토콜을 명시한다.
-j: 규칙에 해당되는 패킷을 어떻게 처리할지를 정한다. 

2-1. TCP Inbound Port 열기

* 외부 -> 내부 (Inbound) TCP 포트 12345를 1번 방확벽 규칙으로 추가
$ iptables -I INPUT 1 -p tcp --dport 12345 -j ACCEPT

2-2. UDP Inbound Port 열기

* 외부 -> 내부 (Inbound) udp 포트 12345를 1번 방확벽 규칙으로 추가
$ iptables -I INPUT 1 -p udp --dport 12345 -j ACCEPT

2-3. TCP Outbound Port 열기

* 내부 -> 외부 (Outbound) TCP 포트 9002를 1번 방확벽 규칙으로 추가
# iptables -I OUTPUT 1 -p tcp --dport 9002 -j ACCEPT

2-4. UDP Outbound Port 열기

* 내부 -> 외부 (Outbound) udp 포트 9002를 1번 방확벽 규칙으로 추가
$  iptables -I OUTPUT 1 -p udp --dport 9002 -j ACCEPT

3. Port 설정 조회

$ iptables -L -v

-L: 규칙을 출력
-v: 자세히 

CentOS 7 포트 열기

CentOS 7 부터는 iptables 관련 명령어가 아니라 firewall 명령어로 변경

* 포트 열기
firewall-cmd --zone=public --permanent --add-port=12345/tcp

* 포트 리로드
firewall-cmd --reload

* 열린 포트는 아래 명령어로 확인 할 수 있다.
firewall-cmd --zone=public --list-all

포트 삭제

"-D" 옵션을 이용하여 포트 삭제

* 규칙번호로 삭제
$ iptables -D INPUT 1

* 추가한 규칙으로 삭제
$ iptables -D INPUT -p tcp --dport 12345 -j ACCEPT
$ iptables -D INPUT -p udp --dport 12345 -j ACCEPT

변경사항 저장

$ service iptables save
$ /etc/init.d/iptables restart

방화벽 활성화 / 비활성화

* 활성화
$ /etc/init.d/iptables start

* 비활성화
$ /etc/init.d/iptables stop

관련글

티스토리 뷰

리눅스에서 svn 서버등 안띄워질 수 있다. 이럴때 잘띄워졌는지 포트가 LISTEN 하고 있는지 확인해봐야 한다.

netstat -nap | grep :3690

하면 svn 포트가 잘 떠있는지 확인이 가능하다.

tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN -

이런식으로 결과가 나올것이다.

만약 svn 서버가 안띄워져 있다면 없다, 안띄워졌다. 등의 메시지가 나오는게 아니고 아예 아무것도 안나온다.

아님
(Not all processed could be indentified, non-owned process info will not be shown, you would have to be root to see it all.)

그냥 이것만 나오던가.. (이게 나온다면 잘 될때도 나온다.)

괄호에 있는것이니 무시해도 된다.

흠..

근데 80은 떠 있는데 안나온다.. 왜 안나오는지 아시는분 댓글 좀..

안녕하세요? 서버 개발을 진행하면서 포트 및 방화벽에 대해서 설정할 일이 많아 정리를 해보았습니다.
개발하시는데 다들 도움이 되셨으면 좋겠습니다.

A. 포트 상태 확인

1. 열려있는 모든 포트 표시
$ netstat -nap

-n: host명으로 표시 안함
-a: 모든소켓 표시
-p: 프로세스ID와 프로그램명 표시 

2. LISTEN중인 포트 표시
$ netstat -nap | grep LISTEN

3. 확인하려는 포트번호 상태확인
$ netstat -nap | grep 포트번호

4. 특정 호스트 포트 상태 확인
특정 호스트로 접속이 불가할 때, netcat(nc) 네트워크 유틸리티를 이용하여 포트가 막혀 있는지 확인할 수 있다.

4.1 특정 포트 상태 확인
$ nc -z 호스트주소 포트
$ nc -z www.google.com 80 

Sample Result)

Connection to www.google.com 80 port [tcp/http] succeeded! 

4.2 특정 호스트의 포트 범위를 지정하여 열린 포트 확인
$ nc 호스트주소 -z 시작포트-끝포트
$ nc 10.20.30.40 -z 19-21

Sample Result)

Connection to 10.20.30.40 21 port [tcp/ftp] succeeded!
Connection to 10.20.30.40 22 port [tcp/ssh] succeeded!
Connection to 10.20.30.40 23 port [tcp/telnet] succeeded! 

B. 포트 열기
리눅스 방화벽 설정 명령어인 iptables을 사용하여 포트를 오픈할 수 있다.

  방화벽 설정 정보 확인하기
# iptables -nL

1. 특정포트 외부에서 접속할 수 있도록 열기 (외부에서 접속할 수 있도록 포트 OPEN)
아래는 외부에서 들어오는(INBOUND) TCP포트 12345의 연결을 받아들인다는 규칙을 1번 방화벽 규칙으로 추가한다는 의미이다.

1.1 TCP PORT일 경우
# iptables -I INPUT 1 -p tcp --dport 12345 -j ACCEPT

1.2 UDP PORT일 경우
# iptables -I INPUT 1 -p udp --dport 12345 -j ACCEPT

-I: 새로운 규칙을 추가한다.
-p: 패킷의 프로토콜을 명시한다.
-j: 규칙에 해당되는 패킷을 어떻게 처리할지를 정한다. 

 내부에서 외부로 나갈 수 있도록 포트 열기

# iptables -I OUTPUT 1 -p tcp --dport 9002 -j ACCEPT
# iptables -I OUTPUT 1 -p udp --dport 9002 -j ACCEPT

2. 추가한 설정 조회
# iptables -L -v

3. 추가한 설정 삭제
a) 추가한 규칙의 번호로 삭제하는 방법과 
b) 추가했을 때의 명령어에서 "-I"를 "-D"로 바꾸어 주는 방법이 있다.

a) 규칙번호로 삭제
# iptables -D INPUT 1

b) 추가한 규칙으로 삭제
# iptables -D INPUT -p tcp --dport 12345 -j ACCEPT
# iptables -D INPUT -p udp --dport 12345 -j ACCEPT

4. 변경사항 저장
# service iptables save
# /etc/init.d/iptables restart

C. 방화벽 활성화&비활성화

1. 켜기
# /etc/init.d/iptables start

2. 끄기
# /etc/init.d/iptables stop

------------------------------------------------------------------------------------------
도움 되셨다면 하단의 광고 클릭 해주시면 감사하겠습니다:)