• 如何维护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 

  • 相关阅读:
    (转)AspNetPager分页控件的使用方法 (1)
    对GridView控件的操作:GridView控件的HyperLinkField超链接数据行
    JS实现在Repeater控件中创建可隐藏区域的代码
    Asp.net弹出窗口大全
    AspNetPager分页控件使用方法 (2)
    解决mapXtreme地图更新闪屏
    绝对路径与相对路径的区别【2】release和debug这两种情况下对本地文件操作不一致的问题
    今天开始添加点文章
    第一篇博客~~
    使用 PIVOT 和 UNPIVOT实现行转列,列转行
  • 原文地址:https://www.cnblogs.com/silenceli/p/3429957.html
Copyright © 2020-2023  润新知