나가는 연결을 방화벽으로 보호하는 이유는 무엇입니까?

나가는 연결을 방화벽으로 보호하는 이유는 무엇입니까?

방화벽이 있습니다(뇌척수액), 들어오고 나가는 TCP 포트를 개별적으로 허용할 수 있습니다. 내 질문은, 누군가가 왜 원하는지입니다.어느아웃바운드 포트가 닫혔나요?

나는 기본적으로 당신이 아마 원할 것이라는 것을 알고 있습니다모두포트들어오는 연결을 위해 닫기. HTTP 서버를 실행하는 경우 여기에서 포트 80을 열어야 할 수도 있습니다. FTP 서버를 활성 모드로 실행하려면 포트 21을 열어야 할 수도 있습니다. 그러나 수동 FTP 모드로 설정된 경우 FTP 클라이언트의 데이터 연결을 수락하려면 많은 수의 포트가 필요합니다. 추가 서비스를 위해서는 등등이 필요합니다. 하지만 그게 다야. 서버가 제공하는 특정 서비스와 관련되지 않은 나머지 포트, 특히 기본적으로 클라이언트 시스템인 경우에는 닫아야 합니다.

하지만 약나가는 연결? 아웃바운드 연결의 대상 포트를 닫으면 보안상의 이점이 있습니까? 제가 이 질문을 하는 이유는 처음에 들어오는 연결에 대해 모든 포트를 닫는 매우 유사한 정책이 적용될 수 있다고 생각했기 때문입니다. 그러나 예를 들어 수동 FTP 모드에서 클라이언트 역할을 할 때 임의의 높은 포트가 FTP 서버에 연결을 시도한다는 것을 깨달았습니다. 따라서 클라이언트에서 이러한 높은 포트를 차단하면 해당 클라이언트에서 수동 FTP를 효과적으로 비활성화하게 됩니다. 이는 성가신 일입니다. 모든 것을 공개하고 싶지만 이것이 보안 위협이 될 수 있다는 점이 걱정됩니다.

그렇습니까? 이것은 나쁜 생각입니까, 아니면 수동 FTP와 같은 서비스를 용이하게 하기 위해 나가는 연결을 위해 모든(또는 많은) 포트를 여는 것에는 명백한 단점이 있습니까?

답변1

누군가가 나가는 포트를 닫고 싶어하는 데에는 여러 가지 이유가 있을 수 있습니다. 다음은 제가 서로 다른 시간에 서로 다른 서버에 적용한 몇 가지 사항입니다.

  • 컴퓨터가 기업 환경에 있고 트래픽이 프록시를 통과하는 아웃바운드 웹 트래픽만 허용됩니다. 다른 모든 포트는 필요하지 않으므로 닫혀 있습니다.
  • 머신은 실행 가능한 코드(예: PHP, Ruby, Python, Perl 등)가 있는 웹 서버를 실행하고 있습니다. 가능한 코드 결함을 완화하기 위해 의도된 아웃바운드 서비스만 허용됩니다.
  • 컴퓨터에서 실행 중인 서비스나 응용 프로그램이 원격 리소스에 연결을 시도하지만 서버 관리자가 이를 원하지 않습니다.
  • 모범적인 보안 관행: 명시적으로 허용되지 않은 콘텐츠는 거부되어야 합니다.

답변2

@roaima의 답변을 확장하면 다음과 같습니다.

심층 방어.

서버가 악성코드에 의해 손상되었다고 상상해 보세요. 악성코드는 스팸 이메일 전송을 시도하는 프로그램을 설치합니다. 포트 25에서 나가는 연결을 거부함으로써 프로그램의 시도를 차단하고 피해를 제한할 수 있습니다. (스팸 프로세스는 서버에서 계속 실행되므로 최대한 빨리 처리해야 합니다.)

답변3

서버가 맬웨어에 의해 손상된 경우 일반적으로 배포할 페이로드(랜섬웨어, 측면 이동, 스팸, 비트코인 ​​채굴 등)를 얻기 위해 명령 및 제어와 통신해야 합니다.

인터넷에 접속할 수 없으면 시도가 실패할 수 있습니다. 악성 코드가 어디에 있는지 신경 쓰지 않을 만큼 충분히 일반적인 경우(즉, 표적 공격이 아닌 경우) 확률은 더 높습니다.

답변4

위의 답변 외에도 방화벽 규칙 또는 설정의 구성에 따라 나가는 연결에 대한 거부 규칙을 결합하면 거부된 나가는 연결 포트를 기록하도록 방화벽에 요청할 수 있는 상황이 발생할 수 있습니다. 이로 인해 방화벽 관리 장치가 초과될 수 있습니다. 방화벽은 로그를 남기고 나쁜 상태가 되지만, 서버에 주의가 필요할 뿐만 아니라 애초에 이상하게 행동하고 있다는 사실을 IT에 알립니다.

잠재적인 맬웨어가 실패한 연결 시도를 자체적으로 기록하지 않을 수 있으므로 이러한 로그는 유용합니다.

관련 정보