精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

中、小企業如何自建免費的云WAF

安全 應用安全
WEB攻擊是十幾年來黑客攻擊的主流技術,國內的大廠們早已把WAF作為安全基礎設施的標配,市面上也有很多安全廠商提供了WAF產品或云WAF服務。

[[172639]]

WEB攻擊是十幾年來黑客攻擊的主流技術,國內的大廠們早已把WAF作為安全基礎設施的標配,市面上也有很多安全廠商提供了WAF產品或云WAF服務。

對于沒有自己安全團隊,卻又飽受sql注入、xss、cc等WEB攻擊的中、小企業,對WAF的需求也是非常迫切的。

目前獲取WAF的途徑有以下幾種:

  • 購買安全廠商的WAF產品
  • 使用云waf服務,將自己域名的DNS服務器設為云waf廠商提供的,或者將需要接入云waf的域名cname過去
  • 或者從網上找一些免費或開源的waf使用
  • 自制WAF

對于收入不錯的公司使用收費的產品或服務無可厚非,但是有些公司會因預算、數據私密性(云waf可以捕獲所有流量的請求和響應的內容)等原因,不打算使用收費的產品或服務。

這種情況下只能使用免費的waf了,或者按業務需求自制一款適合自己的云WAF。

筆者會通過本文詳細闡述如何用一周的時間自制一款簡單易用的云WAF,以下為已經完成的云WAF的文檔及github地址:

項目站點:https://waf.xsec.io/

Github地址:https://github.com/xsec-lab

云WAF架構設計

物理架構

根據業務場景或需求的不同,WAF也有不同的架構,比如:

以模塊的形式集成到本地WEB容器中,如mod_security、Naxsi

反向代理模式

硬件產品WAF

Agent+檢測云模式

本文實現的云WAF采用了反向代理模式的架構。

waf可以部署一臺或者多臺服務器中,如果業務規模較大,一臺waf的性能已經無法滿足業務需求,可以在waf前面使用LVS、haproxy、nginx等搭建負載均衡,通過VIP將前端的請求分發到后端的waf中。

后端的app server為提供正常業務的web server,用戶的請求會先經過waf進行過濾,如果是惡意的攻擊請求,則會在waf層面阻斷,如果是正常的請求才會轉發到后端服務器。

邏輯架構

x-waf由x-waf本身以及web管理后臺x-waf-admin組成,其中:

x-waf基于openresty + lua開發

waf管理后臺:采用golang + xorm + macrom開發的,支持二進制的形式部署

x-waf的實現

筆者呆過的2家公司都自主研發過云waf,架構一開始就設計成了適合大規模業務系統的,安裝、部署、運維都比較復雜,不方便小企業快速部署,所以在參考了github中現有的開源的幾款waf后,重新設計了一款輕量級的。

x-waf的執行流程

openresty默認不會執行lua腳本,需要在nginx.conf中進行配置,如下所示:

  1. # 指定lua文件的查找路徑 
  2.  
  3. lua_package_path "/usr/local/openresty/nginx/conf/x-waf/?.lua;/usr/local/lib/lua/?.lua;;"; 
  4.  
  5. # 定義2個lua shared dict變量分別為limit和badGuys,分配的內存大小為100M 
  6.  
  7. lua_shared_dict limit 100m; lua_shared_dict badGuys 100m; 
  8.  
  9. # 開啟lua代碼緩存功能 
  10.  
  11. lua_code_cache on; 
  12.  
  13. # 讓nginx在init階段執行init.lua文件中的lua代碼 
  14.  
  15. init_by_lua_file /usr/local/openresty/nginx/conf/x-waf/init.lua; 
  16.  
  17. # 讓nginx在每個http請求的access階段執行access.lua文件中的lua代碼 
  18.  
  19. access_by_lua_file /usr/local/openresty/nginx/conf/x-waf/access.lua; 

openresty在init階段會根據配置文件指定的位置導入json格式的規則到全局的lua table中,不同的規則放在不同的table中,以加快正則匹配的速度

  1. waf = require("waf") wafwaf_rules = waf.load_rules() 

waf.load_rules會根據配置文件中指定的路徑加載讀取所有json格式的規則,并加載到不同的table中,然后封裝一個get_rule的函數,方便在每個http進來時可以直接從lua table中獲取對應類型的規則:

  1. local _M = { RULES = {} } 
  2.  
  3. function _M.load_rules() _M.RULES = util.get_rules(config.config_rule_dir) 
  4.  
  5. return _M.RULES end 
  6.  
  7. function _M.get_rule(rule_file_name) ngx.log(ngx.DEBUG, rule_file_name) 
  8.  
  9. return _M.RULES[rule_file_name] end 

