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.测试完成。

[原创]安全系列之端口敲门服务(Port Knocking for Ubuntu 14.04 Server)的更多相关文章

  1. 使用ownCloud搭建你的个人云服务(ubuntu 14.04 server)(ownCloud对文件不切片,Seafile对文件切片),owncloud没有存储的功能 只能同步 本地删除了服务器也会删除

    ownCloud是什么 ownCloud是一个自由且开源的个人云存储解决方案(类似百度网盘或者Dropbox),包括两个部分:服务器和客户端. ownCloud在客户端可通过网页界面,或者安装专用的客 ...

  2. 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端

    在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Frame ...

  3. 入门系列之在Ubuntu 14.04上备份,还原和迁移MongoDB数据库

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 MongoDB是最受欢迎的NoSQL数据库引擎之一.它以可扩展,强大,可靠和易于使用而闻名.在本文中,我们 ...

  4. 在Ubuntu 14.04 上安装 FTP 服务

    1. sudo apt-get update 2. sudo apt-get install vsftpd 3. adduser sammy Assign a password when prompt ...

  5. ubuntu 14.04 下 安装samba 及SSH 服务端的方法

    之前说了 FTP服务器的搭建:http://www.cnblogs.com/bcsflilong/p/4200139.html 今天说一下samba 和ssh服务器的搭建. 先说samba 吧. 在u ...

  6. Ubuntu 14.04 查看指定端口的服务

    查看已经连接的服务端口(ESTABLISHED) netstat -a 查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap 查看指定端口,可以结合grep命令: net ...

  7. IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙

    IPTables基本命令 在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解. 首先要说明的是IPTables命令必需以root权限运行,这意味 ...

  8. Ubuntu 14.04 编写service 服务

    有时我们需要将特定操作封装成服务,通过服务启动停止,例如nginx的启动停止,service nginx start 或者service nginx stop 下面我们将编写一个demo cd /et ...

  9. 启动samba服务--ubuntu 14.04

    1. 修改配置文件 /etc/samba/smb.conf文件末尾添加 [homes] comment = Home Directories browseable = yes read only = ...

随机推荐

  1. java基础之类与对象1

    从学习java到现在估计都有一年了,然而在这一年里基本处于三天打鱼五天晒网,感觉自己再不做点改变就是个废人了..T - T. 趁着重新复习java的时间,也顺便用博客来记录学习的过程.好了,废话不说了 ...

  2. android布局中画线的方法

    1.自定义View画线 http://fariytale.iteye.com/blog/1264225 下面介绍几种简单的方法 2.textView和View画直线 <TextView andr ...

  3. js继承之原型链方式实现

    温故而知新: 在之前的文章已经重点了解了原型对象,今天就理一理这个原型对象在原型链式的继承中的使用 function a(x,y){this.x=x;this.y=y;} //定义一个函数,当构造函数 ...

  4. mysql性能优化配置总结

    看了一些优化mysql运维的一些书籍,在此记录总结下:进入mysql客户端输入以下sql:1.连接设置 show variables like '%max_connection%'; show sta ...

  5. Azure IoT 技术研究系列2-起步示例之设备注册到Azure IoT Hub

    上篇博文中,我们主要介绍了Azure IoT Hub的基本概念.架构.特性: Azure IoT 技术研究系列1-入门篇 本文中,我们继续深入研究,做一个起步示例程序:模拟设备注册到Azure IoT ...

  6. AFNetworking 用法详解

    之前一直使用ASIHttpRequest 做网络请求 ,后来新公司用AFNetWorking ,经过一段时间学习总结一下二者的优缺点: 1.AFNetWorking的优缺点 优点: 1.维护和使用者比 ...

  7. HDU 2846 Trie查询

    给出若干模式串,再给出若干询问串,求每个询问串作为多少个模式串的子串出现. 如果一个串是另一个串的子串,则一定是另一个串某个前缀的后缀或者某个后缀的前缀.根据字典树的性质,将模式串的每一个后缀插入字典 ...

  8. JAVAEE规范基础知识

    JavaEE规范基础知识 本人博客文章网址:https://www.peretang.com/basic-knowledge-of-javaee-standard/ JavaEE简介 JavaEE,J ...

  9. NodeJS 阻塞/非阻塞

    阻塞实例 var fs = require('fs'); var data = fs.readFileSync('test.txt') console.log(data.toString()); co ...

  10. web.xml 中配置了error-page但不起作用问题

    问题: 在web.xml 中配置了 error-page,但是好像不起作用,就是跳转不到指定的页面. 配置信息如下: <!-- 400错误 --> <error-page> & ...