사용자가 브라우저를 사용하고 "se" 또는 "ru"로 끝나는 도메인 이름을 입력하는 경우 해당 웹 사이트에 대한 액세스가 거부되도록 할 수 있는지 알아내려고 노력 중입니다.
추신: 이것은 학교 과제이고 선생님이 나에게 tcp 래퍼를 사용하라고 요청했기 때문에 불행히도 일부 모듈을 다운로드하는 것은 불가능합니다.
답변1
아니요, 불가능합니다. (이것은 까다로운 질문일 수 있습니다 :-).
TCP 래퍼(tcp_wrappers_7.6.tar.gz)
TCPD 또는 LOG_TCP라고도 알려진 Wietse Venema의 네트워크 로거입니다. 이 프로그램은 클라이언트 호스트 이름을 기록합니다.들어오는telnet, ftp, rsh, rlogin, Finger 및 기타 요청.
웹사이트를 가져오기 위해 웹 브라우저는 외부로 요청을 보냅니다. (웹 브라우저는 libwrap
의도하지 않은 목적으로 오용될 수 없습니다.)
답변2
TCP 래퍼는 더 이상 사용되지 않습니다. 웹 서버(Apache 및 기타)는 TCP 래퍼 지원으로 컴파일해야 할 수도 있습니다. Apache와 Nginx에는 일반적으로 사용되는 자체 메서드와 모듈이 있습니다.
웹 서버 Nginx도 TCP 래퍼를 지원하지 않지만 다음 주소에서 이를 지원하는 모듈이 있습니다.https://github.com/sjinks/ngx_tcpwrappers. 또한 소스에서 컴파일해야 하며 엄격한 제한이 있습니다.
TCP 래퍼에는 알아야 할 몇 가지 기능이 있습니다.
가장 실망스러운 점은 libwrap(TCP 래퍼 기능을 구현하는 라이브러리)이 스레드로부터 안전한 라이브러리가 아니라는 것입니다. 즉, 두 스레드가 동시에 libwrap을 사용하려고 하면 결과가 이상해질 수 있습니다. 이는 libwrap이 strtok(), gethostbyname(), gethostbyaddr() 등과 같은 비재진입 함수를 사용하기 때문입니다. nginx가 스레딩 지원으로 구축된 경우(여전히 작동합니까?) libwrap을 사용하면 성능 저하가 발생할 수 있습니다(libwrap 함수에 대한 액세스가 직렬화되어야 하기 때문입니다). nginx가 스레드(Linux의 기본값)를 지원하지 않도록 구성되면 모든 것이 잘 작동합니다.
동적 ACL 구성에는 비용이 듭니다. libwrap은 모든 요청에서 /etc/hosts.allow 및 /etc/hosts.deny를 읽고 구문 분석합니다. 이는 부하가 높은 프로젝트에 문제가 될 수 있습니다.
따라서 궁극적으로 tcpwrappers를 사용하는 것은 불가능합니다.