
サーバに対する最小限の設定と監視
ウェブサーバ、ファイルサーバで踏み台、改ざん、不正アクセス、情報流出を防ぐための最小限の設定と監視
※注意
自サーバに業務上主要なシステムがなく、機密情報もないからといって、セキュリティ対策を怠ってはならない。
自サーバが「踏み台」にされ、他サーバへの攻撃に利用された場合、その責任が追求されます。
- 1. システムを最新の状態に保つ
- 2. 侵入を防ぐ
-
- 2.1. サーバの鍵のある場所に設置する。
- 2.2. パスワードは漏えいしないよう注意を払う。
- 2.3. もうログインしない古いユーザや不明なユーザは削除、もしくはシェルを与えない。
- 3. ネットワーク経由の進入を防ぐ
- 4. 情報を隠す
- 5. 安全な通信をおこなう
-
- 5.1. telnet、ftpは使わず、sshを使う。
- 5.2. 氏名やメールアドレスなどを入力して送信するフォームをウェブページ内に設置している場合は、SSLの利用、証明書の取得をおこなう。
- 6. 状況を把握する
1.1. パッケージの修正版で逐次システムを更新する。
自動更新にすべて頼るのではなく、パッケージ管理ツールを利用した定期的な更新作業が望ましい。
Red Hat Enterprise Linux 4以前
# up2date p(パッケージリストの更新) # up2date u(パッケージの更新)
Red Hat Enterprise Linux 5、CentOS、Fedoraなど
# yum check-update(パッケージリストの更新) # yum update(パッケージの更新)
Debian
# aptitude update(パッケージリストの更新) # aptitude upgrade(パッケージの更新)
2.3. もうログインしない古いユーザや不明なユーザは削除、もしくはシェルを与えない。
現在登録されているユーザを確認する。
# cat /etc/passwd
「:(コロン)」で区切られた一覧が表示される。先頭がユーザ名、末尾が利用するシェルを示す。
末尾がbash、cshなどになっているユーザのうち、不要、不信なユーザは削除する。
# userdel [削除したいユーザ名]
削除するのが不安ならば、ファイル/etc/passwdを編集して、削除したいユーザの行の末尾を「/dev/null」に書き換える。
3.1. 開いているサービスポートを確認し、不要なサービスポートは閉じる。
自ホストに向けてポートスキャンをおこなう。
# nmap [自ホストのIPアドレス]
「State」が「Open」になっている「Service」を確認して、不要なサービスは停止する。
# /etc/init.d/[サービス名]stop
3.2. やむなくポートを開ける場合は、アクセスを制限する。
SSHのアクセス制限は、ファイル/etc/hosts.denyに、
All;All
を追加し、ファイル/etc/hosts.allowに、
sshd:[接続を許可するIPアドレス]
を追加する。ウェブサービスの場合は、ファイルhttpd.confのdirectoryディレクティブの設定に追加する。
<Directory/> ----- Oreder deny,allow Deny from ALL Allow from[許可するIPアドレス] </Directory>
ファイルhttpd.confの編集後、ウェブサービスを再起動する。
#/etc/init.d/httpd restart
または
#/etc/init.d/apache restart
※注意 再起動しないと設定が反映されません。
3.3. rootがssh経由でログインできないようにする。
rootがネットワーク経由でログインできないように、ファイルsshd.confを編集する。
(RedHatのデフォルトはyes)
PermitRootLogin no
さらにsshd.confを編集して、空のパスワードのユーザの接続を拒否することもできる。
(RedHatのデフォルトはyes)
PermitEmptyPasswords no
編集後、SSHを再起動する。
# /etc/init.d/sshd restart
3.4. ウェブサービス(apache)を実行するユーザは、それ以外の権限をもたないようにする。
ファイルhttpd.confを確認して、ウェブサービスの実行ユーザ、グループがrootでないことを確認する。
User [ウェブサービス実行ユーザ名] Group [ウェブサービス実行グループ名]
通常いずれもapacheになっているが、rootになっている場合は編集して、
ウェブサービスを再起動する。ユーザapacheがシステムにない場合、新規にユーザを作成する。
※注意 再起動しないと設定が反映されません。
# useradd-r-u48-U-d/var/www-s/sbin/nologin apache
4.1. ウェブサービスのエラーページに、OS名やApacheのバージョンを表示させない。
ウェブページのエラーページに表示される項目を、ファイルhttpd.confを編集して変更する。
ServerTokens ProductOnly
変更後はウェブサービスを再起動する。
※注意 再起動しないと設定が反映されません。
4.2. ウェブの公開コンテンツを保存しているディレクトリに、不必要なファイルを置かない。
ウェブの公開コンテンツを保存しているディレクトリは、ファイルhttpd.conf内のDocumentRootで設定されている。
DocumentRoot [保存ディレクトリ名]
6.1. ユーザのログイン情報から、不可解なログインがないか確認する。
ログイン履歴を確認する。
# last(ログイン履歴を表示) # lastlog(ユーザが最後にログインした日時を表示)
6.2. 各種ログを開き、不自然なログが残されてないか確認する。
ファイル/etc/syslog.confで設定されている場所にシステムのログが残る。通常、以下のファイルにログが残る。
- /var/log/messages
- /var/log/secure
- /var/log/cron
また、ウェブサービスのログは、ファイルhttpd.conf内のErrorLog、CustomLogで設定されている。
6.3. ウェブの公開コンテンツを保存しているディレクトリ内のファイルの更新を確認する。
公開コンテンツの更新を確認する。
# find[4.2で確認したディレクトリ絶対パス]-mtime"-/"
前7日間に新規に作成された、または修正されたファイルの一覧が表示される。
