웹사이트 검색

Linux에서 TCP 래퍼를 사용하여 네트워크 서비스를 보호하는 방법


이 기사에서는 TCP 래퍼가 무엇인지, 그리고 Linux 서버에서 실행되는 네트워크 서비스에 대한 액세스를 제한하도록 이를 구성하는 방법을 설명합니다. 그러나 시작하기 전에 TCP 래퍼를 사용한다고 해서 적절하게 구성된 방화벽이 필요하지 않은 것은 아니라는 점을 분명히 해야 합니다.

이런 점에서 이 도구는 시스템에 대한 궁극적인 보안 수단이 아니라 호스트 기반 액세스 제어 목록으로 생각할 수 있습니다. 방화벽과 TCP 래퍼를 사용하면 둘 중 하나를 선호하는 대신 서버에 단일 실패 지점이 남지 않도록 할 수 있습니다.

호스트.허용 및 호스트.거부 이해

네트워크 요청이 서버에 도달하면 TCP 래퍼는 hosts.allowhosts.deny(순서대로)를 사용하여 클라이언트가 특정 서비스를 사용하도록 허용해야 하는지 결정합니다. .

기본적으로 이러한 파일은 비어 있거나 모두 주석 처리되어 있거나 존재하지 않습니다. 따라서 모든 것이 TCP 래퍼 계층을 통해 허용되며 시스템은 완전한 보호를 위해 방화벽에 의존하게 됩니다. 이는 바람직하지 않으므로 소개에서 언급한 이유로 인해 두 파일이 모두 존재하는지 확인하십시오.

ls -l /etc/hosts.allow /etc/hosts.deny

두 파일의 구문은 동일합니다.

<services> : <clients> [: <option1> : <option2> : ...]

어디,

  1. 서비스는 현재 규칙을 적용해야 하는 서비스를 쉼표로 구분한 목록입니다.
  2. 클라이언트는 규칙의 영향을 받는 쉼표로 구분된 호스트 이름 또는 IP 주소 목록을 나타냅니다. 다음 와일드카드가 허용됩니다.

    1. ALL은 모든 항목과 일치합니다. 클라이언트와 서비스 모두에 적용됩니다.
    2. LOCAL은 localhost와 같이 FQDN에 마침표가 없는 호스트와 일치합니다.
    3. KNOWN은 호스트 이름, 호스트 주소 또는 사용자가 알려진 상황을 나타냅니다.
    4. 알 수 없음알 수 없음의 반대입니다.
    5. PARANOID는 역방향 DNS 조회(먼저 호스트 이름을 확인하기 위해 IP 주소에서, 그 다음 IP 주소를 얻기 위해 호스트 이름에서)가 각각 다른 주소를 반환하는 경우 연결이 끊어지게 만듭니다.
  3. 마지막으로 콜론으로 구분된 작업의 선택적 목록은 특정 규칙이 트리거될 때 어떤 일이 발생해야 하는지를 나타냅니다.

/etc/hosts.allow에서 특정 서비스에 대한 액세스를 허용하는 규칙은 금지하는 /etc/hosts.deny의 규칙보다 우선한다는 점을 명심하세요. 그것. 또한 동일한 서비스에 두 개의 규칙이 적용되는 경우 첫 번째 규칙만 고려됩니다.

불행하게도 모든 네트워크 서비스가 TCP 래퍼 사용을 지원하는 것은 아닙니다. 특정 서비스가 이를 지원하는지 확인하려면 다음을 수행하십시오.

ldd /path/to/binary | grep libwrap

위 명령이 출력을 반환하는 경우 TCP 래핑될 수 있습니다. 이에 대한 예는 다음과 같이 sshdvsftpd입니다.

TCP 래퍼를 사용하여 서비스에 대한 액세스를 제한하는 방법

/etc/hosts.allow/etc/hosts.deny를 편집할 때 마지막 줄 뒤에 Enter를 눌러 줄바꿈을 추가해야 합니다. 비어 있지 않은 줄.

SSH 및 FTP 액세스를 192.168.0.102localhost에만 허용하고 다른 모든 액세스를 거부하려면 /etc/hosts.deny에 다음 두 줄을 추가하세요. :

sshd,vsftpd : ALL
ALL : ALL

/etc/hosts.allow의 다음 줄:

sshd,vsftpd : 192.168.0.102,LOCAL
#
hosts.deny	This file contains access rules which are used to
#		deny connections to network services that either use
#		the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		The rules in this file can also be set up in
#		/etc/hosts.allow with a 'deny' option instead.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : ALL
ALL : ALL
#
hosts.allow	This file contains access rules which are used to
#		allow or deny connections to network services that
#		either use the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : 192.168.0.102,LOCAL

이러한 변경 사항은 다시 시작할 필요 없이 즉시 적용됩니다.

다음 이미지에서는 마지막 줄에서 LOCAL 단어를 제거한 효과를 볼 수 있습니다. 즉, localhost에서 FTP 서버를 사용할 수 없게 됩니다. 와일드카드를 다시 추가하면 서비스를 다시 사용할 수 있게 됩니다.

이름에 example.com이 포함된 호스트에 모든 서비스를 허용하려면 hosts.allow에 다음 줄을 추가하세요.

ALL : .example.com

10.0.1.0/24의 컴퓨터에 대한 vsftpd 액세스를 거부하려면 hosts.deny에 다음 줄을 추가하세요.

vsftpd : 10.0.1.

마지막 두 예에서 클라이언트 목록의 시작과 끝 부분에 있는 을 확인하세요. 이는 "이름이나 IP에 해당 문자열이 포함된 모든 호스트 및/또는 클라이언트"를 나타내는 데 사용됩니다.

이 기사가 도움이 되었나요? 질문이나 의견이 있으신가요? 아래 의견 양식을 사용하여 자유롭게 메모를 남겨주세요.