서버에 열려있는 포트 확인하기 (feat. netstat)

0.5 개발자·2021년 10월 8일
0

Linux

목록 보기
2/3

netstat -apn | grep LISTEN | grep tcp

난 서버의 Listen 포트를 확인할 경우 netstat을 애용한다.

nmap의 경우 생각보다 부정확하게(?) 출력 되는 경우가 있기 때문임;;

일단 위 명령행의 아규먼츠를 간략히 설명하면

a = 모든 socket 표시
p = pid와 program 명 표시 (중요하다!!!, 뭐가 뭔지는 알아야 하니까!)
n = 주소를 ip로 표시 (위에 캡쳐에서 보면 n 옵션을 준 명령어의 결과는 localhost => 127.0.0.1임...

그리고 Listen된 내용과 tcp만 출력되도록 두번 pipe 하여 grep으로 필터한다.

아규먼츠를 적어주는 순서는 딱히 상관없다.

난 기억하기 쉽게 apn으로 !

하지만..... 이건 단순히 서버에서 리슨된 내용만 보여주는 것이다.

열려 있다고 외부에서 모두 접근 가능한 것은 절대 아니다.

시스템 방화벽과 물리적 방화벽이 윗단에 있다면 그 부분도 확인해줘야 한다...

우분투의 경우 최근에는 iptables를 wraping한 ufw를 사용하는데 다음과 같이 방화벽 룰을 확인 가능하다.

또한 외부/서버에서 wireshark, tcpdump 등의 패키지를 이용해 실제로 통신이 되는지도 확인이 필요하다.

한가지 더 추가하자면 시스템 방화벽 혹은 윗단에 물리 방화벽의 Rule로 불필요한 Port의 연결 시도가 Deny 된다고 해서 안전한건 아니다...

만약 Human Eroor나 여러가지 변수들로 인해 방화벽 서비스가 중단되고 공중망으로 부터 서버까지의 트래픽이 보안 시스템을 경유하지 않고 by-pass 되는 상황이 생길수도 있다....

이때를 대비해 서버관리자는 항상 서버에서 Listen되는 포트들을 확인해줄 필요가 있다.

(참고로 보안쟁이 출신임...)

ufw status

ufw 관련 내용은 다음 글에서 소개해보겠...

profile
Node.js 좋아

0개의 댓글