日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux iptables

發布時間:2025/4/16 linux 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux iptables 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iptables:
?? ?Firewall:防火墻,是一種隔離工具,工作于主機或網絡的邊緣,對于進出本主機或網絡的數據包,根據事先定義好的檢測規則做匹配檢測,如果匹配則做出相應的動作(接收、轉發或丟棄等),如果不匹配此條則依次向下匹配,如都不匹配則匹配默認策略,一般用于保護內網;
?? ??? ?工作于內核空間;
?? ??? ?分類:
?? ??? ??? ?主機防火墻
?? ??? ??? ?網絡防火墻
?? ??? ??? ??? ?硬件防火墻
?? ??? ??? ??? ?軟件防火墻
?? ??? ?數據包進入主機之后有兩種走向,一種是數據包的目的是主機本身,通過監聽端口將數據包轉給對應的應用程序;另一種是數據包的目的不是主機本身,而是通過此主機轉發而達到目的主機(需要主機支持主機轉發功能);數據包從主機發出需要從用戶空間進入內核空間的tcp/ip協議棧,通過匹配路由然后從主機的某塊網卡轉發出去;
?? ??? ??? ?因為數據包分為進、出、轉發等行為,所以我們的防火墻是被分別部署到不同行為的前后的,也就是在數據包必經的路線上,設置了相應的卡點(鉤子函數),用于過濾數據包;
?? ??? ??? ??? ?比如進之前需要過濾什么數據包,發之前需要過濾什么數據包,轉發之前需要過濾什么數據包;
?? ?iptables/netfilter
?? ??? ?framework:netfilter,內核中用于過濾用的框架,用于提供hook function(鉤子函數);
?? ??? ?我們知道防火墻是用來過濾數據包的,可以幫我們阻擋我們不需要的數據,那我們要怎么過濾呢?我們知道防火墻是通過在某些數據包必經路線上設定一些規則,來過濾掉數據包;這個設置規則的工具就是iptables,它處于用戶空間;
?? ??? ?使用iptables設置的規則會馬上傳遞給內核實行,但是不是永久儲存,關機即消失,所以我們通常是通過運行腳本(配置文件)在開機時重新設置防火墻規則;雖然我們現在將它稱之為防火墻服務,但是它本質并不是服務,因為它沒有運行任何進程,每次都是通過配置文件來重新生成規則;

