linux安全配置-将ssh服务隐藏于Internet(端口碰撞)

一:设备信息

要保护的服务器: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 bask@192.168.1.38

       

       由上面可知,这样是无法正常登录的

     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 bask@192.168.1.38

        

       由上面可以看出,此时是成功登录的

       这时服务器上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交流
posted @ 2018-06-09 22:29  bask!  阅读(1199)  评论(0编辑  收藏  举报