如何在 hosts.deny 文件中禁止所有與 .se 和 .ru 的連接
我試圖弄清楚,是否有可能確保,如果使用者使用瀏覽器並輸入以“se”或“ru”結尾的域名,他們將被拒絕訪問該站點。
PS:這是一個學校作業,我的老師要求我使用 tcp 包裝器,所以下載一些可以解決問題的模組是不可能的,不幸的是
不,這是不可能的。(這可能是一個棘手的問題:-)。
TCP 包裝器 (tcp_wrappers_7.6.tar.gz)
Wietse Venema 的網路記錄器,也稱為 TCPD 或 LOG_TCP。這些程序記錄傳入telnet、ftp、rsh、rlogin、finger 等請求的客戶端主機名。
要獲取網站,Web 瀏覽器會發出傳出請求。(並且網路瀏覽器不會濫用
libwrap
它不打算用於的目的。)
TCP 包裝器已經過時了。Web 伺服器(Apache 和其他)可能需要在編譯時支持 TCP 包裝器。Apache 和 Nginx 有自己通常使用的方法和模組。
Web 伺服器 Nginx 也不支持 TCP 包裝器,但在此地址有一個支持它們的模組:https ://github.com/sjinks/ngx_tcpwrappers 。這也需要從原始碼編譯並且有嚴重的限制。
應該注意的是,TCP Wrappers 有幾個你應該知道的特性:
最令人失望的是 libwrap(實現 TCP Wrappers 功能的庫)不是執行緒安全庫。換句話說,如果兩個執行緒嘗試同時使用 libwrap,結果可能會很奇怪。這是因為 libwrap 使用不可重入函式,如 strtok()、gethostbyname()、gethostbyaddr() 等。如果 nginx 建構時支持執行緒(它還能工作嗎?),使用 libwrap 會導致性能損失(因為訪問libwrap 函式必須被序列化)。如果 nginx 配置為不支持執行緒(這是 Linux 的預設設置),則一切正常。
動態 ACL 配置是有代價的:libwrap 將在每個請求上讀取並解析 /etc/hosts.allow 和 /etc/hosts.deny;這可能是高負載項目的一個問題。
所以最後,使用 tcpwrappers 是不可行的。