util.get_rules會將指定文件中的規則按規則名保存到lua table中供waf.get_rule函數在需要的時候獲取規則:

  1. function _M.get_rules(rules_path) 
  2.  
  3. local rule_files = _M.get_rule_files(rules_path) 
  4.  
  5. if rule_files == {} then return nil end 
  6.  
  7. for rule_name, rule_file in pairs(rule_files) do local t_rule = {} 
  8.  
  9. local file_rule_name = io.open(rule_file) 
  10.  
  11. local json_rules = file_rule_name:read("*a") file_rule_name:close() 
  12.  
  13. local table_rules = cjson.decode(json_rules) 
  14.  
  15. if table_rules ~= nil then 
  16.  
  17. for _, table_name in pairs(table_rules) do table.insert(t_rule, table_name["RuleItem"]) end end _M.RULE_TABLE[rule_name] = t_rule end 
  18.  
  19. return(_M.RULE_TABLE) end 

每個請求進來時,waf會按ip白名單、ip黑名單、user_agent、是否cc攻擊、url白名單、url黑名單、是否cc攻擊、cookies、get和post參數的順序進行過濾,如果匹配到其中任一種就會進行相應的處理(輸出提示或跳轉后),之后就不會繼續判斷是否為其他類型的攻擊了。

  1. function _M.check() 
  2.  
  3. if _M.white_ip_check() then elseif _M.black_ip_check() then elseif _M.user_agent_attack_check() then elseif _M.white_url_check() then elseif _M.url_attack_check() then elseif _M.cc_attack_check() then elseif _M.cookie_attack_check() then elseif _M.url_args_attack_check() then elseif _M.post_attack_check() then else return end 
  4.  
  5. end 

對每個請求的每種參數類型的判斷都是先獲取到參數內容,然后再循環與該類參數的正則規則進行匹配,如果匹配到則認為是攻擊請求,以下為對post參數進行過濾的函數:

  1. -- deny post function _M.post_attack_check() 
  2.  
  3. if config.config_post_check == "on" then ngx.req.read_body() local POST_RULES = _M.get_rule('post.rule') 
  4.  
  5. for _, rule in pairs(POST_RULES) do local POST_ARGS = ngx.req.get_post_args() or {} 
  6.  
  7. for _, v in pairs(POST_ARGS) do local post_data = "" if type(v) == "table" then post_data = table.concat(v, ", ") 
  8.  
  9. else post_data = v 
  10.  
  11. end if rule ~= "" and rulematch(post_data, rule, "jo") then util.log_record('Deny_USER_POST_DATA', post_data, "-", rule) 
  12.  
  13. if config.config_waf_enable == "on" then util.waf_output() 
  14.  
  15. return true end end end end end return false 
  16.  
  17. end 

waf管理后臺x-waf-admin的實現

waf的規則是以json格式的字符串,人工維護起來容量出錯,另外云waf會有多臺waf同時工作,如果人工做waf的后端主機的管理、規則同步與主機配置的同步等這些運維工作的話,非常容易出錯或者疏漏,所以有必要提供一個自動化管理、同步配置的管理后臺。

waf管理后臺的功能需求

方便部署,啟動前只需做簡單的配置即可,第一次啟動時,x-waf-admin會在mysql中生成默認管理員以及默認的waf規則;

用戶管理,支持管理員賬戶的增、改、刪;

waf規則管理,支持waf規則的增、改、刪除以及策略同步到所有waf服務器的功能;

后端站點管理,支持接入waf的站點的增、改、刪除,以及單獨同步或全部同步接入的后端站點的功能。

程序結構

為了方便部署,x-waf-admin沒有采用python、php等需要搭建運行環境或依賴第3方包的語言,而是用可以直接編譯為可執行文件的go語言寫的,具體的技術棧為go語言 + macron + xorm。

項目結構如下:

hartnett at hartnett-notebook in /data/code/golang/src/xsec-waf/x-waf-admin (master●) $ tree -L 2 ├── conf │ └── app.ini ├── models │ ├── models.go │ ├── rules.go │ ├── site.go │ └── user.go ├── modules │ └── util ├── public │ ├── css ├── README.md ├── routers │ ├── admin.go │ ├── index.go │ ├── rules.go │ ├── site.go │ └── user.go ├── server ├── server.go ├── setting │ └── setting.go └── templates

