SSH访问控制全攻略

一、设置hosts.allow  hosts.deny权限

1、将需要ssh访问该服务器的主机ip统统添加到hosts.allow中。

修改/etc/hosts.allow文件
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
sshd:210.13.218.*:allow
sshd:222.77.15.34:allow

sshd:192.178.23.12,21.32.31.43,172.20.20.45:allow

2、然后修改/etc/hosts.deny

[[email protected]_node ~]# cat /etc/hosts.deny 
#
# hosts.deny    This file contains access rules which are used to
#        deny connections to network services that either use
#        the tcp_wrappers library or that have been
#        started through a tcp_wrappers-enabled xinetd.
#
#        The rules in this file can also be set up in
#        /etc/hosts.allow with a ‘deny‘ option instead.
#
#        See ‘man 5 hosts_options‘ and ‘man 5 hosts_access‘
#        for information on rule syntax.
#        See ‘man tcpd‘ for information on tcp_wrappers
#

sshd:All

当然hosts.allow  hosts.deny这两个文件不只是用于sshd服务,还可以用来设置其他服务访问权限。这些就靠各位大神自行查阅资料了。

二、使用脚本工具,防暴力破解,直接封IP

1、系统centos7

2、说明:在目录/var/log/下面有许多关于系统的日志文件,其中secure记录登入系统存取数据的文件,例如 pop3, ssh, telnet, ftp 等都会被记录,我们可以利用此文件找出不安全的登陆IP。

[[email protected]_node log]# cat secure | grep Failed
Nov 10 15:07:35 localhost sshd[29424]: Failed password for root from 172.20.22.23 port 58810 ssh2
Nov 10 15:07:42 localhost sshd[29424]: Failed password for root from 172.20.22.23 port 58810 ssh2
Nov 10 15:07:46 localhost sshd[29424]: Failed password for root from 172.20.22.23 port 58810 ssh2
Nov 10 15:07:51 localhost sshd[29424]: Failed password for root from 172.20.22.23 port 58810 ssh2
Nov 10 15:08:15 localhost sshd[29447]: Failed password for root from 172.20.22.23 port 58811 ssh2
Nov 10 15:08:19 localhost sshd[29447]: Failed password for root from 172.20.22.23 port 58811 ssh2

可以统计登录失败的IP地址,然后加入访问黑名单。

3、先把始终允许的IP填入 /etc/hosts.allow ,这很重要!比如:
sshd:19.16.18.1:allow
sshd:19.16.18.2:allow

保证这些ip始终可以ssh到服务器。

4、编写脚本/root/secure_ssh.sh

[[email protected]_node scripts]# cat secure_ssh.sh 
#!/bin/bash
cat /var/log/secure|awk ‘/Failed/{print $(NF-3)}‘|sort|uniq -c|awk ‘{print $2"="$1;}‘ > /home/scripts/secure_ssh.txt
DEFINE="5"
for i in `cat  /home/scripts/secure_ssh.txt`
do
   IP=`echo $i | awk -F= ‘{print $1}‘`
   NUM=`echo $i | awk -F= ‘{print $2}‘`
   if [ $NUM -gt $DEFINE ];then
      grep $IP /etc/hosts.deny > /dev/null
      if [ $? -gt 0 ];then
        echo "sshd:$IP:deny" >> /etc/hosts.deny
      fi
   fi
done

5、将secure_ssh.sh脚本放入cron计划任务,每1分钟执行一次。
# crontab -e
*/1 * * * *  sh /root/secure_ssh.sh

6、测试

开两个终端窗口,一个ssh连上服务器,另一个用错误的密码连接服务器几次。

很快,服务器上黑名单文件里已经有记录了:
[[email protected] ~]# $ cat /root/black.txt
13.26.21.27=3

再看看服务器上的hosts.deny
[[email protected] ~]# cat /etc/hosts.deny
sshd:13.7.3.6:deny
sshd:92.4.0.4:deny
sshd:94.10.4.2:deny
sshd:94.4.1.6:deny
sshd:11.64.11.5:deny

7、从另一个终端窗口继续“暴力”连接服务器。

看看服务器上的黑名单文件:
[[email protected] ~]# cat black.txt
13.26.21.27=6

