INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

CentOS 6.3(64bit)のセキュリティ対策

借りているVPSについて一旦はセキュリティ対策したもののクリーンインストールしたくなったので手順をメモしとく。手順は以下を参考にさせて頂いた。


1. 一般ユーザーの作成

ユーザー作るたびにグループが増えるのも嫌なのでプライマリグループは最初からあるusersにしておく。
またsudoコマンドを使用するので補助グループにwheelを指定しておく。

$ useradd [ユーザー名] -g users -G wheel
$ passwd [ユーザー名]
ユーザー [ユーザー名] のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました


wheelグループのユーザーがsudoを実行できるように/etc/sudoersを編集する。

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


sshログインをパスワードから公開鍵認証に変更するため公開鍵を保存するディレクトリを作成し、ssh-keygenなどで作成した公開鍵ファイル(id_rsa.pub)を.sshにauthorized_keysとして保存する

$ su - [ユーザー名]
$ mkdir .ssh
$ chmod 700 .ssh
$ vi .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys


2. sshの設定変更

  • rootのsshログイン無効
  • 認証をパスワードから公開鍵認証に変更

のため/etc/ssh/sshd_configを修正する

$ cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
$ vi /etc/ssh/sshd_config
...
# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
...
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no
...


sshdを再起動する

sudo service sshd restart


4. ファイアウォールの設定

CentOS - 立ち上げ直後のiptablesを設定する。 - Qiitaを参考に/etc/sysconfig/iptablesを作成しiptablesを起動する。 VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話

おまじないとして必要

となっている部分の説明がされているので分かりやすい。

$ sudo vi /etc/sysconfig/iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

COMMIT
$ sudo services iptables start


5. logwatchのインストール

ログを監視するためにlogwatchをインストールする。

$ sudo yum install logwatch


監視結果をメールで確認するためにメールアドレスを設定する。

$ sudo cp -p /etc/logwatch/conf/logwatch.conf /etc/logwatch/conf/logwatch.conf.org
$ sudo vi /etc/logwatch/conf/logwatch.conf
# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)
MailTo = [メールアドレス]


6. denyhostsのインストール

sshのポートを変更しない場合、不正アクセスが毎日絶えない。denyhostsは一定回数以上、不正にアクセスしたIPを自動的に/etc/hosts.denyに追加してくれるのでインストールしておく。

$ sudo yum install denyhosts
$ sudo chkconfig denyhosts on
$ sudo service denyhosts start



約1ヶ月間でhosts.denyに登録されたIPの数は38。不正アクセスとか他人事と思ってたけど、サーバーを管理する上で上記のセキュリティ対策は必須だと強く考え直した。