때때로 나는 리눅스 시스템에서 원격 지원, 문제 해결 및 / 또는 성능 조정을 제공하라는 이상한 요청을 받는다.
대기업은 이미 공급 업체 / 공급 업체에 대한 원격 액세스를 제공하기 위해 이미 확립 된 절차를 가지고 있으며이를 준수하기 만하면됩니다. (더 나은지 나쁜지)
다른 한편으로, 소기업과 개인은 항상 저를 설득하기 위해해야 할 일을 지시하도록 지시합니다. 일반적으로 서버는 인터넷에 직접 연결되어 있으며 기존 보안 조치는 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
screen
있으므로 극단적 인 경우 고객이하고있는 일을 실시간으로 볼 수 있습니다.