conf為配置文件目錄

models目錄下為orm文件

modules為功能模塊組件

public和templates分別為靜態資源及模板文件所在的目錄

routers目錄下的為各路由文件

setting目錄下為配置文件處理的文件

server.go為程序入口

規則管理功能的實現

用戶管理、后端站點管理與規則管理功能的實現大同小異,都是類似flask、martini、tornado、django等MTV WEB框架的應用,為了減少篇幅,本文只寫后端站點管理功能如何實現,完整的代碼請參見github。

后端站點管理的ORM實現

先用xorm定義site的struct,然后再提供增、改、刪、查看等方法,這些方法會被routers模塊中的site文件調用:

  1. // 因篇幅太長,省略部分代碼,詳細代碼請查看github 
  2.  
  3. // debuglevel: debug, info, notice, warn, error, crit, alert, emerg 
  4.  
  5. // ssl: on, off 
  6.  
  7. type Site struct { Id int64 SiteName string `xorm:"unique"` Port int BackendAddr []string Ssl string `xorm:"varchar(10) notnull default 'off'"` DebugLevel string `xorm:"varchar(10) notnull default 'error'"` LastChange time.Time `xorm:"updated"` Version int `xorm:"version"` // 樂觀鎖 
  8.  
  9.  
  10. func ListSite() (sites []Site, err error) { sites = make([]Site, 0) err = Engine.Find(&sites) 
  11.  
  12. log.Println(err, sites) 
  13.  
  14. return sites, err } 
  15.  
  16. func NewSite(siteName string, Port int, BackendAddr []string, SSL string, DebugLevel string) (err error) { 
  17.  
  18. if SSL == "" { SSL = "off" } 
  19.  
  20. if DebugLevel == "" { DebugLevel = "error" } _, err = Engine.Insert(&Site{SiteName: siteName, Port: Port, BackendAddr: BackendAddr, Ssl: SSL, DebugLevel: DebugLevel}) 
  21.  
  22. return err } 

后端站點管理的路由實現

首先import相應的包,然后分別編寫以下處理器:

增加站點的get與post請求的處理器(NewSite、DoNewSite)

修改站點的get與post請求的處理器(EditSite、DoEditSite)

根據ID刪除站點的get處理器(DelSite)

同步站點配置的處理器(SyncSite)

同步站點配置的API的處理器以及根據ID同步站點配置的API的處理器(SyncSiteApi、SyncSiteById)

  1. // 因篇幅太長,省略部分代碼,詳細代碼請查看github 
  2.  
  3. func NewSite(ctx *macaron.Context, sess session.Store, x csrf.CSRF) { if sess.Get("uid") != "" { ctx.Data["csrf_token"] = x.GetToken() ctx.HTML(200, "newSite") } else { ctx.Redirect("/login/") } } 
  4.  
  5. func DoNewSite(ctx *macaron.Context, sess session.Store) { 
  6.  
  7. if sess.Get("uid") != nil { 
  8.  
  9. log.Println(sess.Get("uid")) siteName :ctx.Req.Form.Get("sitename") port :ctx.Req.Form.Get("port") Port, _ :strconv.Atoi(port) backaddr :ctx.Req.Form.Get("backendaddr") backendaddr :strings.Split(backaddr, "\r\n") BackendAddr :make([]string, 0) 
  10.  
  11. for _, v :range backendaddr { 
  12.  
  13. if v == "" { 
  14.  
  15. continue } v = strings.TrimSpace(v) BackendAddr = append(BackendAddr, v) } ssl :ctx.Req.Form.Get("ssl") debugLevel :ctx.Req.Form.Get("debuglevel") 
  16.  
  17. log.Println(siteName, BackendAddr, ssl, debugLevel) models.NewSite(siteName, Port, BackendAddr, ssl, debugLevel) ctx.Redirect("/admin/site/list/") } else { ctx.Redirect("/login/") } } 

model的初始化

大家一定注意到了,雖然用了mysql,但是沒有要求在使用前手工去導入建表或插入初始化值的sql腳本,這是為神馬呢?

因為我們使用了ORM,ORM會幫我們自動完成上面所說的操作,如下代碼所示:

  1. // 因篇幅太長,省略部分代碼,詳細代碼請查看github 
  2.  
  3. var ( Engine *xorm.Engine err error ) 
  4.  
  5. func init() { 
  6.  
  7. // 從conf/app.ini獲取數據庫的配置信息 sec :setting.Cfg.Section("database") 
  8.  
  9. // 連接數據庫 Engine, err = xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", sec.Key("USER").String(), sec.Key("PASSWD").String(), sec.Key("HOST").String(), sec.Key("NAME").String())) 
  10.  
  11. if err != nil { 
  12.  
  13. log.Panicf("Faild to connect to database, err:%v", err) } 
  14.  
  15. // 新建site、user和rules表 Engine.Sync2(new(Site)) Engine.Sync2(new(User)) Engine.Sync2(new(Rules)) 
  16.  
  17. // 如果user表為空,則新建一個默認賬戶, ret, err :Engine.IsTableEmpty(new(User)) 
  18.  
  19. if err == nil && ret { 
  20.  
  21. log.Printf("create new user:%v, password:%v\n", "admin", "x@xsec.io") NewUser("admin", "x@xsec.io") } 
  22.  
  23. // 如果規則為空,則插入默認的初始化規則 ret, err = Engine.IsTableEmpty(new(Rules)) 
  24.  
  25. if err == nil && ret { 
  26.  
  27. log.Println("Insert default waf rules") Engine.Exec(DefaultRules) } } 

配置路由

當ORM、路由處理相關的代碼寫完后就可以在程序入口中配置路由了,將URL與路由處理的控制器對應起來,如下所示:

  1. // 因篇幅太長,省略部分代碼,詳細代碼請查看github 
  2.  
  3. m.Group("/admin", func() { 
  4.  
  5. m.Get("/index/", routers.Admin) 
  6.  
  7. m.Group("/site/", func() { 
  8.  
  9. m.Get("", routers.Admin) 
  10.  
  11. m.Get("/list/", routers.Admin) 
  12.  
  13. m.Get("/new/", routers.NewSite) 
  14.  
  15. m.Post("/new/", csrf.Validate, routers.DoNewSite) 
  16.  
  17. m.Get("/edit/:id", routers.EditSite) 
  18.  
  19. m.Post("/edit/:id", csrf.Validate, routers.DoEditSite) 
  20.  
  21. m.Get("/del/:id", routers.DelSite) 
  22.  
  23. m.Get("/sync/", routers.SyncSite) 
  24.  
  25. m.Get("/sync/:id", routers.SyncSiteById) 
  26.  
  27. m.Get("/json/", routers.SiteJSON) 
  28.  
  29. }) }) 
  30.  
  31. m.Group("/api", func() { 
  32.  
  33. m.Get("/site/sync/", routers.SyncSiteApi) 
  34.  
  35. m.Get("/rule/sync/", routers.SyncRuleApi) }) 
  36.  
  37. log.Printf("xsec waf admin %s", setting.AppVer) 
  38.  
  39. log.Printf("Run mode %s", strings.Title(macaron.Env)) 
  40.  
  41. log.Printf("Server is running on %s", fmt.Sprintf("0.0.0.0:%v", setting.HTTPPort)) 
  42.  
  43. log.Println(http.ListenAndServe(fmt.Sprintf("0.0.0.0:%v", setting.HTTPPort), m)) 

互動問題

從前有座山,山里有個廟,廟里有個灰帽子小明同學,他有次通過一些不可描述的手段,得到了某個網站的反彈Shell,雖是root權限,但利用方法不穩定。

此時小明發現服務器的內網網卡上跑著一個有root權限的redis,但加了密碼,只見小明虎軀一震,頓時有了思路:留個webshell,以后通過webshell來執行redis反彈shell的exp。

但當他看完nginx的配置后又菊花一緊,因為這個站點只跑了lua的web應用.。

責任編輯:趙寧寧 來源: 紅黑聯盟
相關推薦

2014-05-15 11:41:32

2018-06-26 10:39:37

2010-11-09 11:12:23

2013-12-23 17:14:29

2018-06-20 10:50:33

云計算小企業云服務

2014-03-18 11:33:04

云服務IT管理員

2012-03-09 17:39:26

2014-12-22 09:49:47

云計算IaaSPaaS

2011-06-07 15:28:16

2013-03-01 13:56:05

IT工具開源免費

2013-06-26 15:08:45

天翼

2013-01-07 15:43:23

云計算

2015-09-11 09:39:51

云計算

2011-07-01 11:28:13

云計算xtools銷售革命

2013-06-26 09:48:37

2009-03-10 14:00:18

網絡招聘

2013-07-22 09:20:28

甘肅移動云計算

2018-06-13 07:06:05

2020-10-26 08:00:08

云計算IT服務企業

2020-10-09 10:01:54

中小企業物聯網IOT
點贊
收藏

51CTO技術棧公眾號

亚洲综合免费观看高清在线观看| 韩国av一区二区三区| 精品爽片免费看久久| 国产二区视频在线播放| 天天在线视频色| 国产在线视频一区二区三区| 97色在线观看| 精品视频第一页| 国产suv精品一区| 欧美最猛黑人xxxxx猛交| 熟女视频一区二区三区| 天堂av在线免费观看| 狠狠色综合日日| 国产91精品久久久久久| 乱h高h女3p含苞待放| 亚洲精品合集| 91精品中文字幕一区二区三区 | 午夜精品电影| 亚洲欧洲免费视频| 国产高潮失禁喷水爽到抽搐| 成人一级视频| 精品国产1区2区| 熟女视频一区二区三区| av在线资源站| 99国内精品久久| 91久久嫩草影院一区二区| 国产亚洲欧美在线精品| 激情欧美国产欧美| 久久精品电影一区二区| jizz中文字幕| 日本在线中文字幕一区| 精品三级av在线| 尤物国产在线观看| 欧美va视频| 欧美日韩国产综合新一区 | 亚洲欧美久久234| 天天操天天干天天插| 国产在线国偷精品产拍免费yy| 国产精品成人一区二区三区吃奶| 日韩毛片在线播放| 欧美视频二区| 欧美xxxx14xxxxx性爽| 亚洲天堂最新地址| 狠狠操综合网| 亚洲无av在线中文字幕| 国产精品jizz| 欧美精品中文字幕亚洲专区| 精品国产1区2区3区| 色欲无码人妻久久精品| 久久9999免费视频| 91精品国模一区二区三区| 色国产在线视频| 日本一区二区电影| 欧美日韩免费不卡视频一区二区三区| 国产情侣av自拍| 天堂а√在线最新版中文在线| 性久久久久久久久| av高清在线免费观看| 成人高潮aa毛片免费| 亚洲综合图片区| 欧美亚洲色图视频| 电影k8一区二区三区久久| 亚洲国产视频a| 五十路熟女丰满大屁股| 欧美伦理91| 大桥未久av一区二区三区| 少妇人妻无码专区视频| 蜜桃av在线| 色婷婷综合在线| www.99在线| 四虎地址8848精品| 欧美一区二区人人喊爽| 老熟女高潮一区二区三区| 欧美爱爱网站| 亚洲区免费影片| 精品国产aaa| 91精品国产91久久综合| 欧美激情a∨在线视频播放| 国产一级在线观看视频| 先锋a资源在线看亚洲| 国产精品99久久久久久人| 在线播放一级片| 国产中文字幕一区| 国产伦精品一区| 国产毛片在线看| 亚洲人亚洲人成电影网站色| 成人黄色大片网站| 性高爱久久久久久久久| 欧美丰满一区二区免费视频| 制服丝袜av在线| av中字幕久久| 欧美裸身视频免费观看| 亚洲精品77777| 狂野欧美性猛交xxxx巴西| 成人欧美一区二区三区在线| 香蕉视频免费在线看| 国产精品三级视频| 日韩网站在线免费观看| 欧美日韩女优| 亚洲国产小视频在线观看| 日本人亚洲人jjzzjjz| 欧美一区亚洲| 国产成人精品视| 亚洲av无码一区二区乱子伦| 国产三级精品三级| 日韩视频在线视频| 六九午夜精品视频| 亚洲黄在线观看| 国产男女猛烈无遮挡在线喷水| 亚洲美女毛片| 成人精品久久久| 黄网站在线观看| 一二三区精品视频| 男女视频在线看| 久久精品福利| 久久综合九色九九| 国产又粗又猛又爽又| 成人av先锋影音| 在线观看亚洲视频啊啊啊啊| 厕沟全景美女厕沟精品| 欧美成人女星排名| 成人免费毛片xxx| 老司机精品导航| 国产麻豆一区二区三区在线观看| 日本激情在线观看| 色天天综合久久久久综合片| 国产精品久久久久久亚洲av| 亚洲破处大片| 国产男人精品视频| 国产在线观看免费| 欧美日韩在线第一页| 又黄又色的网站| 亚洲天堂一区二区三区四区| 国产情人节一区| 国产高清免费av在线| 精品久久久久久久久中文字幕| 精人妻一区二区三区| 中文在线日韩| 91欧美激情另类亚洲| 91在线网址| 91福利资源站| 性欧美13一14内谢| 亚洲一区成人| 麻豆亚洲一区| 欧美13videosex性极品| 亚洲国产天堂久久综合| 91精品国产乱码久久久张津瑜| 成人午夜视频网站| 国产精品久久久久9999爆乳| 911亚洲精品| 欧美国产日本高清在线| 亚洲成a人片在线| 亚洲免费av观看| 欧美性猛交xx| 极品裸体白嫩激情啪啪国产精品| 高清视频一区二区三区| av剧情在线观看| 亚洲国产成人爱av在线播放| 欧美三级午夜理伦| www国产成人| 午夜免费一区二区| 日韩一级毛片| 国产精品电影在线观看| 在线观看免费网站黄| 在线成人小视频| 欧美成人免费观看视频| 成人视屏免费看| 亚洲 高清 成人 动漫| 欧美**字幕| 国产精品91久久| 国产经典自拍视频在线观看| 欧美人与性动xxxx| 波多野结衣在线网址| 国v精品久久久网| 黄色一级视频片| 红桃成人av在线播放| 成人亲热视频网站| 成人影院在线视频| 亚洲欧美国产日韩天堂区| 依依成人在线视频| 一区二区三区国产精品| 欧美做受喷浆在线观看| 奇米色一区二区| 欧美日韩午夜爽爽| 日韩动漫一区| 国产欧美va欧美va香蕉在| 手机在线免费观看av| 亚洲女同精品视频| 国产伦精品一区二区三区免.费| 亚洲一二三级电影| 日韩精品无码一区二区三区久久久 | 中文字幕成人在线| 丰满人妻一区二区| 91激情五月电影| 精国产品一区二区三区a片| 91视频国产观看| 一本一道久久a久久综合蜜桃| 在线免费高清一区二区三区| 天堂精品一区二区三区| 最新精品在线| 国产精品免费福利| h片在线观看视频免费免费| 夜夜嗨av色综合久久久综合网 | 亚洲国产成人av在线| 中文字幕av无码一区二区三区| 亚洲制服欧美中文字幕中文字幕| 欧美熟妇激情一区二区三区| 成人午夜电影网站| 在线观看免费视频高清游戏推荐 | 在线视频日韩一区 | www.四虎在线观看| 欧美在线观看一区| 日本午夜小视频| 亚洲欧美一区二区三区国产精品 | 韩国av免费在线| 欧美午夜电影在线播放| 国产香蕉视频在线| 一区二区在线观看视频| 成年人看的免费视频| 91日韩精品一区| 免费观看一区二区三区| 久草中文综合在线| 国内自拍视频一区| 午夜在线一区二区| 自拍日韩亚洲一区在线| 欧美精品日韩| 天天做天天爱天天高潮| 大片网站久久| 蜜桃视频在线观看成人| 欧美巨大xxxx| 国产精品一区二区免费看| 精品国产乱码一区二区三区| 国产伦精品免费视频| 欧美性理论片在线观看片免费| 91精品国产网站| 变态调教一区二区三区| 欧美激情精品久久久| 成人在线影视| 北条麻妃久久精品| 日本免费中文字幕在线| 久久精品久久精品亚洲人| 性开放的欧美大片| 色综合影院在线| 丁香在线视频| 国产一区二区精品丝袜| 高清av电影在线观看| 亚洲色图13p| 成人在线免费电影| 中文字幕亚洲一区二区三区五十路| www日韩tube| 亚洲一区av在线播放| 97视频在线观看网站| 日韩最新在线视频| а√资源新版在线天堂| 欧美不卡视频一区发布| 中文字幕在线播放网址| 欧美精品在线视频观看| 黄色在线观看视频网站| 久久人91精品久久久久久不卡| 福利在线免费视频| 欧洲一区二区视频| 日本高清不卡一区二区三区视频| 国产成人免费av电影| 国产香蕉久久| 亚洲最大av在线| 成人在线视频你懂的| 久久精品aaaaaa毛片| 国产精品三级| 亚洲精品乱码久久久久久蜜桃91 | 国产精品久久久久7777按摩| 亚洲少妇xxx| 亚洲自拍与偷拍| 久久久免费高清视频| 精品视频1区2区| 99久久久国产精品无码网爆| 亚洲国产成人爱av在线播放| 经典三级在线| 免费91麻豆精品国产自产在线观看 | 中文子幕无线码一区tr| 秋霞欧美一区二区三区视频免费| 一区二区三区丝袜| 特级做a爱片免费69| 88在线观看91蜜桃国自产| 性一交一乱一乱一视频| 亚洲欧美日韩中文在线| 黄色免费在线网站| 国语自产精品视频在线看一大j8 | 91亚洲国产成人精品性色| 色播一区二区| 欧美精品尤物在线| 天天色天天射综合网| 水蜜桃色314在线观看| 老司机免费视频一区二区| 久久精品aⅴ无码中文字字幕重口| 久久综合九色综合97_久久久| 国产在线免费av| 亚洲成人av在线电影| 综合久久中文字幕| 精品噜噜噜噜久久久久久久久试看| 国产小视频在线| 欧美另类精品xxxx孕妇| 97精品国产99久久久久久免费| 国产精品国模大尺度私拍| 日韩视频在线观看| 亚洲色欲综合一区二区三区| 国产福利91精品一区| 日本欧美一区二区三区不卡视频| 亚洲图片欧美视频| 91成年人视频| 亚洲人成在线播放| 国产乱码在线| 91久久夜色精品国产网站| 欧美色爱综合| 日本精品免费在线观看| 国产91露脸合集magnet| 波兰性xxxxx极品hd| 色婷婷av一区二区三区大白胸| 免费看黄色一级视频| 久久激情视频久久| 电影亚洲一区| 视频一区亚洲| 国产一区二区你懂的| av天堂一区二区| 亚洲精品中文字幕在线观看| 在线视频你懂得| 在线播放日韩专区| 新片速递亚洲合集欧美合集| 国产一区免费观看| 影音先锋一区| 亚洲最大视频网| 一区二区三区在线观看视频| 国产女人18毛片18精品| 日韩亚洲第一页| 欧美a一级片| 亚洲成色www久久网站| 日韩精品亚洲一区二区三区免费| 日韩片在线观看| 欧美日韩亚洲一区二| 偷拍自拍在线| 欧美亚洲在线观看| 亚洲8888| 亚洲精品无码久久久久久| av不卡一区二区三区| 久青草免费视频| 欧美成人vps| 国产在线超碰| 国产精品久久久久久一区二区 | 久久精品99久久久| 亚洲AV无码成人精品区明星换面 | 中文 欧美 日韩| 欧美mv日韩mv亚洲| 尤物视频在线看| 91嫩草免费看| 狠狠综合久久| 91传媒理伦片在线观看| 精品久久香蕉国产线看观看亚洲 | 亚洲一区二区三区精品在线观看| 美腿丝袜亚洲色图| 少妇愉情理伦三级| 欧美午夜精品久久久久久孕妇| jizz日韩| 国产日韩在线精品av| 一区二区三区国产精华| 三级黄色片免费观看| 亚洲永久精品大片| 亚洲国产av一区二区| 欧美尺度大的性做爰视频| 国产一区二区三区不卡av| 国精产品一区一区三区视频| 26uuu精品一区二区在线观看| 国产高清中文字幕| 色综合伊人色综合网| 看亚洲a级一级毛片| 国自产拍偷拍精品啪啪一区二区| 91小视频在线观看| 午夜精品一区二| 久久久999精品视频| 久久精品一级| 一区二区传媒有限公司| 国产丝袜在线精品| 国产免费一区二区三区免费视频| 欧美精品免费在线| 精品免费视频| 性欧美在线视频| 天天综合网天天综合色 | www.色综合| 久久精品亚洲成在人线av网址| 欧美三级一级片| 国产精品成人免费精品自在线观看| 国产ts变态重口人妖hd| 26uuu久久噜噜噜噜| 欧洲毛片在线视频免费观看| 亚洲欧美久久久久| 亚洲福利视频一区| 黄色毛片在线看| 99精品国产高清一区二区| 性高湖久久久久久久久| 国产大学生自拍| 日韩黄在线观看| 精品一区视频|