?? ?功能:
?? ??? ?filter:過濾,之所以被稱之為防火墻就是因為這個功能;
?? ??? ?nat:network address translation,網絡地址轉換,實現nat服務器;
?? ??? ?mangle:拆解報文,修改報文,封裝報文;
?? ??? ?raw:關閉nat表上啟用的連接追蹤機制;
?? ??? ??? ?連接追蹤機制就是可以識別出某個報文此前來訪問過;
?? ?鏈(內置):(鉤子函數)
?? ??? ?PREROUTING:路由前匹配的鏈
?? ??? ?INPUT:進入主機匹配的鏈
?? ??? ?FORWARD:轉發鏈
?? ??? ?OUTPUT:從主機發出匹配的鏈
?? ??? ?POSTROUTING:路由后匹配的鏈
?? ??? ??? ?這是netfilter規定的五個規則鏈,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈。iptables包含4個表,5個鏈。其中表是按照對數據包的操作區分的,鏈是按照不同的Hook點來區分的,表和鏈實際上是netfilter的兩個維度。
?? ??? ??? ?相當于在不同的卡點設置了檢查站,對數據包的進、出、轉發做出相應的檢測;
?? ??? ??? ?
?? ?流入:PREROUTING --> INPUT
?? ?流出:OUTPUT --> POSTROUTING
?? ?轉發:PREROUTING -->? FORWARD --> POSTROUTING
?? ?各種功能的分別實現:
?? ??? ?filter:INPUT,FORWARD,OUTPUT
?? ??? ?nat:PREROUING(DNAT),OUTPUT,POSTROUTING(SNAT)
?? ??? ?mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
?? ??? ?raw:PREROUTING,OUTPUT
?? ?路由發生的時刻:
?? ??? ?報文進入本機后:
?? ??? ??? ?判斷目標主機;
?? ??? ?報文發出之間:
?? ??? ??? ?判斷經由哪個接口送往下一跳;
?? ?iptables:四表五鏈
?? ??? ?添加規則時的考量點:
?? ??? ??? ?要實現哪種功能:判斷添加在哪張表上;
?? ??? ??? ?報文流經的路徑:判斷添加在那個鏈上;
?? ??? ?鏈:鏈上規則的次序即為檢查的次序,因此隱含一定的法則;
?? ??? ??? ?同類規則(訪問同一應用),匹配范圍小的放上面;
?? ??? ??? ?不同類規則,(訪問不同應用),匹配到報文頻率較多的放上面;
?? ??? ??? ?合并那些可由一條規則描述的多條規則;
?? ??? ??? ?設置默認策略
?? ??? ?功能的優先級次序:raw --> mangle --> net --> filter
?? ?規則:
?? ??? ?組成部分:報文的匹配條件,匹配到之后的處理動作
?? ??? ??? ?匹配條件:根據協議報文特征
?? ??? ??? ??? ?基本匹配條件:源ip,目標ip,源端口,目標端口等
?? ??? ??? ??? ?擴展匹配條件:比如連接追蹤等功能;
?? ??? ??? ?處理動作:
?? ??? ??? ??? ?內建處理機制
?? ??? ??? ??? ?自定義處理機制
?? ??? ??? ?Note:報文不會經過自定義鏈,只能在內置鏈上通過規則進行引用后生效;
?? ??? ?
?? ?iptables:規則管理工具
?? ??? ?添加,修改,刪除,查看顯示等;
?? ??? ?規則和鏈有計數器:
?? ??? ??? ?pkgs:由規則或鏈所匹配到的報文的個數;
?? ??? ??? ?bytes:由規則或鏈匹配到的所有報文大小之和;
?? ??? ??? ?
?? ??? ?iptables命令:
?? ??? ??? ?iptables [-t table] {-A|-C|-D} chain rule-specification
?? ??? ??? ?
?? ??? ??? ?ip6tables [-t table] {-A|-C|-D} chain rule-specification
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -I chain [rulenum] rule-specification
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -R chain rulenum rule-specification
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -D chain rulenum
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -S [chain [rulenum]]
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -N chain
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -X [chain]
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -P chain target
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] -E old-chain-name new-chain-name
?? ??? ??? ?
?? ??? ??? ?iptables [-t table] SUBCOMMAND CHAIN CRETERIA -j TARGET
?? ??? ??? ??? ?table:表名稱
?? ??? ??? ??? ??? ?filter
?? ??? ??? ??? ??? ?nat
?? ??? ??? ??? ??? ?mangle
?? ??? ??? ??? ??? ?raw
?? ??? ??? ??? ?SUBCOMMAND:參數選項
?? ??? ??? ??? ??? ?鏈管理:
?? ??? ??? ??? ??? ??? ?-F:省略鏈名稱,則清空指定表上的所有鏈的防火墻規則,默認為filter表
?? ??? ??? ??? ??? ??? ?-N new_chainname:創建新的自定義鏈規則
?? ??? ??? ??? ??? ??? ?-X:刪除用戶自定義的空的規則鏈
?? ??? ??? ??? ??? ??? ?-Z:清除規則計數器的統計信息
?? ??? ??? ??? ??? ??? ?-P:設置鏈的默認策略,一般有ACCEPT,DROP REJECT
?? ??? ??? ??? ??? ??? ?-E:重命名自定義鏈
?? ??? ??? ??? ??? ?規則管理:
?? ??? ??? ??? ??? ??? ?-A:將新規則追加至指定鏈的尾部
?? ??? ??? ??? ??? ??? ?-I:將新規則插入至指定鏈的指定位置
?? ??? ??? ??? ??? ??? ?-D:刪除指定鏈上的制定規則
?? ??? ??? ??? ??? ??? ??? ?有兩種方式:
?? ??? ??? ??? ??? ??? ??? ??? ?指定匹配條件
?? ??? ??? ??? ??? ??? ??? ??? ?指定規則編號
?? ??? ??? ??? ??? ??? ?-R:替換指定鏈上的指定規則
?? ??? ??? ??? ??? ?查看:
?? ??? ??? ??? ??? ??? ?-L:--list,列出指定鏈上的規則
?? ??? ??? ??? ??? ??? ??? ?-n:以數字格式顯示地址和端口號
?? ??? ??? ??? ??? ??? ??? ?-v:顯示詳細信息
?? ??? ??? ??? ??? ??? ??? ??? ?-vv,-vvv
?? ??? ??? ??? ??? ??? ??? ?--line-numbers:顯示規則的編號
?? ??? ??? ??? ??? ??? ??? ?-x:顯示計數器計數結果的精確值
?? ??? ??? ??? ?CHAIN:鏈名稱
?? ??? ??? ??? ??? ?PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
?? ??? ??? ??? ?CRETERIA:匹配標準
?? ??? ??? ??? ??? ?基本匹配:
?? ??? ??? ??? ??? ??? ?[!] -s,--source IP_address/Network:檢查報文中源ip地址是否符合此處指定的地址范圍,"!"表示取反;
?? ??? ??? ??? ??? ??? ?[!]-d,--destination IP_address/Network:檢查報文中目的地址是否符合此處指定的地址范圍;
?? ??? ??? ??? ??? ??? ?-p,--protocol {tcp|udp|icmp}:檢查報文的協議類型;
?? ??? ??? ??? ??? ??? ?-i,--in-interface IFACE:數據報文的流入接口,僅能用于PREROUTING,FORWARD,INPUT鏈上;
?? ??? ??? ??? ??? ??? ?-o,--out-interface IFACE:數據報文的流出接口,僅能用于POSTROUTING,FORWARD,OUTPUT鏈上;
?? ??? ??? ??? ??? ?擴展匹配:-m match_name --spec_options
?? ??? ??? ??? ??? ??? ?例如:-m tcp --dport 80
?? ??? ??? ??? ??? ??? ?隱式擴展:對 -p protocol指明的協議進程的擴展可省略-m選項;
?? ??? ??? ??? ??? ??? ??? ?-p tcp
?? ??? ??? ??? ??? ??? ??? ??? ?--sport PORT_NUM:源端口號
?? ??? ??? ??? ??? ??? ??? ??? ?--dport PORT_NUM:目標端口號
?? ??? ??? ??? ??? ??? ??? ??? ?--tcp-flags LIST1 LIST2:檢查LIST1中所指明的標志位,其中LIST2中所指明的標志位必須為1,剩余的必須為0,LIST1中沒有指明的不做檢查;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?SYN,ACK,FIN,RST,PSH,URG
?? ??? ??? ??? ??? ??? ??? ??? ?--syn:檢查是否為tcp連接的第一次請求;
?? ??? ??? ??? ??? ??? ??? ?-p udp
?? ??? ??? ??? ??? ??? ??? ??? ?--sport PORT_NUM:源端口號
?? ??? ??? ??? ??? ??? ??? ??? ?--dport PORT_NUM:目標端口號
?? ??? ??? ??? ??? ??? ??? ?-p icmp
?? ??? ??? ??? ??? ??? ??? ??? ?--icmp-type NUM:icmp類型;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?0:echo-reply,響應類型
?? ??? ??? ??? ??? ??? ??? ??? ??? ?8:echo-request,發出ping的類型
?? ??? ??? ??? ??? ??? ??? ??? ??? ?ping別人發出的是類型8,得到回應的類型為0
?? ??? ??? ??? ??? ??? ?顯式擴展:必須使用-m選項指定使用的擴展模塊(rpm -ql iptables | grep "\.so");
?? ??? ??? ??? ??? ??? ??? ?幫助:
?? ??? ??? ??? ??? ??? ??? ??? ?Centos6:man iptables
?? ??? ??? ??? ??? ??? ??? ??? ?Centos7:man iptables-extensions
?? ??? ??? ??? ??? ??? ??? ?擴展模塊:
?? ??? ??? ??? ??? ??? ??? ??? ?multiport擴展:以離散方式定義多端口匹配,最多指定15個端口;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?[!] --source-ports,--sports port[,port|,port:port]...:指明多個源端口;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?[!] --destination-ports,--dports port[,port|,port:port]...:指明多個目的端口;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?[!] --ports port[,port|,port :port]...:指明多個端口,不分源和目的;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?例子:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?~]#iptables -A INPUT -s 192.168.10.0/24 -d 172.16.10.0/24 -p tcp -m multiport --dports 22,80 -j ACCEPT
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?~]#iptables -A OUTPUT -s 172.16.10.0/24 -d 192.168.10.0/24 -p tcp -m multiport --sports 22,80 -j ACCEPT
?? ??? ??? ??? ??? ??? ??? ??? ?iprange擴展:指明連續的(一般不能擴展為整個網絡)IP地址范圍;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?[!] --src-range from[-to]:指明連續的源IP地址范圍;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?[!] --dst-range from[-to]:指明連續的目的地址范圍;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?例子:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?~]#iptables -A INPUT? -d 172.16.10.0/24 -p tcp -m multiport --dports 22:24,80 -m iprange --src-range 192.168.10.1-192.168.10.100 -j ACCEPT
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?~]#iptables -A OUTPUT -s 172.16.10.0/24 -p tcp -m multiport --sports 22:24,80 -m iprange --dst-range 192.168.10.1-192.168.10.100 -j ACCEPT
?? ??? ??? ??? ??? ??? ??? ??? ?string擴展:檢查出現在報文中的字符串;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--algo {bm|kmp}
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?bm = Boyer-Moore
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?kmp = Knuth-Pratt-Morris
?? ??? ??? ??? ??? ??? ??? ??? ??? ?[!] --string pattern
?? ??? ??? ??? ??? ??? ??? ??? ??? ?例子:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?iptables -A OUTPUT -m string --algo bm --string 'movie' -j ACCEPT
?? ??? ??? ??? ??? ??? ??? ??? ?time擴展:根據報文到達的時間與指定的時間范圍進行匹配;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--datestart:指定年月日
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--datestop
?? ??? ??? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--timestart:指定時分秒
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--timestop
?? ??? ??? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--monthdays:指定某個月中的某些天
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--weekdays:指定星期
?? ??? ??? ??? ??? ??? ??? ??? ?connlimit擴展:根據每個客戶端ip(也可以是地址塊)做并發連接數數量匹配;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--connlimit-above n:連接的數量大于n;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--connlimit-upto n:連接的數量小于等于n;
?? ??? ??? ??? ??? ??? ??? ??? ?limit擴展:基于收發報文的速率做檢查;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?令牌通過濾器:
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--limit rate[/second|/minute|/hour|/day]???? rate:為指定的個數?? 例如:30/minute
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--limit-burst number
?? ??? ??? ??? ??? ??? ??? ??? ?state擴展:根據連接追蹤機制檢查連接狀態;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?調整連接追蹤功能所能夠容納的最大連接數量:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?/proc/sys/net/nf_conntrack_max
?? ??? ??? ??? ??? ??? ??? ??? ??? ?已經追蹤到并記錄下的連接:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?/proc/net/nf_conntrack
?? ??? ??? ??? ??? ??? ??? ??? ??? ?可追蹤的連接狀態:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?NEW:新發出的請求,連接追蹤模板中不存在此連接相關的信息條目,因此,將其識別為第一次發出的請求;
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?ESTABLISHED:NEW狀態之后,連接追蹤模板中為其建立的條目失效之前期間內所進行的通信狀態;
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?RELATED:相關的連接,如ftp協議的命令連接與數據連接之間的關系;
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?INVALIED:無法識別的連接;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?--state STATE1,STATE2,…
?? ??? ??? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ??? ??? ?Note:iptables的連接追蹤數量達到最大值后,連接碰到各種狀態的超時后就會從表中刪除;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?解決辦法一般有兩個:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?1.加大ip_conntrack_max值
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?vim /etc/sysctl.conf
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?net.ipv4.ip_conntrack_max=393665
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?net.ipv4.netfilter.ip_conntrack_max=393665
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?2.降低ip_conntrack timeout時間
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?vim /etc/sysctl.conf
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?net.netfilter.nf_conntrack_tcp_timeout_established=300
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?net.netfilter.nf_conntrack_tcp_timeout_time_wait=120
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?net.netfilter.nf_conntrack_tcp_timeout_close_wait=60
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?TARGET:處理動作
?? ??? ??? ??? ??? ?-j TARGET :跳轉至指定的target
?? ??? ??? ??? ??? ??? ?ACCEPT:接受
?? ??? ??? ??? ??? ??? ?DROP:丟棄
?? ??? ??? ??? ??? ??? ?REJECT:拒絕
?? ??? ??? ??? ??? ??? ?RETURN:返回調用的鏈
?? ??? ??? ??? ??? ??? ?REDIRECT:端口重定向
?? ??? ??? ??? ??? ??? ?LOG:記錄日志
?? ??? ??? ??? ??? ??? ?MARK:作防火墻標記
?? ??? ??? ??? ??? ??? ?DNAT:目標地址轉換
?? ??? ??? ??? ??? ??? ?SNAT:源地址轉換
?? ??? ??? ??? ??? ??? ?MASQUERADE:地址偽裝
?? ??? ??? ??? ??? ??? ?自定義鏈:由自定義鏈上的規則進行匹配檢查
?? ??? ??? ??? ??? ??? ?……
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?通過iptables工具在某個表里的某個鏈上根據某些參數選項設置某些符合匹配標準的規則,然后做出相應的處理動作;
?? ??? ??? ?
?? ??? ??? ??? ?問題:如何開放被動模式的ftp服務?
?? ??? ??? ??? ??? ?關于ftp模式的解釋:https://www.cnblogs.com/ajianbeyourself/p/7655464.html
?? ??? ??? ??? ??? ?因為ftp監聽的是兩個接口,所以使用RELATED可以免去很多麻煩,它可以自動判斷ftp監聽端口進出的關系;
?? ??? ??? ??? ??? ?1.裝載RELATED追蹤的專用模塊:/lib/modules/$(unamr -r)/kernel/net/netfilter/nf_conntrack_ftp.ko
?? ??? ??? ??? ??? ??? ?~]#modprobe /lib/modules/$(unamr -r)/kernel/net/netfilter/nf_conntrack_ftp.ko
?? ??? ??? ??? ??? ?2.放行請求報文:
?? ??? ??? ??? ??? ??? ?命令連接:NEW,ESTABLISHED
?? ??? ??? ??? ??? ??? ?數據連接:RELATED,ESTABLISHED
?? ??? ??? ??? ??? ??? ??? ?RELATED只在第一次剛建立連接時使用;
?? ??? ??? ??? ??? ??? ?例子:
?? ??? ??? ??? ??? ??? ??? ?~]#iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
?? ??? ??? ??? ??? ??? ??? ?~]#iptables -A INPUT -d LocalIP -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
?? ??? ??? ??? ??? ?3.放行響應報文:
?? ??? ??? ??? ??? ??? ?ESTABLISHED
?? ??? ??? ??? ??? ??? ?例子:
?? ??? ??? ??? ??? ??? ??? ?~]#iptables -A OUTPUT -s LocalIP -p tcp -m state --state ESTABLISHED -j ACCEPT
?? ??? ??? ??? ??? ?
?? ??? ?
?? ??? ??? ??? ?如何保存及重載規則:
?? ??? ??? ??? ??? ?保存規則至指定文件:
?? ??? ??? ??? ??? ??? ?iptables-save >? /PATH/TO/SOMEFILE
?? ??? ??? ??? ??? ?從指定文件重載規則:
?? ??? ??? ??? ??? ??? ?iptables-restore < /PATH/TO/SOMEFILE
?? ??? ??? ??? ??? ?Centos 6:
?? ??? ??? ??? ??? ??? ?service iptables save? <==>? iptables-save > /etc/sysocnfig/iptables
?? ??? ??? ??? ??? ??? ?service iptables restart? < ==> iptables-restore < /etc/sysconfig/iptables
?? ??? ??? ??? ??? ?Centos 7:引入了新的iptables前端管理工具:firewall
?? ??? ??? ??? ??? ??? ?firewall-cmd:命令行工具
?? ??? ??? ??? ??? ??? ?firewall-config:圖形化界面工具
?? ??? ??? ??? ??? ??? ?關于firewall的文章:http://www.ibm.com/developerworks/cn/linux/1507_caojh/index.html
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?NAT:Network Address Translation,網絡地址轉換,可以用于實現私網地址訪問公網服務器(SNAT),或者用于實現內網服務器對公網開放(DNAT),還可以用于隱藏內網地址,增加安全性;位于網絡層、傳輸層,內核空間;
?? ??? ??? ??? ?Proxy:代理,位于應用層,用戶空間;
?? ??? ??? ??? ??? ?nat表:
?? ??? ??? ??? ??? ??? ?PREROUTING(DNAT):先轉換后路由
?? ??? ??? ??? ??? ??? ??? ?當內網提供服務器給外網訪問時,首先會根據事先設定的規則判斷是否需要轉換,如果是就將外網主機所訪問的公有ip地址轉換為內網服務器所在的私有ip地址,并且將這個轉換記錄下來,然后將數據包發給內網服務器;
?? ??? ??? ??? ??? ??? ??? ?當內網服務器返回數據包時,nat根據之前記錄的信息,再將地址轉換回去;
?? ??? ??? ??? ??? ??? ??? ??? ?iptables -t nat -A PREROUTING -d ExtIP -p udp|tcp --dport PORT_NUM -j DNAT --to-destination InterserverIp[:PORT_NUM]
?? ??? ??? ??? ??? ??? ?例子:iptables -t nat -A PREROUTING -d 111.222.33.44 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.20
?? ??? ??? ??? ??? ??? ?OUTPUT
?? ??? ??? ??? ??? ??? ?POSTROUTING(SNAT):先路由后轉換
?? ??? ??? ??? ??? ??? ??? ?當內網主機訪問外網服務器時,首先會將內網私有源ip地址轉換為事先設置的可以訪問外網的公有ip地址,并且將這個轉換記下來,然后去訪問服務器;
?? ??? ??? ??? ??? ??? ??? ?當服務器返回數據包時,nat根據之前記錄的信息,再將地址轉換回去;
?? ??? ??? ??? ??? ??? ??? ??? ?iptables -t nat -A POSTROUTING -s LocalIp ! -d LocalIp -j SNAT --to-source Extip
?? ??? ??? ??? ??? ??? ??? ??? ?iptables -t nat -A POSTROUTING -s LocalIp ! -d LocalIp -j MASQUERADE
?? ??? ??? ??? ??? ??? ??? ??? ?MASQUERADE:用于所轉換的外網地址不固定時,例如ADSL撥號上網;
?? ??? ??? ??? ??? ??? ?例子:iptables -t nat -A POSTROUTING -s 192.168.10.20 ! -d 192.168.10.20 -j SNAT --to-source 111.222.33.44
?? ??? ??? ??? ??? ?proxy代理:
?? ??? ??? ??? ??? ??? ?proxy位于應用層,所以會解封裝數據包,來查看其使用的為什么協議,然后根據具體協議作代理,所以可以基于代理做訪問控制,增加安全性;一般一種協議的代理只能使用其專有的應用軟件來代理;
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?tcp_wrapper:tcp包裝器
?? ??? ??? ??? ??? ?對基于tcp協議開發并提供服務的應用程序,提供的一層訪問控制工具;
?? ??? ??? ??? ??? ?基于庫調用實現其功能:libwrap庫
?? ??? ??? ??? ??? ?判斷服務是否能夠由tcp_wrapper進行訪問控制:
?? ??? ??? ??? ??? ??? ?1.動態編譯:ldd命令
?? ??? ??? ??? ??? ??? ??? ?可以通過使用:ldd $(which command) | grep "libwrap" 查看是否調用了libwrap庫;
?? ??? ??? ??? ??? ??? ?2.靜態編譯:strings命令查看應用程序文件,查看其結果中是否出現
?? ??? ??? ??? ??? ??? ??? ?hosts.allow
?? ??? ??? ??? ??? ??? ??? ?hosts.deny
?? ??? ??? ??? ??? ?在配置文件中為各服務分別定義訪問控制規則實現訪問控制:
?? ??? ??? ??? ??? ??? ?/etc/hosts.allow
?? ??? ??? ??? ??? ??? ?/etc/hosts.deny
?? ??? ??? ??? ??? ??? ?配置文件語法:
?? ??? ??? ??? ??? ??? ??? ?daemon_list:client_list [:options]
?? ??? ??? ??? ??? ??? ??? ??? ?daemon_list:
?? ??? ??? ??? ??? ??? ??? ??? ??? ?應用程序的文件名稱,而非服務名;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?應用程序文件名稱列表,彼此之間使用","分隔;
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?例如:sshd,vsftpd
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?ALL表示所有服務;
?? ??? ??? ??? ??? ??? ??? ?client_list:
?? ??? ??? ??? ??? ??? ??? ??? ?IP地址
?? ??? ??? ??? ??? ??? ??? ??? ?主機名
?? ??? ??? ??? ??? ??? ??? ??? ?網絡地址:必須使用完整格式的掩碼,不能使用前綴格式的掩碼
?? ??? ??? ??? ??? ??? ??? ??? ??? ?簡短格式的網絡地址:例如172.16. 表示172.16.0.0/255.255.255.0;
?? ??? ??? ??? ??? ??? ??? ??? ?ALL:表示所有主機
?? ??? ??? ??? ??? ??? ??? ??? ?KNOWN:所有可以解析到主機名的主機;
?? ??? ??? ??? ??? ??? ??? ??? ?UNKNOWN:所有無法解析到主機名的主機;
?? ??? ??? ??? ??? ??? ??? ??? ?PARANOID:主機名的正反解不匹配;
?? ??? ??? ??? ??? ??? ??? ?EXCEPT:除了;
?? ??? ??? ??? ??? ??? ??? ??? ?hosts.allow
?? ??? ??? ??? ??? ??? ??? ??? ??? ?vsftpd:172.16. EXCEPT 172.16.100.0/255.255.255.0 EXCEPT 172.16.100.1
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?表示允許192.16.網段的主機,不允許192.16.100.0網段,但是除了172.16.100.0中的172.16.100.1這個地址;
?? ??? ??? ??? ??? ??? ??? ?[:options]
?? ??? ??? ??? ??? ??? ??? ??? ?deny:拒絕,用于hosts.alloww文件中,用于實現deny功能;
?? ??? ??? ??? ??? ??? ??? ??? ?allow:允許,用于hosts.deny文件中,用于實現allow功能;
?? ??? ??? ??? ??? ??? ??? ??? ?spawn:啟動額外應用程序;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?vsftpd:ALL:spawn /bin/echo `date` login attempt from %c %s, %d >> /var/log/vsftpd.deny.log
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?表示將關于vsftpd的帶有時間的相關信息追加至指定文件中;
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?%c:client ip
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?%s:server ip
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?%d:daemon ip

注:根據馬哥視頻做的學習筆記,如有錯誤,歡迎指正;侵刪

轉載于:https://www.cnblogs.com/guowei-Linux/p/11072885.html

總結

以上是生活随笔為你收集整理的Linux iptables的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。