ServersMan@VPSの初期設定その2 CentOS7 ユーザー作成とSSHでのファイル送受信、不正アクセス対策

ServersMan@VPSの初期設定その2 CentOS7 ユーザー作成とSSHでのファイル送受信、不正アクセス対策

ServersMan@VPSの初期設定その2 CentOS7 ユーザー作成とSSHでのファイル送受信、不正アクセス対策

DTI ServersMan@VPSの初期設定その2(ユーザー作成とSSH設定)です。
VPS環境はEntryプラン/CentOS7/シンプルセットです。


本ページの目次





SSH接続

SSH接続ソフトはTeraTermを使用しました。
事前にTeraTermでの自動ログ取得設定を行っておくことをお勧めします。
今後、うまく設定出来ない時が有った際、操作ログを見返す時に役立ちます。
以下のページに設定方法を記載しました。


本サイト内のTeraTermの設定方法を記載したページ



SSH接続を行います。初期のポート番号は3843です。




「続行」をクリックします。




rootにてログインします。




正しくログインすることが出来ました。




ユーザー作成

ユーザーを作成し、パスワードを設定します。


useradd ユーザー名
passwd ユーザー名



また、ついでにrootのパスワードも変更しておいても良いですね。
passwd root




SSH設定(rootログイン禁止)

次にSSHサーバの設定にて、rootでのログインを禁止します。
また、ポート番号は最初からtcp/22ではなくtcp/3843へ変更されていますが
さらに念を入れるには変更しておいても良いですね。


vi /etc/ssh/sshd_config


viでは、「:set number」で行数表示が可能です。
17行目のポート番号3843を、別のポート番号へ変更しました。48行目の
「#PermitRootLogin yes」の下行に「PermitRootLogin no」を追加しました。


その後再起動します。

systemctl restart sshd

または

service sshd restart


再度TeraTermを起動し、作成したユーザー、変更したポートでSSH接続できることを確認します。


TeraTermマクロで有れば簡単にSSHでのログインが可能です。
以下のページにその方法を記載しました。


書式は以下です。ServersMan@VPSでのSSHの初期ポートは3843です。
このマクロファイルは自分しか使えないように安全に管理しましょう。

connect 'IPアドレス:3843 /ssh /2 /auth=password /user=ユーザー名 /passwd=パスワード'


wait '$ '


sendln 'コマンド'




ファイルの送受信


(a) TeraTermからSCPでファイル送受信


送信するには、WindowsにあるファイルをTeraTermのウィンドウへ
ドラッグ&ドロップします。




「SCP」をクリックします。

※「^/」はログインユーザーのホームディレクトリです。




正しく送信することが出来ました。




ファイルを受信するには「ファイル」→「SSH SCP」をクリックします。


※長いフルパスを入力する場合は事前にpwdコマンドでファイルの場所を
フルパスをコピーしておいた方が楽ですね。




From:にCentOS内の送信したいファイル名を入力し、
To:に受信する側のWindowsのフォルダを指定し「Receive」をクリックします。



(b) WinSCPでのファイル送受信

WinSCPを使用します。


WinSCPのダウンロード


WinSCPのインストール時に「コマンダー」か「エクスプローラー」から選択できます。
今回はデスクトップのファイルをドラッグ&ドロップしやすいエクスプローラーを選択しました。




WinSCPを起動し、ServersMan@VPS(CentOS7)へログインします。


「はい」をクリックします。


ドラッグ&ドロップでファイルの送受信が出来ます。
ServersMan@VPS(CentOS7)からWindowsへダウンロード
(受信)出来ない場合は「表示」→「環境設定」をクリックします。




「リモートから他のアプリケーションへのファイル移動を許可する」、
「一時フォルダを使用する」を選択し「OK」をクリックします。
その後、問題無くファイルをWindowsへダウンロード出来ました。




不正アクセス対策

以下などを行うと安全度が増します。
また、SSHアクセスが有った時点でメール送信する仕組みにするとより良いかと
思います。その方法を記載している方がおられました。


[CentOS] SSHログイン時にメール通知する設定


(d) 接続元が固定IPアドレスの場合、hosts.allowでの許可

hosts.allowにSSHは接続元の固定IPアドレスを書き、
hosts.denyでSSHは全て制限します。



(e) 接続元が固定IPアドレスの場合、ファイアウォール(iptables)での制限

ファイアウォール(iptables)での許可。
ファイアウォール(iptables)での許可方法は以下のページに記載しました。


-A INPUT -p tcp -m state --state NEW -m tcp -s 送信元IPアドレス --dport ポート番号 -j ACCEPT



(f) 自動でのhosts.denyへの書き込みソフト「DenyHosts」


以下のサイトを参照しました。


以下のようにDenyHostsをインストール、設定を行います。


rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm


※CentOS7の場合。その他のOSはhttp://pkgs.repoforge.org/
から該当のものをインストールして下さい。


yum --enablerepo=rpmforge search denyhosts


yum install denyhosts


vi /etc/denyhosts/denyhosts.cfg

/etc/denyhosts/denyhosts.cfgの設定方法


以下のサイトを参照しました。


以下の3項目のみ変更しました。

DENY_THRESHOLD_INVALID = 回数
DENY_THRESHOLD_VALID = 回数

ADMIN_EMAIL = example@example.com


systemctl restart denyhosts




■自動起動するには

systemctl enable denyhosts


※自動起動させないには

systemctl disable denyhosts


■自動起動であるか確認するには
systemctl is-enabled denyhosts

または

systemctl list-unit-files

または

chkconfig --list | grep denyhosts


■今、起動させるには

systemctl start denyhosts


