Bastion服务器:创建只具有ssh目标服务器能力的用户

分享于 

3分钟阅读

电脑

  繁體 雙語

问题:

我们有,服务器,应该使用一些用户从本地通过,到C,使用proxyCammand和 private 密钥。

我想创建用户和组,它们应该只能访问来自Bastion主机( 它是通过 proxyCommand )的ssh 。 它们也不需要读取文件。

我要怎么才能做到? 有什么方法?

如果上述方法不可行,则另一种方法是只对允许的文件进行读访问,除非限制文件只对那些有读访问权限的文件有效。


回答 1:

网络流量

你可以使用 iptables 限制网络流量:


# Allow port 22 traffic to a specific IP/hostname for a specific user


iptables -A OUTPUT -p tcp --dport 22 -d allowed_host -m owner --uid-owner username -j ACCEPT 


# Block all other outgoing port 22 (SSH) traffic


iptables -A OUTPUT -p tcp --dport 22 -d 0.0.0.0/0 -j REJECT



文件系统访问

若要限制 文件系统 访问,可以使用文件系统权限。

它们也不需要读取文件。

要能够登录,他们需要能够读取一些文件:

  • 用户的主目录
  • 用户 shell的可执行文件和所有库

若要禁止普通用户读取访问,可以从 root 拥有的文件删除世界可读标志,或者从 root 拥有的目录移除世界可执行文件和世界可以读标志:


# chmod o-r secret-file


# ls -l secret-file


-rw-r----- 1 root root 0 Mar 27 13:23 secret-file



# chmod o-rx secret-dir/


# ls -ld secret-dir/


drwxr-x--- 2 root root 64 Mar 27 13:24 secret-dir/




回答 2:

这是如何允许给定用户只使用指定的命令的方法:

  • 将用户 shell 更改为受限 bash:

    
    chsh -s/bin/rbash <username>
    
    
    
    
  • 在用户目录的主目录下创建一个bin目录:

    
    sudo mkdir/home/<username>/bin
    
    
    sudo chmod 755/home/<username>/bin
    
    
    
    
  • 将用户路径的默认值更改为这里bin目录:

    
    echo"PATH=$HOME/bin">> /home/<username>/.bashrc
    
    
    echo"export PATH>> /home/<username>/.bashrc
    
    
    
    
  • 为用户需要的命令创建链接符号:

    
    sudo ln -s/bin/<command>/home/<username>/bin/
    
    
    
    
  • 通过使用户不变,限制用户更改 ~/.bashrc:

    
    chattr +i/home/<username>/.bashrc
    
    
    
    
  • 这样你只需要为你想允许的命令创建符号符号。

    对于多个用户,你可以创建包含这些命令的bash脚本,并将用户名作为参数。

    源代码



Server  USE  DES  用户  users  SSH  
相关文章