自宅サーバー構築メモ The last update of this page 2010/03/20
使用するソースとダウンロード先
openssh-5.4p1.tar.gz http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.4p1.tar.gz
インストール
【手順】
centOS初期状態でインストールされているOpenSSHを削除する。(ChrootDirectoryなど行いたいため)
OpenSSHがあたらにインストールされるまでの間は、telnetを使用する。

Telnetサーバーインストール
yum -y install telnet-server
chkconfig telnet on
/etc/rc.d/init.d/xinetd restart

SSHサーバーアンインストール
/etc/rc.d/init.d/sshd stop
yum -y remove openssh

新たなSSHサーバーインストール
opensshのRPM作成に必要なパッケージをインストール
yum -y install pam-devel
yum -y install rpm-build
yum -y install openssl-devel
yum -y install tcp_wrappers-devel

opensshダウンロード
cd /usr/local/src/
wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.4p1.tar.gz

openssh展開
tar zxvf openssh-5.4p1.tar.gz

specファイル編集
vi openssh-5.4p1/contrib/redhat/openssh.spec

設定内容(一部)
(変更)x11_askpassの無効化
%define no_x11_askpass 1

(変更)gnome_askpassの無効化
%define no_gnome_askpass 1

(追加)zlibのバージョンチェック無効化)
--without-zlib-version-check \

%configure \
--without-zlib-version-check \ 
←※追加場所
--sysconfdir=%{_sysconfdir}/ssh \
--libexecdir=%{_libexecdir}/openssh \
--datadir=%{_datadir}/openssh \
--with-tcp-wrappers \
--with-rsh=%{_bindir}/rsh \
--with-default-path=/usr/local/bin:/bin:/usr/bin \
--with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \
--with-privsep-path=%{_var}/empty/sshd \
--with-md5-passwords \

specファイル編集ここまで


RedHat以外のディレクトリを削除
rm -rf openssh-5.4p1/contrib/aix/
rm -rf openssh-5.4p1/contrib/hpux/
rm -rf openssh-5.4p1/contrib/caldera/
rm -rf openssh-5.4p1/contrib/suse/
rm -rf openssh-5.4p1/contrib/cygwin/
rm -rf openssh-5.4p1/contrib/solaris/

openssh展開先ディレクトリ再圧縮
tar czvf openssh-5.4p1.tar.gz openssh-5.4p1/

RPMパッケージ作成
rpmbuild -tb --clean openssh-5.4p1.tar.gz

作成したopensshのRPMパッケージをインストール
rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-5.4p1-1.i386.rpm
rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-clients-5.4p1-1.i386.rpm
rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-server-5.4p1-1.i386.rpm
rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-debuginfo-5.4p1-1.i386.rpm
設定
sshdの設定
vi /etc/ssh/sshd_config

設定内容(一部)

(変更)SSH2でのみ接続を許可

Protocol 2

(変更)ログを/var/log/secureに記録する
SyslogFacility AUTHPRIV

(変更)rootでのログインを禁止

PermitRootLogin no

(追加)接続許可ユーザー
AllowUsers hoge1 hoge2

SSHサーバーへアクセスできるホストを制限
echo "sshd:127.0.0.1" >> /etc/hosts.allow
echo "sshd:192.168.100." >> /etc/hosts.allow
echo "sshd:192.168.101." >> /etc/hosts.allow
echo "sshd:.yahoo.co.jp" >> /etc/hosts.allow
echo "sshd:ALL" >> /etc/hosts.deny

Telnetサーバー削除
Telnetサーバー自動起動無効化
chkconfig telnet off

xinetd再起動
/etc/rc.d/init.d/xinetd restart

Telnetサーバーアンインストール
yum -y remove telnet-server
特定のユーザーをsftpのChrootDirectoryにて接続させる場合
sftp用のグループを作成
groupadd sftp

sftp用ユーザーを追加
useradd -G sftp hoge3

sshdの設定
vi /etc/ssh/sshd_config

設定内容(一部)

(変更)内部のsftpを使うように指定
Subsystem sftp internal-sftp

(変更)接続許可ユーザー
AllowUsers hoge1 hoge2 hoge3

(追加)認証されたユーザがsftpグループの場合、ChrootDirectory(ここでは/home/userdir)を実施
Match group sftp
ChrootDirectory /home/userdir
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

公開ディレクトリのオーナーとパーミッションの変更
chown root.root /home/userdir
chmod 755 /home/userdir