A sound analysis of a computer network begins by understanding what are the available tools to perform the task, how to pick the right one(s) for each step of the way, and last but not least, where to begin.
이것은 LFCE (Linux Foundation Certified Engineer) 시리즈의 마지막 부분입니다. 여기에서는 네트워크의 성능을 검토하고 보안을 강화하기 위한 잘 알려진 도구들을 살펴보고, 예상대로 되지 않을 때 어떻게 해야 하는지에 대해 검토할 것입니다.

리눅스 재단 인증 프로그램 소개
이 목록이 모두를 포함하려고 하는 것은 아니라는 점을 유의하시기 바랍니다. 따라서 놓치고 있는 유용한 유틸리티를 추가하고 싶다면 이 게시물 아래의 양식을 사용하여 의견을 자유롭게 남겨주십시오.
어떤 서비스가 실행 중이며 왜 실행 중인가?
시스템 관리자가 각 시스템에 대해 알아야 하는 첫 번째 사항 중 하나는 어떤 서비스가 실행 중이며 왜 실행 중인지를 알아야 합니다. 이 정보를 손에 넣은 후에는 반드시 필요하지 않은 모든 서비스를 비활성화하고 동일한 물리적 머신에 너무 많은 서버를 호스팅하지 않는 것이 현명한 결정입니다.
예를 들어, 네트워크가 필요로 하지 않는 경우 FTP 서버를 비활성화해야 합니다 (그런데 네트워크에서 파일을 공유하는 더 안전한 방법이 있습니다). 또한 웹 서버와 데이터베이스 서버를 동일한 시스템에 두는 것을 피해야 합니다. 한 구성 요소가 손상되면 나머지도 손상될 위험이 있습니다.
ss를 사용하여 소켓 연결 조사하기
ss는 소켓 통계를 덤프하고 다른 도구보다 더 많은 TCP 및 상태 정보를 표시할 수 있는 netstat과 유사한 정보를 보여줍니다. 또한 이것은 netstat의 대체품으로 나열되어 있으며 netstat은 더 이상 사용되지 않는 것으로 나와 있습니다.man netstat에서도 나와 있습니다.
그러나이 문서에서는 네트워크 보안과 관련된 정보에만 초점을 맞출 것입니다.
예시 1: 서버에서 열린 모든 TCP 포트(소켓) 표시
기본 포트에서 실행 중인 모든 서비스(http는 80, mysql은 3306)는 각각의 이름으로 표시됩니다. 다른 것들(여기서는 개인 정보 보호를 위해 가려져 있음)은 숫자 형태로 표시됩니다.
# ss -t -a

첫 번째 열은 TCP 상태를 보여주며, 두 번째와 세 번째 열은 현재 수신 및 전송 대기 중인 데이터 양을 표시합니다. 네 번째와 다섯 번째 열은 각 연결의 소스 및 대상 소켓을 보여줍니다.
참고로, (D)DoS 공격을 인식하기 위해 열린 TCP 연결의 수와 상태를 확인해야 하므로 가능한 TCP 상태에 대한 기억을 새롭게 하기 위해 RFC 793를 확인할 수 있습니다.
예시 2: 타이머와 함께 모든 활성 TCP 연결 표시
# ss -t -o

위의 출력에서 2개의 확립된 SSH 연결이 있는 것을 볼 수 있습니다. 타이머의 두 번째 필드 값에 주목하면 첫 번째 연결의 36분이라는 값이 다음 keepalive 프로브가 전송될 때까지의 시간을 나타냅니다.
유지되는 연결이므로 비활성 연결이라고 가정할 수 있으며, PID를 찾은 후 해당 프로세스를 종료할 수 있습니다.

두 번째 연결의 경우 현재 사용 중인 것을 볼 수 있습니다(표시된대로).
예시 3: 소켓별 연결 필터링
서버의 관점에서 소켓별 TCP 연결을 필터링하려면 소스 포트가 80인 연결을 확인해야 합니다.
# ss -tn sport = :80
결과는..

NMAP로 포트 스캐닝에 대비하기
포트 스캐닝은 해커들이 네트워크에서 활성 호스트와 열린 포트를 식별하는 데 사용하는 일반적인 기술입니다. 취약점이 발견되면 시스템에 액세스하기 위해 악용됩니다.
A wise sysadmin needs to check how his or her systems are seen by outsiders, and make sure nothing is left to chance by auditing them frequently. That is called “defensive port scanning”.
예제 4: 열린 포트에 대한 정보 표시
시스템이나 원격 호스트에서 열린 포트를 스캔하는 다음 명령을 사용할 수 있습니다:
# nmap -A -sS [IP address or hostname]
위 명령은 호스트를 OS 및 버전 감지, 포트 정보 및 traceroute(-A)를 스캔합니다. 마지막으로 -sS는 TCP SYN 스캔을 보내어 nmap이 3-way TCP 핸드셰이크를 완료하지 못하도록 하며 대상 기계에 대부분 로그를 남기지 않습니다.
다음 예제를 진행하기 전에 포트 스캐닝이 불법 활동은 아님을 염두에 두십시오. 불법인 것은 결과를 악용하는 것입니다.
예를 들어, 지역 대학의 주 서버에 대해 위 명령을 실행한 결과는 다음과 같습니다(간략히 표시된 결과의 일부만 표시됨):

위와 같이, 우리는 이 지역 대학의 시스템 관리자에게 보고해야 할 여러 이상 현상을 발견했습니다.
이 특정 포트 스캔 작업은 다른 명령으로도 얻을 수 있는 모든 정보를 제공합니다.
예제 5: 로컬 또는 원격 시스템의 특정 포트에 대한 정보 표시
# nmap -p [port] [hostname or address]
예제 6: 트레이스 라우트 표시 및 서비스 및 OS 유형, 호스트 이름 버전 확인
# nmap -A [hostname or address]
예제 7: 동시에 여러 포트 또는 호스트를 스캔합니다
다음과 같이 여러 포트(범위) 또는 서브넷을 스캔할 수도 있습니다:
# nmap -p 21,22,80 192.168.0.0/24
참고: 위 명령은 해당 네트워크 세그먼트의 모든 호스트에서 포트 21, 22 및 80을 스캔합니다.
다른 유형의 포트 스캔을 수행하는 방법에 대한 자세한 내용은 man 페이지를 확인할 수 있습니다. Nmap은 실제로 매우 강력하고 다재다능한 네트워크 매퍼 유틸리티이며, 시스템을 공격하는 악성 포트 스캔 후 발생하는 외부자의 공격에 대비하기 위해 그것에 매우 익숙해져야 합니다.
Source:
https://www.tecmint.com/audit-network-performance-security-and-troubleshooting-in-linux/