[原創]安全系列之端口敲門服務(Port Knocking for Ubuntu 14.04 Server)


Port Knocking for Ubuntu 14.04 Server

OS:ubuntu 14.04 server

原理簡單分析:

  端口敲門服務,即:knockd服務。該服務通過動態的添加iptables規則來隱藏系統開啟的服務,使用自定義的一系列序列號來“敲門”,使系統開啟需要訪問的服務端口,才能對外訪問。不使用時,再使用自定義的序列號來“關門”,將端口關閉,不對外監聽。進一步提升了服務和系統的安全性。

 

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

2.配置knockd服務:
  1)配置/etc/knockd.conf。
    [options]
    #UseSyslog
    LogFile = /knock.log

    [openSSH]
    sequence = 7000,8000,9000 //定義敲門順序號
    seq_timeout = 30 //設置超時時間太小的話會出錯,我開始設置為5的時候不能添加以下iptables規則
    command = /sbin/iptables -D INPUT -p tcp --dport 22 -j DROP && /sbin/iptables -A INPUT -s [允許遠程的IP] -p tcp --dport 22 -j ACCEPT && /sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
    //因為ubuntu系統iptables規則默認是禁止所有的規則,如果在這里直接添加,添加的規則是在drop all規則之后的,相當於無效。所以先刪除drop all的規則再添加,然后再開啟drop all的規則就可以了。
    tcpflags = syn

    [closeSSH]
    sequence = 9000,8000,7000 //定義關門順序號
    seq_timeout = 30 //設置超時時間太小的話會出錯,我開始設置為5的時候不能添加以下iptables規則
    command = /sbin/iptables -D INPUT -s [允許遠程的IP] -p tcp --dport 22 -j ACCEPT
    tcpflags = syn

  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"

3.啟動knockd。
   #service knockd start

4.添加iptables規則,禁止ssh的包。
  #iptables -A INPUT -p tcp --dport 22 -j DROP

  #iptables-save

5.測試knockd服務。
  1)使用ssh登錄。
    #root@knockd_server_ip //不能登錄
  2)使用7000/8000/9000隊列號敲門。
    #for x in 7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x [knockd_server_ip]; done //客戶端需要安裝nmap
      這條命令和以下三條命令等效
      #nmap -p 7000
      #nmap -p 8000
      #nmap -p 9000
  3)敲門之后ssh登錄
    #ssh root@knockd_server_ip //可以登錄
  4)使用9000/8000/7000隊列號關門。
    #for x in 9000 8000 7000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x [knockd_server_ip]; done //客戶端需要安裝nmap
      這條命令和以下三條命令等效
      #nmap -p 9000
      #nmap -p 8000
      #nmap -p 7000
  5)再次ssh測試。
    #ssh root@knockd_server_ip //不能登錄

6.測試完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM