10月17日 linux防火墻 1

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ù)鉤住后檢查贷岸。

Paste_Image.png
  • 三種報文流向:
    流入本機: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
Paste_Image.png

可以通過如下命令查看各個表中的鏈

iptables -t filter -vnL
iptables -t nat -vnL
Paste_Image.png
  • IPTABLES和路由
    路由功能發(fā)生的時間點,報文進入本機后
    判斷目標主機是否為本機
    是:INPUT
    否:FORWARD
    報文離開本機之前绍赛,判斷由哪個接口送往下一跳蔓纠,路由決策就是本機的路由表
Paste_Image.png
  • 內(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ī)則做為默認策略

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绰精,更是在濱河造成了極大的恐慌汁针,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贷揽,死亡現(xiàn)場離奇詭異,居然都是意外死亡梦碗,警方通過查閱死者的電腦和手機禽绪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洪规,“玉大人印屁,你說我怎么就攤上這事≌独” “怎么了雄人?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長樱拴。 經(jīng)常有香客問我柠衍,道長洋满,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任珍坊,我火速辦了婚禮牺勾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阵漏。我一直安慰自己驻民,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布履怯。 她就那樣靜靜地躺著回还,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叹洲。 梳的紋絲不亂的頭發(fā)上柠硕,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音运提,去河邊找鬼蝗柔。 笑死,一個胖子當著我的面吹牛民泵,可吹牛的內(nèi)容都是我干的癣丧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼栈妆,長吁一口氣:“原來是場噩夢啊……” “哼胁编!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鳞尔,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嬉橙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铅檩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憎夷,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡莽鸿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年昧旨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祥得。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡兔沃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出级及,到底是詐尸還是另有隱情乒疏,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布饮焦,位于F島的核電站怕吴,受9級特大地震影響窍侧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜转绷,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一伟件、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧议经,春花似錦斧账、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至籍救,卻和暖如春习绢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝙昙。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工毯炮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耸黑。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓桃煎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親大刊。 傳聞我的和親對象是個殘疾皇子为迈,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容