Linux : 원격 sysadmin 설정


51

때때로 나는 리눅스 시스템에서 원격 지원, 문제 해결 및 / 또는 성능 조정을 제공하라는 이상한 요청을 받는다.

대기업은 이미 공급 업체 / 공급 업체에 대한 원격 액세스를 제공하기 위해 이미 확립 된 절차를 가지고 있으며이를 준수하기 만하면됩니다. (더 나은지 나쁜지)

다른 한편으로, 소기업과 개인은 항상 저를 설득하기 위해해야 ​​할 일을 지시하도록 지시합니다. 일반적으로 서버는 인터넷에 직접 연결되어 있으며 기존 보안 조치는 Linux 배포에 대한 기본값으로 구성됩니다.

거의 항상 루트 수준의 액세스 권한이 필요하며 내게 액세스 권한을 설정하는 사람은 전문가 인 sysadmin이 아닙니다. 나는 자신의 루트 암호를 원하지 않으며 내 행동 이 악의적이지 않을 것이라고 확신 하지만 합리적으로 간단한 지침을 제시해야합니다.

  • 계정을 설정하고 자격 증명을 안전하게 교환
  • 루트 (스도) 액세스 설정
  • 내 계정에 대한 액세스를 제한
  • 감사 내역 제공

(그렇습니다. 악의적 인 작업을 숨기는 관리자 액세스 권한이 있으면 사소한 일이지만 클라이언트에게 감사 추적을 생성하는 데 숨기거나 적극적으로 참여할 수는 없다고 가정합니다.)

아래 단계에서 무엇을 개선 할 수 있습니까?


내 현재 명령 세트 :

계정을 설정하고 자격 증명을 안전하게 교환

비밀번호 해시를 제공하고 내 계정에 암호화 된 비밀번호를 설정하도록 요청하므로 일반 텍스트 비밀번호를 전송할 필요가 없습니다. 비밀번호를 아는 유일한 비밀번호 일뿐입니다. 예측 가능한 약한 비밀번호.

sudo useradd -p '$1$********' hbruijn

공개 키 SSH (클라이언트 당 특정 키 쌍)를 제공하고 해당 키로 내 계정을 설정하도록 요청합니다.

sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys 

루트 (스도) 액세스 설정

나는 클라이언트에게 내가 sudo sudoedit좋아하는 편집기를 사용하거나 추가하여 sudo를 설정하도록 요청한다 /etc/sudoers.

hbruijn ALL=(ALL) ALL

내 계정에 대한 액세스를 제한

일반적으로 클라이언트는 여전히 비밀번호 기반 로그인을 허용 /etc/ssh/sshd_config하며 적어도 두 개의 계정을 SSH 키로 만 제한 하기 위해 다음 두 줄을 추가하도록 요청합니다 .

Match user hbruijn
PasswordAuthentication no

클라이언트에 따라 모든 단일 SSH 액세스를 단일 요새 호스트를 통해 라우팅하여 항상 단일 정적 IP 주소 (예 : 192.168.1.2)를 제공하거나 ISP가 사용하는 IP 주소 범위 (예 : 10.80)를 제공합니다. 0.0 / 14). SSH 액세스가 제한되어있는 경우 클라이언트는 방화벽 화이트리스트에 추가해야 할 수도 있습니다 (ssh는 필터링되지 않는 경우가 더 많습니다).

당신은 이미으로하는 IP-주소를보고 from=의 제한 ~.ssh/authorized_keys내 키가 자신의 시스템에 액세스하는 데 사용할 수있는 호스트를 제한하는 파일입니다.

감사 내역 제공

지금까지 어떤 고객도 저에게 그 사실을 묻지 않았고, 내 엉덩이를 덮기 위해 다음을 넘어서는 어떤 것도하지 않았습니다 :

sudo개별 명령 으로 일관되게 사용 하려고 시도 sudo -i하거나 또는 사용을 방지하려고합니다 sudo su -. 나는 sudo vim /path/to/file 사용 sudoedit하지 않고 대신 사용하려고 합니다.

기본적으로 모든 권한있는 작업은 syslog (및 /var/log/secure)에 기록됩니다 .

Sep 26 11:00:03 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=jboss ; COMMAND=sudoedit /usr/share/jbossas/domain/configuration/domain.xml  
Sep 26 11:00:34 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/messages

