zoukankan      html  css  js  c++  java
  • 如何维护SSH安全

    遇到两次,一次是公司服务器搭建好后,有人尝试ssh暴力破解,auth.log不停出现错误提示

    还有买的米国vps,很荣幸地遭到来自波兰的ssh破解尝试

    不得不重视ssh的安全

    方法:

    1. 修改sshd_config的默认配置。
      - 禁用root远程登录
      # vi /etc/ssh/sshd_config
      PermitRootLogin no
      - 仅使用ssh 协议2

      Protocol 2

      - 禁用基于主机的身份认证

      HostbasedAuthentication no

      - 禁用用户的rhost文件

      IgnoreRhosts yes

      - 将SSH监听绑定到特定端口

      - 禁用空密码

      PermitEmptyPasswords no

      - 增加日志的详细粒度
      - LogLevel DEBUG
      
      
    2. 使用iptables控制

      -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name DEFAULT --rsource -j DROP
      -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
      60s内输错四次密码的ip禁止登录

    注:关于iptables中的模块,查看:

    root@silee:/proc/net/xt_recent# cat /proc/net/ip_tables_matches 

    state
    recent
    udplite
    udp
    tcp
    icmp

    其中tcp/udp/icmp这些模块在指定-p(protocol) 时候就默认使用了。

    比较新鲜但又很有用的是state和recent模块

    state模块:

    参数有一下几种:INVALID,ESTABLISHED,RELATED,NEW

    INVALID:对于不能识别的包,为INVALID,其中包括ICMP errors,running out of memory

    ESTABLISHED:指已建立的连建并且已经有了双向发包

    NEW:指新发起的一个连接,或者新建立的连接但两个方向都没有发包

    RELATED,指新发起的一个链接,但它与已经存在的一个连接有关,比如FTP 数据传输,或者ICMP error、

    recent模块包含的参数

    --name 指定生成的列表文件使用的名称,不指定用DEFAULT

    --set 添加源地址到列表文件,如果列表文件中已经存在了该ip,它会更新已存的条目

    --rsource匹配recent列表文件中的源地址,这是默认选项

    --rdest匹配recent列表中的目的地址

    --rcheck 检查源地址是不是在地址列表中

    --update如果匹配上地址,则更新“最新出现”的时间戳

    --remove检查源地址是不是在当前的列表文件中,如果是,删除并返回true,否则,返回false

    --seconds 与--rcheck或--update配合使用,增加匹配限制条件,表明仅匹配在列表中,且给定时间出现的地址

    --hitcount 必须与--rcheck 或--update匹配使用,表明在列表中,且命中数大于等于给定值,也可与--seconds一起使用。

    写SSH路由策略的思路

    1.控制INPUT chain

    2.对于INPUT链默认为ACCEPT的情况:A检查recent文件列表看最近给定1分钟内尝试次数是不是达到了4次,如果是丢弃,如果不是,匹配下一条规则,将该ip信息记录到DEFAULT文件中

    iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --seconds 60 --hitcount 4 -j DROP

    iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set 

  • 相关阅读:
    原生ajax书写
    java 中的instanceof
    Leetcode-Python3
    快速读入挂
    HDU 6044 Limited Permutation(2017多校)【计数 快速读入挂 线性逆元】
    HDU 6015 Colorful Tree(2017多校)
    HDU 6034 【贪心】
    POJ 3415 Common Substrings 【长度不小于 K 的公共子串的个数】
    POJ Football Game 【NIMK博弈 && Bash 博弈】
    2018
  • 原文地址:https://www.cnblogs.com/silenceli/p/3429957.html
Copyright © 2011-2022 走看看