로컬 네트워크의 모든 컴퓨터가 NAT 뒤에 있기 때문에 모든 사용자가 "포트를 열거 나"라우터에서 "포트 포워딩"을 수행해야한다고 확신합니다. 인터넷에서 로컬 네트워크에있는 이러한 장치에 액세스하려면 라우터에서 "포트를 열거 나" "포트 전달"을 수행해야합니다. 그렇지 않으면 인터넷에서이 서비스에 액세스 할 수 없습니다 ( SSH 서버, FTP 서버, OpenVPN 서버 등) 오늘이 기사에서는 포트가 열린다는 것이 무엇을 의미하는지, 포트가 열린 포트를 어떻게 공격 할 수 있는지, 무엇을 할 수 있는지에 대해 설명 할 것입니다.
포트가 "개방"된다는 것은 무엇을 의미합니까?
주로 TCP 및 UDP 프로토콜을 사용하는 전송 계층 수준의 통신은 "인터넷 소켓"으로 알려진 것을 사용합니다. 이 소켓은 두 프로세스 (예 : 응용 프로그램)가 로컬 네트워크 또는 인터넷을 통해 데이터를 교환 할 수있는 메커니즘을 구성합니다. TCP 또는 UDP를 사용하는 모든 데이터 흐름에는 최소한 다음 정보가 필요합니다.
- 소스 IP
- 원산지
- 목적지 IP
- 목적지의 항구
로컬 네트워크에서 완전히 자동적이고 투명한 방식으로 포트는 다른 컴퓨터와 통신 할 수 있도록 서로 다른 프로세스에 의해 지속적으로 열리고 닫힙니다. 두 프로세스가 통신하려면 한 프로세스가 다른 프로세스를 "찾아"서비스를 받거나 귀하에게 서비스를 제공 할 수 있어야합니다.
"포트가 열려 있습니다"라고 정의하면 두 가지 매우 다른 시나리오가 될 수 있습니다.
- 로컬 컴퓨터의 열린 포트 예를 들어, 당사의 컴퓨터 또는 로컬 서버에서. 원칙적으로 방화벽은 일반적으로 제한적으로 구성되기 때문에 모든 포트를 닫아야합니다 (구체적으로 허용 된 항목을 제외한 모든 항목이 차단됨).
- 라우터의 NAT에서 열린 포트 . 일반적으로 라우터에는 "개방"포트가 없거나 "가상 서버"또는 "포트 포워딩"섹션에 컴퓨터에 대한 포트가 없습니다. 기본적으로 모든 라우터에서이 테이블은 비어 있지만, 다른 컴퓨터에 포트를 열기 위해 다른 규칙을 등록 할 수 있습니다.
언제 로컬로 포트를 열어야합니까?
로컬 컴퓨터가 예를 들어 FTP 서버, 웹 서버, SSH 서버, VPN 서버, 데이터베이스 서버, 그리고 훨씬 더 많은 포트를 열어야합니다. 방화벽 로컬 네트워크 또는 인터넷의 다른 컴퓨터가 당사 서비스에 액세스 할 수 있도록합니다. 그렇지 않으면 방화벽이이 통신을 차단하고 연결이 설정되지 않기 때문에 액세스 할 수 없습니다.
일반적으로 가정 환경에서 Windows 10 또는 Linux기반 운영 체제를 "사설 네트워크"또는 "홈 네트워크"로 설정하면 방화벽이 비활성화되고 들어오는 모든 연결이 허용됩니다. 그러나 "공용 네트워크"로 설정하면 방화벽이 활성화되고 이전에 나가지 않은 모든 들어오는 연결을 차단하므로 "제한적"방화벽에 직면하게됩니다.
라우터의 NAT에서 언제 포트를 열어야합니까?
이전 사례에서와 같이«무언가»서버 역할을하는 로컬 네트워크에 컴퓨터가 있고 이러한 서비스를 인터넷에서 액세스 할 수 있도록하려면«포트 전달»을 수행하거나 "개방 포트"라고합니다. 이런 식으로 누군가가 공용 IP 주소와 해당 외부 포트를 사용하여 소켓을 열면 해당 데이터 흐름은 "포트를 연"컴퓨터로 자동으로 전달됩니다.
기본적으로 모든 라우터에는 포트 포워딩을 수행하는 규칙이 없으므로 특별히 수행해야합니다. 또한 매우 중요한 세부 사항은 운영자가 CG-NAT를 가지고 있다면 라우터의 포트를 외부에서 열더라도 로컬 네트워크의 내부 리소스에 액세스하기 위해 아무것도 할 수 없다는 것입니다.
포트를 어떻게 공격합니까?
실제로 포트를 "공격"할 수는 없습니다. 공격을받는 것은 들어오는 연결을 수신하기 위해 수신하는 "포트"뒤에있는 서비스입니다. 예를 들어 포트 5555가 열려 있고 여기에 FTP 서버가 구성되어있는 경우 포트가 아닌 FTP 서비스를 공격합니다. 포트는 여전히 정보에 대한 "문"이며 진정으로 공격받는 것은 이러한 포트 뒤에있는 서비스입니다.
포트 공격이라는 용어는 일반적으로 특정 컴퓨터에서 어떤 포트가 열려 있는지 확인하고 나중에이 특정 서비스 뒤에있는 서비스를 공격하기 위해 "포트 스캔 수행"이라고 말해야 할 때 사용됩니다. 포트 스캔을 수행하는 방법에는 여러 가지가 있지만 의심 할 여지없이 사용할 수있는 최선의 방법은 다음을 사용하여 스캔을 수행하는 것입니다. Nmap은, 전형적인 호스트 발견 및 포트 스캐닝 프로그램은 또한 Nmap의 추가 기능인 NSE를 통해 다른 서비스를 크래킹하고 알려진 취약점을 악용 할 수있는 가능성을 허용합니다.
Nmap은 매우 사용하기 쉬운 프로그램으로, Linux 기반 운영 체제에 설치하여 작동을 시작하고, 각 배포판의 공식 저장소에 있으므로 다음 명령을 실행하십시오.
sudo apt install nmap
설치가 완료되면 특정 명령을 실행하여 포트가 열려 있는지, 필터링되었는지 또는 닫혀 있는지 확인해야합니다.
nmap -p PUERTO IP
다음과 같이 포트 범위를 스캔 할 수도 있습니다.
nmap -p PUERTOINICIAL-PUERTOFINAL IP
예를 들어 HTTP 및 HTTPS가 실행중인 웹 서버가있는 경우 다음과 같이 포트 80 및 443이 열려있는 것은 완전히 정상입니다.
Nmap을 사용하여 개방, 필터링 또는 폐쇄 된 포트를 확인하는 것은 쉽지만, 우리가 사용할 수있는 다양한 유형의 포트 스캔에 대한 자세한 단계별 매뉴얼이있는 전체 Nmap 위키를 읽는 것이 좋습니다.
열린 포트로 사이버 범죄자는 무엇을 할 수 있습니까?
개방 된 항구가있을 때 사이버 범죄자가 할 수있는 일과 할 수없는 일에 대한 몇 가지 사례가있을 수 있습니다. 열린 포트가 있지만 수신 대기중인 서비스가 없으면 아무것도 할 수 없지만 나중에 수신 할 서비스를 추가 할 경우 열린 포트 번호가 "저장"될 수 있습니다. .
열린 포트가 있고 청취 뒤에 서비스가있는 경우 많은 작업을 수행 할 수 있습니다.
- 작동을 확인하는 합법적 인 방법을 사용하십시오.
- 서비스에 인증이 필요한 경우 사전 또는 무차별 대입 공격을 수행하여 서비스에 액세스 할 수 있습니다.
- 서비스 거부 공격을 수행하여 서비스가 제대로 작동하지 않게하고 서비스 제공을 중지합니다.
- 불법적으로 서비스 리소스에 액세스하고, 시스템에 들어가고, 권한을 상승시키고 서버를 완전히 제어하기 위해 서비스의 보안 취약성을 악용합니다.
보시다시피 열린 포트와 그 뒤에서 실행되는 서비스를 통해 사이버 범죄자는 많은 악의적 인 작업을 수행 할 수 있으므로이 포트 뒤에서 서비스를 보호하고 서비스를 보호하기 위해 다음 작업을 수행하는 것이 좋습니다. :
- 실제로 필요한 사람에게만 액세스 할 수 있도록 방화벽을 올바르게 구성하십시오. 예를 들어 국가별로 필터링 할 수 있습니다.
- DoS 공격을 완화하기 위해 동일한 소스 IP에 대한 동시 연결을 너무 많이 거부하도록 방화벽 규칙을 구성 할 수 있습니다.
- fail2ban과 같은 프로그램을 설치하여 여러 번의 로그인 시도를 감지 한 다음 방화벽에 소스 IP를 차단하도록 지시 할 수 있습니다.
- 수신중인 서비스 (SSH 서버, FTP 또는 웹 서버)를 강화하면 이러한 서비스를 더욱 안전하게 보호하기 위해 항상 고급 설정이 있습니다.
- 서비스를 호스팅하는 운영 체제를 강화하고, 강력한 인증 정책을 정의하고, 시스템을 업데이트하고, SELinux와 같은 고급 시스템도 사용합니다.
보안을 강화하기 위해 시스템 및 서비스에 적용 할 수있는 보안 조치가 많이 있지만 100 % 보안은 존재하지 않으므로 사고에 대비하고 시스템을 복구 할 수 있어야합니다.