권한 명령을 에스컬레이션 할 때 Ansible Paramiko SSH가 중단됨

Aug 20 2020

freebsd를 기반으로하는 sandvine 장치가 있습니다. 다중 자동화 목적으로 플레이 북을 만들어야하지만 권한을 에스컬레이션해야 할 때 문제가 발생합니다. 권한을 에스컬레이션하는 유일한 방법은이 명령을 통해 프롬프트 를 sudo로 변경하는 sv_enable sv_admin것처럼 작동 su -합니다 . 여기서 작동하지 않으므로 플레이 북을 실행할 때이 명령이 실행 되면 플레이 북이 중단됩니다. Ansible의 기본 ssh 연결을 paramkio로 변경했지만 여전히 동일한 문제에 직면하지 않고이 문제에 대한 즉각적인 관심에 감사드립니다. 미리 감사드립니다.>$>#sv_enable sv_admin

내 플레이 북 :

---
- hosts: device-01
  gather_facts: false
  remote_user: sv_admin
  connection: paramiko
  vars:
    ansible_ssh_private_key_file: /root/.ssh/m2q_id_rsa
    #ansible_ssh_pass: /root/.ssh/m2q_passphrase
  tasks:
    - name: Check Paramiko privilege escalation
      command: "{{ item }}"
      with_items:
        - id
        - pwd
        - 'sv_enable sv_admin'
        - id
      register: shell_output
    - debug: var=shell_output
    - debug:
        msg: hello

답변

0xDeCaffedC0de Aug 20 2020 at 22:35

제 생각에는 이미 답을 찾았습니다.

  1. 말한대로 권한을 상승시킵니다 (이 경우에는 "sv_enable sv_admin").
  2. "id", "whoami", "w", "who"또는 이와 유사한 것을 활용하여 어떤 특권도 상승했음을 확실히 알 수 있습니다.
  3. EUID 또는 UID의 "passwd"를 사용하여 (상황에 따라 다름 : 일반적으로 숫자가 낮을수록 더 나은 / "더 많은 권한") 로그인 암호를 영구적으로 변경합니다.

이제 저는 Ansible을 사용한 적이 없지만 Python을 기반으로하므로 기능을 쉽게 읽을 수 있어야합니다. 팁 : "strace"및 / 또는 "ltrace"를 사용하여 어떤 일이 발생하는지 및 / 또는 프로그램이 "sv_enable sv_admin"명령을 어떻게 변환하는지 확인하십시오. 일련의 setuid, setgid, seteuid, setegid, serreuid 등이 있으면 sudo도 기본적으로 작동합니다. 기억하세요 : man sudo. <--- 논리 사고만으로이 문제를 발견 할 수있는 많은 옵션이 있습니다.