1. 程式人生 > >linux安全配置-將ssh服務隱藏於Internet(端口碰撞)

linux安全配置-將ssh服務隱藏於Internet(端口碰撞)

交流 sbin 開啟 信息 done opts 必須 image for

一:設備信息

要保護的服務器:ubuntu14.04 192.168.1.38

ssh測試機:kali2.0 192.168.1.47

二:配置過程

1.首先掃描一下未進行knockd配置的服務器的端口狀況:

技術分享圖片

由上面可知該服務器開啟了SSH端口

2.在服務器(192.168.1.38)下載並配置knockd

1)安裝knockd
  #apt-get install update
  #apt-get install build_essential -y
  #apt-get install knockd -y

2)配置knockd服務:
  2.1 配置/etc/knockd.conf。


    [options]
    #UseSyslog
    LogFile = /knock.log //可以自定義日誌的輸出位置以及文件名

    [openSSH]
    sequence = 7000,8000,9000 //定義順序號,此處是默認的,也可以修改
    seq_timeout = 30 //設置超時時間太小的話可能會出錯
    command = /sbin/iptables -I INPUT -s 192.168.1.47 -p tcp --dport 22 -j ACCEPT //-i 命令是將規則插入到最前面,最先生效,以防止過濾所有端口的情況將此條規則吃掉


    tcpflags = syn

    [closeSSH]
    sequence = 9000,8000,7000 //定義關門順序號,與開門對應,順序相反
    seq_timeout = 30
    command = /sbin/iptables -D INPUT -s 192.168.1.47 -p tcp --dport 22 -j ACCEPT //SSH使用完後,再將22端口“保護”起來
    tcpflags = syn
技術分享圖片

  2.2 配置/etc/default/knockd,修改START_KNOCKD=1。
    ################################################


    #
    # knockd‘s default file, for generic sys config
    #
    ################################################

    # control if we start knockd at init or not
    # 1 = start
    # anything else = don‘t start
    #
    # PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
    START_KNOCKD=1

    # command line options
    #KNOCKD_OPTS="-i eth1"

技術分享圖片

2.3 啟動knockd。
    #service knockd start

重啟knockd

#service knockd restart

2.4 添加適當的iptables規則

確保服務器可通過本地主機接口與自己對話:

#iptables -A INPUT -s 127.0.0.0/8 -j ACCEPT

本次測試中,阻塞所有進入服務器的通信:

#iptables -A INPUT -j DROP

查看添加到iptables規則:

# iptables -nvL

技術分享圖片

此時再用nmap掃描將看不到22 SSH端口:

技術分享圖片

3.測試knockd服務

1) 直接在kali測試機上使用ssh登錄服務器:

#ssh [email protected]

技術分享圖片

由上面可知,這樣是無法正常登錄的

2) 使用7000/8000/9000隊列號敲門登錄:

#for x in 7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x 192.168.1.38; done

技術分享圖片

3) 再次測試此時是否能登陸:

#ssh [email protected]

技術分享圖片

由上面可以看出,此時是成功登錄的

這時服務器上iptables規則是有變化的:

技術分享圖片

當指定的這臺測試機使用完SSH服務後,進行相應的關門操作,即可將端口再次“保護”起來

4)使用9000/8000/7000隊列號關門

for x in 9000 8000 7000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x 192.168.1.38; done

此時服務器的iptables規則恢復為:

技術分享圖片

此時將無法進行SSH登錄,必須進行開門才可以。

三、總結

在實際應用中,我們可以通過此方法使敏感服務器達到隱藏的效果,提高系統的安全性!歡迎加QQ:729608240交流

linux安全配置-將ssh服務隱藏於Internet(端口碰撞)