Linuxによる自宅サーバの構築3 - OpenSSHで外部からリモートログインできるようにする
自宅サーバを立てた時の手順を解説しています。
今回はCentOSの初期設定とsshの設定までを紹介しています。
前回の記事
sshでログイン
まず前回のようにsshでログインします。そしてこの接続は作業を終えるまで終了しないように気をつけてください。
既存のsshサーバのアンインストール
既存のsshサーバと新しくインストールするOpenSSHが重複してしまうので一度sshサーバをアンインストールします。
# systemctl stop sshd.service # yum -y remove openssh
OpenSSHサーバのインストール
最新版をダウンロードし、RPMパッケージを作ってインストールします。 最新版の確認はここから。 wgetのURLは最新版のファイル名に応じて変更してください。
# yum -y install pam-devel # yum -y install openssl-devel # yum -y install krb5-devel # yum -y install tcp_wrappers-devel # wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-6.8p1.tar.gz # tar zxvf openssh-6.8p1.tar.gz
次に設定を変更します。
# vi openssh-6.8p1/contrib/redhat/openssh.spec
%no_x11_askpass 0、%define no_gnome_askpass 0を次のように変更します。
%no_x11_askpass 1 %define no_gnome_askpass 1
redhat以外のディレクトリを削除します。
# rm -rf openssh-6.8p1/contrib/aix/ # rm -rf openssh-6.8p1/contrib/hpux/ # rm -rf openssh-6.8p1/contrib/caldera/ # rm -rf openssh-6.8p1/contrib/suse/ # rm -rf openssh-6.8p1/contrib/cygwin/ # rm -rf openssh-6.8p1/contrib/solaris/
圧縮をします。
# tar czvf openssh-6.8p1.tar.gz openssh-6.8p1/ # rm -rf openssh-6.8p1
パッケージを作り、インストールします。
書き込み完了と表示されているパスがパッケージの場所です。
これを元にインストールします。
# rpmbuild -tb --clean openssh-6.8p1.tar.gz 書き込み完了: /root/rpmbuild/RPMS/x86_64/openssh-6.8p1-1.x86_64.rpm 書き込み完了: /root/rpmbuild/RPMS/x86_64/openssh-clients-6.8p1-1.x86_64.rpm 書き込み完了: /root/rpmbuild/RPMS/x86_64/openssh-server-6.8p1-1.x86_64.rpm 書き込み完了: /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-6.8p1-1.x86_64.rpm # rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-6.8p1-1.x86_64.rpm # rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-clients-6.8p1-1.x86_64.rpm # rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-server-6.8p1-1.x86_64.rpm # rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-6.8p1-1.x86_64.rpm # rm -f /root/rpmbuild/RPMS/x86_64/openssh-* # rm -f openssh-6.8p1.tar.gz
iptablesのインストール
使い慣れているiptablesをインストールし、ファイアーウォールとします。
代わりに現在動いているfirewalldを停止します。
# yum install iptables-services # systemctl stop firewalld # systemctl disable firewalld # systemctl enable iptables # systemctl start iptables
ポートを許可する設定をします。
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2022 -j ACCEPT
再起動します。
# systemctl restart iptables
ポートの開放
ssh接続に使用するポートの開放を行います。初期設定の22番ポートは狙われやすいので番号を変更します。
自分の場合は2022番ポートに変更しました。
今回はOCNの場合で説明します。他のプロバイダの場合は公式サイトを見ると詳細な情報が記載されていると思います。
まず、ルーターの設定を開きます。次に左のメニューからIPマスカレードを選びます。
右の編集をクリックし、以下のように入力します。IPやポートは環境に合わせて変更してください。
完了したら、左の有効化チェックボックスチェックを入れて設定ボタンをクリックします。
次に静的NATの設定をします。同じように左のメニューから選びます。
以下のように入力します。
SELinuxの設定
SELinuxの変更をします。まずpolicycoreutils-pythonをインストールします。
# yum install policycoreutils-python
次にsshで使うポートの設定をします。
# semanage port -at ssh_port_t -p tcp 2022
確認するには以下のようにコマンドを叩きます。
# semanage port -l | grep ssh_port_t
sshdの設定
まずsshd_configを開きます。
vi /etc/ssh/sshd_config
そうしたら#Port 22の#を削除し、22を置き換えます。
Port 2022
chrootの設定をします。
Match Group *, !wheel ChrootDirectory /home/%u/./
再起動をします。
# systemctl restart sshd.services
sshのアクセス制限設定
許可した通信だけ受け入れます。
# vi /etc/hosts.allow
sshd:127.0.0.1
sshd:192.168.1.
sshd:example.net
また、すべての通信を拒否することでallowの設定が優先されるためホワイトリストになります。
# vi /etc/hosts.deny
sshd: ALL
公開鍵認証の設定
設定が消えてしまっているので再設定をします。 設定自体は前回の記事と全く同じなのでそちらを参照してください。
おすすめの参考書
自宅サーバの勉強においてとても参考になった1冊です。