VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要。以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门,导致好几个有名的站点信息泄露,损失惨重。

如何知道自己的VPS账号正在遭受坏人的扫描和暴力破解呢?简单的方法就是查看日志:cat /var/log/auth.log。如何来增强VPS SSH账号的安全性呢?除了养成使用正规软件的好习惯外,还要从VPS本身来加强VPS SSH账号的安全性。

默认的SSH端口都是22,通过修改自己的VPS的端口先为扫描者增加一道端口门槛,VPS默认的账号是Root,如果我们禁用了Root,那么要攻破账号又得先暴力猜测VPS的账号,难度又增加几分。如果还不放心,我们可以直接禁用密码登录验证VPS的方式,改用密钥登录,这样安全系数是相当高了。

Linux还有一个自动统计VPS登录错误工具:Denyhosts,一旦登录VPS账号错误次数超过了Denyhosts安全设置,Denyhosts就会将该IP记录下来,同时将其放入黑名单当中,禁止该IP在某一段时间内继续访问VPS,通过Denyhosts可以实现自动封锁恶意IP。

VPS主机和网站安全优化是一个持久的问题,没有一劳永逸的“安全设置”,道高一尺,魔高一丈,我们只有不断地发现问题,才能最大限度地保护自己网站和VPS安全

增强VPS SSH账号安全:改端口,禁止Root,密钥登录,Denyhosts防暴力攻击

一、增强VPS SSH账号安全方法一:修改SSH登录端口

1、用下面命令进入配置文件。


vi /etc/ssh/sshd_config

2、找到#port 22,将前面的#去掉,然后修改端口 port 123(自己设定)。

3、然后重启ssh服务。


/etc/init.d/ssh restart

二、增强VPS SSH账号安全方法二:使用密钥登录SSH

1、SSH登录方式有账号+密码和密钥两种形式,为了阻止暴力破解VPS的账号和密码,我们可以放弃密码验证的方式,改用密钥文件验证。

2、执行以下命令在VPS上生成密钥文件。


ssh-keygen -t rsa

3、生成密钥时会询问你密钥保存的位置,默认即可,还有你可以为你的密钥还设置一个密码,默认为空。

4、密钥生成后,进入密钥存放的目录中,执行以下命令,将公钥生成一个新的文件。


cat id_rsa.pub >> authorized_keys

5、将id-rsa这个私钥文件下载到本地,打开PuTTYGen软件,执行Conversions->Import Key,导入这个私钥文件。

6、Putty使用密钥登录SSH方法:如果你要使用Putty,在PuTTYGen中选择Save private key,这时会在本地生成一个PPK文件。

7、然后在Putty中填入服务器名,在SSH授权方式中选择密钥,导入刚刚保存的PPK文件。

8、使用Xshell通过密钥登录VPS方法:如果要使用Xshell,请在PuTTYGen的Conversions中选择Export Open#SSH Key,设置一个名称保存。

9、然后启用Xshell,填入服务器IP,在用户身份验证中选择“Public Key”,然后浏览导入刚刚你保存的Key文件。

10、导入了Key后,你就可以直接打开登录VPS了,不需要输入密码,即可进入VPS。

11、有了密钥登录VPS,我们就可以禁止用密码登录这种验证方式了,还是编辑配置:vim /etc/ssh/sshd_config,

添加一行:PasswordAuthentication no,如果有了这一行,请把yes改成no,保存,重启SSH服务,生效。

ChallengeResponseAuthentication no
UsePam no

三、增强VPS SSH账号安全方法三:禁用Root账号

1、如果你已经设置SSH密钥登录的方式,就可以禁用Root账号了,或者你可以新建一个VPS账号。执行以下命令:


useradd freehao123 #添加用户名
passwd freehao123 #为freehao123用户名设置密码

2、然后编辑进入配置:vim /etc/ssh/sshd_config,找到PermitRootLogin yes,然后后面的Yes改no,如果没有这一行命令,直接将:PermitRootLogin no 加进去。

3、保存后,重启SSH服务,生效。

四、增强VPS SSH账号安全方法四:Denyhosts防暴力攻击

1、Linux各平台现在基本上都可以直接安装Denyhosts了,执行以下命令:


Debian/Ubuntu:
sudo apt-get install denyhosts RedHat/CentOS
yum install denyhosts Archlinux
yaourt denyhosts Gentoo
emerge -av denyhosts

2、安装好了Denyhosts,默认的配置基本上就可以防御一定的暴力攻击了,/etc/hosts.deny 文件里保存了被屏蔽的记录。

3、如果你要自定义Denyhosts的相关配置,执行:vim /etc/denyhosts.conf,以下是相关参数的说明:



SECURE_LOG = /var/log/auth.log #ssh 日志文件,它是根据这个文件来判断的。
HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件
PURGE_DENY = #过多久后清除已经禁止的,空表示永远不解禁
BLOCK_SERVICE = sshd #禁止的服务名,如还要添加其他服务,只需添加逗号跟上相应的服务即可
DENY_THRESHOLD_INVALID = 5 #允许无效用户失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 1 #允许root登陆失败的次数
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts #运行目录
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES #是否进行域名反解析
LOCK_FILE = /var/run/denyhosts.pid #程序的进程ID
ADMIN_EMAIL = root@localhost #管理员邮件地址,它会给管理员发邮件
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d #用户的登录失败计数会在多久以后重置为0,(h表示小时,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
RESET_ON_SUCCESS = yes #如果一个ip登陆成功后,失败的登陆计数是否重置为0

