Linuxサーバパーフェクトセキュリティ 阿部ひろき(ソフトバンクパブリッシング)
1.セキュリティ監査の基本
(1)tracerouteによる経路確認
・デフォルトではUDPパケット送信なので、ブロックされる場合がある。
その時は-lオプションをつけてICMPエコーリクエストで確認する。
・既定では3回試行するため、応答時間は3つ表示される。
(2)nslookupによるクエリ
・引数なしで起動し、対話モードで入り、set allで設定項目を確認する。
・ドメイン配下のサーバ(例えばWebサーバ)の確認を行う。
domain=以降にある内容(デフォルトドメイン)の入力は不要。
通常wwwと入力するとWebサーバのIPアドレスが確認できる。
・ls -d (デフォルトドメイン)でドメイン情報一覧を取得する。
・以下のコマンドでbindのバージョンを確認する。
set type=TXT
set class=CHAOS
version.bind
(3)フットプリンティングについて
・(1)、(2)以外の手法として以下のWhois(JPNIC Whois Gateway)から情報入手する。
http://whois.nic.ad.jp/cgi-bin/whois_gw
(4)psコマンドでサービス確認
・プロセスを階層表示するにはfより-Hオプションが良い。(例えばps ax -Hで確認)
PIDが1のinitプロセスからの階層表示が確認できる。
(5)netstatコマンドでポート確認
・netstat -rで経路情報も確認できる。
・サーバの状態を確認するには-apeオプションが最適(Unixの場合)。
2.インターネット共通のセキュリティ
(1)Telnetの制限
・ログインメッセージの制御
/etc/issue.netにあるウェルカム・メッセージ(OS名やバージョン名)をコメントアウトする。
・ポートの変更
/etc/servicesの既定の23/tcpを変更(例えば1023/tcp)
接続する場合、ポート番号の指定が必要となる(telnet IPアドレス ポート番号)。
・rootログインの制限
/etc/securetty記述の端末はrootでログインできる。
ttyp0〜3はtelnet端末であるため、ログインさせたくなければ削除する。
このとき、/etc/pam.d/loginに以下の行が有効であることも確認する。
auth required /lib/security/pam_securetty.so
・rootになれるユーザを制限する。
以下の通り設定して、wheelグループユーザのみsuコマンド可能とする。
○/etc/groupのwheel行に指定ユーザ追加
○/etc/pam.d/suに以下のように記述
auth required /lib/security/pam_wheel.so use_uid group=wheel
(2)サーバアプリケーションの導入
・MD5によるチェックサムで整合性を確認する
配付元であらかじめ用意されたMD5チェックサム(例えばapache.tar.gz.md5ファイル)の内容と
ダウンロードファイルをmd5sumコマンドでチェックしたMD5チェックサムの内容を比較する。
3.Webサーバのセキュリティ
(1)Apacheのセキュリティの基本
・デフォルトユーザ/グループであるnobodyでログインできない設定とする。
/etc/passwdのnobodyの行に/sbin/nologin追加
・nobodyがsuからrootになれない設定とする。
(rootになれるグループを設定し、そこにnobodyは含めない。)
・Webブラウザにインデックスを表示させないようにする。
(=ドキュメントルートディレクトリの読み取り権限を制御する。)
chmod 311 /usr/local/apache/htdocs
これによりファイル名指定のないアクセスがあると、Webブラウザに「Forbidden」と表示される。
・httpヘッダ情報を制限する。
以下のようにディレクティブを変更する。
ServerSignature Off
ServerTokens ProductOnly
・エラーページを変更する。
以下のようなディレクティブを追加する。
ErrorDocument ステータスコード アクション
アクションに直接メッセージ記述、表示ファイル名指定などして設定する。
もしくは別のURLにリダイレクトさせる事も可能。
4.FTPサーバのセキュリティ
(1)/etc/ftpaccessで設定する。
・認証試行回数(loginfails:既定値5)
・コマンド制限(コマンド名 [yes|no] タイプ)
タイプにno guest、no anonymousとして制限する。
・ログインメッセージ制御(greeting terseあるいはtext 指定したメッセージ)
・ファイルダウンロード制限(noretrieve 指定ファイル名)
・ファイルアップロード制限(upload 指定ディレクトリ * no)
・端末接続制限(deny 接続元アドレス メッセージファイル名)
(2)etc/ftpusersで設定する。
ユーザ制限(拒否アカウント記述)
(3)etc/ftphostsで設定する。
接続元での接続制限
5.メールサーバのセキュリティ
(1)スパムメールについて
・不正中継を許可しているメールサーバデータベース
http://www.ordb.org/
6.DNSサーバのセキュリティ
(1)DNSサーバに許可するのは以下の2つのみ。
・ネットワーク内部からドメイン検索要求を受け、上位のDNSサーバに問合せ
・他のDNSサーバから問合せを受けた時に必要なゾーン情報を提供
(2)ゾーン転送はセカンダリサーバのみとする。
allow-transfer {セカンダリサーバIPアドレス; localhost; }
(3)問合せ作業を行うのはネットワーク内部とローカルホストだけとする。
allow-query{192.168.0.0/24; localhost; }
(4)再帰検索はネットワーク内部とローカルホストだけとする。
allow-recursion{192.168.0.0/24; localhost; }
7.セキュリティ情報の信頼性
(1)米国の非営利団体MITRECorp.運営のCVE(Common Vulnerabilities&Exposures)
上記サイトが決定した脆弱性の名前や詳細が業界標準となる。
IDは
・CVE-YYYY-XXXX
・CAN-YYYY-XXXX
の何れかでCVEが脆弱性として認定、CANが脆弱性の可能性有り(Candidates)
※以下の各ツールについては割愛
nmap(ポートスキャン)
tcpdump(ネットワークトラフィック監視)
iptables(ルーティング)
tcp wrapper(サービス接続制御)
open ssh(暗号通信)
sftp(暗号化ftp)
sendmail(SMTP)
qpopper(POP)
snort(IDSツール)
swatch(ファイル監視)
tripwire(ファイル整合性検知)