提供: いつきメモ
< Linux関連
2016年10月16日 (日) 12:42時点におけるItuki (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

CentOS 7 (他でも行けるかも)で、sshdをtcpserver経由で動かします

パッケージのインストール

tcpserverを入れます。 ucspi-tcp……なのですすが、標準のリポジトリにないので、リポジトリの追加が必要です。 opensuseあたりを入れると良いでしょう。 /etc/yum.repos.dに、qmailtoaster.repoってファイルを作ります。 中身はこんな感じ。

[home_weberho_qmailtoaster]
name=The qmailoaster  (CentOS_7)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/home:/weberho:/qmailtoaster/CentOS_7/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/home:/weberho:/qmailtoaster/CentOS_7/repodata/repomd.xml.key
enabled=1

この状態で、yum updateをしておきましょう。 yum search ucspi-tcpでヒットするようになるハズです。 ここで

yum install ucspi-tcp

として、ucspi-tcp(tcpserverが含まれる)をインストールします。 daemontoolsも入りますが、気にしない。

コンフィグファイルの作成

他のポートで動いているsshd_configと別の物を使いたい場合だけこの設定をします。

ファイル名は、sshd_config_22とします。もし、他のポートで動いてるものと同じで良い、または、そもそもこれで動かすのが全ての場合は、sshd_config_22をsshd_configと置き換えてください。

まず、cd /etc/sshして、cp sshd_config sshd_config_22とします。

何を変更するかというと、公開鍵以外は受け付けないようにします。

PasswordAuthentication yesをPasswordAuthentication noに書き換えてください。

そのためだけです(笑)

アクセス制限ファイルの作成

tcpserverで使う、アクセス制限ファイルの設定をします。

/etc/ssh/sshd_22 (と、/etc/ssh/sshd_22.cdb)を使う事にします。

/etc/ssh/sshd_22に例えば次のように書きます。

=.jp:allow
:deny

IP:allowと書くと、許可IPを追加できます。

:denyで拒否。

tcprulesで変換します

tcprules sshd_22.cdb t < sshd_22

これで、sshd_22.cdbが出来ます。

systemd用ファイルの作成

/etc/systemd/systemで作業を行います。

サービス名は適当で良いですが、今回はsshd_22とします(sshdとすると、システム標準と被る場合があります)

sshd_22.serviceというファイルを作ります。中身はこんな感じ。

[Unit]
Description=OpenSSH server daemon
After=syslog.target network.target auditd.service

[Service]
EnvironmentFile=/etc/sysconfig/sshd
#ExecStartPre=/usr/sbin/sshd-keygen
ExecStart=/usr/bin/tcpserver -v -p -R -x /etc/ssh/sshd_22.cdb 0 22 /usr/sbin/sshd -i -f /etc/ssh/sshd_config_22
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
SyslogIdentifier=sshd
SyslogFacility=daemon
SyslogLevel=info

[Install]
WantedBy=multi-user.target

ここまで書いたら、テストしてみましょう。

systemctl start sshd_22

でスタートできます。

systemctl status sshd_22 でステータスを見て、エラーが出ないことを確認しましょう。

また、外からログインして見て、アクセスできることを確認しましょう。

/etc/hosts.denyと/etc/hosts.allowの影響を受けるっぽいので、それは注意。

問題無く動いているようなら、次のコマンドで永久に有効にします。

systemctl enable sshd_22

これで設定はおしまいです。