本文发自 http://www.binss.me/blog/measures-prevent-ssh-enumeration-attrack-to-vps/,转载请注明出处。

最近在Do上弄了台VPS,由于是第一次弄VPS,所以非常担心什么被黑啊什么被抓鸡什么的,于是跑去问师兄,师兄说放心啦没人会这样做的我用了一年多了还好好的云云,于是我登进去后架了个梯子后就洗洗睡了。结果第二天起来发现端口被5个不同IP各扫了几百次。

我靠,人与人之间的信任呢?也就那么几个小时就那么多人扫我端口,吓的我赶紧还原了系统。然后开始GOOGLE如何防止SSH暴力登录,经过一天的学习和配置,查看日志,感觉好多了。在此分享下过程。

  1. 修改SSH默认端口

    vi /etc/ssh/sshd_config

    找到port这一行,将后面的数字修改为非22非重要服务占用端口的数字。

    这样可以加大SSH端口扫描的难度,不会被一扫一个准。

  2. 禁止root登录

    root账户常常是他们重点扫描的目标,一来用户名已确定而且肯定存在,而来权限大用的爽,所以我们最好禁止root登录。

    在此之前,我们先要创建一个新用户binsite用于以后登录。

    # 创建用户组binsite
    addgroup binsite
    # 创建用户binsite,属于binsite用户组,且创建用户目录/home/binsite
    useradd -d /home/binsite -m -s /bin/bash -g binsite -G sudo,adm,root binsite      
    # 修改密码
    passwd binsite

    然后就可以禁止root登录了。

    vi /etc/ssh/sshd_config

    修改PermitRootLogin为no。

  3. 使用SSH Key SSH Key分为公钥和私钥,把公钥放在VPS上,只有当你持有对应的私钥时才能通过SSH登录到VPS上。

    首先在本机生成SSH Key:

    ssh-keygen -t rsa

    按enter后询问你时候设置passphrase(类始于二次验证密码),设定后用SSH Key登录时必须输入该密码验证才能登录。

    然后会在~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)。

    然后把公钥部署到VPS上:

    cat ~/.ssh/id_rsa.pub | ssh [your.username]@[your.ip.address] "cat >> ~/.ssh/authorized_keys"

    注:如果部署到非root用户下,这里可能会失败。像我部署的时候就一直permisson deny。最后是直接在VPS上建立~/.ssh/authorized_keys文件并把本地id_rsa.pub内容粘帖进去,然后修改.ssh目录权限为700,authorized_keys权限为600。

    部署后再次登录,会默认使用SSH Key登录,然后我们就可以禁用密码登录:

    vi /etc/ssh/sshd_config

    修改PasswordAuthentication为no。

  4. 终极大招 安装denyhosts或fail2ban。他们可以ban掉多次登录失败的ip等等等等,非常强大。

    由于VPS的系统选择了ubuntu 14.04,用apt-get已经找不到denyhosts,所以选择了fail2ban。

    安装过程:

    sudo apt-get update
    sudo apt-get install fail2ban

    安装完后,复制配置文件:

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

    可以根据需要修改配置文件。

    fail2ban最大的好处就是可以自己写配置写规则,然后想怎么ban就怎么ban。由于我是菜鸟,就直接使用了默认配置,感兴趣的童鞋请查看官方文档:

    http://www.fail2ban.org/wiki/index.php/Main_Page

    哭了,写这篇文章写了一个下午结果不小心关掉网页全没了。现在你看到的就是又花了一个小时码出来的精简版本。T T