セキュリティ対策1. ssh接続のポート番号を変更する

2013年2月6日

雨ですね。雪ですね。
先週末は4月並みの暖かさだったのに、なんなんでしょうこの気温差は。

これをご覧になっている皆様にサトからのお願いです。
これはチュートリアルではなくてド素人の作業ログなので、間違いがあったら是非指摘してください。

SaaSesマンは複数名によって構成される架空人物なので(?)、きっと私も反応します。

OsukiniサーバーAirでWordPress!目次

1. 会員登録と申し込み
2. サーバーに接続する
3. セキュリティ対策1. ssh接続のポート番号を変更する
4. セキュリティ対策2. 公開鍵認証でssh接続をする
5. WordPressインストール事前準備1. Apacheの設定
6. WordPressインストール事前準備2. PHPとMySQLの設定
7. 独自ドメインを設定する
8. WordPressをインストールする
9. WordPressの基本設定をする

ssh接続のポート番号を変更する

sshのポート番号はデフォルト22番で、これは一般的なポート番号として知られているため、そのままにしておくと攻撃者に見つかる可能性が高まります。
22番ポートが空いていることがわかると、攻撃者は適当なユーザー名やパスワードで手当たり次第に接続を試み、侵入してきます。だそうです。

それはいかん!
ということでポート番号を変更しましょう。
SaaSesサポートセンターの下記の記事の手順通りに行ってみます。
SaaSesサポートセンター » ssh接続ポート番号の変更について

22番から南蛮じゃない何番に変更するか。
値は0~65535の間で、他のサービスとかぶらなければ何でも良いようです。
主なサービスに使われるポート番号の一覧表があったので参照し、「Unassigned」になっている番号から選びました。
今回は10022番で。
Service Name and Transport Protocol Port Number Registry (ページ重いです)

スーパーユーザーになる

名前からして強そう。
今までは一般ユーザーとしてログインしていたので、ここで全ての権限を持つスーパーユーザーに切り替えます。ターミナルの「$ 」に続いて「su」コマンドを入力し、Enterキーを押します。
[ユーザー名@ホスト名 ~]$ su
パスワードを聞かれるので入力し、Enter。設定報告書の「基本仕様」にあるRootパスワードです。
なんで急に日本語表示になったんだろう。
パスワード:
「$」が「#」に変わりました。
[root@ホスト名 ユーザー名]#

iptablesを編集する

「/etc/sysconfig/」ディレクトリの中にあるiptablesというファイルを編集したいので、viエディタを使います。ターミナルの中でテキストエディタを使う、ということでしょうか。
「vi」コマンドで起動します。
# vi /etc/sysconfig/iptables
iptablesの中身が出てきました。
# Generated by iptables-save v1.4.7 on Mon Jan 28 15:11:56 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Mon Jan 28 15:11:56 2013
10022番ポートを追加したいので、「:OUTPUT ACCEPT [0:0]」の次に空白行を追加し、「-A INPUT -p tcp -m tcp –dport 10022 -j ACCEPT」と入力します。
「」などで検索して調べてみると沢山出てくるのですが、とりあえず空白行を追加するときは「o」キーらしいので、「:OUTPUT~」の行までカーソルを移動させて「o」。
すると画面の下にこんな文字が出てきました。
-- INSERT --
インサートモード(文字入力モード)に切り替わったようです。
入力が終わった状態がこれ。上下省いていますが。
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
インサートモードを終了させるため「esc」キーを押します。
編集したファイルを保存するのは「:w」。画面の下に入力されると思うのでEnter。viエディタ終了は「:q」。

iptablesを再起動する

編集したファイルはsysconfigの中だったのに、なぜinit.dというものが出てきたのかよくわからないけど、寄り道しだしたら終わらない気がするので。
# /etc/init.d/iptables restart
OK、OK、OKと沢山出てきました。再起動に成功したようです。

sshdを編集する

今度は「/etc/ssh/」ディレクトリの中にあるsshd_configというファイルを編集します。
先ほどと同じようにviエディタでファイルを開いて…。
$ vi /etc/ssh/sshd_config
長めの文字が出てきましたが、ちょっと下に下がったところに「#Port 22」と書かれた行があるので、oキーで空白行を追加して、10022番ポートを追加します。
#Port 22
port 10022
最初、上の行にならって「#Port 10022」って書いて失敗しました(笑)。#はいらないのね…。
入力が終わったら:wで保存して:qで終了。「:wq」で保存&終了を1度にできるようですが、念のため見直したいのでσ(^_^;)

sshdを再起動する

iptablesの時と同じように再起動します。
# /etc/init.d/sshd restart
問題なく再起動が完了しました。
sshd を停止中:                              [ OK ]
sshd を起動中:                              [ OK ]

新しいポート番号でのssh接続を確認する

今開いている接続は切らずにそのままにしておいて、新規ウインドウで新しく接続をしてみます。
もし今の接続を切ってしまった後、設定が上手くいっていなくて新規接続ができなくなったら大変なので。
ターミナルでssh接続をするとき、デフォルトでは22番ポートを見にいっているようなので、10022番に指定します。
$ ssh ユーザー名@IPアドレス -p 10022
10022番ポートで接続を試みるのは初めてなので、接続してもいいですかーという質問が再度。yesと入力します。
The authenticity of host '[IPアドレス]:10022 ([IPアドレス]:10022)' can't be established.
RSA key fingerprint is **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**.
Are you sure you want to continue connecting (yes/no)? yes
パスワードは設定報告書の一般ユーザー(rootじゃないほう)のパスを。
ユーザー名@IPアドレス's password:
接続できた!
Last login: Mon Feb 5 10:48:15 2013 from xxx.xxx.xxx.xxx
[ユーザー名@ホスト名 ~]$

22番ポートから接続できないようにする

iptablesのファイルに残っている22番ポートの記述をコメントアウトしましょう。
もう1度スーパーユーザーに切り替えて、viエディタでiptablesファイルを編集します。
$ su
# vi /etc/sysconfig/iptables
コメントアウト(機能しなくすること)するには、その記述の前に「# 」を追加。
-A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT
# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
これで:wで上書き保存、:qで終了。
新規ウインドウに「$ ssh ユーザー名@IPアドレス」と入力してみて、22番ポートから接続できなくなっていれば成功!

さて接続を解除しよう。1つめのexitでスーパーユーザーから一般ユーザーへ、2つめのexitでログアウト。
[root@ホスト名 ユーザー名]# exit
exit
[ユーザー名@ホスト名 ~]$ exit

会社のイラレで遊んじゃいけません。


——————–

ちなみにページトップの写真は、社内の人に借りた本です。
O’Reilly Japan – UNIXクイックリファレンス
viエディタのページ。