zoukankan      html  css  js  c++  java
  • 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交流
  • 相关阅读:
    mysql 导入报错(ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_E)
    Docker容器开机自动启动
    linux 查看内存条详情命令
    Linux 网络性能测试工具 iperf 的安装和使用
    redis基准性能测试
    pmm的安装,这里推荐下载官方提供的脚本,直接执行这个脚本就可以完成安装
    mysqlslap压力测试时出现"Can't connect to MySQL server"
    Linux监控工具介绍系列——iostat
    提高RabbitMQ的File descriptors
    python 打包
  • 原文地址:https://www.cnblogs.com/bask/p/9159197.html
Copyright © 2011-2022 走看看