Linux VPSの基本的なセキュリティ設定
HOST1FREEの無料VPSは、アカウント開設時にOSが起動した状態になっています。素の状態で放っておくと危険なので、早めにセキュリティ設定をしておきましょう。
ここでは、私がCentOS 6で設定したセキュリティ関連の設定を紹介します。
CentOS 6のセキュリティ設定
sendmailの無効化
sendmailを使用しない場合、無効化しておきます。
# chkconfig --list sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# chkconfig sendmail off
# chkconfig --list sendmail
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# service sendmail stop
パッケージのアップデート
アップデート前に、サーバが正常に再起動することを確認しておきます。
# shutdown -r now
パッケージをアップデートし、再度正常に再起動することを確認します。
# yum check-update
# yum update -y
# shutdown -r now
ユーザ作成
通常作業用のユーザを作成し、パスワードを設定します。
# useradd <ユーザ名>
# passwd <ユーザ名>
SSHの公開鍵認証設定
SSHのポート番号の変更と公開鍵認証の設定を行います。パスワード認証は無効化しておきます。(シリアルコンソールが使用できない環境では、SSHの設定は慎重に行いましょう。)
# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# vim /etc/ssh/sshd_config
#PasswordAuthentication yes
~中略~
Port <ポート番号>
PermitRootLogin yes
AllowUsers root <ユーザ名>
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no
SSHクライアントにPuTTYを使用する場合、認証用の公開鍵・秘密鍵の生成方法は「さくらのVPS を使いはじめる| アカベコマイリ」のページが参考になります。
おおまかな手順は以下のとおりです。
- puttygen.exe でroot用と通常ユーザ用の秘密鍵(.ppk)/公開鍵(.pub)を作成
※なお、公開鍵は保存ボタンを使用せず、表示内容を一行でコピペする - rootと通常ユーザに ~/.ssh ディレクトリを作成し、パーミッションを700に設定
- rootと通常ユーザに各公開鍵を ~/.ssh/authorized_keys の名前でアップロードし、パーミッションを600に設定
SSHのサービスを再起動後、PuTTYからポート番号および「接続」→「SSH」→「認証」で秘密鍵を指定し、正しくログインできることを確認します。
# service sshd restart
ファイアウォールの設定
使用するポート以外は接続を受け付けないよう、iptablesの設定を行います。
# vim /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
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport <sshポート番号> -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# service iptables restart
# service iptables status
sudoの設定
通常作業用のユーザで、一時的にroot権限でコマンドを実行できるように、sudoの設定を行います。
#visudo
<ユーザ名> ALL=(ALL) ALL
おわりに
セキュリティに関する設定は以上です。なお、ここでの内容は完全な安全性を保証するものではないので、参考程度としてください。
おかしな点などあれば指摘してもらえるとありがたいです。
次回はzsh、tmux、vimなどの環境設定について紹介します。
VPSセットアップ関連記事
- 無料VPS HOST1FREEの使い方
- Linux VPSの基本的なセキュリティ設定
- zsh, tmux, vimで構築する快適なCUI環境 1/3 「zsh」編
- zsh, tmux, vimで構築する快適なCUI環境 2/3 「tmux」編
- zsh, tmux, vimで構築する快適なCUI環境 3/3 「Vim」編
- PuTTY設定覚え書き
- WindowsのCygwin環境でmoshを使ってみた