Linux

Linux:為遠端系統管理員設置

  • July 22, 2017

我時不時地收到奇怪的請求,要求在 Linux 系統上提供遠端支持、故障排除和/或性能調整。

較大的公司通常已經有完善的程序來為供應商/供應商提供遠端訪問,我只需要遵守這些程序。(不論結果好壞。)

另一方面,小公司和個人總是求助於我,指導他們如何設置我。通常他們的伺服器直接連接到網際網路,現有的安全措施包括他們的 Linux 發行版的預設值。

我幾乎總是需要 root 級別的訪問權限,而為我設置訪問權限的人並不是專業的系統管理員。我不想要他們的 root 密碼,而且我也很確定我的行為不會是惡意的,但是我應該給出什麼合理簡單的指示:

  • 設置帳戶並安全地交換憑據
  • 設置 root (sudo) 訪問權限
  • 限制訪問我的帳戶
  • 提供審計線索

(是的,我知道並總是警告那些客戶,一旦我擁有管理員訪問權限,隱藏任何惡意行為都是微不足道的,但讓我們假設我沒有什麼可隱藏的,並積極參與創建審計跟踪。)

以下步驟可以改進什麼?


我目前的指令集:

設置帳戶並安全地交換憑據

我提供了一個密碼雜湊並要求我的帳戶設置了該加密密碼,因此我們不需要傳輸明文密碼,我將是唯一知道密碼的人,我們不會從可預測的弱密碼。

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 

設置 root (sudo) 訪問權限

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 -ior 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增加 bash 歷史記錄中設置以下內容並包含時間戳:

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

唯一想到的就是添加--expiredateadduser通話中。

這樣,客戶就知道您的訪問權限將在固定日期自動過期。

他仍然需要信任您,因為您具有 root 訪問權限並且仍然可以刪除過期標誌。

您可以使用script(1)實用程序記錄您的會話。

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

然後一切都在 session.log 中。

引用自:https://serverfault.com/questions/805333