回覆列表
  • 1 # 秦亞科

    1、兩個deamon

    要實現ssh和sftp分離,分別監聽不同的埠,可以透過建立兩個‘/usr/sbin/sshd’後臺程式,一個監聽22埠(ssh),一個監聽20022埠(sftp),為了區分ssh和sftp服務的後臺程式,這裡將ssh服務的後臺程式保持為/usr/sbin/sshd,而將sftp服務的後臺程式改為/usr/sbin/sftpd。/usr/sbin/sftpd是/usr/sbin/sshd的一個連結,其內容完全相同(ln -sf /usr/sbin/sshd /usr/sbin/sftpd)。

    2、兩個service

    SLES12使用systemd管理系統服務,ssh服務對應/usr/lib/systemd/system/sshd.service檔案,實現sftp服務時可以將/usr/lib/systemd/system/sshd.service 複製到 /etc/systemd/system/sftpd.service,然後修改sftpd.service檔案內容。(使用修改好的sftpd.service檔案即可)

    3、其他檔案系統的ssh服務是透過安裝openssh實現的,可以透過rpm -ql openssh檢視該rpm包含哪些檔案。總結實現ssh和sftp分離的相關的檔案有:

    ssh服務 sftp服務

    /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service (透過修改/usr/lib/systemd/system/sshd.service檔案得到)

    /etc/pam.d/sshd /etc/pam.d/sftpd (透過複製 /etc/pam.d/sshd檔案得到)

    /etc/ssh/sshd_config /etc/ssh/sftpd_config (透過複製/etc/ssh/sshd_config檔案得到)

    /usr/sbin/rcsshd /usr/sbin/rcsftpd (ln -sf /usr/sbin/service /usr/sbin/rcsftpd)

    /usr/sbin/sshd /usr/sbin/sftpd (ln -sf /usr/sbin/sshd /usr/sbin/sftpd)

    /etc/sysconfig/ssh /etc/sysconfig/sftp (透過修改/etc/sysconfig/ssh檔案得到)

    至此,我們已經實現了兩個服務。

    但是,ssh服務和sftp服務並沒有真正的分離,此時已然可以透過22號埠使用ssh服務和sftp服務,而新開的20022埠也可以使用ssh服務(ssh -p 20022 username@serverip )和sftp服務(sftp -o Port=20022 username@serverip )。

    4、關閉22號埠下的sftp服務編輯/usr/sbin/sshd的配置檔案/etc/ssh/sshd_config檔案,將Subsystem引數註釋掉,然後重啟sshd同時也可以設定可訪問22號埠的使用者白名單:編輯/etc/ssh/sshd_config檔案,設定AllowGroups引數(假設設定為AllowGroups sshonly),限制僅AllowGroups組內的使用者可透過22號埠ssh登入系統(對於需要ssh登入系統的使用者可透過usermod -A sshonly <username>將其加入到AllowGroups組內)

    5、“關閉20022號埠下的ssh服務”sftp作為一個子服務,它的開啟依賴於ssh服務,因此不能從本質上關閉ssh服務而只開啟sftp服務。可以用以下方式來規避:/usr/sbin/sftpd的配置檔案/etc/ssh/sftpd_config中包含Subsystem引數配置(推薦使用Subsystem sftp internal-sftp -l INFO -f AUTH)/etc/ssh/sftpd_config中包含AllowGroups引數(假設為AllowGroups sftponly),限制僅AllowGroups組內的使用者可以訪問20022埠將AllowGroups組內的使用者的shell改為/bin/false(usermod -s /bin/false <username>),使AllowGroups組內的使用者僅能sftp登入系統(如果一個使用者即需要ssh,又需要sftp,則不能將其shell改為/bin/false)

    6、使用者白名單配置配置之後,需將系統內需要ssh訪問系統的使用者加入到sshonly組內,需將系統內需要sftp訪問系統的使用者加入到sftponly組,同時需要ssh和sftp的使用者則sshonly和sftponly組都要加入。

    7、 重啟ssh服務和sftp服務,並設定開機啟動

    service sshd restartservice sftpd restart

  • 中秋節和大豐收的關聯?
  • 《明日之後》種田流玩家最怕此物,連奶牛都會發變異,請問有什麼辦法?