■今、起動しているか確認するには

systemctl status denyhosts


一度/etc/hosts.denyに載ったものを削除するには

以下のいずれかの対処です。

・自動解除時間まで待つ
・vi /etc/hosts.denyにて該当のIPアドレスの削除


denyhostsの再起動等で再度/etc/hosts.denyへの記載が復活
してしまった場合は、以下の対処を行うとその後は再起動を行っても
/etc/hosts.denyに載ることは有りませんでした。

/usr/share/denyhosts/dataの中のファイルのusers-invalidやusers-valid等の該当項目の削除


上記の対処でも不可の場合は以下になるかと思います。

・設定ファイル中のRESET_ON_SUCCESS = yesでの対処
・/var/log/secureに関する対処
・denyhostsの再インストール


※denyhostsの再インストール方法

yum remove denyhosts


rm /user/share/denyhosts


hosts.denyを開き、許可したいIPアドレスを削除


mv /var/log/secure /var/log/secure-old


touch /var/log/secure


chmod 600 /var/log/secure


systemctl restart rsyslog


yum install denyhosts


systemctl restart denyhosts


※restartすると/user/share/denyhostsが作成されます。




(g) SSH接続をパスワード認証から公開鍵認証へ変更


CentOS5でのSSH設定(公開鍵認証方式)は以下のページに記載しました。


基本的には接続元(Windows)でキーペアを作成し、公開鍵を接続先(ServerMans@VPS
CentOS7)へ渡す方法のほうが推奨されるよう(秘密鍵を渡すのはリスクが伴なうため)ですが
今回は敢えて接続先でキーペアを作成し、接続元へ秘密鍵を渡す手順で行ないます。



■sshd_configの設定変更

rootにて操作しました。


vi /etc/ssh/sshd_config


前項の変更点に加え以下の2点を編集しました。

パスワードでのログインは拒否
PasswordAuthentication yes

PasswordAuthentication no

へ変更しました。


公開鍵認証方式を使用する
#PubkeyAuthentication yes

PubkeyAuthentication yes

へ変更しました。


編集後、SSHサービスを再起動します。

systemctl restart sshd

または

service sshd restart


現在パスワード認証でSSH接続しているTeraTermのウィンドウは最終的に
公開鍵認証方式でのSSH接続が完了する迄は開いたままにしておきます。



■公開鍵/秘密鍵ペアの作成


ユーザーを一般ユーザーへ切り替えて操作しました。

su username


公開鍵/秘密鍵のペアを作成します。


[username@dti-vps-srv94 root]$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.


ホームディレクトリに.sshディレクトリが作成され、そこに2つの鍵ファイルが
作成されます。パスフレーズは1〜4文字では弾かれるようです。


2つのファイルが作成されたことを確認します。
「id_rsa」が秘密鍵、「id_rsa.pub」が公開鍵です。


[username@dti-vps-srv94 .ssh]$ ls
id_rsa
id_rsa.pub



■公開鍵を公開鍵リストに追加


「id_rsa.pub」の内容を「authorized_keys」という名前の新規ファイルへ入れこみます。
(=生成した公開鍵を公開鍵リストに追加します。)


touch /home/username/.ssh/authorized_keys
cat /home/username/.ssh/id_rsa.pub >> /home/username/.ssh/authorized_keys


※「authorized_keys」には複数の公開鍵の内容を入れられるため
今後追記することも想定してか、初回から「>>」を使用するのが一般的のようです。


※RSA公開鍵を使用する場合は、RSA公開鍵の内容を 「authorized_keys」に入れ、
DSA公開鍵を使用する場合は、DSA公開鍵の内容を「authorized_keys2」 に入れます。


「authorized_keys」のパーミッションを600に設定します。

[user1@centos52 ~]$ chmod 600 .ssh/authorized_keys



■秘密鍵を接続先(CentOS)から接続元(Windows)へ渡す。


「id_rsa」ファイルをWindowsへコピーします。
サーバが近くにあるオンプレミス等の環境で有ればネットワークを経由せずに
記憶媒体で送る方が安全ではあります。今回は現在開いてるTeraTermの
SSH接続ウィンドウで「id_rsa」ファイルをコピーしました。


「ファイル」→「SSH SCP」からid_rsaを受信します。




※現在開いてるTeraTermではなく、新しいSSH接続ウィンドウでファイルコピーをする場合

一時的にvi /etc/ssh/sshd_configで先ほど設定変更した箇所を
「パスワードでのログインは許可」へ戻します。

PasswordAuthentication yes


そしてid_rsaをWindowsへコピーします。
コピー後、PasswordAuthentication noへ戻します。


コピーし終わったら接続先(CentOS SSHサーバ)内の「id_rsa」、「id_rsa.pub」ともに
流用しないのであれば削除で良いかと思います。



■Windowsから公開鍵認証方式にてSSH接続


TeraTermにてログインします。




キーを作成したユーザー名、作成した際のパスフレーズ、RSA鍵の場所を
指定し「OK」をクリックします。




ログイン出来ました。



TeraTermマクロで実施するならば以下です。
ServersMan@VPSでのSSHの初期ポートは3843です。
このマクロファイルは自分しか使えないように安全に管理しましょう。


※改行されていますが、正しくは3行です。

connect '接続先IPアドレス:ポート番号 /ssh /2 /auth=publickey /user=ユーザ名 /passwd=パスフレーズ /keyfile="C:\id_rsa"'


wait '$ '


sendln 'コマンド'





↓現在、この467円のServersManのVPSを使用しています。
サーバを色々操作できてこの安さは凄いと思います。
色々なサーバ(メール、DNS等)を作りましたが、結構快適です。