iptables:
iptables五表五鏈
felter表
INPUT
FORWARD
OUTPUT
nat表
PREROUTING
OUTPUT
POSTROUTING
mangle表
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
raw表
PREROUTING
OUTPUT
security表
INPUT
OUTPUT
FOEWARD
iptables的通用格式:
iptables [-t] TABLE [OPTIONS] CHAIN [NUMBER] RULE_match [-j] [target]
-t:表示type,表的種類
TABLE:意為表
CHAIN:意為鏈
NUMBER:表示規則條目編號
RULE_matche:表示匹配的通信包
-d:表示目錄地址
-s:表示源地址
-p:表示協議
-m:要執行的擴展模塊,各模塊有其獨特的選項
-j:將要執行動作
target:表示要執行的動作
ACCEPT:允許
DROP:拒絕
RETURN:不再匹配些規則
REJECT:拒絕,并回復特定信息
部分擴展模塊介紹:
tcp:定義協議的模塊
–sport:定義源端口,可以定義連續的端口,如22:80
–dport:目標端口,性能同–sport
–tcp-flags:tcp標記位
–tcp-flags SYN,ACK,FIN,RST, SYN:這個表示匹配SYN,ACK,FIN,RST中以SYN為1,ACK,FIN,RST為0,其余的忽略
–syn:是–tcp-flags的一個擴展,就是匹配三次握手的第一次
connlimit:允許的最大連接數
[!] –connlimit-above NUMBER:最大允許連接的個數,可取反
iprange:定義一個ip范圍,可用作源IP與目標IP的范圍
[!] –src-range:源地址范圍
[!] –dst-range:目標地址范圍
limit:這個模塊用于定義連接頻率與首次連接最大連接個數(令牌筒)
–limit RATE:定義其連接速率
–limit-burst NUM:定義首次連接次個數
state:這個模塊是根拒據狀態來判定數據包
[!] –state STATE:對狀態流量進行操作
STATE:
ESTABLISHED:已連接
NEW:新建立連接
RELATED:關聯的連接,追蹤連接
INVALID:不能識別的
UNTRACKED:未追蹤的連接
string:這個模塊是對內容中的字符串進行匹配
–algo {bm|kmp}:匹配字符串的算法
[!] –string STRING:所要匹配的字符串
time:時間匹配數據包
–datestart:開始日期時間
–datestop:結束日期時間
–timestart:開始時間
–timestop:結束時間
[!] –monthdays:一個有的那一日
[!] weekdays:一周的那一天
multiport:定義多個不連續的端口的模塊
[!] –sport:源端口21,22,80:200
[!] –dport:目標端口
部分擴展動作介紹:
DNAT:目標地址轉換
–to-destination:轉到那一個地址,可以跟端口,也可以跟多個連續的端口
SNAT:源地址轉換
–to-source:轉到那一個地址,可以跟一個商品,也可以跟多個端口
LOG:是一個開啟日志的動作
–log-level NUM:開啟日志的日志級別
–log-prefix:日志的前綴
MASQUERADE:IP為動態IP,連接貓的時候可以用戶這個動作
–to-ports:轉化的商品有那些,如80-100
REDIRECT:端口重定向
–to-ports 9090:將指定商品生定向為9090
iptables指令:
-N:創建一條新鏈
-X:刪除一條新鏈
-Z:將通過規則的包與字節數置0
-S:打印現在使用的規則
-F:清除所有現有正在使用的規則
-L:打印現在使用的規則列表
-n:對協議號不進行反解
-v:顯示詳細信息
-vv:顯示更加詳細的信息
–line-numbers:顯示規則條目的序號
-R:替換一條規則
-A:追加一條規則
-I:插入一條規則
-P:更改默認策略
iptables示例:
filter表:
INPUT與OUTPUT功能:
對172.18.0.0/16網段地址放行22號端口
iptables -A INPUT -s 172.18.0.0/16 -d 172.18.0.31 -p tcp –dport 22 -j ACCEPT
寫一條默認策略,使用拒絕所有
iptables -A INPUT -j DROP
iptables -P INPUT DROP
現在有這么一種情況,一個網段,但是這個網段是無類網絡,IP范圍為172.18.0.32到172.18.0.63,現在要禁止這個網段訪問本機的22號端口
iptables -I INPUT -m iprange –src-range 172.18.0.32-172.18.0.63 -d 172.18.254.31 -p tcp –dport 22 -j DROP
為了使服務器的web不宕機,我們現在要限制訪問最大訪問量,還有限制訪問頻率,而公司的web的首頁是https,由于運維人員的技術問題,有個別頁面是http頁面
iptalbes -I INPUT -d 172.18.132.2 -p tcp -m connlimit –connlimit-above-above 2000 -m limit –limit 300/minute –limit-burst 1000 -m multiport –dport 80,443 -j ACCEPT
上面這么多都是入口的filter,那么我該怎么寫出口的策略呢,這個出口的策略能不能寫的少一點的壁呢,
iptables -A OUTPUT -s 172.18.132.2 -p tcp -m multiport –sport 22,80,445 -m state –state ESTABLISHED -j ACCEPT
昨天boss開會說,公司應該有一個文件服務器,供員工去下載一些資料或者程序,所以就布設了一個ftp服務器,可是這個ftp服務有點另類,這個數據商品可能是隨機的,怎么配置入口過濾規則呢
iptables -I INPUT -d 172.18.0.1 -m state –state ESTABLISHED,RELATED -j ACCEPT
昨天看新聞說,國家正在嚴打網上出現的有關于H7N9字樣的訪問,老板發話說,我們的網站要禁止訪問含有這個字樣的網頁
iptables -I INPUT -d 172.18.0.1 -t tcp –dport 80 -m string –algo bm –string “H7N9” -j DORP
昨天boss看到隔壁工位小王上班期間在下載電影,導致辦公網絡這慢,現在boss說在上班時間不允許下載ftp上的電影
iptables -I INPUT -d 172.18.0.1 -m time –timestart 9:00 –timestop 6:00 -p tcp –dport 21 -j DROP
自定義一條鏈,配置samba的過濾規則
iptables -t filter -N samba_rule //新建一條自定義鏈
iptables -A samba_rule -d 172.18.0.1 -p tcp -m multiport –dport 139,445 -j ACCEPT //TCP的訪問規則
iptables -A samba_rule -d 172.18.0.1 -p udp -m multiport –dport 137,138 -j ACCEPT //UDP的訪問規則 iptables -I INPUT 2 -d 172.18.0.1 -j samba_rule //調用自定義的鏈
FORWARD功能:
由于FORWARD只有轉發過濾功能,如果要對一個轉發的數據包進行操作,那么就需要定怲條規則
現在有一個中間轉發服務器,現在要對這個服務器的數據包進行控制,要求可出不可進,內網IP為172.18.0.0/16
iptables -A FORWARD -s 172.18.0.0/16 -j ACCEPT
iptables -A FORWARD -d 172.18.0.0/16 -j DROP
nat表:網絡地址轉換,也有人說是私網IP訪問公網IP的一種機制
源地址轉換:
一個網絡172.18.0.0/16需要訪問公網,,公司買了一個公網IP為201.132.202.13,需要寫一條轉換語句,使內部主機可以訪問公網
iptables -t nat -A PREROUTING -s 172.18.0.0/16 -j SNAT –to-source 201.132.202.13
現在開發部門已經做好了web,需要發布在主機172.18.31.12上的網站
iptables -t nat -A POSTROUTING -d 172.18.31.12 -j DNAT –to-destination 201.132.202.13
由于公司資金出現了問題,公網IP也沒有了,只剩下一個貓了,但公司這么多人,網還是需要上的,該怎么寫這條規則呢
iptables -t nat -A PREROUTING -s 172.18.0.0 -j MASQUERADE
原創文章,作者:gaomei,如若轉載,請注明出處:http://www.www58058.com/74455