再看看服务器上的hosts.deny
[[email protected] ~]# cat /etc/hosts.deny
sshd:13.7.3.6:deny
sshd:92.4.0.4:deny
sshd:94.10.4.2:deny
sshd:94.4.1.6:deny
sshd:11.64.11.5:deny
sshd:13.26.21.27:deny

IP 已经被加入到服务器的hosts.deny,再用正确的密码连接服务器,被拒绝:
$ ssh [email protected] -p 2333
ssh_exchange_identification: Connection closed by remote host

三、修改ssh默认端口

大多数攻击者在ssh服务器时都只是用默认端口22,如果我们把ssh端口改了。

  首先修改配置文件  vi /etc/ssh/sshd_config

  找到#Port 22,取消注释,这里是标识默认使用22端口,修改为如下:

  Port 22  

Port 50000  然后保存退出

  执行/etc/init.d/sshd restart  这样SSH端口将同时工作与22和50000上。

  现在编辑防火墙配置:vi /etc/sysconfig/iptables

  启用50000端口。  执行/etc/init.d/iptables restart

  现在请使用ssh工具连接50000端口,来测试是否成功。如果连接成功了,则再次编辑sshd_config的设置,将里边的Port22删除,即可。

  之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派人去机房,导致问题更加复杂麻烦

时间: 2024-10-07 13:33:16

SSH访问控制全攻略的相关文章

Tomcat全攻略

tomcat全攻略 1.tomcat是什么? Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它早期的名称为catalina,后来由Apache.Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat.Tomcat是应用(java)服务器,它是一个servlet容器,是Apache的扩展,但它是独立运行的.tomat应用于Java Servlet, JavaServer Pages,Java Expression Language以及其他的Javaweb开发的技术. Th

Emacs安装配置全攻略之一编译安装简单配置

/******************************************************************************************************************************************/ 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb_driver/article/details/29407717,作者:gqb666 /***************

深入理解MongoDB(一)Linux下配置MongoDB全攻略

一 MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,Mongo使用C++开发.Mongo的官方网站地址是:http://www.mongodb.org/,读者可以在此获得更详细的信息. 特点: 它的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: 面向集合存储,易存储对象类型的数据. 模式自由. 支持动态查询. 支持完全索引,包含内部对象. 支持查询.

独孤九篇之运维进阶:文件共享服务全攻略完结篇

一.了解一下 1.NFS NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样. 好处: 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用.用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上

活水渠 - 云影院之云时代看片全攻略

本文讨论了大数据时代最热门的两大应用之一的云计算(另一应用是物联网)对网络视频观看体验的具体影响,以及在观看方式上区别于传统下载方式的优点. 一.视频门户类网站 此类网站以优酷.乐视等为代表,主营传统网络视频业务,使用浏览器进行直接点击链接进行观看. 优点:电视节目丰富.观看技术手段简单.大型网站服务器稳定 缺点:看不了热门电影,精华视频要收费,免费用户要看广告 解决:浏览器辅助工具或插件解决收费和广告问题,在此基础上还诞生了视频门户网 站的入口集成网站,每天看云帆可免VIP直接观看主流视频门户

fiddler Android下https抓包全攻略

fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP是抓不到包的,需要一些特殊的配置,本文把fiddler Android下https抓包的详细配置都罗列出来,供大家参考. 一.普通https抓包设置 先对Fiddler进行设置: 勾选“CaptureHTTPS CONNECTs”,接着勾选“Decrypt HTTPS traffic”.同时,由于我

webBrowser中操作网页元素全攻略

webBrowser中操作网页元素全攻略 2012-12-20 14:21 188人阅读 评论(0) 收藏 举报 1.获取非input控件的值: webBrowser1.Document.All["控件ID"].InnerText; 或webBrowser1.Document.GetElementById("控件ID").InnerText; 或webBrowser1.Document.GetElementById("控件ID").GetAttr

Windows Socket五种I/O模型——代码全攻略(转)

Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权.这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误.但功能强大.为了解决这个问题,提出了进行I/O操作的一些I/O模型,下面介绍最常见的三种: Windows Socket五种I/O模型——代码全攻

Android屏幕适配全攻略(最权威的官方适配指导)

Android屏幕适配全攻略(最权威的官方适配指导)