さくらのVPS設定[2]-CentOS基本設定

今回はセキリュティを中心にしたCentOS基本設定を行う。

主にというか、ほぼこちらの記事を元にさせていただき設定を行った。
はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ
そして補足的にコチラを参考にさせていただいた。
さくらのVPSを借りたら真っ先にやるべきssh設定
CentOSをサーバーとして活用するための基本的な設定

■ターミナルからのSSH接続
まず自宅のOSXからターミナルでVPSへこちらを参考にさせていただきつつ接続する。
01.さくらインターネットVPSを使ってみる。〜sshで接続してみる〜

$ ssh root@VPSのIPアドレス
root@VPSのIPアドレス's password: 
SAKURA Internet [Virtual Private Server SERVICE]
# ls -al

 
 
■ユーザー作成
root以外の作業ユーザーを作成しパスワードを設定する。

# adduser foo
# passwd foo
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
# exit

先程作成のユーザーでログイン出来るか確認する

$ ssh foo@VPSのIPアドレス
foo@VPSのIPアドレス's password: 
SAKURA Internet [Virtual Private Server SERVICE]
$ exit

無事にユーザー作成された。
 
 
■SSH のポート番号を変更
22番ポートのままだとロボットの攻撃対象になりやすいらしいので変更する。
sshd_configを開きPort 22をコメントアウト、別のポートを指定する。

参考
ターミナルでSSH (Mac OS X)

$nano /etc/ssh/sshd_config

#Port 22
Port 10022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

リスタート

$/etc/init.d/sshd restart
sshd を停止中:      [  OK  ]
sshd を起動中:      [  OK  ]

ポートのオプション -p 10022 でログイン確認する。

$ ssh -p 10022 root@VPSのIPアドレス
root@VPSのIPアドレス's password: 
SAKURA Internet [Virtual Private Server SERVICE]

無事にポートが変更された。
 
 
■公開認証鍵で SSH 接続
パスワード認証から、公開鍵認証のみでssh接続するように変更する。
ローカルのターミナルでキーペア(秘密鍵と公開鍵)を生成する。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/foo/.ssh/id_rsa): //何も入れずリターンした。
Enter passphrase (empty for no passphrase): //パスワード
Enter same passphrase again: //パスワード
Your identification has been saved in /Users/foo/.ssh/id_rsa.
Your public key has been saved in /Users/foo/.ssh/id_rsa.pub.

VPSサーバーへログインし.sshディレクトリを作成しておく。
このときrootではなく作成したユーザーでログインすること。
最初rootでログインしてしまい設定に失敗した。
ここから先はVPSサーバーにログインしたままにして、ローカルのターミナル作業が必要なときはもう一枚ウィンドウをたちあげて作業する。

$ ssh -p 10022 foo@VPSのIPアドレス
foo@VPSのIPアドレス's password: 
SAKURA Internet [Virtual Private Server SERVICE]
# ls -al
//.sshディレクトリはないので作成
# mkdir .ssh

ローカルのターミナルでVPSサーバーへ公開鍵を転送する。

$ scp -P 10022 ~/.ssh/id_rsa.pub foo@VPSのIPアドレス:~/.ssh/authorized_keys
foo@VPSのIPアドレス's password:
id_rsa.pub 100%  402     0.4KB/s   00:00

VPSサーバーのディレクトリと公開鍵のパーミッションを変更する。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

sshの設定(sshd_config)を変更して公開鍵でしかログインできないようにする。
PermitRootLoginをnoにしてrootでのログインを禁止する。
PasswordAuthenticationをnoにしてパスワードでのログインを禁止する。
PermitEmptyPasswordsをnoにして空パスワードでのログインを禁止する。

$ su
パスワード:
# nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no 
PermitEmptyPasswords no

sshdを再起動する。

# /etc/init.d/sshd restart
sshd を停止中:     [  OK  ]
sshd を起動中:     [  OK  ]

VPSにログインしたままのウィンドウは、そのままにして、もう一枚のウィンドウでログインのチェックをする。

rootでは入れないのを確認

$ ssh -p 10022 root@VPSのIPアドレス
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

認証鍵ユーザーでログイン出来るのを確認

$ ssh -p 10022 foo@VPSのIPアドレス
SAKURA Internet [Virtual Private Server SERVICE]

 
 
■ファイアーウォールを構築する
iptablesで公開ポートを設定する。
基本的には、WEBLEさんのと同じ

あとでnodeを入れるので3000を空けておく。
SSH 10022, HTTP 80, FTP 20, 21, SSL 443 Node 3000
改行のところにスペースが入るとダメなので要確認


# nano /etc/sysconfig/iptables
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH 10022, HTTP 80, FTP 20, 21, SSL 443,Node 3000
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443   -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000  -j ACCEPT


-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

iptablesを再起動し、設定反映されているか確認。

# /etc/rc.d/init.d/iptables restart
# iptables -L

 
 
■不要なデーモンをストップ
不要なデーモンを停止しパフォーマンスを調整する。
起動中のデーモンを調べる。

# chkconfig --list | grep 3:on
acpid          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
atd            	0:off	1:off	2:off	3:on	4:on	5:on	6:off
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ip6tables      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
irqbalance     	0:off	1:off	2:off	3:on	4:on	5:on	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpdate        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
postfix        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rsyslog        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sshd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sysstat        	0:off	1:on	2:on	3:on	4:on	5:on	6:off

CentOSをサーバーとして活用するための基本的な設定の4番の表と比べてみたがあまり停止するのも無さそうなのでこのままで行くこととした。
 
 
■sudo コマンドにユーザーを追加する
sudo で root権限が使えるように設定する。
visudoコマンドを実行し最後に行を追加して記述する。

# visudo
foo ALL=(ALL) ALL

 
 
■yumアップデート
最後にyumを最新状態にしておく。

yum update

 
 
これで基本設定は、とりあえず終わりにする。
これ以外は気がついた時に随時行うことにした。

Submit a Comment

Spam Protection by WP-SpamFree