スポンサーサイト

-------- --:--:-- --

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【環境構築】サーバのセキュリティ設定

2011-12-09 00:25:32 Fri

サーバのセキュリティ設定を少しずつやっていきます。

■ssh接続の設定


次の3つを行います。
・ssh接続時、rootでのログイン禁止
・パスワード認証の禁止
・特定ユーザのみに接続許可

まずは、sshの接続でrootでの接続を禁止します。

そのために、、、まずユーザを適当に追加してみます。


useradd centosadm


パスワードはmkpasswdでランダム文字列を生成すると良いです。
centosにはデフォルトではmkpasswdが入っていないので入れてからパスワードを設定します。

yum install expect
mkpasswd -l 16 -d 4 -c 6 -C 6 -s 0
passwd centosadm


http://nullpopopo.blogcube.info/2008/01/memo-centos.html
http://www.ksknet.net/linuxjq/mkpasswd.html

ユーザを追加したらrootでの接続を禁止します。


cd
cp /etc/ssh/sshd_config ./
vi /etc/ssh/sshd_config




#PermitRootLogin yes

PermitRootLogin no


設定を変更したらsshdを再起動。

/etc/rc.d/init.d/sshd restart


次にパスワード接続を禁止して公開鍵認証にします。
いきなりパスワード接続を禁止にはせずに、
先に公開鍵認証の設定を行なってからパスワード接続を禁止にします。

私はWindows環境からteratermもしくはpuTTYでssh接続します。
Windows環境でpuTTYを使用してssh用の公開鍵と秘密鍵を作成します。

puTTYのDLはこちらから。
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

puTTYの使い方は解説サイトがいくつもありますのでそちらで。
http://www-net.nifs.ac.jp/lnas/manual/man-sshrsa.html
簡単に手順をメモすると、
1.PUTTYGEN.EXEよりGenerateボタンを押下
2.アプリ内のKeyでマウスを動かす(マウス位置で乱数を生成しているらしいです。日付とかも加味してるかな)
3.Key passphraseとConfirm passphraseを入力
4.Save public_key を出力
5.Save private key (秘密鍵)を出力
6.Keyで表示されている文字列をテキストファイル(公開鍵)に出力
→これを linux サーバの ~/.ssh/authorized_keys とする
7.5で出力したppkをLoadより読み込む
8.メニューのConversionsでOpenSSH key(秘密鍵)を出力
→これが teraterm や mac のコンソールで ssh接続する際の秘密鍵
です。

この公開鍵をサーバに持っていくのですが、ここでサーバ側で
sshのログインユーザ(上記までならcentosadm)にユーザを切り替えます。
そしてcdでホームディレクトリへ移動します。
ここに.sshディレクトリを作成します。

cd
mkdir .ssh
ls -la


ここにPUTTYGEN.EXEで作成した公開鍵(6で保存したファイル!4ではない)をもっていき、ファイル名をauthorized_keysにし、さらに権限を変更します。
公開鍵を間違えているとPUTTY.EXEなどで接続する際に次のエラーが出ます。

Server refused our key


もし別問題であった場合は、/var/log/secureにssh接続時のログが出力されるようなのでtail -f などで参照してください。
また、権限を変更する意味は、鍵認証の鍵が変更されていることを認証プロセスが検知するためなようです。
ディレクトリ/ファイルの所有者以外は書き込み権限がないようにする権限設定で下記手順はこれを考慮しています。

cd
cd .ssh
mv putty.pub authorized_keys
chmod 600 authorized_keys
ls -la
cd ..
chmod 755 .ssh
ls -la


なお、この設定はsshd_configの次の場所によって定義されます。

vi /etc/ssh/sshd_config
・・・
#AuthorizedKeysFile .ssh/authorized_keys
・・・


これらが終わったらPUTTY.EXEを起動して
1.Session のHOSTNAMEに各IPアドレスもしくは名前
2.Connection > Data の Auto-login username を指定(ここではcentosadm)
3.Connection > SSH > Auth のPrivate key file for authentication:より
 PUTTYGEN.EXEで作成した5の秘密鍵を指定
4.Session に戻り Saved Sessions にセッション名を指定してSave
まで行いOpen、うまく接続できれば成功。

公開鍵認証でログインできるようになったのでsshのパスワード認証を禁止します。


vi /etc/ssh/sshd_config



#PasswordAuthentication yes

PasswordAuthentication no


これでパスワード認証が禁止されました。

公開鍵認証でsshでログインするcentosadm以外はssh接続できないように設定します。

vi /etc/ssh/sshd_config


次に最下行に次を追加します。

AllowUsers centosadm



■サーバへの接続をsshのみに


・telnetやftp経由での接続を禁止
これはここそのままです。
http://www.turbolinux.com/products/server/11s/user_guide/tcpwrapperconf.html

vi /etc/hosts.deny



ALL:ALL



vi /etc/hosts.allow



ALL : 127.0.0.1
sshd : ALL



■suできるユーザを限定


suできるユーザを限定する、すなわちwheelグループに属しているアカウントのみがsuできる、ということのようです。

まずはcentosadmをwheelグループに所属させます。
1と2のいずれかで大丈夫です。

1./etc/groupをそのまま変更

vi /etc/group



wheel:x:10:root

wheel:x:10:root,centosadm



2.コマンド

usermod -G wheel centosadm


次にWHEELグループのユーザしかsuできないようにします。
http://d.hatena.ne.jp/hamaco/20080425/1209123632
/etc/pam.d/suのみの設定変更では他のユーザにsuできなくなってしまうようなので /etc/login.defs も変更しておく。

vi /etc/login.defs



SU_WHEEL_ONLY yes



vi /etc/pam.d/su



#auth required pam_wheel.so use_uid

auth required pam_wheel.so use_uid


これでひとまず少しはセキュアになった、がまだまだ…。

※teratermでsshログインする場合は「8.メニューのConversionsでOpenSSH key(秘密鍵)を出力」した秘密鍵を指定して下さい。
スポンサーサイト

⇒comment

Secret

名言集
全記事(数)表示
全タイトルを表示
ブログ内検索
Loading
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。