最低限やっておくべきセキュリティ設計(OS編)
はじめに
サーバを立てる際に、セキュリティの観点から最低限やっておくべき設定みたいなものがあまりまとめられていないなと思い、エントリーしようと思いました。
詳細な設定方法については記載しません。あくまでも設計時に考慮すべき項目として列挙していきます。詳細な設定方法は別途調べてください。
今回まとめたもの以外にも、これ設定するべきだ、というものがありましたら、どしどしコメントください。追加していければなと思います。
また、今回は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
Author And Source
この問題について(最低限やっておくべきセキュリティ設計(OS編)), 我々は、より多くの情報をここで見つけました https://qiita.com/hirofumikubo/items/128bf013062d3e27c3cf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .