出品|MS08067實驗室(www.ms08067.com)tcp
本文做者:大方子(Ms08067實驗室核心成員)
ui
Ubuntu14.04:192.168.61.135
Kali:192.168.61.130rest
先用Kali探測下Ubuntu的端口狀況,能夠看到Ubuntu的22端口是正常開放的日誌
接下來在Ubuntu上安裝Knockdcode
apt-get install update apt-get install build-essential -y apt-get install knockd -y
安裝完成後就cat下Knockd的配置/etc/knockd.confblog
配置解釋:ip
[options] UseSyslog //用來定義日誌輸出位置以及文件名 [openSSH] sequence = 7000,8000,9000 //設置(開門)敲門順序,能夠自定義 seq_timeout = 5 //設置超時時間 command = /sbin/iptables ‐A INPUT ‐s %IP% ‐p tcp ‐‐dport 22 ‐j ACCEPT //開門成功後添加防火牆規則命令(打開SSH端口) tcpflags = syn [closeSSH] sequence = 9000,8000,7000 //設置(關門)敲門順序,與開門順序相反 seq_timeout = 5 //設置超時時間 command = /sbin/iptables ‐D INPUT ‐s %IP% ‐p tcp ‐‐dport 22 ‐j ACCEPT //關門成功後刪除以前添加的防火牆規則(關閉SSH端口) tcpflags = syn
接下來對/etc/knockd.conf進行配置get
[options] #UseSyslog LogFile = /knock.log #配置日誌路徑 [openSSH] sequence = 7000,8000,9000 seq_timeout = 5 command = /sbin/iptables ‐I INPUT ‐s 192.168.61.130 ‐p tcp ‐‐dport 22 ‐j ACCEPT //這裏把A改爲I,讓knockd插入的規則可以優先生效 tcpflags = syn [closeSSH] sequence = 9000,8000,7000 seq_timeout = 5 command = /sbin/iptables ‐D INPUT ‐s 192.168.61.130 ‐p tcp ‐‐dport 22 ‐j ACCEPT tcpflags = syn
配置/etc/default/knockd,修改START_KNOCKD=1io
而後重啓下knockd服務table
service knock restart
而後咱們在Ubuntu的防火牆上添加幾條規則
iptables ‐A INPUT ‐s 192.168.61.1 ‐j ACCEPT //容許宿主機鏈接,方便實驗的時候能夠用SSH進行鏈接 iptables ‐A INPUT ‐s 127.0.0.0/8 ‐j ACCEPT //容許本機的鏈接 iptables ‐A INPUT ‐j DROP //拒絕其餘全部IP的鏈接
咱們在Kali上用nmap對Ubuntu的22端進行探測,能夠看到22端口的狀態是被過濾了
nmap ‐sC ‐Pn ‐sV ‐p 22 ‐A 192.168.61.135
接下來咱們用nmap進行敲門
for x in 7000 8000 9000;do nmap ‐Pn ‐‐max‐retries 0 ‐p $x 192.168.61.135;done
咱們再次查看Ubuntu上的防火牆規則,添加了一條關於192.168.61.130的規則
咱們再次用Kali進行探測並嘗試鏈接
使用完畢以後,咱們再次用nmap進行關門,只須要倒過來敲擊各個端口便可
for x in 9000 8000 7000;do nmap ‐Pn ‐‐max‐retries 0 ‐p $x 192.168.61.135;done
再次查看Ubuntu的防火牆規則,能夠看到以前關於192.168.61.130的規則已經被刪除
此時再次用nmap進行探測以及進行鏈接都會被拒絕