一次基于ssh的sftp服务器被攻击实记

一次基于sshsftp服务器被攻击实记

前段时间12月分左右,公司需要搭建了台sftp服务器,当时想只是传下文件,何况我这还是基于SSH的SSL加密的sftp,也没有太再次安全问题,结果这个月每天晚上有人在暴力攻击,安装设置我以前的博文中有写到,这里记录下被攻击,以及防攻击的实录。(centos6.X)

  • 查看ssh登录日志
  • 分析日志
  • 防攻击措施
  • 自己写了个脚本

查看日志

ssh 登录日志一般在 /var/log/secure,有些linux版本可能再/var/log/messages,我们只要修改ssh配置文件sshd_config,在配置文件中加入SyslogFacility  authpriv,然后重启sshd 服务,以后sftp服务器就会将日志记录在/var/log/secure。

分析日志

我们来查看下服务器日志,用命令cat /var/log/secure|more

那到底有多少次暴力攻击呢?用命令 cat /var/log/secure|grep  Failed |wc -l

这次都次连接攻击,要赶紧防范罗。

防攻击措施

要防范当时首先想到的是/etc/passwd 和修改ssh配置文件,还有linux自带的 TCP Wrappers啊。

对于/etc/passwd文件,我们要做是禁止不必要账号本地登录服务器,像mysql,oracle,以及上次做sftp登录时的账号delcom03等,修改最一项为/sbin/nologin即可,这样这些账号就只能网络认证,不能登录本地服务器。

更安全一点我可以修改root为其它名字,这样不管人家怎么用root暴力破解也没用。

接下我们修改sftp服务器配置文件,Vim /etc/ssh/sshd_config修改如下图:

经过上面配置文件的修改,实现了只有 192.168.0.0和172.17.0.0两个网络可以用root账号ssh和sftp登录,不是这两网络的只能用delcom03账号sftp登录。

再来修改下TCP Wrapper这个简易防火墙,它主要由两个文件组成/etc/hosts.allow和/etc/hosts.deny。

hosts.allow相当于白名单,hosts.deny相于黑名单,当两个冲突时以白名单为准,可不是拒绝优先哦。

执行命令vim /etc/hosts.allow,先加入白名单到服务器,注意下格式为sshd:ip (进程:IP) ,如下图:

再来加入我在日志中发现在的所有非法IP到/etc/hosts.deny。执行命令vim /etc/hosts.deny即可。如下图。

自己写的脚本

由于手动查看日志然后再将非法IP加入到/etc/hosts.deny,效率低,也不具有时时性,因此用脚本是最好的方法,且错误性少了很多比手动。

脚本实现功能:

  1. 只检查当天的日志记录。
  2. 发现有账号登录成功,自动记录该IP。
  3. 当天用正确帐号输入错误密码10次或者以上时,自动禁用该非法IP。
  4. 当天用错误帐号试登录了10次或者以上时,自动禁用该非法IP。

最后,根据服务器被攻击频率,性能啊,将期加入到定时任务中去,可执行crontab –e

本文是巧妙绝情一个字一个图打出来,参考了好多资料,感谢他们的分享,基于open source分享精神,转载请注明出出。

参考资料:

鸟哥 第九章、防火墙与 NAT 服务器http://vbird.dic.ksu.edu.tw/linux_server/0250simple_firewall.php#tcp_wrappers

时间: 2024-08-08 09:29:14

一次基于ssh的sftp服务器被攻击实记的相关文章

Windows 7下 搭建 基于 ssh 的sftp 服务器

Windows  xp 下 搭建 基于  ssh 的sftp 服务器,服务器端可以用 freesshd,F-secure server等,filezilla server不可用,之前傻乎乎的用filezilla 来做服务器,找不到任何有关sftp的配置选项,推荐用freesshd,免费.简单,直观,客户端可以用一般的支持sftp的都可以,filezilla,f-secure client 等,我用freesshd和filezillazilla 搭建sftp 服务,我在内网搭建的,如果在外网发布,

