LoginSignup
10
12

More than 5 years have passed since last update.

SSHDを複数起動してSFTPとSSHを分けてみる

Posted at

About

前から気になっていたので、試してみました。sshdでsubsystemの指定でsftpサーバ利用できますが、sshのポートが同じになってしまいます。sftpサーバは社外に公開しつつも、セキュリティを考えるとsshログインできるユーザを絞りたい。proftpd等を使えばsftp機能があるみたいなのですが、シンプルにやりたかったので試してみました。

環境

  • CentOS 7

ssh側

特別な設定は必要ありません。

sftp側

設定

もう1台sshdを起動するには、ポートやプロセスなどが重複しないように設定が必要です。

systemd用のファイル

/etc/systemd/system/sshd_sftp.service
[Unit]
Description=OpenSSH server daemon only sftp
After=syslog.target network.target auditd.service

[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd_sftp
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

設定ファイル

:/etc/ssh/sshd_sftp
Port 19321
Protocol 2
SyslogFacility AUTHPRIV


PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no


GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

X11Forwarding yes
PidFile /var/run/sftp.pid

# ssh/sftpを利用できるグループを制限。
AllowGroups sftp-user

UseDNS no
GSSAPIAuthentication no

Subsystem   sftp    internal-sftp -f local5 -l INFO
Match group sftp-user
    PasswordAuthentication yes
    X11Forwarding no
    AllowTcpForwarding no
    ChrootDirectory /home/%u/chroot/

sftp-user グループに所属するはパスワード認証を許可しつつ、chrootを使って権限を閉じるようにしています。ここで重要なのが、AllowGroupsの設定です。sftp-userに所属するユーザのみがsshdサーバにアクセスできるため、22番ポートでSSHログインできるユーザもこちらのポートにはアクセスできないようにできます。

まとめ

強引なやり方ではありますが、やりたいことはできました。

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12