五、增强VPS SSH账号小结

1、上面讲到了四个方法来增强VPS SSH账号的安全性,那么如何得知自己的VPS曾经或正在遭受账号暴力破解登录呢?执行以下命令,查询出来的结果中包含了“ip地址=数量”就是攻击者信息。


cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'

2、目前在Putty官网上没有看到中文版本的Putty,所以网上流行的一些汉化版本的Putty很有可能被植入了后门,大家在使用时一定要特别留心。Xshell官网直接提供了多国语言,包括中文在内。

增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击的更多相关文章

  1. linux使用秘钥登录(禁用root密码登录)

    目的:为了巩固线上外网服务器的安全,避免黑客攻击植入木马,初步决定禁用root密码登录(安全强度低),统一使用秘钥登录(4096位长度,安全性较高) 具体操作如下: 一.生成ssh秘钥: ssh-ke ...

  2. CentOS启用sudo,禁用root远程登录

    CentOS默认不启用sudo,且可以直接用超级管理员身份登录服务器.ubuntu这方面做得比较好,为了安全,减小误操作带来的损失,还是推荐启用sudo. 1.添加sudo用户 执行 visudo 命 ...

  3. java:Linux(简单命令,远程ssh使用hostname访问,.免密钥登录配置)

    1.临时关闭防火墙: service  iptables  stop 临时开启防火墙: service  iptables  start 查看防火墙状态: service  iptables  sta ...

  4. centos修改SSH端口并禁用root远程登录

    1.使用 root 用户执行以下步骤:只在 CentOS 6.5 下验证. 2.先查看下服务器端口号范围: # sysctl -a|grep ip_local_port_range 3.修改端口 vi ...

  5. Linux配置使用SSH Key登录并禁用root密码登录(替换同理)

    Linux系统大多说都支持OpenSSH,生成公钥.私钥的最好用ssh-keygen命令,如果用putty自带的PUTTYGEN.EXE生成会不兼容OpenSSH,从而会导致登录时出现server r ...

  6. Linux配置使用SSH Key登录并禁用root密码登录

    Linux系统大多数都支持OpenSSH,生成公钥.私钥的最好用ssh-keygen命令,如果用putty自带的PUTTYGEN.EXE生成会不兼容OpenSSH,从而会导致登录时出现server r ...

  7. Linux生成ssh密钥免密登录,允许/禁止密码登录,允许/禁止root远程登录,更改ssh端口

    进入想要使用密钥登录的用户家目录 cd 或 cd ~ 执行密钥创建命令,不行可能需要下载openssh-server与openssh-client ssh-keygen -t rsa -P " ...

  8. Linux禁用root用户

    在创建各种云主机的时候,云服务商给的都是root用户,这很方便,但是有某些时候会造成一些困扰,日后在服务器上启动各种服务后,仅仅拥有root权限的用户才能访问更改这些服务,这样会造成一些不必要的困扰, ...

  9. 禁用root直接远程登录,使用普通账号登录后再切换root

    1.创建一个普通用户 #useradd test 2.给test设置密码 #passwd test 3.禁用root远程登录 #vim /etc/ssh/sshd_config #PermitRoot ...

随机推荐

  1. JS和Android交互

    //本地webview写法 webview = (WebView) findViewById(R.id.webview); webview.loadUrl("http://192.168.1 ...

  2. 向内存0:200~0:23f依次传送数据0~3fh

    只能用字节为单位传送了. assume cs:sad sad segment start: mov ax, 20h mov ds, ax mov cx, 40h s: mov [bx], bl inc ...

  3. ObjectOutputStream序列化问题

    ObjectOutputStream序列化对象传输时,为了节省开销,会自动比较以前序列化过的对象,如果一致(指内存,不比较内容),则自动引用以前用过的对象,这就造成了传输到对方的对象总是第一次序列化的 ...

  4. 【jq】c#零基础学习之路(2)循环和分支

    一.循环语句 1).do { //循环体,先运行一次. } while (true); 2). while (true) { //循环体 } 3). for (int i = 0; i < le ...

  5. 【OPENGL】第三篇 着色器基础(二)

    在这一小节,主要学习GLSL的基本数据类型以及控制结构.GLSL具备了C++和Java的很多特性,我们会先了解所有着色阶段共有的特性,再了解各个着色器的专属特性. 1.着色器的基本结构 一个着色器程序 ...

  6. vim下打造python编辑器

    在前面文章中介绍的关于vim基础插件之上加上一款专门为读写python程序的插件-Python-mode. 顾名思义,就是让vim在python模式下运行.这里介绍这款插件的功能以及如何使用. 本文主 ...

  7. 利用.net的内部机制在asp.net中实现身份验证

    知识点: 在ASP.NET中,任何页面都是继承于System.Web.UI.Page,他提供了Response,Request,Session,Application的操作.在使用Visual Stu ...

  8. tomcat war部署根目录下

    一个很取巧的办法,步骤如下: 1. 删除webapp下所有文件 cd ${TOMAT_HOME}/webapps && rm -rf * 2. copy待部署war到webapps目录 ...

  9. CenOS 7 安装wordpress

    1:Centos安装 php和html yum install httpd -y yum install php -y 2:将 wordpress 拖到目录  /var/www/html 3:浏览器访 ...

  10. Temporary-Post-Used-For-Style-Detection-Title-16761156

    Temporary-Post-Used-For-Style-Detection-Content-16761156 =-=-=-=-=Powered by Blogilo