ubuntu上开启ssh服务,并搭建基于ssh的git服务器

维基百科上SSH的定义如下 Secure Shell(縮寫为SSH),由IETF的網路工作小組(Network Working Group)所制定:SSH為一项建立在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境. 安装ssh服务器 安装openssh-server $sudo apt-get install openssh-server 安装成功之后,通过以下命令来确保server已经启动 $sudo start ssh 如果出现以下结果,则说明已经开始

Centos 6基于ssh搭建SFTP

使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级 不过基于Centos自带的ssh来搭建对账号管理等很不方便,是否使用,请执行考虑. #创建sftp数据目录 mkdir -p  /data/sftp #创建用户组和用户 groupadd sftp useradd -g sftp -s /bin/false  liby #创建sftp用户目录 mkdir -p  /data/sftp/liby/data #修改sftp用户目录权限,必须满足以下条件:

Git使用之搭建基于SSH的Git服务器(中篇) -- fatal protocol error bad line length character: micr

在连接Git服务器的过程中,可能出现fatal protocol error bad line length character: micr的错误.原因是Git服务器搭建时,选择错误的协议了,不要选Windows Shell,选择Linux shell and Sftp即可.

Windows下搭建基于SSH的Git服务器

Git客户端安装 客户端要同时安装在远程服务器和自己的电脑上,下载地址:http://msysgit.github.io/ 选择安装组件 :也可以默认选择; 图标组件(Addition icons) : 选择是否创建快速启动栏图标 或者 是否创建桌面快捷方式; 桌面浏览(Windows Explorer integration) : 浏览源码的方法, 单独的上下文浏览 只使用bash 或者 只用Git GUI工具; 高级的上下文浏览方法 使用git-cheetah plugin插件; 关联配置文

SSH,SCP,SFTP命令汇总

ssh远程连接总结: 1:直接连接到远程主机上面,-p22代表ssh端口 root代表远程主机的用户名@172.16.1.31代表远程主机的IP地址.(直接切到远程主机上) [[email protected] ~]# ssh -p22 [email protected][email protected]'s password: Last login: Mon Aug 14 23:04:42 2017 from m01[[email protected] ~]# 2:直接调用远程主机的命令(不会

openssh服务以及基于ssh的双机互信配置

在实现日常的维护和管理,我们经常需要远程登录到服务器,在早期,实现这个功能的协议是telnet,现在也较少的使用到,但是telnet一个致命的缺陷就是其不光是数据传输是明文的,就连用户的认证也是明文的,这在互联网是极其不安全的. 为了实现安全的管理,现在远程登录的时候使用的是都是ssh(secure shell)协议,ssl协议有v1,v2版,但是V1版本因为自身的缺陷也满足不了现在的需求.同telnet一样,ssh协议的实现也是c/s架构,client端可以通过帐号密码的方式登录到server

CentOS 7.1下SSH远程登录服务器详解-转

转自:http://www.linuxidc.com/Linux/2016-03/129204.htm 一.明文传输与加密传输 明文传输:当我们的数据包在网络上传输的时候,以数据包的原始格式进行传输,别人很容易截获我们的数据包,得到我们的信息. 加密传输:当两个主机之间传输信息或者是A主机远程控制B主机的时候,在两个主机传输数据包之前,加密过之后才通过网络传输过去.因此,就算有人截获了传输的数据包,也不知道传输的内容. 二.SSH(Secure Shell)简介 SSH是建立在传输层和应用层上面

使用 Python ssh 远程登陆服务器的最佳方案

首发自公.众.号:Python编程时光 在使用 Python 写一些脚本的时候,在某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果. 在 shell 环境中,我们是这样子做的. $ sshpass -p ${passwd} ssh -p ${port} -l ${user} -o StrictHostKeyChecking=no xx.xx.xx.xx "ls -l" 然后你会发现,你的输出有很多你并不需要,但是又不去不掉的一些信息(也许有方法,请留言交流),类似这样