PIXNET Logo登入

小廷的部落格

跳到主文

歡迎光臨lyt0112在痞客邦的小天地

部落格全站分類:休閒旅遊

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 8月 31 週日 202512:00
  • 桃園蘆竹五酒桶山O型 A10機捷山鼻站

桃園蘆竹五酒桶山O型 A10機捷山鼻站
桃園蘆竹區的五酒桶山,海拔170公尺,是個踏青的好地方.
搭機捷到A10山鼻站 出站 (2025.08.31 11:53) 大熱天,全程撐傘走完O型路線,大約花費2個小時30分鐘...
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(62)

  • 個人分類:國內旅遊
▲top
  • 7月 30 週三 202515:10
  • IPv4 Subnet Mask IP Range

Class B Subnet Blocks
 /20 -- 16*/24 Subnets 
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(257)

  • 個人分類:電腦資訊
▲top
  • 9月 11 週日 201614:00
  • 日光溫泉會館-花見西餐廳下午茶

P_20160911_173416.jpg
日光溫泉會館-花見西餐廳下午茶
早上到新開幕的台中歌劇院晃晃...晃完沿著文心路騎接東山路過東東芋圓後沒多久,會看到一台彩繪飛機...那是"橋王花園酒店"
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(7,180)

  • 個人分類:吃吃喝喝
▲top
  • 6月 18 週六 201616:00
  • 彰化-大村-進昌咖啡烘焙館

DSC_5499.jpg
炎炎夏日,懶懶的2個人摸到中午才想著出遊....
吃完午餐後出發來去進昌咖啡烘焙館吃下午茶...
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(156)

  • 個人分類:國內旅遊
▲top
  • 5月 15 週日 201610:00
  • 新北市-九份-黃金博物館 老街

黃金博物館園區很大,包含 四連棟、太子賓館、神社遺址 ...等,可以悠閒慢慢逛,慢慢拍照...
 
瑞芳搭公車(一段票)直接搭到黃金博物館門口下車
DSC_4768.jpg
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(223)

  • 個人分類:國內旅遊
▲top
  • 1月 31 週日 201610:36
  • 台中-后里-泰安國小旁落羽松

DSC_1123.jpg
往年常聽到泰安有落羽松,今年想到來去看看...
但時間太晚了,出發前想說應該掉光光了吧...
賭看看還能不能看的到囉...
於是和女友,直接搭火車到泰安火車站...
出站後往右走,走1-2分鐘會到一個十字叉路...
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(166)

  • 個人分類:國內旅遊
▲top
  • 1月 12 週二 201613:58
  • __DATE__ 和 __TIME__ 編譯時報錯

新版本 gcc 編譯包含 __DATE__ 或者 __TIME__ 程式碼時,可能會報下面的錯誤:
error: macro "__DATE__" might prevent reproducible builds
error: macro "__TIME__" might prevent reproducible builds
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(1,041)

  • 個人分類:電腦資訊
▲top
  • 11月 29 週日 201511:10
  • Linux 無法開機常見的解法 acpi=off noapic

重點:
系統不能啟動
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(2,801)

  • 個人分類:電腦資訊
▲top
  • 11月 28 週六 201516:25
  • 用ipset配置linux防火牆


