1、iprange
使用iprange擴充套件模組可以指定"一段連續的ip位址範圍",用於匹配報文的源位址或者目標位址。
--src-range:匹配報文的源位址所在範圍
--dst-range:匹配報文的目標位址所在範圍
eg:iptables -t filter -i input -m iprange --src-range 192.168.1.15-192.168.1.149 -j reject
2、string
使用string擴充套件模組,可以指定要匹配的字串,如果報文中包含對應的字串,則符合匹配條件。
比如,如果報文中包含字元"ooxx",我們就丟棄當前報文。
eg:iptables -t filter -i input -m string --algo bm --string "ooxx" -j reject
'-m string'表示使用string模組,'--algo bm'表示使用bm演算法去匹配指定的字串,' --string "ooxx" '則表示我們想要匹配的字串為"ooxx"
3、time
通過time擴充套件模組,根據時間段區匹配報文,如果報文到達的時間在指定的時間範圍以內,則符合匹配條件。
比如:每天早上9點到下午6點不能看網頁:
eg:iptables -t filter -i output -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 18:00:00 -j reject
"-m time"表示使用time擴充套件模組,--timestart選項用於指定起始時間,--timestop選項用於指定結束時間。
eg:iptables -t filter -i output -p tcp --dport 80 -m time --weekdays 6,7 -j reject
使用--weekdays選項可以指定每個星期的具體哪一天,可以同時指定多個,用逗號隔開,除了能夠數字表示"星期幾",還能用縮寫表示,例如:mon, tue, wed, thu, fri, sat, sun
eg:iptables -t filter -i output -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays 6,7 -j reject
表示週六日的上午9點-下午18點不能看網頁
eg:iptables -t filter -i output -p tcp --dport 80 -m time --weekdays 5 --monthdays 22,23,24,25,26 -j reject
使用--monthdays選項可以具體指定的每個月的哪一天;
eg:iptables -t filter -i output -p tcp --dport 80 -m time --datestart 2017-12-24 --datestop 2017-12-27 -j reject
使用--datestart 選項與--datestop選項,指定具體的日期範圍
4、connlimit
使用connlimit擴充套件模組,可以限制每個ip位址同時鏈結到server端的鏈結數量,注意:不用指定ip,其預設就是針對"每個客戶端ip",即對單ip的併發連線數限制。
eg:iptables -i input -p tcp --dport 22 -m connlimit --connlimit-above 2 --connlimit-mask 24 -j reject
使用"-m connlimit"指定使用connlimit擴充套件,使用"--connlimit-above 2"表示限制每個ip的鏈結數量上限為2,再配合-p tcp --dport 22,即表示限制每個客戶端ip的ssh併發鏈結數量不能高於2。
--connlimit-mask選項,去限制"某類網段"的鏈結數量,24是掩碼,轉成點分十進位制:255.255.255.0
5、limit
limit模組是對"報文到達速率"進行限制的,限制單位時間內流入的包的數量。
iptables -i input -p icmp -m limit --limit 10/minute -j reject
"--limit"用於指定多長時間生成乙個新令牌的,"--limit-burst"用於指定"木桶中最多存放幾個令牌的"
6、tcp
通過--tcp-flags擴充套件匹配條件,去匹配tcp報文的頭部的標識位,然後根據標識位的實際情況實現訪問控制的功能。
eg:iptables -i input -p tcp -m tcp --dport 22 --tcp-flags syn,ack,fin,rst,urg,psh syn -j reject
syn,ack,fin,rst,urg,psh syn"表示需要匹配的標誌位列表 最後syn表示匹配的標誌位列表中 syn標誌位必須為1,其他的5個標誌位必須為0
上例簡寫eg:
iptables -i input -p tcp -m tcp --dport 22 --tcp-flags all syn -j reject
eg:使用"--syn"選項相當於使用"--tcp-flags syn,rst,ack,fin syn",也就是說,可以使用"--syn"選項去匹配tcp新建連線的請求報文。
iptables -i input -p tcp -m tcp --dport 22 --syn -j reject
7、udp
udp擴充套件模組只有--sport與--dport兩個擴充套件條件,用於匹配udp協議報文的源埠與目標埠。
比如,放行samba服務的137這兩個udp埠:
iptables -i input -p udp -m udp --dport 137 -j reject
8、icmp
icmp協議(internet control message protocol)網際網路控制報文協議,它主要用於探測網路上的主機是否可用,目標是否可達,網路是否通暢,路由是否可用等。比如ping
使用"--icmp-type"選項表示根據具體的type與code去匹配對應的icmp報文,而上圖中的"--icmp-type 8/0"表示icmp報文的type為8,code為0才會被匹配到,也就是只有ping請求型別的報文才能被匹配到
別人對我們發起的ping請求將會被拒絕通過防火牆,而我們之所以能夠ping通別人,是因為別人回應我們的報文的icmp type為0,code也為0,無法被上述規則匹配到,所以我們可以看到別人回應我們的資訊。
type為8的型別下只有乙個code為0的型別,所以我們可以省略對應的code,示例如下
iptables -i input -p icmp -m icmp --icmp-type 8 -j reject
除了能夠使用對應type/code匹配到具體型別的icmp報文以外,我們還能用icmp報文的描述名稱去匹配對應型別的報文,示例如下
iptables -i input -p icmp -m icmp --icmp-type "echo-request" -j reject
--icmp-type "echo-request"與 --icmp-type 8/0的效果完全相同
9、state
state模組的連線其中的報文可以分為5種狀態,報文狀態可以為new、established、related、invalid、untracked:
new:連線中的第乙個包,狀態就是new,我們可以理解為新連線的第乙個包的狀態為new。
established:我們可以把new狀態包後面的包的狀態理解為established,表示連線已建立。
related:資料連線與"命令連線"中的報文有關係,"資料連線"中的報文可能就是related狀態,。
invalid:如果乙個包沒有辦法被識別,或者這個包沒有任何狀態,那麼這個包的狀態就是invalid,我們可以主動遮蔽狀態為invalid的報文。
untracked:報文的狀態為untracked時,表示報文未被追蹤,當報文的狀態為untracked時通常表示無法找到相關的連線。
eg:只有回應我們的報文能夠通過防火牆,如果報文的狀態為established,那麼報文肯定是之前發出的報文的回應,只要放行狀態為established的報文即可
iptables -t filter -i input -m state --state related,established -j accept
作業系統之作業系統引論
掌握作業系統的概念 特徵 功能和提供的服務,作業系統的發展與分類 作業系統是計算機硬體與使用者的橋梁,是計算機硬體上的的第一層軟體,是對硬體系統的首次擴充.作業系統是一組控制和管理計算機硬體和軟體資源.合理地對各類作業 job 進行排程,以及方便使用者的程式的集合.無作業系統 單批道作業系統 多批道...
作業系統之PV操作
在計算機作業系統中,pv操作是程序管理中的難點。首先應弄清pv操作的含義 pv操作由p操作原語和v操作原語組成 原語是不可中斷的過程 對訊號量進行操作,具體定義如下 p s 將訊號量s的值減1,即s s 1 如果s 0,則該程序繼續執行 否則該程序置為等待狀態,排入等待佇列。v s 將訊號量s的值加...
作業系統之原子操作
原子操作是指不會被執行緒排程機制打斷的操作 原子操作 atomic operation 是不需要同步 synchronized 這種操作一旦開始,就一直執行到結束,中間不會有任何執行緒切換。如果這個操作所處的層 layer 的更高層不能發現其內部實現與結構,那麼這個操作是乙個原子 atomic 操作...