1、只使用ssh v2  //etc/ssh/sshd_cofig

Protocol 2

ListenAddress x.x.x.x --如果你的环境有VPN通道,建议sshd监听所在的内网地址;

2、限制用户访问(用户与用户之间使用空格隔开,可以使用?*通配符)

AllowUsers user01 root --只允许那些用户使用ssh登录

DenyUsers user02 user03 --值拒绝那些用户访问,两种方法选其一

3、配置空闲超时自动断开  //etc/profile

使用shell变量来完成直接简单:TMOUT

4、禁止管理员直接使用ssh登录

PermitRootLogin no --使用普通用户登录用,调用su/sudo来提权

5、更改默认的监听端口和监听IP

Port 5568

ListenAddress 0.0.0.0 --按照需求可设置监听在服务器私有地址上,如果监听在公网的地址上则需要更改端口、不能直接使用22端口;

6、给账户设置强壮的密码

# rpm -ivh expect-5.43.0-5.1.i386.rpm 
# mkpasswd -l 128 -d 8 -C 15 -s 10
omlrjcU3fxivSqtotyu'nk6tR(zhp1Jcel_gxjnqedErpx_1g4U]amtqst3igWXb-f2eqqqJohfjuzccdC.coMok7Abvtjfzej&vfvfTblgBmWmijqh.w&acegjrqwqq
-l 密码长度
-d 多少个数字
-C 大写字母个数
-s 特殊符号的个数

7、使用密钥对验证

#ssh-keygen -t rsa/

#ssh-copy-id /$HOME/.ssh/id.rsa.pub username@remotehost

8、使用iptables控制

在每一分钟内只允许有三个新的连接去连接SSH服务器,并发连接是三个,如果超过此值将被拒绝

#iptables -A input -p tcp --dport 22 -m state --state NEW -m limit --limit  3/min --limit-burst 3 ACCEPT

#iptables -A input -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT

#iptables -A input  -p tcp --dport 22 -j DROP

#iptacles -A output -o eth0 -p tcp --sport 22 -m state --state  RSTABLISHED  -j ACCPET

9.减少密码错误尝试次数 (/etc/ssh/sshd_config)

MaxAuthTries=3

当SSH登录失败次数超过3次就使用tcpwrappers来拒绝。

使用脚本实现对sshd暴力破解的IP进行拦截,把连续3次以上通过ssh登录系统失败的IP放到/etc/hosts.deny 。 文件中的IP不能重复。

脚本要求每10分钟执行一次

#!/bin/bash
export bad_ip=$(lastb -i -a | grep ssh | awk '{print $NF}'|sort |uniq -c |awk '$1>3 {print $2}')

for i in $bad_ip
do
echo "sshd: $i" >> /etc/hosts.deny
done

echo "" > /var/log/btmp

#vim /etc/crontab

10 * * * * * /test/shell/ssh.sh

ssh 安全配置的更多相关文章

  1. 我的Python成长之路---GitHub使用克隆GitHub(SSH key配置)

    六.克隆GitHub仓库 1.创建仓库目录,目录位置没有要求,比如D:\learngit. 2.配置ssh(如果不配置会每次都输入用户名和密码) 使用TortoiseGit生成ssh-key:开始菜单 ...

  2. Git SSH公钥配置

    https://www.cnblogs.com/smuxiaolei/p/7484678.html https://blog.csdn.net/weixin_42063071/article/deta ...

  3. 三台机器之间root用户ssh互信配置

    三台机器之间root用户ssh互信配置 (1)在所有的主机上执行:ssh-keygen -t rsa # 在每台都需要操作,一路回车 (2)将所有机子上公钥(id_rsa.pub)导到一个主机的/ro ...

  4. 三台机器之间ssh互信配置

    三台机器之间ssh互信配置 环境介绍:192.168.65.128    my1-222192.168.65.129  my2-223192.168.65.130    web224 # 步骤一:# ...

  5. 菜鸟学SSH(十七)——基于注解的SSH将配置精简到极致

    很早之前就想写一篇关于SSH整合的博客了,但是一直觉得使用SSH的时候那么多的配置文件,严重破坏了我们代码整体性,比如你要看两个实体的关系还得对照*.hbm.xml文件,要屡清一个Action可能需要 ...

  6. 【ssh服务配置】

    根据项目需求,搭建好拓扑图如下: 第一种验证方式:给予密码和用户名登录 Ssh server配置: 首先在服务器上创建一个rsa加密算法的秘钥对: 对ssh服务进行开启: 创建用户的虚拟终端登录界面: ...

  7. java教程(五)SSH框架-配置

    前言:从这篇博客開始我将继续讲述Java教程:SSH篇.主要内容环绕SSH框架分析与搭建,今天先简介一下SSH的配置. SSH配置顺序是: spring-->hibernate-->str ...

  8. Kerberos+SSH安装配置使用教程

    一.背景说明 最早听说KDC和Kerberos应该是大三的<应用密码学>,当时感觉这套对称密钥分发机制比非对称密钥的PKI分发机制要好理解.但几年下来由于现实中使用SSL的场景比较比(主要 ...

  9. GitHub的SSH key配置以及常用的git命令介绍

    一. GitHub的SSH key配置 (以windows为例,Mac iOS系统类似) SSH Key 是一种方法来确定受信任的计算机,从而实现免密码登录.Git是分布式的代码管理工具,远程的代码管 ...

  10. Mac多SSH Key配置

    多SSH key配置 工作的时候碰到SSH配置的问题,就是公司用的是gittea的仓库,而本人的github平常也要使用,这个时候就需要配置不同的SSH key了.将同一个公钥分配配置给github和 ...

随机推荐

  1. 【转】vnc centos

    原文:http://www.cnblogs.com/niocai/archive/2011/11/02/2233332.html 我的CentOS版本是6.0,下述方法在i386和x86_64中均适用 ...

  2. js特效第九天

    offset家族(获取元素尺寸) offsetWidth得到对象的宽度,自己的,与他人无关 offsetWidth = width+border+padding,不包含margin offsetHei ...

  3. 对单片机的modbus RTU的详细解释(转载)

    Modbus 一个工业上常用的通讯协议.一种通讯约定.Modbus协议包括RTU.ASCII.TCP.其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现.虽然RTU比较简单,但是看协议资料 ...

  4. 派遣例程与IRP结构

    提到派遣例程,必须理解IRP(I/O Request Package),即"输入/输出请求包"这个重要数据结构的概念.Ring3通过DeviceIoControl等函数向驱动发出I ...

  5. NOIP2005 过河

    过河 (river.pas/c/cpp) [问题描述] 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正 ...

  6. Mysql的函数使用方法

    今天有点临时需求要计算一张表的结果,不想写代码,想到了mysql的自定义函数.碰到了很多问题,为了方便一下使用,在此记录一下. 需求:一张表中,有比分,需要查询出比赛id和比赛结果. 分析:     ...

  7. 问题-Delphi 中使用TStringList后,报out of memory 的解决方法

    问题现象: 请一段开发个项目 程序调试全部通过但测试时出现个问题 “out of memory” 在长时间运行时!后来终于解决 :很简单其实就是object.create时对象没有释放. 代码如下: ...

  8. Umbraco中的ModelBuilder

    Umbraco中的ModelBuilder有以下几种形式 Pure Live models Dll models LiveDll models AppData models LiveAppData m ...

  9. C++中实现从std::string类型到bool型的转换

    利用输入字符串流:std::istringstream bool b; std::string s = "true"; std::istringstream(s) >> ...

  10. other

    1.http://handlebarsjs.com/ 2.grunt