1、iptables基礎知識
- Netfilter組件
防火墻功能是集成在內(nèi)核中的,通過以下命令可以看出防火墻功能是以模塊的方式打到內(nèi)核當中的
[root@centos7 boot]#cat ./boot/config-3.10.0-514.el7.x86_64 |grep -i iptables
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP6_NF_IPTABLES=m
# iptables trigger is under Netfilter config (LED target)
內(nèi)核中選取五個位置放了五個hook(勾子) function(INPUT哟沫、OUTPUT匕得、FORWARD掠河、PREROUTING沽损、POSTROUTING)慷荔,而這五個hook function向用戶開放,用戶可以通過一個命令工具(iptables)向其寫入規(guī)則缠俺,這五個鉤子函數(shù)就像檢查的關卡一樣,對進出本機的的數(shù)據(jù)鉤住后檢查贷岸。
- 三種報文流向:
流入本機:PREROUTING --> INPUT-->用戶空間進程
流出本機:用戶空間進程-->OUTPUT--> POSTROUTING
轉(zhuǎn)發(fā):PREROUTING --> FORWARD --> POSTROUTING - 防火墻工具
iptables:命令行工具壹士,工作在用戶空間,用來編寫規(guī)則偿警,寫好的規(guī)則被送往netfilter躏救,告訴內(nèi)核如何去處理信息包
firewalld:CentOS 7引入了新的前端管理工具 - iptables由四個表和五個鏈以及一些規(guī)則組成
四個表table:filter、nat螟蒸、mangle盒使、raw
filter表:過濾規(guī)則表,根據(jù)預定義的規(guī)則過濾符合條件的數(shù)據(jù)包
nat表:network address translation 地址轉(zhuǎn)換規(guī)則表
mangle:修改數(shù)據(jù)標記位規(guī)則表
Raw:關閉NAT表上啟用的連接跟蹤機制七嫌,加快封包穿越防火墻速度
優(yōu)先級由高到低的順序為:raw-->mangle-->nat-->filter
五個內(nèi)置鏈chain:INPUT少办、OUTPUT、FORWARD诵原、PREROUTING
英妓、POSTROUTING
可以通過如下命令查看各個表中的鏈
iptables -t filter -vnL
iptables -t nat -vnL
- IPTABLES和路由
路由功能發(fā)生的時間點,報文進入本機后
判斷目標主機是否為本機
是:INPUT
否:FORWARD
報文離開本機之前绍赛,判斷由哪個接口送往下一跳蔓纠,路由決策就是本機的路由表
- 內(nèi)核中數(shù)據(jù)包的傳輸過程
當一個數(shù)據(jù)包進入網(wǎng)卡時,數(shù)據(jù)包首先進入PREROUTING鏈吗蚌,內(nèi)核根據(jù)數(shù)據(jù)包目的IP判斷是否需要轉(zhuǎn)送出去
如果數(shù)據(jù)包就是進入本機的腿倚,數(shù)據(jù)包就會沿著圖向下移動,到達INPUT鏈蚯妇。數(shù)據(jù)包到達INPUT鏈后敷燎,任何進程都會收到它。本機上運行的程序可以發(fā)送數(shù)據(jù)包箩言,這些數(shù)據(jù)包經(jīng)過OUTPUT鏈懈叹,然后到達POSTROUTING鏈輸出
如果數(shù)據(jù)包是要轉(zhuǎn)發(fā)出去的,且內(nèi)核允許轉(zhuǎn)發(fā)分扎,數(shù)據(jù)包就會向右移動澄成,經(jīng)過FORWARD鏈,然后到達POSTROUTING鏈輸出 - iptables規(guī)則
規(guī)則rule:根據(jù)規(guī)則的匹配條件嘗試匹配報文,對匹配成功的報文根據(jù)規(guī)則定義的處理動作作出處理
匹配條件:
基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
擴展匹配:通過復雜高級功能匹配
處理動作:稱為target墨状,跳轉(zhuǎn)目標
內(nèi)建處理動作:ACCEPT,DROP,REJECT,SNAT,DNAT
MASQUERADE,MARK,LOG...
自定義處理動作:自定義chain卫漫,利用分類管理復雜情形
規(guī)則要添加在內(nèi)置鏈上才生效;添加在自定義上不會自動生效
鏈chain:
內(nèi)置鏈:每個內(nèi)置鏈對應于一個鉤子函數(shù)
自定義鏈:用于對內(nèi)置鏈進行擴展或補充肾砂,可實現(xiàn)更靈活的規(guī)則組織管理機制列赎;只有Hook鉤子調(diào)用自定義鏈時,才生效 - iptables添加要點
iptables規(guī)則添加時考量點
要實現(xiàn)哪種功能:判斷添加在哪張表上
報文流經(jīng)的路徑:判斷添加在哪個鏈上
報文的流向:判斷源和目的
匹配規(guī)則:業(yè)務需要
鏈上規(guī)則的次序镐确,即為檢查的次序包吝,因此隱含一定的法則
同類規(guī)則(訪問同一應用),匹配范圍小的放上面源葫,因為放在上面的會先生效诗越,并且生效后就不會繼續(xù)檢查下面的規(guī)則了
不同類規(guī)則(訪問不同應用),匹配到報文頻率較大的放上面
將那些可由一條規(guī)則描述的多個規(guī)則合并為一個
設置默認策略 - 實驗環(huán)境準備:
要關閉系統(tǒng)默認的iptables策略息堂,這樣我們才能自己定制防火墻策略嚷狞,并不是把防火墻服務關閉了,防火墻功能是集成在內(nèi)核當中的荣堰,用戶空間通過iptables軟件工具編寫規(guī)則發(fā)給內(nèi)核的netfilter進行處理床未。
Centos7: systemctl stop firewalld.service
systemctl disable firewalld.service
Centos6:service iptables stop
chkconfig iptables off
2、iptables命令
man 8 iptables
規(guī)則格式:iptables[-t table] SUBCOMMAND chain [-m matchname[per-match-options]] -j targetname[per-target-options]
-t table:
raw, mangle, nat, [filter]默認
- SUBCOMMAND:
1振坚、鏈管理:
-N:new, 自定義一條新的規(guī)則鏈
-X:delete薇搁,刪除自定義的空的規(guī)則鏈,只有是空鏈才能被刪除渡八,刪除之前要清空只酥,iptables -F自定義鏈和所關聯(lián)的默認鏈
-P:Policy,設置默認策略呀狼;對filter表中的鏈而言裂允,其默認策略有:
ACCEPT:接受
DROP:丟棄
iptables -F是清不掉的,最好不要用這個哥艇,可以在鏈里設置規(guī)則
-E:重命名自定義鏈绝编;引用計數(shù)不為0的自定義鏈不能夠被重命名,也不能被刪除
iptables -P INPUT DROP
iptables -P INPUT ACCEPT ---設置默認策略
2貌踏、查看:
-L:list, 列出指定鏈上的所有規(guī)則十饥,本選項須置后
-n:numberic,以數(shù)字格式顯示地址和端口號
-v:verbose祖乳,詳細信息
-vv更詳細
-x:exactly逗堵,顯示計數(shù)器結(jié)果的精確值,而非單位轉(zhuǎn)換后的易讀值,-x就是精確顯示眷昆,以字節(jié)為單位蜒秤,不加是以k為單位
--line-numbers:顯示規(guī)則的序號
常用組合:
--vnL
--vvnxL--line-numbers
-S selected,以iptables-save 命令格式顯示鏈上規(guī)則汁咏,可以用此命令將命令的輸出結(jié)果保存到文件中,將規(guī)則存到磁盤上
[root@centos7 html]#iptables -vnL ---查看規(guī)則
Chain INPUT (policy ACCEPT 1151 packets, 127K bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- * * 172.18.21.106 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- * * 172.18.21.106 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 152 packets, 17928 bytes)
pkts bytes target prot opt in out source destination
[root@centos7 html]#iptables --line-numbers -vnL ---查看規(guī)則并顯示編號
Chain INPUT (policy ACCEPT 1296 packets, 141K bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 172.18.21.106 0.0.0.0/0 reject-with icmp-port-unreachable
2 0 0 ACCEPT all -- * * 172.18.21.106 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 192 packets, 22320 bytes)
num pkts bytes target prot opt in out source destination
[root@centos7 html]#iptables --line-numbers -vnxL ---以字節(jié)顯示計數(shù)作媚,而不是以默認的k
Chain INPUT (policy ACCEPT 1432 packets, 157588 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 172.18.21.106 0.0.0.0/0 reject-with icmp-port-unreachable
2 0 0 ACCEPT all -- * * 172.18.21.106 0.0.0.0/0
[root@centos7 html]#iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -s 172.18.21.106/32 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -s 172.18.21.106/32 -j ACCEPT
[root@centos7 html]#iptables -S >/app/f1 ---將規(guī)則保存到文件中
3攘滩、規(guī)則管理:
-A:append,追加
-I:insert, 插入纸泡,要指明插入至的規(guī)則編號漂问,默認為第一條
-D:delete,刪除
(1) 指明規(guī)則序號
(2) 指明規(guī)則本身
-R:replace女揭,替換指定鏈上的指定規(guī)則編號
-F:flush蚤假,清空指定的規(guī)則鏈
-Z:zero,置零
iptables的每條規(guī)則都有兩個計數(shù)器
(1) 匹配到的報文的個數(shù)pkts
(2) 匹配到的所有報文的大小之和bytes
iptables -A INPUT -s 172.18.21.106 -j DROP
iptables -A INPUT -s 172.18.21.106,172.18.21.108 -j REJECT ---多條ip地址用逗號隔開
iptables -R INPUT 2 -s 172.18.21.106 -j ACCEPT ---替換第二條規(guī)則
iptables -I INPUT 2 -s 192.168.74.0/24 -j REJECT ---把這條規(guī)則插入到INPUT鏈的第二條
iptables -D INPUT 1 ---刪除INPUT鏈的第一條規(guī)則
iptables -D INPUT -s 172.18.21.106 -j ACCEPT ---刪除鏈上的規(guī)則的第二種方式
iptables -F INPUT ---清空指定鏈的規(guī)則吧兔,不指定就是清空所有鏈
iptables -A INPUT ! -s 172.18.21.106 -j ACCEPT ---表示除了來自172.18.21.106的都接受磷仰。這里需要注意的是要將默認權限設置為DROP,掩驱!表示取反的意思。用冬竟!就不能用多個ip地址之間用逗號隔開的格式欧穴。
iptables -A INPUT ! -s 172.18.21.106 -j REJECT ---表示除了172.18.21.106的都拒絕,此時默認權限要設置為接受
- 匹配條件
基本:通用的泵殴,PARAMETERS
擴展:需加載模塊涮帘,MATCH EXTENTIONS
1、基本匹配條件:無需加載模塊笑诅,由iptables/netfilter自行提供
[!] -s, --source address[/mask][,...]:源IP地址或范圍
[!] -d, --destination address[/mask][,...]:目標IP地址或范圍
[!] -p, --protocol protocol:指定協(xié)議调缨,可使用數(shù)字如0(all)
protocol: tcp, udp, icmp, icmpv6,udplite,esp, ah, sctp, mhor “all“ 參看:/etc/protocols
[!] -i, --in-interface name:報文流入的接口;只能應用于數(shù)據(jù)報文流入環(huán)節(jié)吆你,只應用于INPUT弦叶、FORWARD、PREROUTING鏈
[!] -o, --out-interface name:報文流出的接口妇多;只能應用于數(shù)據(jù)報文流出的環(huán)節(jié)伤哺,只應用于FORWARD、OUTPUT者祖、POSTROUTING鏈
iptables -A INPUT -p icmp -j REJECT ---禁ping
iptables -A INPUT -i ens33 -j REJECT ---流入報文禁止訪問哪個網(wǎng)卡
2 立莉、擴展匹配條件:需要加載擴展模塊(/usr/lib64/xtables/*.so),方可生效
查看幫助man iptables-extensions
(1)隱式擴展:在使用-p選項指明了特定的協(xié)議時七问,無需再用-m選項指明擴展模塊的擴展機制蜓耻,不需要手動加載擴展模塊
tcp協(xié)議的擴展選項
[!] --source-port, --sport port[:port]:匹配報文源端口,可為端口范圍
[!] --destination-port,--dportport[:port]:匹配報文目標端口,可為范圍
[!] --tcp-flags mask comp
mask 需檢查的標志位列表,用,分隔
例如SYN,ACK,FIN,RST
comp 在mask列表中必須為1的標志位列表械巡,無指定則必須為0刹淌,用,分隔
示例:
--tcp-flags SYN,ACK,FIN,RST SYN 表示要檢查的標志位為SYN,ACK,FIN,RST四個饶氏,其中SYN必須為1,余下的必須為0芦鳍,也就是三次握手的第一次請求
--tcp-flags SYN,ACK,FIN,RST SYN,ACK ---表示三次握手的第二次請求嚷往,SYN、ACK為1
--tcp-flags ALL ALL ---表示檢查所有的標志位柠衅,所有位都是1皮仁,沒有這樣的情況,是錯誤的數(shù)據(jù)包菲宴,可以認為是惡意攻擊
--tcp_flagsALL NONE ---這個也是一樣贷祈,所有位都是0,也可以認為是惡意攻擊
[!] --syn:用于匹配第一次握手
相當于:--tcp-flags SYN,ACK,FIN,RST SYN
iptables -A INPUT -p tcp --dport 80 -j REJECT ---拒絕訪問本機的tcp協(xié)議的80端口喝峦,也就是拒絕訪問httpd服務
iptables -A INPUT -p tcp --syn -j REJECT ---表示tcp的第一次握手被拒絕势誊,也就是新的連接被拒絕,舊的連接不被拒絕谣蠢,此時的xshell通過ssh還可以繼續(xù)連接粟耻,但在打開一個新的窗口去連接卻連接不了了
iptables -A INPUT -p icmp --icmp-type 8 -j REJECT ---icmp的請求包是8,icmp的請求包被拒絕眉踱,就是拒絕別人ping我
iptables -A INPUT -p tcp --dport 80:85 -j REJECT ---表示拒絕訪問tcp的80-85端口挤忙,端口必須是連續(xù)的
udp
[!] --source-port, --sport port[:port]:匹配報文的源端口;可以是端口范圍
[!] --destination-port,--dportport[:port]:匹配報文的目標端口谈喳;可以是端口范圍
icmp
[!] --icmp-type {type[/code]|typename}
type/code
0/0 echo-reply icmp應答册烈,0是icmp的回應包
8/0 echo-request icmp請求,8是icmp的請求包
(2)顯式擴展:必須使用-m選項指明要調(diào)用的擴展模塊的擴展機制婿禽,要手動加載擴展模塊赏僧,[-m matchname[per-match-options]]
1、multiport擴展
以離散方式定義多端口匹配,最多指定15個端口
[!] --source-ports,--sports port[,port|,port:port]...
指定多個源端口
[!] --destination-ports,--dportsport[,port|,port:port]...
指定多個目標端口
[!] --ports port[,port|,port:port]...多個源或目標端口
iptables -A INPUT -s 172.18.21.106 -p tcp -m multiport --dports 22,80 -j REJECT ---表示拒絕來自172.18.21.106的主機訪問我的tcp的22和80端口扭倾,端口可以使離散的淀零,不必是連續(xù)的
2、iprange擴展
指明連續(xù)的(但一般不是整個網(wǎng)絡)ip地址范圍
[!] --src-range from[-to]源IP地址范圍
[!] --dst-range from[-to]目標IP地址范圍
iptables -A INPUT -p tcp --dport 80 -m iprange --src-range 172.18.21.1-172.18.21.10 -j REJECT
3膛壹、mac擴展
指明源MAC地址
適用于:PREROUTING, FORWARD窑滞,INPUT chains
[!] --mac-source XX:XX:XX:XX:XX:XX
iptables -A INPUT -p tcp --dport 80 -m mac --mac-source 00:0c:29:6d:aa:fe -j REJECT
4、string擴展
對報文中的應用層數(shù)據(jù)做字符串模式匹配檢測
--algo {bm|kmp}:字符串匹配檢測算法
bm:Boyer-Moore
kmp:Knuth-Pratt-Morris
--from offset 開始偏移
--to offset 結(jié)束偏移
[!] --string pattern:要檢測的字符串模式
[!] --hex-string pattern:要檢測字符串模式恢筝,16進制格式
iptables -A OUTPUT -m string --algo bm --string "google" -j REJECT --表示流出的報文中含有google字符串的就拒絕哀卫,這樣別人就不可以訪問我的google網(wǎng)站,只支持明文撬槽,https等加密的就不可以了
5此改、time擴展
根據(jù)將報文到達的時間與指定的時間范圍進行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss] 時間
--timestop hh:mm[:ss]
[!] --monthdays day[,day...] 每個月的幾號
[!] --weekdays day[,day...] 星期幾
注意:centos6 默認是本地時區(qū),CentOS7系統(tǒng)默認為要使用UTC時間
iptables -A OUTPUT -m time --timestart 01:00 --timestop 10:00 -j REJECT ---表示09:00-18:00上課時間不準上網(wǎng)侄柔,因為是UTC時間共啃,比北京時間晚8小時占调,centos6上直接寫本地時區(qū)就可以
date -u 查看utc時間
iptables -A INPUT -m time --timestart 01:00 --timestop 10:00 --weekdays San,Sun -j REJECT ---表示周六和周日的9:00-18:00禁止訪問我,注意星期的第一個字母是大寫
iptables -A INPUT -m time --timestart 01:00 --timestop 10:00 --monthdays 10,20,30 -j REJECT
6移剪、connlimit擴展
根據(jù)每個客戶端IP做并發(fā)連接數(shù)數(shù)量匹配
可防止CC(Challenge Collapsar挑戰(zhàn)黑洞)攻擊
--connlimit-upton:連接的數(shù)量小于等于n時匹配
--connlimit-above n:連接的數(shù)量大于n時匹配
通常分別與默認的拒絕或允許策略配合使用
iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 1 -j REJECT ---表示連接本機的tcp的22端口數(shù)量大于1就拒絕
7究珊、limit擴展
基于收發(fā)報文的速率做匹配
令牌桶過濾器
--limit rate[/second|/minute|/hour|/day] 超過下面限制的數(shù)量后,每分鐘允許的請求數(shù)
--limit-burst number 表示前幾個不限制
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 10 -j ACCEPT ---表示來自icmp的請求包纵苛,前10個不受限制剿涮,超過10個,每分鐘處理10個請求攻人,要配合下面的使用取试,其他的包都拒絕,注意一定要和下面的配合使用怀吻,不然不會限速的瞬浓,因為不知道其他的包怎么處理
iptables -A INPUT -p icmp -j REJECT
8、state擴展
根據(jù)”連接追蹤機制“去檢查連接的狀態(tài)蓬坡,較耗資源
conntrack機制:追蹤本機上的請求和響應之間的關系
狀態(tài)有如下幾種:
NEW:新發(fā)出請求猿棉;連接追蹤信息庫中不存在此連接的相關信息條目,因此屑咳,將其識別為第一次發(fā)出的請求
ESTABLISHED:NEW狀態(tài)之后萨赁,連接追蹤信息庫中為其建立的條目失效之前,期間內(nèi)所進行的通信狀態(tài)
RELATED:新發(fā)起的但與已有連接相關聯(lián)的連接乔宿,如:ftp協(xié)議中的數(shù)據(jù)連接與命令連接之間的關系位迂,ftp發(fā)起數(shù)據(jù)連接之前访雪,命令連接已經(jīng)連接详瑞,屬于ESTABLISHED,當ftp發(fā)起新的數(shù)據(jù)連接時會只要命令連接是ESTABLISHED臣缀,即使新的連接受限也不影響ftp連接坝橡。
INVALID:無效的連接,如flag標記不正確
UNTRACKED:未進行追蹤的連接精置,如raw表中關閉追蹤
已經(jīng)追蹤到的并記錄下來的連接信息庫
/proc/net/nf_conntrack
調(diào)整連接追蹤功能所能夠容納的最大連接數(shù)量
/proc/sys/net/nf_conntrack_max
不同的協(xié)議的連接追蹤時長
/proc/sys/net/netfilter/
注意:CentOS7 需要加載模塊:modprobe nf_conntrack
示例
[root@centos7 ~]#lsmod |grep nf_conntrack ---模塊已經(jīng)加載计寇,如果沒有加載需要用modprobe命令加載
nf_conntrack_ipv4 19108 1
nf_defrag_ipv4 12729 1 nf_conntrack_ipv4
nf_conntrack 111302 6 nf_nat,xt_connlimit,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j REJECT
以上兩條規(guī)則可以實現(xiàn)ssh協(xié)議新的連接被拒絕,舊的連接繼續(xù)連接
1脂倦、iptables的鏈接跟蹤表最大容量為/proc/sys/net/nf_conntrack_max番宁,各種狀態(tài)的超時鏈接會從表中刪除;當模板滿載時赖阻,后續(xù)連接可能會超時
解決方法兩個:
(1) 加大nf_conntrack_max值
vi /etc/sysctl.conf
net.nf_conntrack_max= 393216
net.netfilter.nf_conntrack_max= 393216
(2) 降低nf_conntracktimeout時間
vi /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
iptables-t nat-L -n
2蝶押、開放被動模式的ftp服務示例
yum install vsftpd
systemctl start vsftpd
modprobe nf_conntrack_ftp ---必須加載這個模塊才可以
lsmod |grep nf_conntrack_ftp
iptables -F
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 相關聯(lián)的和已經(jīng)連接的都是允許的,命令端口連接后火欧,因數(shù)據(jù)連接和命令連接相關聯(lián)棋电,所以客戶端進行數(shù)據(jù)連接也是被允許的
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT ---連接本機tcp的21端口的新的連接是允許的
iptables -A INPUT -j DROP ---其他連接是拒絕的
[root@centos7 var]#iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1272 81651 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
10 600 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW
4093 531K DROP all -- * * 0.0.0.0/0 0.0.0.0/0
- 處理動作:
-j targetname[per-target-options] -j是jump跳轉(zhuǎn)至下一跳
簡單:ACCEPT茎截,DROP
擴展:REJECT:--reject-with:icmp-port-unreachable默認
RETURN:返回調(diào)用鏈
REDIRECT:端口重定向
MARK:做防火墻標記
DNAT:目標地址轉(zhuǎn)換
SNAT:源地址轉(zhuǎn)換
MASQUERADE:地址偽裝
LOG:記錄日志,非中斷的處理動作,本身不拒絕和允許,放在拒絕和允許規(guī)則前赶盔,并將日志記錄在/var/log/messages系統(tǒng)日志中
--log-level level 級別:emerg, alert, crit, error, warning, notice, info or debug
--log-prefix prefix 日志前綴企锌,用于區(qū)別不同的日志,最多29個字符
示例
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j LOG --log-prefix "new connections" --- 表示訪問本機的httpd服務的新的請求就記錄到日志/var/log/messages中于未,并且記錄的日志中的前綴為new connections
3撕攒、自定義鏈
示例一:自定義一個鏈,規(guī)則是認為是惡意攻擊的報文請求被拒絕
iptables -N deny ---創(chuàng)建一個自定義鏈
iptables -A deny -p tcp --tcp-flags ALL ALL -j REJECT
iptables -A deny -p tcp --tcp-flags ALL NONE -j REJECT ---在自定義鏈上設置規(guī)則為標記位都是1和標記位都是0的tcp報文被拒絕
iptables -A INPUT -j deny ---把自定義鏈內(nèi)置鏈相關聯(lián)沉眶,注意自定義鏈只有和內(nèi)置鏈關聯(lián)后才能起作用
iptables -vnL
iptables -F
iptables -vnL
iptables -X deny ---刪除自定義鏈之前一定要先清空自定義鏈和它所關聯(lián)的默認鏈打却,因為-X 選項是清空自定義的空鏈
iptables -vnL
示例二:自定義一個鏈,規(guī)則是禁ping
iptables -N jinping
iptables -A jinping -p icmp --icmp-type 8 -j REJECT
iptables -A INPUT -j jinping
iptables -vnL
自定義鏈的作用是可以把一些常用的規(guī)則寫到自定義鏈里谎倔,當要用的時候把它和內(nèi)置鏈相關聯(lián)就可以了柳击,很方便。
總結(jié):
任何不允許的訪問片习,應該在請求到達時給予拒絕
規(guī)則在鏈接上的次序即為其檢查時的生效次序
基于上述捌肴,規(guī)則優(yōu)化
1 安全放行所有入站和出站的狀態(tài)為ESTABLISHED狀態(tài)連接
2 謹慎放行入站的新請求
3 有特殊目的限制訪問功能,要在放行規(guī)則之前加以拒絕
4 同類規(guī)則(訪問同一應用)藕咏,匹配范圍小的放在前面状知,用于特殊處理
5 不同類的規(guī)則(訪問不同應用),匹配范圍大的放在前面
6 應該將那些可由一條規(guī)則能夠描述的多個規(guī)則合并為一條
7 設置默認策略孽查,建議白名單(只放行特定連接)
1)iptables-P饥悴,不建議
2)建議在規(guī)則的最后定義規(guī)則做為默認策略