iptables是在linux內核裡配置防火牆規則的用戶空間工具,它實際上是netfilter框架的一部分.可能因為iptables是netfilter框架裡最常見的部分,所以這個框架通常被稱為iptables,iptables是linux從2.4版本引入的防火牆解決方案.
ipset是iptables的擴展,它允許你創建 匹配整個地址sets(地址集合) 的規則。而不像普通的iptables鏈是線性的存儲和過濾,ip集合存儲在帶索引的數據結構中,這種結構即時集合比較大也可以進行高效的查找.
除了一些常用的情況,比如阻止一些危險主機訪問本機,從而減少系統資源佔用或網絡擁塞,IPsets也具備一些新防火牆設計方法,並簡化了配置.
在本文中,在快速的討論ipsets的安裝要求後,我會花一點時間來介紹iptables的核心機制和基本概念.然後我會介紹ipset的使用方法和語法,並且演示ipset如何與iptables結合來完成各種不同的配置。最後,我會提供一些細節和較高級的例子來演示如何解決現實中的問題。
ipset比傳統的iptables擁有顯著的性能提升和擴展特性,比如將單個防火牆規則通過一次配置應用到整個主機所在的組和網絡。
由於ipset只是iptables的擴展,所以也會對iptables進行描述。
在許多的linux發佈中ipset是一個簡單的安裝包,大家可以通過自己的linux發行版提供的包管理工具進行安裝。
需要理解的重點時,同iptables一樣,ipset是由用戶空間的工具和內核空間的模塊兩部分組成,所以你需要將這兩部分都準備好。你也需要"ipset-aware"這個iptables 模塊,這個模塊用來增加 rules that match against sets。(……)
首先我們使用自己的linux發行版的包管理工具對ipset進行搜索。在ubuntu上安裝需要安裝ipset 和 xtables-addons-source 包,然後,運行module-assistant auto-install xtables-addons,等待大約30秒後ipset就可以使用了。
如果你的linux發行版沒有被支持,那就需要根據ipset 首頁中的安裝步驟構建源碼並對內核打補丁。
這篇文章中使用ipset v4.3 和 iptables v1.4.9。
iptables概述
簡單來講,iptables防火牆配置由規則鏈的集合組成,每一個鏈包含一個規則。一個數據包,在各個處理階段,內核商量合適的規則來決定數據報的命運。
規則鏈按照順序進行匹配,基於數據包的流向 (remote-to-local, remote-to-remote or local-to-remote)和當前所處的處理階段(before or after "routing")。參考圖1。
(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(2,874)

  • 個人分類:電腦資訊
▲top
  • 9月 12 週六 201518:22
  • 利用 ipset 封禁大量 IP

使用 iptables 封 IP,是一種比較簡單的應對網絡攻擊的方式,也算是比較常見。有時候可能會封禁成千上萬個 IP,如果添加成千上萬條規則,在一台注重性能的服務器或者本身性能就很差的設備上,這就是個問題了。ipset 就是為了避免這個問題而生的。


關於 iptables,要知道這兩點。



  • iptables 包含幾個表,每個表由鏈組成。默認的是 filter 表,最常用的也是 filter 表,另一個比較常用的是 nat 表。一般封 IP 就是在 filter 表的 INPUT 鏈添加規則。

  • 在進行規則匹配時,是從規則列表中從頭到尾一條一條進行匹配。


這像是在鏈表中搜索指定節點費力。ipset 提供了把這個 O(n) 的操作變成 O(1) 的方法:就是把要處理的 IP 放進一個集合,對這個集合設置一條 iptables 規則。像 iptable 一樣,IP sets 是 Linux 內核中的東西,ipset 這個命令是對它進行操作的一個工具。


簡單的流程


可以用這幾條命令概括使用 ipset 和 iptables 進行 IP 封禁的流程


ipset create vader hash:ip 
iptables -I INPUT -m set --match-set vader src -j DROP
ipset add vader 4.5.6.7
ipset add vader 1.2.3.4
ipset add vader ...
ipset list vader # 查看 vader 集合的內容

下面分別對各條命令進行描述。


創建一個集合


ipset create vader hash:ip 

這條命令創建了名為 vader 的集合,以 hash 方式存儲,存儲內容是 IP 地址。


添加 iptables 規則


iptables -I INPUT -m set --match-set vader src -j DROP 

如果源地址(src)屬於 vader 這個集合,就進行 DROP 操作。這條命令中,vader 是作為黑名單的,如果要把某個集合作為白名單,添加一個 『!』 符號就可以。


iptables -I INPUT -m set ! --match-set yoda src -j DROP 

到現在雖然創建了集合,添加了過濾規則,但是現在集合還是空的,需要往集合裡加內容。


找出「壞」 IP


找出要封禁的 IP,這是封禁過程中重要的步驟,不過不是這裡的重點。簡要說明一下兩種方法思路。


netstat -ntu | tail -n +3 | awk '{print $5}' | sort | uniq -c | sort -nr 

直接通過 netstat 的信息,把與本地相關的各種狀態的 IP 都計數,排序列出來。


或者從 nginx 或者其他 web server 的日誌裡找請求數太多的 IP


awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr 

後半部分,排序,去重,再按次數進行逆向排序的操作,跟上面命令是一樣的。


找出「壞」 IP,往之前創建的集合裡添加就可以了。


ipset add vader 4.5.6.7 

有多少「壞」 IP,就添加多少 IP,因為針對這些封禁的 IP 只需要一條 iptables 規則,而這些 IP 是以 hash 方式存儲,所以封禁大量的 IP 也不會影響性能,這也是 ipset 存在的最大目的。


 


ipset 更多的用法


存儲類型


前面例子中的 vader 這個集合是以 hash 方式存儲 IP 地址,也就是以 IP 地址為 hash 的鍵。除了 IP 地址,還可以是網絡段,端口號(支持指定 TCP/UDP 協議),mac 地址,網絡接口名稱,或者上述各種類型的組合。


比如指定 hash:ip,port就是 IP 地址和端口號共同作為 hash 的鍵。查看 ipset 的幫助文檔可以看到它支持的所有類型。


下面以兩個例子說明。


hash:net


ipset create r2d2 hash:net 
ipset add r2d2 1.2.3.0/24
ipset add r2d2 1.2.3.0/30 nomatch
ipset add r2d2 6.7.8.9
ipset test r2d2 1.2.3.2

hash:net 指定了可以往 r2d2 這個集合裡添加 IP 段或 IP 地址。


第三條命令裡的 nomatch 的作用簡單來說是把 1.2.3.0/30 從 1.2.3.0/24 這一範圍相對更大的段裡「剝離」了出來,也就是說執行完 ipset add r2d2 1.2.3.0/24 只後1.2.3.0/24 這一段 IP 是屬於 r2d2 集合的,執行了 ipset add r2d2 1.2.3.0/30 nomatch 之後,1.2.3.0/24 裡 1.2.3.0/30 這部分,就不屬於 r2d2 集合了。執行 ipset test r2d2 1.2.3.2 就會得到結果 1.2.3.2 is NOT in set r2d2.


hash:ip,port


ipset create c-3po hash:ip,port 
ipset add c-3po 3.4.5.6,80
ipset add c-3po 5.6.7.8,udp:53
ipset add c-3po 1.2.3.4,80-86

第二條命令添加的是 IP 地址為 3.4.5.6,端口號是 80 的項。沒有註明協議,默認就是 TCP,下面一條命令則是指明了是 UDP 的 53 端口。最後一條命令指明了一個 IP 地址和一個端口號範圍,這也是合法的命令。


自動過期,解封


ipset 支持 timeout 參數,這就意味著,如果一個集合是作為黑名單使用,通過 timeout 參數,就可以到期自動從黑名單裡刪除內容。


ipset create obiwan hash:ip timeout 300 
ipset add obiwan 1.2.3.4
ipset add obiwan 6.6.6.6 timeout 60

上面第一條命令創建了名為 obiwan 的集合,後面多加了 timeout 參數,值為 300,往集合裡添加條目的默認 timeout 時間就是 300。第三條命令在向集合添加 IP 時指定了一個不同於默認值的 timeout 值 60,那麼這一條就會在 60 秒後自動刪除。


隔幾秒執行一次 ipset list obiwan 可以看到這個集合裡條目的 timeout 一直在隨著時間變化,標誌著它們在多少秒之後會被刪除。


如果要重新為某個條目指定 timeout 參數,要使用 -exit 這一選項。


ipset -exist add obiwan 1.2.3.4 timeout 100 

這樣 1.2.3.4 這一條數據的 timeout 值就變成了 100,如果這裡設置 300,那麼它的 timeout,也就是存活時間又重新變成 300。


如果在創建集合是沒有指定 timeout,那麼之後添加條目也就不支持 timeout 參數,執行 add 會收到報錯。想要默認條目不會過期(自動刪除),又需要添加某些條目時加上 timeout 參數,可以在創建集合時指定 timeout 為 0。


ipset create luke hash:ip 
ipset add luke 5.5.5.5 timeout 100
# 得到報錯信息 kernel error received: Unknown error -1

更大!


hashsize, maxelem 這兩個參數分別指定了創建集合時初始的 hash 大小,和最大存儲的條目數量。


ipset create yoda hash:ip,port hashsize 4096 maxelem 1000000 
ipset add yoda 3.4.5.6,3306

這樣創建了名為 yoda 的集合,初始 hash 大小是 4096,如果滿了,這個 hash 會自動擴容為之前的兩倍。最大能存儲的數量是 100000 個。


如果沒有指定,hashsize 的默認值是 1024,maxelem 的默認值是 65536。


另外幾條常用命令


ipset del yoda x.x.x.x # 從 yoda 集合中刪除內容 
ipset list yoda # 查看 yoda 集合內容
ipset list # 查看所有集合的內容
ipset flush yoda # 清空 yoda 集合
ipset flush # 清空所有集合
ipset destroy yoda # 銷毀 yoda 集合
ipset destroy # 銷毀所有集合
ipset save yoda # 輸出 yoda 集合內容到標準輸出
ipset save # 輸出所有集合內容到標準輸出
ipset restore # 根據輸入內容恢復集合內容

還有……



  • 如果創建集合是指定的存儲內容包含 ip, 例如 hash:ip 或 hash:ip,port ,在添加條目時,可以填 IP 段,但是仍然是以單獨一個個 IP 的方式來存。

  • 上面所有的例子都是用 hash 的方式進行存儲,實際上 ipset 還可以以 bitmap 或者 link 方式存儲,用這兩種方式創建的集合大小,是固定的。

  • 通過 man upset 和 ipset —help 可以查到更多的內容,包括各種選項,支持的類型等等。


轉載自https://intxt.net/block-ip-with-ipset/



(繼續閱讀...)
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣(2,666)

  • 個人分類:電腦資訊
▲top
12»

個人資訊

lyt0112
暱稱:
lyt0112
分類:
休閒旅遊
好友:
累積中
地區:

最新文章

  • 桃園蘆竹五酒桶山O型 A10機捷山鼻站
  • IPv4 Subnet Mask IP Range
  • 日光溫泉會館-花見西餐廳下午茶
  • 彰化-大村-進昌咖啡烘焙館
  • 新北市-九份-黃金博物館 老街
  • 台中-后里-泰安國小旁落羽松
  • __DATE__ 和 __TIME__ 編譯時報錯
  • Linux 無法開機常見的解法 acpi=off noapic
  • 用ipset配置linux防火牆
  • 利用 ipset 封禁大量 IP

熱門文章

  • (156)彰化-大村-進昌咖啡烘焙館
  • (2,801)Linux 無法開機常見的解法 acpi=off noapic
  • (2,666)利用 ipset 封禁大量 IP
  • (2,936)LINUX內核中Netfilter Hook的使用
  • (4,927)linux 網絡虛擬化: macvlan
  • (1,200)網絡虛擬化技術(二): TUN/TAP MACVLAN MACVTAP
  • (15,786)Shell Script 字串合併
  • (1,932)Linux下/proc裡面的arp_announce和arp_ignore
  • (7,090)iptables四個表與五個鏈間的關係
  • (382)Linux 信號signal處理機制

文章精選

參觀人氣

  • 本日人氣:
  • 累積人氣:

文章分類

  • 電腦資訊 (14)
  • 吃吃喝喝 (1)
  • 國內旅遊 (4)
  • 未分類文章 (1)

文章搜尋

留言板