遇到两次,一次是公司服务器搭建好后,有人尝试ssh暴力破解,auth.log不停出现错误提示

还有买的米国vps,很荣幸地遭到来自波兰的ssh破解尝试

不得不重视ssh的安全

方法:

  1. 修改sshd_config的默认配置。
    - 禁用root远程登录

    # vi /etc/ssh/sshd_config
    PermitRootLogin no

    - 仅使用ssh 协议2

    Protocol 2

    - 禁用基于主机的身份认证

    HostbasedAuthentication no

    - 禁用用户的rhost文件

    IgnoreRhosts yes

    - 将SSH监听绑定到特定端口

    - 禁用空密码

    PermitEmptyPasswords no

    - 增加日志的详细粒度
    - LogLevel DEBUG

  2. 使用iptables控制

    -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name DEFAULT --rsource -j DROP
    -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
    60s内输错四次密码的ip禁止登录

注:关于iptables中的模块,查看:

root@silee:/proc/net/xt_recent# cat /proc/net/ip_tables_matches

state
recent
udplite
udp
tcp
icmp

其中tcp/udp/icmp这些模块在指定-p(protocol) 时候就默认使用了。

比较新鲜但又很有用的是state和recent模块

state模块:

参数有一下几种:INVALID,ESTABLISHED,RELATED,NEW

INVALID:对于不能识别的包,为INVALID,其中包括ICMP errors,running out of memory

ESTABLISHED:指已建立的连建并且已经有了双向发包

NEW:指新发起的一个连接,或者新建立的连接但两个方向都没有发包

RELATED,指新发起的一个链接,但它与已经存在的一个连接有关,比如FTP 数据传输,或者ICMP error、

recent模块包含的参数

--name 指定生成的列表文件使用的名称,不指定用DEFAULT

--set 添加源地址到列表文件,如果列表文件中已经存在了该ip,它会更新已存的条目

--rsource匹配recent列表文件中的源地址,这是默认选项

--rdest匹配recent列表中的目的地址

--rcheck 检查源地址是不是在地址列表中

--update如果匹配上地址,则更新“最新出现”的时间戳

--remove检查源地址是不是在当前的列表文件中,如果是,删除并返回true,否则,返回false

--seconds 与--rcheck或--update配合使用,增加匹配限制条件,表明仅匹配在列表中,且给定时间出现的地址

--hitcount 必须与--rcheck 或--update匹配使用,表明在列表中,且命中数大于等于给定值,也可与--seconds一起使用。

写SSH路由策略的思路

1.控制INPUT chain

2.对于INPUT链默认为ACCEPT的情况:A检查recent文件列表看最近给定1分钟内尝试次数是不是达到了4次,如果是丢弃,如果不是,匹配下一条规则,将该ip信息记录到DEFAULT文件中

iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --seconds 60 --hitcount 4 -j DROP

iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

如何维护SSH安全的更多相关文章

  1. struts2的使用入门

    虽然说Struts2现在已经被SpringMVC框架淘汰了,据说是有很多安全漏洞.但是Struts2作为一个成熟的MVC框架,还是有必要了解一下的,好歹是曾经风光一时的前辈,老祖宗的东西不能丢下,里面 ...

  2. Linux基础:Day06

    网路安全介绍背景: 早起的互联网 -- 1980年代 ,我们需要共享数据,传输数据:所传输或者共享的数据均为明文: 随着互连网发展,安全称为了国家的一种战略资源: 我们做的,比如编程,运维 -- 手工 ...

  3. 使用pycharm、跳板机连接内网服务器

    使用pycharm.跳板机连接内网服务器 接手实验室服务器后,大部分同学在GPU集群上跑程序都是直接在ssh界面上跑,这里想着通过pycharm通过跳板机来连接服务器. 总体就是实验室服务器仅限内网访 ...

  4. KingbaseES V8R6集群维护案例之---将securecmdd通讯改为ssh案例

    案例说明: 在KingbaseES V8R6的后期版本中,为了解决有的主机之间不允许root用户ssh登录的问题,使用了securecmdd作为集群部署分发和通讯的服务,有生产环境通过漏洞扫描,在88 ...

  5. Git : SSH 协议服务器

    SSH 协议用于为 Git 提供远程读写操作,是远程写操作的标准服务. SSH协议语法格式 对于拥有 shell 登录权限的用户账号,可以用下面的语法访问 Git 版本库: 语法 1 : ssh:// ...

  6. SSH面试题(struts2+Spring+hibernate)

    struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory ...

  7. 基于SSH框架的网上商城的质量属性

    常见质量属性 1.性能 性能就是一个东西有多快,通常指响应时间或延迟. 响应时间:从发出请求到收到响应所用的时间,比如用户点击网页中的超链接或桌面应用程序中的按钮 延迟:消息从A点到B点,通过你的系统 ...

  8. Ubuntu安装SSH服务器故障分析及解决办法(错误1:E:软件包 openssh-server 还没有可供安装的候选者,错误2:E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系)

    •    微博: 小样儿老师2015 Windows下做Linux开发需要SSH强大功能的支持.安装SSH的过程会出现了很多问题,看完这篇文章可以让你少走些弯路,PS:折腾一下午的成果. Ubuntu ...

  9. 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

    一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...

随机推荐

  1. FTP操作

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...

  2. asp.net身份认证

    在网上看到几篇比较好的文章很详细讲解了Form.Membership.以及Identity身份认证 Form身份认证: http://www.cnblogs.com/fish-li/archive/2 ...

  3. iOS中僵尸对象的实现方法

    什么是僵尸对象?所谓僵尸,就是过度释放的对象.在ios开发中,僵尸对象对于开发人员调试程序来说很有用.我们通常将NSZombieEnabled环境变量设置为YES来打开僵尸对象,但这会导致所有的对象都 ...

  4. Android开发教程AnimationDrawable逐帧播放动画

    下面我们一起来看篇Android开发AnimationDrawable控制逐帧播放动画实现过程,希望文章对各位朋友带不一些帮助. 当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的 ...

  5. nginx安装详解

    一.环境: 1.Linux:centos6.4(32位) 2.Gcc的编译环境.使用make命令编辑. yum install gcc-c++ 3.PCRE PCRE(Perl Compatible ...

  6. nginx url重写 rewrite实例

    本文介绍下,在nginx中实现Url重写,学习rewrite的具体用法,有需要的朋友参考下吧. 原文地址:http://www.360doc.com/content/14/0202/20/142341 ...

  7. WCF学习笔记(一)

    WCF是什么? 官方解释: Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终结点发送至 ...

  8. c#使用NPOI导出Excel及往Excel里追加记录

    最近在做一个打印发票的程序,要求保存打印记录,所以用到了NPOI往Excel里导入数据,但是遇到了一些问题没法解决,最后看了别人的Java程序后才明白.下面只是说明几个问题,而不是怎样使用NPOI 问 ...

  9. Vue.js学习 Item7 -- 条件渲染与列表渲染

    v-if 在字符串模板中,如 Handlebars,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {{#if ok}} <h1>Yes</h1 ...

  10. c# 如何获取项目的根目录

    c# 如何获取项目的根目录 编写程序的时候,经常需要用的项目根目录.自己总结如下 1.取得控制台应用程序的根目录方法     方法1.Environment.CurrentDirectory 取得或设 ...