Postgres에 액세스하고 다른 작업은 수행하지 않도록 SSH 사용자를 설정하는 방법

Postgres에 액세스하고 다른 작업은 수행하지 않도록 SSH 사용자를 설정하는 방법

우분투 18.04 서버 내부의 postgres에 대한 읽기 전용 액세스 권한을 누군가에게 부여해야 합니다.

포스트그레스의 경우 다음을 수행했습니다.

CREATE ROLE read_only_user WITH LOGIN PASSWORD 'FAKEPASSWORD123' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';
GRANT CONNECT ON DATABASE "somedb" TO read_only_user;
GRANT USAGE ON SCHEMA public TO read_only_user;

SSH를 통해/etc/ssh/sshd_config

PasswordAuthentication no
PermitRootLogin no

우분투에서 나는 이것을했다

sudo mkdir /var/read_only_on_ubuntu_user
sudo groupadd read_only
sudo usermod -g read_only read_only_on_ubuntu_user
sudo useradd -d /var/read_only_on_ubuntu_user  read_only_on_ubuntu_user
sudo chown read_only_on_ubuntu_user:read_only /var/read_only_on_ubuntu_user

cd /var/read_only_on_ubuntu_user && mkdir .ssh
vim .ssh/authorized_keys # this is to add the public key for this user account

사용자가 SSH를 통해 localhost:5432에서 postgres에 성공적으로 액세스했습니다.

이 사용자를 더 제한하려면 어떻게 해야 합니까?

고쳐 쓰다

사용자가 현재 서버로 터널링한 다음 SSH를 통해 자신의 데스크톱에서 원격으로 데이터베이스에 액세스하는 데스크톱 GUI 애플리케이션을 사용하고 있다는 사실을 추가하는 것을 잊어버렸습니다.

SSH를 통해 로그인한 다음 psql을 실행하지 않습니다. 다음에 요청할 수도 있지만 그럴 가능성은 거의 없다고 생각합니다.

답변1

실행 중인 클라이언트의 sshd_config에 추가합니다 ForceCommand(귀하의 경우)(해당 사용자에게만 영향을 미치도록 일치 블록에 이를 포함할 수 있음) psql.

또는 authorized_keys파일 앞에 를 추가하여 이를 수행할 수도 있습니다 command="...". restrict거기에 플래그를 추가한 다음 pty.

또 다른 접근 방식은 사용자가 원격 서버에서 psql을 실행하도록 하는 대신 실행 중인 쿼리 postgresql의 로컬 호스트 포트에 대한 터널을 생성하고 로컬로 연결하도록 허용하는 ssh 연결을 실행하도록 하는 것입니다.

답변2

터널링만 허용하려면 다음을 추가하세요 /etc/ssh/sshd_config.

Match User myusername
  # PasswordAuthentication yes
  PermitOpen 127.0.0.1:5432
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

PasswordAuthentication yes이 사용자가 로그인하려면 비밀번호가 필요하지만 다른 사람은 비밀번호로 로그인할 수 없는 경우 주석을 해제하세요.

-NSSH 클라이언트를 사용할 때 연결이 필요합니다. 그렇지 않으면 서버가 사용자에게 인사한 후 연결을 끊습니다.

다음은 위 구성에 연결하고 터널을 엽니다. 그러면 10123로컬 시스템의 포트에서 Postgres에 액세스할 수 있습니다.

ssh -N -L 10123:localhost:5432 myusername@myserver

답변3

제한된 쉘을 사용하십시오.껍데기, 사용자용. 이를 통해 쉘이 허용하는 명령의 화이트리스트를 지정할 수 있습니다(제한 사항은 psql 클라이언트 내에서 실행되는 쉘에도 적용됩니다).

chsh 명령을 사용하여 사용자 쉘을 설정하십시오.

관련 정보