나는 주로 작업 환경을 사용자 정의하는 것을 포기했습니다. 내가 실제로하는 유일한 일은 ~/.bash_profile배시 기록을 늘리고 타임 스탬프를 포함 하도록 다음을 설정하는 것입니다 .

export HISTSIZE=99999999999
export HISTFILESIZE=99999999999
export HISTIGNORE="w:ls:ls -lart:dmesg:history:fg"
export HISTTIMEFORMAT='%F %H:%M:%S  '
shopt -s histappend

8
에 로그인 (사실 후에 쉽게 변경 가능)하고 세션을 공유 할 수도 screen있으므로 극단적 인 경우 고객이하고있는 일을 실시간으로 볼 수 있습니다.
Sven

더 나은 감사 추적을 추가하려면 가능할 경우 원격 로깅을 사용하도록 지시해야합니다.
Fredi

답변:


24

염두에 두어야 할 것은 통화 에 추가 --expiredate하는 것 adduser입니다.
이를 통해 고객은 액세스가 정해진 날짜에 자동으로 만료된다는 것을 알게됩니다.

루트 액세스 권한이 있고 여전히 만료 플래그를 제거 할 수 있으므로 그는 여전히 사용자를 신뢰해야합니다.


15

script (1) 유틸리티를 사용 하여 세션을 기록 할 수 있습니다 .

$ script session.log
Script started, file is session.log
$ ls
file1  session.log
exit
Script done, file is session.log

그런 다음 모든 것이 session.log에 있습니다.


원격 시스템에 대한 ssh 세션을 시작하기 전에 자신의 호스트에서 실행하거나 원격 시스템에서 내 프로파일의 일부로 포함하도록 권장합니까?
HBruijn

1
당신도 할 수있을 것 같아요-대부분 사람들이 실제로 신경 쓰지 않는 한 번만 사용했습니다.
user9517은 GoFundMonica 지원

7

이미 SSH 공개 키로 로그인했기 때문에 비밀번호 해시를 제공하지 않으면 약간 강화 될 것입니다. 대신 계정에서 사용 adduser --disabled-password하는 것과 동일하게 (동등하게 useradd -p '!'생각합니다) 사용하도록 지시 PasswordAuthentication no하십시오. 또한 누군가 이메일을 스누핑하면 비밀번호 해시가 무력화되어 사용자로 로그인 할 가능성이 없습니다.


3
Match user hbruijn \n PasswordAuthentication nosshd_config를 추가하면 해독 된 암호 (잠재적으로 로컬 사용자가이 암호를 사용할 수 있음 su - hbruijn)를 사용하여 원격으로 로그인 할 수는 없지만 여전히 유효한 암호가 필요하다는 것을 알고 sudo있습니다. 로그인 후 비밀번호를 재설정해야합니까?
HBruijn

오, sudo에 대한 좋은 지적. 해당 계정에서 --disabled-password실행하여 상태 의 계정에 암호를 부여 할 수 있는지 확실하지 않습니다 passwd.
zwol

또한 귀하가 제공 한 비밀번호 해시에서 다른 사람이 듣지 못하게하는 이유는 무엇입니까? 이 부분은 공개 키가 인터셉트 되어도 중요하지 않은 ssh 키 사용을 약화시키는 약한 링크입니다.
JamesRyan

3
클라이언트가 sudoers 파일에 다음과 같은 행을 추가하도록하여 약한 링크를 해결할 수 hbruijn ALL=(ALL) NOPASSWD: /usr/bin/passwd hbruijn있습니까?
Dezza

2

공개 / 개인 키를 사용하려고 할 때 암호를 전혀 제공하지 않는 이유는 무엇입니까?

공개 키는 공유되어야하므로 해시 된 암호가 아니라 자격 증명을 안전하게 교환하는 데 사용해야합니다.

sudo useradd --disabled-password hbruijn

공개 키를 보낼 때는 전화 통화와 같은 두 번째 채널을 통해 지문을 확인하여 다른 사람이 지문을 입력하지 않도록합니다.

sudo를 사용하기 위해 비밀번호가 없기 때문에 sudoers 파일의 행을 다음과 같이 변경해야합니다.

hbruijn ALL=(ALL) NOPASSWD:ALL

sudo에 대한 암호가없고 실제로 암호를 원한다면 해시 된 암호를 보내거나 암호없이 계정을 만들도록하고 공개 키를 설정 한 다음 계정이 만들어지면 필요하지 않습니다. 설정 당신은 SSH를 통해 로그인하고 passwd자신의 암호를 설정하기 위해 실행할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.