該怎么描述防火墻的實現(xiàn)呢?既然說不明白那就不說了,自己領(lǐng)悟吧!
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),安溪企業(yè)網(wǎng)站建設(shè),安溪品牌網(wǎng)站建設(shè),網(wǎng)站定制,安溪網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,安溪網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
一、防火墻是什么?
通過一些規(guī)則在網(wǎng)絡(luò)數(shù)據(jù)報文必經(jīng)的幾個鉤子上做端口的限制,實現(xiàn)數(shù)據(jù)過濾的功能。
二、數(shù)據(jù)報文傳輸?shù)穆窂绞窃鯓拥模?/p>
1、 客戶端發(fā)出數(shù)據(jù)報文---->到達服務(wù)器的網(wǎng)絡(luò)接口-----(判斷目標是服務(wù)器自己)將報文送入內(nèi)核處理---->將處理好的數(shù)據(jù)報文轉(zhuǎn)發(fā)出去---->通過網(wǎng)絡(luò)接口發(fā)還給客戶端
2、客戶端發(fā)出數(shù)據(jù)報文---->到達服務(wù)器的網(wǎng)絡(luò)接口-----(判斷目標不是服務(wù)器)將數(shù)據(jù)轉(zhuǎn)發(fā)出去---->通過網(wǎng)絡(luò)接口送去目標地址
三、哪些地方是數(shù)據(jù)流必經(jīng)的點?
1.報文進入網(wǎng)卡,但是還沒有經(jīng)過路由,這個點叫做prerouting
2.報文經(jīng)過路由后送入內(nèi)核之前,這個點叫做input
3.路由功能節(jié)點,這個點叫forward
4.報文由內(nèi)核處理完畢,發(fā)送給路由之前,這個點叫output
5.報文經(jīng)過路由后,就要經(jīng)過網(wǎng)卡發(fā)送出去,這個點叫postrouting
這些點在專業(yè)術(shù)語中稱為hooks funcation即鉤子函數(shù),因為所有的數(shù)據(jù)流必經(jīng)這五個點,所以我們的防火墻規(guī)則寫在這5個點上就可以了。
四、有哪些規(guī)則可以防火?
這就要談一下防火墻的歷史了,最開始linux是沒有防火墻設(shè)計的,基于安全的考慮OpenBSD最先將防火墻的概念在其unix內(nèi)核中實現(xiàn)。后來linux的維護者看到有這么好的東西,就把它移植到linux的內(nèi)核中去了,最開始這個規(guī)則叫做firewall,但是其太簡陋了,只能起到數(shù)據(jù)報文過濾filter的功能。隨著時間的發(fā)展其功能得到了非常多的擴展,比如實現(xiàn)了nat、mangle、raw等功能,所以后來給這些功能統(tǒng)一一起來起了個好聽的名字——netfilter,怎么樣?好聽吧......
netfilter叫做規(guī)則,它有四種功能:
1.filter 過濾
2.nat 網(wǎng)絡(luò)地址轉(zhuǎn)換
3.mangle 修改數(shù)據(jù)報文首部的可修改信息
4.raw 關(guān)閉net表上啟動的連接追蹤功能
五、什么是鏈?chain?
在一個鉤子上添加了很多規(guī)則功能,這些規(guī)則功能連起來就叫chain。但是有些功能只有在特定的鉤子上才起作用,下面是五個鏈的對應(yīng)表:
prerouting | raw | mangle | nat | |
input | mangle | filter | ||
output | raw | mangle | nat | filter |
forward | mangle | filter | ||
postrouting | mangle | nat |
鏈上面的規(guī)則檢查是要按順序檢查的:
1.同類規(guī)則匹配范圍小的方上面
2.不同類規(guī)則,匹配次數(shù)頻繁的方上面
3.應(yīng)該設(shè)定默認的規(guī)則
六、什么是表?table
每個功能都對應(yīng)幾個鏈,把這些鏈排起來就是表,下面是四個功能表:
filter | input | forward | output | ||
nat | prerouting | output | postrouting | ||
mangle | prerouting | input | output | forward | postrouting |
raw | prerouting | output |
七、上面所說的規(guī)則功能怎么添加到linux中?
iptables是一個接口,也是一個工具,可以讓程序員使用命令行模式輸入設(shè)定的規(guī)則到指定的hooks funcation上,實現(xiàn)防火墻的功能。
格式:
# iptables [-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET
TABLE: filter, nat, mangle, raw
SUBCOMMAND:
-P 設(shè)置鏈的默認處理 #iptables -P INPUT DROP
-F 清空指定鏈上的所有規(guī)則 #iptables -F INPUT
-Z 將鏈上的流經(jīng)的數(shù)據(jù)報文數(shù)據(jù)清零
-N 新建一個鏈,自定義的鏈
-X 刪除用戶自定義的空鏈
-E 重命名自定義鏈
-A 在指定鏈的最后添加一條規(guī)則
-I 插入一條規(guī)則,默認插入為第一條
-D 刪除指定的規(guī)則
-R 替換指定的規(guī)則
-L 列出指定鏈上的所有規(guī)則
-L -n 以數(shù)字方式列出
-L -n -v 更相信的信息
-L -n --line-numbers 顯示規(guī)則編號
-L -n -v -x 顯示計數(shù)器的精確值
CHAIN: PREROUTING INPUT FORWARD OUTPUT POSTROUTING
CRETERIA:
通用:-p 檢查協(xié)議tcp,udp,icmp
-s 源IP
-d 目標IP
-i 進入網(wǎng)卡接口
-o 出去網(wǎng)卡接口
隱式:(如果-p指明了協(xié)議-m 和協(xié)議可以省略)
-m tcp --dport|sport|syn|tcp-flags LIST1 LIST2
-m udp --dport|sport
-m icmp --icmp-type 8|0(8為ping請求,0為ping響應(yīng))
顯示:
-m multiport 指定多個端口
--sports
--dports
-m iprange 指定IP范圍
--src-range 源 (注意:前面可使用 ! 表示否定含義)
--dst-range 目標
-m string 指定過濾的字符串
--algo {kmp|bm} 指定解析算法
--string 字符串
--hex-string 十六進制編碼后的字符串
-m time 基于時間做限制
--datestart
--datestop
--timestart
--timestop
--weekdays
-m connlimit 基于并發(fā)連接數(shù)做限制
--connlimit-above
-m limit 基于鏈接速率做限制
--limit n[/second|/minit|/hour|/day] 限制鏈接速度多久一次
--limit-burst n 突發(fā)鏈接速率最快每秒n個
TARGET:
內(nèi)置目標:ACCEPT(接受),DROP(不響應(yīng)),REJECT(拒絕)
自定義的鏈chain
八、未完待續(xù)