V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hzqim
V2EX  ›  问与答

SSH 安全登陆疑问

  •  
  •   hzqim · 2014-11-05 21:56:50 +08:00 via Android · 3471 次点击
    这是一个创建于 3674 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看了主机的记录,还真是有不少暴力破解的痕迹,准备改端口,禁止ROOT用户登陆,采用密匙验证,三管齐下。

    爬了一些文章,还是有一些疑问,特向各位请教,请不吝赐教。

    1、为了方便,多台服务器只想保存一个私匙,那么密匙对能否在不同的主机重复使用,安全性会降低?
    2、普通用户登陆后通过su切换到ROOT账号进行系统管理?

    谢谢解答!
    27 条回复    2014-11-06 22:47:54 +08:00
    likuku
        1
    likuku  
       2014-11-05 22:17:06 +08:00   ❤️ 1
    改端口没必要,禁止root登录,这最起码,最基本的吧,默认sshd_config 就这配置吧。
    禁止密码认证,仅许可密钥认证,禁用PAM。

    1.可以,密钥对可以在不同主机重复用,不过,建议使用 ForwardAgent,这样只需要最初发起登录的机器上有密钥即可。
    2.请使用 sudo 这个软件(这年头了,竟然有人不知道sudo),如此只有被授权的用户才可以直接使用自身帐密通过sudo su 来获得root权限 + 禁止非root用户使用 su
    hzqim
        2
    hzqim  
    OP
       2014-11-05 22:42:07 +08:00 via Android
    @likuku PAM是什么用途,第一次听到。
    普通用户默认就可以su root吧,怎么禁止?
    babytomas
        3
    babytomas  
       2014-11-05 22:42:51 +08:00   ❤️ 1
    1、和安全性降低没关系
    2、sudo -i
    huawuya
        4
    huawuya  
       2014-11-05 22:54:39 +08:00   ❤️ 1
    没有改端口和禁止root,装了fail2ban来处理的,密码长一些,复杂一些,应该也够用了
    hzqim
        5
    hzqim  
    OP
       2014-11-05 23:02:08 +08:00 via Android
    @babytomas
    @huawuya
    @likuku
    谢谢解答!
    Showfom
        6
    Showfom  
       2014-11-05 23:04:06 +08:00 via iPhone   ❤️ 1
    @likuku 默认 sshd 配置就支持 root 登陆啊 我装过那么多台服务器了。。。
    billlee
        7
    billlee  
       2014-11-05 23:06:18 +08:00   ❤️ 1
    密钥对的使用原则是一个客户端生成一对密钥,和服务器数量没关。原因是上传到服务器上的公钥是可以公开的,但私钥要严格控制。
    ryd994
        8
    ryd994  
       2014-11-06 07:57:35 +08:00 via Android   ❤️ 1
    只要私钥不丢,一切好说。
    likuku
        9
    likuku  
       2014-11-06 08:32:44 +08:00 via iPhone   ❤️ 1
    @Showfom freebsd的sshd默认是禁止root登陆。gentoo和debian貌似也是。
    SharkIng
        10
    SharkIng  
       2014-11-06 08:46:53 +08:00   ❤️ 1
    @Showfom
    @likuku

    Ubuntu下默认不是禁止的,Debian好像也不是,必须要设置一下才行,在sshd里面修改root登录为 No

    正常系统都不是直接禁止的吧?FreeBSD没用过不知道


    @hzqim
    用sudo就可以了,没不要su

    另外不是很建议很多服务器用一个密钥,虽然方便但是也的确存在某种让人不舒服的隐患
    Showfom
        11
    Showfom  
       2014-11-06 08:50:30 +08:00 via iPhone   ❤️ 1
    @likuku CentOS 这货直接就让你设置 root 密码了
    hzqim
        12
    hzqim  
    OP
       2014-11-06 09:19:04 +08:00
    @likuku 在sshd_config 设置UsePAM no好像没有什么差别啊,开启密码登录还是可以验证登陆,所以问问兄台,在这里设置yes和no有什么区别?
    likuku
        13
    likuku  
       2014-11-06 09:39:01 +08:00   ❤️ 1
    @hzqim 假若只是禁止了 password 认证,PAM 开启的话,一样可以用帐密登录,虽然背后不是用帐密,而是用 interActiveKeyBoard 认证...。
    hzqim
        14
    hzqim  
    OP
       2014-11-06 09:40:05 +08:00
    @SharkIng 如果使用普通用户sudo为root,是否要先将普通用户添加到soduers里?
    “没不要 su”是“没必要 su”吗?su很方便啊,难道有什么副作用?

    谢谢。
    likuku
        15
    likuku  
       2014-11-06 09:41:16 +08:00   ❤️ 1
    @Showfom 额,极少使用RH系的...忘记了。

    @SharkIng 抱歉,我记错,刚查了下自己的 xubuntu,的确默认是许可root登录,只是禁止 空密码登录。


    @hzqim 还得禁止空密码登录
    hzqim
        16
    hzqim  
    OP
       2014-11-06 09:44:42 +08:00
    @ryd994 在 ssh-keygen -t rsa 生成密匙对的步骤中不输入密码,登陆的时候就不用输入密码了,很方便,就是这样会不会降低安全性?
    如果设置了密码,该密码是在本地对私匙进行验证还是传输到服务器和公匙进行验证还是密匙对一起验证?
    BOYPT
        17
    BOYPT  
       2014-11-06 10:02:17 +08:00   ❤️ 1
    @hzqim 使用sudo,就不需要告知root账户密码。

    密钥密码仅为解锁密钥,和传输无关。
    chenshaoju
        18
    chenshaoju  
       2014-11-06 10:08:07 +08:00   ❤️ 1
    @SharkIng Debian默认是不禁止的,我自己的笔记本和好几台Debian默认都允许root通过SSH登录。
    hzqim
        19
    hzqim  
    OP
       2014-11-06 10:49:36 +08:00
    @BOYPT 也对,不过我都是自己一人管理个 VPS,所有就用 su 了。
    msg7086
        20
    msg7086  
       2014-11-06 13:07:00 +08:00   ❤️ 1
    @chenshaoju Debian 8 的 openssh 包里已经默认只允许证书登录 root 了。

    @hzqim su 太容易误操作了。
    统一使用 sudo 的话,只会因为权限不够而无法执行,而不会因为一个疏忽而超权限执行。

    而且用 sudo 的话,只有有 sudo 权限的人才能提权。而 su 的话每次都要打 root 密码,不方便放权。

    比如你写的某个脚本,有一小部分命令需要提权。只需要把这些指令写进 sudoer 里,设定好 NOPASSWD ,然后用 sudo 来执行这些指令,既可以保证提权,又可以防止提权执行任意指令。比如只能 sudo ls 却不能 sudo reboot 。
    chenshaoju
        21
    chenshaoju  
       2014-11-06 13:27:23 +08:00   ❤️ 1
    @msg7086 我还没用Debian 8,不予置评……目前的Debian 7是允许的。
    hzqim
        22
    hzqim  
    OP
       2014-11-06 15:18:50 +08:00 via Android
    @msg7086 谢谢解答,只是sudo规划起来太麻烦,而且我们都是单一管理员,拥有root权限,所以更没有动力去设置,至于脚本的安全性,暂时还没有这个需要。

    再次谢谢您的解答。
    hzqim
        23
    hzqim  
    OP
       2014-11-06 16:38:54 +08:00
    @likuku
    @Showfom
    禁止了密码验证,Winscp还能连得上服务器吗?
    Showfom
        24
    Showfom  
       2014-11-06 16:41:16 +08:00   ❤️ 1
    @hzqim 可以,配合 putty,直接读取好你的 ppk
    ryd994
        25
    ryd994  
       2014-11-06 21:23:41 +08:00   ❤️ 1
    @hzqim 还是那句话,如果能保证私钥安全,一切好说。如果私钥丢了,那加不加密码都是迟早悲剧的。但是加了强密码可以给你争取一点发现然后补救的时间。其实强密码也不麻烦,可以ssh-add。

    私钥密码的验证是本地的:用密码解密私钥文件得到真正的私钥,然后用私钥加密服务器发来的一段随机数据,密文发回去,服务器用公钥解密,验证身份。

    真正要安全的话你不妨找找ssh可用的智能卡设备,只写不读,加密是智能卡独立计算,私钥只存在于卡里。
    hzqim
        26
    hzqim  
    OP
       2014-11-06 22:25:36 +08:00 via Android
    @ryd994 感谢解答,学到很多!!
    likuku
        27
    likuku  
       2014-11-06 22:47:54 +08:00
    弄本 奥莱理 的 「ssh权威指南」
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3197 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:08 · PVG 21:08 · LAX 05:08 · JFK 08:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.