さくらのVPS を使いはじめる 2 – sudo と SSH ポート変更

2010年9月12日 15 開発 , , ,

さくらのVPS への作業メモ 2。今回は sudo 設定、SSH のポート変更をおこなう。

もくじ

sudo を設定する

前回は root 権限が必要なコマンドなどは、su で root になってからおこなっていたが、root は万能なので、思いがけず重要なファイルやディレクトリを破壊する危険性がある。よって、コマンド単位で root 権限を与えるために sudo を利用する。

まずは sudo がインストールされていることを確認する。

$ yum list installed | grep sudo
sudo.x86_64    1.7.2p1-7.el5_5    installed

インストールされているので、wheel グループの設定をおこなう。wheel は root 権限を得られるユーザー グループである。これは usermod コマンドで設定できるのだが、root 権限が必要なので以下のように実行する。

$ su -
Password:
# usermod -G wheel XXXX

XXXX の部分がユーザー名になる。これで XXXX は wheel に属するようになったはずだが、本当にそうなっているのかを id コマンドで確認しておく。wheel に属しているならば、下記のように group へ 10(weel) という表記が加わる。

# id XXXX
uid=500(XXXX) gid=500(XXXX) groups=500(XXXX),10(wheel)

次は、wheel グループに属するユーザへ、sudo を許可する。root になっている状態で visudo コマンドを実行する。

# visudo

すると sudo の設定ファイルを編集するために vi が起動される。その中には、wheel の実行権限がコメントアウトされているので、

## Allows people in group wheel to run all commands
# %wheel  ALL=(ALL)       ALL

以下のようにそれを解除する。

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

変更したら Esc キーを押してコマンドモードに戻り、:wq とタイプして Enter キーを押す。これで設定ファイルへの変更が保存される。これで sudo が利用できるようになった。

パスを通す

sudo を通して実行するプログラムは、/usr/sbin/usr/local/sbin に置かれていることが多いのだが、初期状態の一般ユーザーではこれらのパスが通っていない。そのためコマンドを呼び出すときにフルパスで指定しなくてはならず面倒なので、パスを通す。

ユーザーの HOME に .bash_profile というファイルが置かれているはずなので、それを開いて以下のようにパス設定を加えて保存する。背景色がハイライトされている部分が追加分である。

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
PATH=$PATH:/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/usr/local/sbin

保存したら再ログインするか、以下のコマンドで反映する。

$ source ~/.bash_profile

SSH のポート変更

これまで SSH の接続にはポート 22 番を使用してきたが、これは一般的な SSH のポートとしてよく知られているため、そのままにしておくと攻撃対象になる。攻撃者は 22 番が空いていることがわかると、ユーザーとパスワードを総当たりで侵入を試みるので、初歩的な対処としてポート番号を変更する。

以下のコマンドで sshd ( SSH デーモン ) の設定ファイルを開く。

$ sudo vi /etc/ssh/sshd_config

/etc/ssh の直下には、今回の編集対象となる sshd_config とよく似た ssh_config というファイルがあるので、間違わないように注意する。正しいものは sshd_config である。恥ずかしながら私は間違えて、あれれ、なんかダメだぞ、という状態に陥った。

ファイルを開くと Port 22 という設定があるので、これをコメントアウトして適当な数値を設定する。値は 0 ~ 65535 を指定できる。解放されているポートの検索を早々に諦めてもらうために、ある程度、大きな数値にしておくとよい。

#       $OpenBSD: sshd_config,v 1.73 2005/12/06 22:38:28 reyk Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.

#Port 22
Port XXXXXX

XXXXX の部分に数値を入れる。設定をおこないファイルを保存したら、sshd を再起動する。成功すれば、以下のように OK と表示される。

$ sudo /etc/rc.d/init.d/sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

ここまでの設定が適切に反映されているならば、TeraTerm や WinSCP でポート 22 番を指定して SSH 接続するとエラーになるはずである。その場合は、新しいポート番号を指定することで、従来どおり接続できる。

…iptables の設定についても書きたかったのだが、時間がないので今回はここまで。


TRACKBACKS

COMMENTS

  • kakyoin
    2011年7月15日 6:08 AM

    viの操作が解らず苦戦しました。

    viエディター操作メモ
    http://bit.ly/qAepX8

  • kakyoin
    2011年7月27日 4:59 AM

    .bash_profile にパスを追加する際
    記事からコピペでパスを貼り付けたところ
    パスが通りませんでした。
    改行箇所を手打ちで修正したところパスが通りました。
    どうやら記事中の改行コードに問題があるようです。

  • 2011年7月27日 7:54 AM

    @kakyoin
    おそらく原因は、ソースの表示に使用している WordPress の SyntaxHighlighter が、空行によけいな半角スペースを入れるためだと思われます。iptables の設定ファイルでも、同様の問題が発生しています。

    この記事を書いた時点の SyntaxHighlighter では大丈夫だったのですが、現行のものは空行問題が起きます。とはいえ、ハイライト表示には便利なプラグインであるのと、バグとして認識されているようなので、修正を待ちたいと思います。

  • 2011年12月20日 3:05 AM

    ありがとうございます。なんとかこのページもクリアしました。