7
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

最低限やっておくべきセキュリティ設計(OS編)

Posted at

はじめに

サーバを立てる際に、セキュリティの観点から最低限やっておくべき設定みたいなものがあまりまとめられていないなと思い、エントリーしようと思いました。
詳細な設定方法については記載しません。あくまでも設計時に考慮すべき項目として列挙していきます。詳細な設定方法は別途調べてください。
今回まとめたもの以外にも、これ設定するべきだ、というものがありましたら、どしどしコメントください。追加していければなと思います。
また、今回はOS編ですが、ネットワーク編やWebサーバ(Apache,Nginx)編などもエントリーしていこうと思います。

環境

いったんCentOS6/7のみ

前提

Webサーバ以外のサーバ(AP,DB,batchなど)のセキュリティ設計を行う場合を想定しています。Webサーバなど外部からのアクセスを直接受けるサーバについては、別途Webサーバ編で書きます。

1. パッケージアップデート

サーバを立ててまずはじめに実施しておきたいのは、全パッケージのアップデートです。
古いバージョンのパッケージなどがあって、脆弱性を突かれないために、はじめにアップデートしておきます。

# yum -y update

2. iptables(firewalld)

CentOS6ではiptables、CentOS7ではfirewalldになっていますが、不要なポートが開いてしまっていないように設定します。また、ssh通信の制限などを行います。

[CentOS6の場合]

 # 設定ファイル編集
 vi /etc/sysconfig/iptables
 # iptablesサービスを再起動
 service iptables restart
 # 自動起動設定に追加
 chkconfig iptables on

正しく設定されているか、Nmapで確認する。

 nmap -p 1-10022 hostname

[CentOS7の場合]

 # 設定ファイル編集
 vi /etc/firewalld/services/*.xml
 # 設定再読み込み
 firewall-cmd --reload
 # firewalldサービスを再起動
 systemctl stop firewalld
 systemctl start firewalld

3. rootユーザのsshログイン禁止

rootユーザとは別にユーザを別途作成し、rootユーザはsshログインできないように設定します。rootユーザでsshログインできてしまうと、不正にログインされたときに何でもできてしまうので、禁止します。

 # 設定ファイル編集
 vi /etc/ssh/sshd_config
 # sshdサービスの再起動
 service sshd restart

4. ログインユーザ認証設定(公開鍵認証によるSSHログイン)

パスワード認証よりもよりセキュアな公開鍵認証にすることでセキュリティレベルを高めます。

5. SELinux

SELinuxとはアクセス制御する機能です。設定するとセキュリティレベルは上がりますが、アクセス制御の設計が複雑になるため、利用するかしないかは各プロジェクトの要件によるのかなと思います。

 # 設定ファイル編集
 vi /etc/sysconfig/selinux
 # 設定反映
 サーバ再起動
 # 設定反映の確認
 getenforce

6. SSHポート番号変更

[CentOS6の場合]

 # 設定ファイル編集
 vi /etc/ssh/sshd_config
 # sshdサービス再起動
 service sshd restart

[CentOS7の場合]

 # sshd設定ファイル編集
 vi /etc/ssh/sshd_config
 # firewalldの設定からssh削除
 firewall-cmd --permanent --remove-service=ssh
 # firewalldのデフォルト設定ファイルコピー
 cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-ポート番号.xml
 # firewalldの設定ファイル編集 
 vi /etc/firewalld/services/ssh-ポート番号.xml
 # firewalld設定追加
 firewall-cmd --permanent --add-service=ssh-ポート番号
 # firewalld設定反映
 firewall-cmd --reload

7. 不要なサービス停止

不要なサービスは停止しておき、脆弱性を突かれるリスクをなくしておきます。

[CentOS6の場合]

 # サービス一覧表示
 chkconfig --list
 # 不要なサービスを停止
 service 'サービス名' stop
 chkconfig 'サービス名' off

[CentOS7の場合]

 # サービス一覧表示
 stemctl list-unit-files -t service
 # 不要なサービスを停止
 systemctl stop 'サービス名'
 systemctl disable 'サービス名'

最後に

サーバ立てる際の最低限やっておくべきセキュリティの設定は以上となります。
Ansibleなど構成管理ツール管理、運用しているところとかは、このあたりをplyabookのテンプレートなどに設定しておくと便利ですね。

参考

Linuxサーバ構築標準教科書(Ver2.0.1)
http://www.lpi.or.jp/linuxtext/server.shtml
https://www.websec-room.com/2014/02/09/1822
http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html

7
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?