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。不正アクセスとか他人事と思ってたけど、サーバーを管理する上で上記のセキュリティ対策は必須だと強く考え直した。