이 기사에서는 TCP 래퍼가 무엇인지, Linux 서버에서 이를 구성하여 네트워크 서비스의 권한을 제한하는 방법을 설명합니다. 시작하기 전에 TCP 래퍼로 인해 적절하게 구성된 방화벽이 필요하지 않다는 점을 분명히 해야 합니다.
이 시점에서 이 도구는 시스템에 대한 궁극적인 보안 수단이 아니라 호스트 기반 액세스 제어 목록으로 생각할 수 있습니다. 방화벽과 TCP 래퍼를 사용하면 둘 중 하나만 선호하는 대신 서비스가 단일 실패 지점이 되지 않도록 할 수 있습니다.
기본적으로 이러한 파일의 내용은 비어 있거나 주석 처리되어 있거나 전혀 존재하지 않습니다. 따라서 모든 요청은 TCP 필터를 통해 허용되며 시스템은 모든 보호를 제공하기 위해 방화벽에 의존하게 됩니다. 왜냐하면 그것은 우리가 원하는 것이 아니기 때문입니다. 처음에 소개한 이유로 다음 두 파일이 존재하는지 확인하세요.
두 파일의 작성 구문 규칙은 동일합니다. In의# ls -l /etc/hosts.allow /etc/hosts.deny
<services> : <clients> [: <option1> : <option2> : ...]
2. 클라이언트는 규칙의 영향을 받는 호스트 이름 또는 IP 주소를 쉼표로 구분하여 나타냅니다. 다음 와일드카드도 허용됩니다.
1).ALL은 모든 것을 의미하며 클라이언트와 서비스에 적용됩니다.
2).LOCAL은 localhost와 같은 공식 도메인 이름에 정규화된 호스트 이름(FQDN)이 없는 일치하는 컴퓨터를 의미합니다.
3).KNOWN은 호스트 이름, 호스트 주소 또는 사용자가 알려져 있음을 의미합니다(즉, DNS 또는 기타 서비스를 통해 확인할 수 있음).
4).UNKNOWN은 KNOWN의 반대말입니다.
5).PARANOID 역방향 DNS 조회에서 다른 주소가 반환되면 연결이 끊어집니다(먼저 IP 기반으로 호스트 이름을 확인한 다음 호스트 이름 기반으로 IP 주소를 얻습니다).
3. 마지막으로 콜론으로 구분된 작업 목록은 규칙이 트리거될 때 수행될 작업을 나타냅니다.
서비스에 대한 액세스를 허용하는 /etc/hosts.allow 파일의 규칙이 /etc/hosts.deny의 규칙보다 우선한다는 점을 기억해야 합니다. 또한 동일한 서비스에 두 개의 규칙이 적용되는 경우 첫 번째 규칙만 고려됩니다.
안타깝게도 모든 네트워크 서비스가 TCP 필터를 지원하는 것은 아닙니다. 특정 서비스가 이를 지원하는지 확인하려면 다음 명령을 실행하면 됩니다.
위 명령을 실행한 후 다음 결과를 따르면 TCP 필터, sshd 및 vsftpd를 예로 지원할 수 있으며 출력은 다음과 같습니다. 필터가 지원하는 서비스# ldd /path/to/binary | grep libwrap
서비스 권한을 제한하기 위해 TCP 필터를 사용하려면
/etc/hosts.allow 및 /etc/hosts.deny를 편집할 때 다음을 확인하세요. 비어 있지 않은 마지막 줄 다음에 Enter를 눌러 새 줄을 추가합니다.
SSH 및 FTP 서비스에서 localhost 및 192.168.0.102만 허용하고 다른 모든 사용자는 거부하려면 /etc/hosts.deny에 다음을 추가하세요.그리고 /etc/ 호스트.허용 파일에 다음 콘텐츠를 추가합니다.
이러한 변경 사항은 즉시 적용되며 다시 시작할 필요가 없습니다. 아래 그림에서 마지막 줄의 LOCAL을 삭제하면 FTP 서버를 localhost에서 사용할 수 없게 되는 것을 볼 수 있습니다. 와일드카드를 추가한 후 서비스를 다시 사용할 수 있게 되었습니다.sshd,vsftpd : ALL ALL : ALL
<<>
sshd,vsftpd : 192.168.0.102,LOCAL
example.com을 포함하는 호스트 이름에 대해 모든 서비스를 사용할 수 있도록 하려면 호스트에 다음 줄을 추가합니다. 허용:
ALL : .example.com
10.0.1.0/24의 머신이 vsftpd 서비스에 액세스하는 것을 금지하려면 호스트에 다음 줄을 추가하세요. .deny 파일:
vsftpd : 10.0.1.
마지막 두 예에서 클라이언트 목록의 각 줄 시작과 끝 부분에 있는 점을 확인하세요. 이는 "이름이나 IP에 해당 문자열이 포함된 모든 호스트 또는 클라이언트"를 의미하는 데 사용됩니다.