tcp_wrapper過濾

来源:http://www.cnblogs.com/f-ck-need-u/archive/2017/08/11/7347987.html
-Advertisement-
Play Games

1.1 wrap簡介 wrap工作在內核空間和應用程式中間的庫層次中。在內核接受到數據包准備傳送到用戶空間時都會經過庫層次,對於部分(只是部分)應用程式會在經過庫層次時會被wrap庫文件阻擋下來檢查一番,如果允許通過則交給應用程式。 1.2 查看是否支持wrapper wrap只會檢查tcp數據包, ...


1.1 wrap簡介

wrap工作在內核空間和應用程式中間的庫層次中。在內核接受到數據包准備傳送到用戶空間時都會經過庫層次,對於部分(只是部分)應用程式會在經過庫層次時會被wrap庫文件阻擋下來檢查一番,如果允許通過則交給應用程式。

1.2 查看是否支持wrapper

wrap只會檢查tcp數據包,所以稱為tcpwrapper。但還不是檢查所有類型的tcp數據包,例如httpd就不支持。是否支持,可以通過查看應用程式是否依賴於libwrap.so庫文件。(路徑/lib64/libwrap.so)

[root@mail ~]# ldd $(which sshd) | grep wrap
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f110efb7000)
[root@mail ~]# ldd  $(which vsftpd) | grep wrap    
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1e73185000)
[root@mail ~]# ldd  $(which httpd) | grep wrap

說明sshd和vsftpd都支持wrap機制,而apache的httpd不支持。

當然上面grep不出結果只能說明不支持這樣的動態鏈接的方式,有些應用程式可能靜態編譯進程式中了,如舊版本的rpc應用程式portmap。

是否將wrap功能靜態編譯到應用程式中,可以通過以下方式查看。

strings $(which portmap) | grep hosts

如果篩選出的結果中有hosts_access或者/etc/hosts.allow和/etc/hosts.deny這兩個文件,則說明是支持的。後兩個文件正是wrap訪問控制的文件。

要註意的是,如果超級守護進程xinetd被wrap控制了,則其下的瞬時守護進程都受wrap控制。

1.3 配置文件格式

hosts.allow和hosts.deny兩個文件的語法格式是一樣的,如下:

daemon_list:   client_list  [:options]

【"daemon_list:"的表示方法】:程式名必須是which查出來同名的名稱,例如此處的in.telnetd

sshd:
sshd,vsftpd,in.telnetd:
ALL
daemon@host:

最後一項daemon@host指定連接IP地址,針對多個IP的情況。如本機有192.168.100.8和172.16.100.1兩個地址,但是只想控制從其中一個ip連接的vsftpd服務,可以寫"[email protected]:"。

【"client_list"的表示方法】

單IP:192.168.100.8
網段:兩種寫法:"172.16."和10.0.0.0/255.0.0.0
主機名或域匹配:fqdn或".a.com"
巨集:ALL、KNOWN、UNKNOWN、PARANOID、EXCEPT

ALL表示所有主機;LOCAL表示和主機在同一網段的主機;(UN)KNOWN表示DNS是否可以解析成功的;PARANOID表示正解反解不匹配的;EXCEPT表示“除了”。

它們的語法可以man hosts_access。

tcpwrapper的檢查順序:hosts.allow --> hosts.deny --> 允許(預設規則)

例如sshd僅允許172.16網段主機訪問。

hosts.allow:
sshd: 172.16.
hosts.deny:
sshd: ALL

telnet服務不允許172.16網段訪問但允許172.16.100.200訪問。有幾種表達方式:

表達方式一:

hosts.allow:
in.telnetd: 172.16.100.200
hosts.deny:
in.telnetd: 172.16.

表達方式二:

hosts.deny:
    in.telnetd: 172.16. EXCEPT 172.16.100.200

此法不能寫入hosts.allow:"in.telnetd: 172.16.100.200 EXCEPT 172.16."

表達方式三:

hosts.allow:
    in.telnetd: ALL EXCEPT 172.16. EXCEPT 172.16.100.200
hosts.deny:
    in.telnetd: ALL

EXCEPT的最形象描述是“在其前面的範圍內挖一個洞,在洞範圍內的都不匹配”。所以hosts.allow中,ALL內有一個172.16的洞是不被allow的,在172.16中又有小洞172.16.100.200是被排除在172.16洞外的,所以172.16.100.200是被allow的。

註意:被EXCEPT匹配到的表示不經過此條規則的檢查,而不是反意。例如在allows中指明一個EXCEPT,當有except中的主機被匹配到,表示的不是該主機被拒絕。而是跳過allow檢測進入deny的檢測。

【:options的表達方式】

:ALLOW
:DENY
:spawn

ALLOW和DENY可以分別寫入deny文件和allow文件,表示在allow文件中拒絕在deny文件中接受。如allow文件中:

in.telnetd: 172.16. :DENY

spawn表示啟動某程式的意思(/etc/inittab中的respawn表示重啟指定程式)。例如啟動一個echo程式。

in.telnetd: 172.16 :spawn echo "we are good $(date) >> /var/log/telnetd.log"

 

回到系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7347987.html

註:若您覺得這篇文章還不錯請點擊下右下角的推薦,有了您的支持才能激發作者更大的寫作熱情,非常感謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 效果圖如下 1、自定義屬性,在value文件夾下新建attrs文件,聲明如下屬性 2、繼承ImageView ,重寫構造和ondraw方法 3、引入CircleImageView ...
  • Android MediaRecorder自定義解析度 工作這麼久了,確實積累了不少東西,但都是以文檔的形式存在U盤裡的,為什麼不寫博客呢?因為懶啊!!!總感覺博客太難寫了(大概是上學時候寫作文恐懼症 的後遺症吧……),不過現在看看那些積累的有些是自己總結,但也有不少是綜合網上各位大佬的文章提煉出來 ...
  • Android Studio 是個發工具,其自身帶調式環境是很強大的,我們要擺脫只會使用Log列印日誌的低效的方法,掌握高級調試技巧對每個Android開發者都是很必要的,廢話少說,直入正題 調試方式:通過下麵方法進入調試 運行調試:點擊齒輪運行按鈕,IDE出現調試視窗; 附加進程: 如果App正在 ...
  • 近期在做一個答題類型的APP,而其中最重要的是答題卡。而答題卡要如何做? 1.將數據插入到SQLite資料庫中 2.建立entity實體包,創建實體類,封裝。 3.創建實體與view的List集合 4.迴圈讀取數據,加入到實體集合中 5.根據實體集合(size)進行迴圈,將佈局文件轉化為view,加 ...
  • 1、創建應用 獲取AK (我理解為Application key) 通過百度賬號登錄百度地圖開放平臺,進入API控制台 http://lbsyun.baidu.com/apiconsole/key 創建自己的應用,輸入應用名稱 ,選擇Android SDK 應用類型,選擇需要的服務(預設全選) 輸入 ...
  • 1. 泛型 AysncTask Params:啟動任務時傳入的參數,通過調用asyncTask.execute(param)方法傳入。 Progress:後臺任務執行的進度,若不用顯示進度條,則不需要指定。 Result:後臺任務結束時返回的結果。 2. 重要方法 doInBackground(Pa ...
  • 一,效果圖。 二,代碼。 ViewController.m ...
  • Desktop:基本的桌面系統,包括常用的桌面軟體,如文檔查看工具;Minimal Desktop:基本的桌面系統,包含的軟體更少;Minimal:基本的系統,不包含任何可選的軟體包;Basic Server:安裝的基本系統的平臺支持,不包含桌面;Database Server:基本系統平臺,加上M... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...