1.97k likes | 2.12k Views
OSS OS セキュリティ. 株式会社リナックスアカデミー http://www.linuxacademy.ne.jp. 本講座の項目 . サーバセキュリティ概論 ネットワークセキュリティ セキュアシェル セキュア OS 概論 SELinux の仕組みと機能(1) SELinux の仕組みと機能(2) (1/2). 本講座の項目 . SELinux 構築演習 Web 環境におけるセキュリティ Web 環境におけるセキュリティの実務 ログ管理システムの仕組み(1) ログ管理システムの仕組み(2) ログ管理システムの構築実務 (2/2).
E N D
OSS OSセキュリティ 株式会社リナックスアカデミー http://www.linuxacademy.ne.jp
本講座の項目 • サーバセキュリティ概論 • ネットワークセキュリティ • セキュアシェル • セキュアOS概論 • SELinuxの仕組みと機能(1) • SELinuxの仕組みと機能(2) • (1/2)
本講座の項目 • SELinux構築演習 • Web環境におけるセキュリティ • Web環境におけるセキュリティの実務 • ログ管理システムの仕組み(1) • ログ管理システムの仕組み(2) • ログ管理システムの構築実務 • (2/2)
1章 サーバセキュリティ概論 • サーバセキュリティ • Linuxにおけるネットワーク • chkconfigによるサービスの設定 • Kudzu
脅威の種類 • 侵入による脅威 • 情報漏洩 • 改ざん • バックドア • 踏み台 • サービス妨害 • DoS • 待ち伏せによる脅威 • トロイの木馬型 • 盗聴 • ソーシャルエンジニアリング
実際に起きた事例(1) • 楽器販売サイトからの情報流出 • 楽器をインターネット上で通信販売している会社のサーバから、過去に利用した利用者の情報が流出 • 流出規模は数万件 • SQLインジェクションといわれる、DBの操作を不正に行う処理 • 販売サイトのシステムにミスが存在 • 流出したデータにはクレジットカードの情報も存在
実際に起きた事例(2) • DoS 企業ネットワークを機能させなくする • ある企業のネットワーク部門に連絡、膨大な顧問料を要求 • 断ると、その企業のサーバに対して、多くのアクセスが発生。企業のサービス・ネットワークがダウン • 攻撃元は、顧問料を要求している人間
代表的な対策(1) • トロイの木馬 • アンチウイルスのソフトウエアによる駆除 • ソーシャルエンジニアリング • ワンタイムパスワード • セキュリティに対する教育 • ハードウエアトークン
代表的な対策(2) • DoS • ネットワークの監視 • Broute Force Attack • ネットワークの監視 • IDS
TCP/IPとネットワーク • Linuxでは、TCP/IPをベースとしたネットワークが動作 • loのループバックのインターフェース • ethXの主にNICが対象となるインターフェース
IPネットワーキング 実習(1) • IPアドレスを確認 • ifconfig -aでインターフェース一覧表示 • ifconfig eth0で、特定インターフェースの設定内容の表示
IPネットワーキング 実習(2) • netstat -rでルーティングテーブル表示 • 隣の生徒にIPアドレスを交換 • 教員がIPアドレスを板書 • ルータのIPアドレスを板書 • localhostにpingを打つ • 隣にpingを打つ • 教員マシンにpingを打つ • ルータにpingを打つ
ポートオープンとその確認(1) • TCP/IPの動作原理は、サーバの対象となるサービスのポートに対して、クライアントがアクセス 例: HTTPはTCP/80なので、WebサーバのTCP/80番へのアクセス • サーバは、常に対象となるサービスのポートをオープン状態で待機 • lsof等のコマンドで、待機状態を確認
ポートオープンとその確認 実習 • netstat –a • netstat –r • netstat –p • lsof これらを順に入力し動作確認
サーバプログラムとは • サーバ上で、常時稼動しているプログラム • クライアントからのリクエストに応じて、サーバプログラムが応答し、レスポンスが応答 • 主要なサービスは、1-1023=Well known portでポートオープン
サービスの起動と終了 • serviceコマンドを利用して、起動/終了 service XXXX start service XXXX stop で起動/終了が可能
ランレベル • Linuxが動作するときの、動作モードのことが「ランレベル」 • ランレベルごとに、違った動作環境を設定済 • ランレベルごとに動作するサービスを変更 • ランレベルは0-6, Sの8段階 • telinit Xでランレベルを変更
kudzuとは • システム起動時に実行されるハードウエア認識ツール • 新しいデバイスが加わった、既存のデバイスが取り出された、等の管理 • 起動時に新しいデバイスがあった場合、追加するかしないか等の判定
kudzuの設定 • kuzduの設定ファイル - /etc/sysconfig/hwconf - ハードウエアの情報が記述されている • 起動時のkudzuのメッセージを確認 - dmesgコマンド
1章のまとめ • ネットワークにおける脅威 • Linuxのネットワーク機能 • Linuxにおけるサーバ動作の原理 • サーバ機能の提供 • ランレベルとサーバの動作 • kudzuの説明の機能
2章 ネットワークセキュリティ • iptables • iptalesの仕組み • テーブルとチェイン • ターゲット • ルールの設定 • 実習 • 上級の設定
iptablesとは • パケットフィルタのツール • カーネルレベルに実装されているnetfilter • netfilterに対して制御のルールを指定するのがiptables(コマンド) • アクセス制限によるファイアウォール • パケット転送によるNATルータ等が実現 • パケットは、「チェイン」というところを通過
iptablesの仕組み1 • カーネルのモジュールとコマンドから成立 カーネルが受け取ったパケットを、 カーネル内部で処理 コマンドは、そのルールを与える ためのコマンド ユーザランド プログラム プログラム プログラム iptablesモジュール (netfilter) カーネル ハードウエア
iptablesの仕組み2 • ルールはチェインに対して設定 例: iptables -A INPUT -i eth0 –s 192.168.10.0/24 -p tcp --dport 80 -j DROP インターフェースeth0から入ってくる(=INPUTチェインを通過する)、 発信元アドレスが192.168.10.0/24で 宛先ポートがTCP/80であるパケットをDROPせよ、というルール
iptablesの仕組み3 • 否定に関する 例: iptables –A INPUT ! –s 192.168.20.0/24 –j DROP !は否定(〜ではない)を意味する。 従来の書式では、 iptables –A INPUT –s ! 192.168.20.0/24 –j DROP というように、!の位置が違っていた。 まだ出回っているiptablesの説明は、この古い形式で書かれている場合が多い。
テーブルとは? • 4つのテーブル「filter」「nat」「mangle」「raw」 • それぞれのテーブルに機能が存在 例: mangle・・・パケットの改変 filter・・・パケットのフィルタリング • それぞれのテーブルの中で利用できるチェイン
チェインとは? チェインは、ルールの集まりでできている 元々組み込まれているチェインがある チェインは独自に設定し、チェインに対してチェインを加えることができる チェインの中に記述されたルールは、ファーストマッチであるため、優先度の高いルールはチェインの中で前の方に書いておく必要がある
ターゲット • チェインに設定されたルールで、対象のパケットをターゲットに送る仕組み • ターゲット自身に機能があり、パケットを送ることで処理を • 全部で20以上あるが、有名なターゲットとして、ACCEPT, DROP, REJECT, MASQUERADE等が存在 例: iptables -A INPUT -i eth0 -s 192.168.10.0/24 -p tcp --dport 80 -j DROP 対象のパケットをDROPターゲットに送る(=落とす)。
ルールの設定 • チェインXXXに対してルールを設定する iptables -A XXX ルールの追加 iptables -D XXX ルールの削除 iptables -i ethX ルールをethXからパケットが入力されるときに適用 iptables -s X.X.X.X 発信元IPアドレスがX.X.X.Xであるパケットが対象。CIDR形式でも指定可能。 iptables -d XXX 送信先IPアドレスがX.X.X.Xであるパケットが対象。CIDR形式でも指定可能
実習1 方針 • SSHのアクセス制限を行います。 • 2人でペアになってください。 • 相手のIPアドレスを聞いてください。 • 自分のIPアドレスを相手に伝えてください。
実習2-1 アクセス制限 • ssh 相手のIPアドレス - アクセスできます。
実習2-2 アクセス制限 コマンド一覧 iptables –nvL iptables -A INPUT -i eth0 -s 相手のIPアドレス -j DROP iptables –nvL 相手のIPアドレスを発信元IPとするパケットで、eth0からパケットがくるものを、すべてDROPする。という意味。
実習3-1 アクセス制限後 • もう一度実行してください。 • ssh 相手のIPアドレス ・・・接続できないはずです。
実習3-2 アクセス制限後 コマンド一覧 • iptables –nvL • iptables –F • iptables –nvL すべてのアクセス制限を解除します。
実習4 カウンター確認する • 実験2〜3を再度行います。 iptables –nvL を入力しますが、実験2-2の終わりの出力と、実験3-2の終わりの出力を比較してください。 • 設定した条件にマッチした回数と、適用したパケットのバイト数が変わるはずです。
サーバの構成 • あるサーバを想定し、そのサーバのファイアウォールをiptablesで実現 • 対象とするサーバの構成: - Webサーバ - リモートからSSHアクセスによる操作が可能 - Apache-httpd, sshdが動作 - IPアドレスは192.168.10.100
サーバの特徴1 • 設定上の理念は2つ A「対象ホストが、ネットワーク的にどういう動きをするか完全把握する必要がある」 B「獅子身中の虫」 A「対象ホストが、ネットワーク的にどういう動きをするか完全把握する必要がある」 Apache-httpdが動作している⇒TCP/80がポートオープン sshdが動作している⇒TCP/22がポートオープン 他にオープンしているようであれば、それは停止→lsof等を使って、動いているプロセスと、ポートオープンの状況を調査
サーバの特徴2 • B「獅子身中の虫」 iptablesで設定できるファイアウォール/アクセス制限多くの場合: 「外部から自ホストへのアクセス制限をかける」 それ以外に: 「自ホストから外部へのアクセス制限もかける」 万が一乗っ取り等が発生した場合、他ホストへのアタックの防止
iptablesの設定1 • どちらの方針がよいか? 1. 「全パケット通過で、特定のパケットだけ制限する。」 2. 「全パケットを制限し、特定のパケットだけ通す」 1. vs 2.・・・もちろん2. • そのためのA「対象ホストが、ネットワーク的に・・・完全把握する」 • 実際の設定方法 まず全チェインに対するルール削除と、余分なチェインの削除 INPUT, OUTPUTのチェインのポリシーは「すべて通過させない」 ループバックは全部通す。
iptablesの設定2 • 自ホストTCP/80へのアクセスと、その応答の通信を許可。(HTTP) • 自ホストTCP/22へのアクセスと、その応答の通信を許可。(SSH) • 自ホストからUDP/53 TCP/53へのアクセスと、その応答の通信を許可。(DNS)
iptablesスクリプト表示 • 参考文献 「習うより慣れろ iptablesテンプレート集」 @IT 連載記事 http://www.atmarkit.co.jp/flinux/index/indexfiles/iptablesindex.html
2章のまとめ • iptablesの動作原理の説明 • iptablesのアクセス制限の実証 • iptablesでWebサーバの設定
3章 セキュアシェル • telnetサーバの構築 • OpenSSH • sshd_configの設定 • ブルートフォースアタック
telnetとは • TCP 23番ポートで通信 • 相手先のtelnetサーバと通信 • UNIXでリモートのマシンにログイン • 暗号化は(標準では)行われない • セキュリティ的に怖いので、最近は利用頻度が低い
telnetサーバとは • telnetのクライアントに対して応答 • telnetの通信は、ログインだけではない • ルータや様々な機器がtelnetの接続に応答
telnetコマンドとは • UNIX系OSの場合標準で利用可能 • リモートマシンにも接続 • telnet ホスト名 ポート番号で、ホスト名に対してポート番号で接続 • 手動HTTP、手動SMTPの実現
telnetサーバの設定(実習) • yum install telnet-server • /etc/xinetd.d/telnetの設定 disable=yes ⇒ noに変更 • service xinetd restart • telnet-serverはxinetdで管理