VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話

19,127 views

Published on

セキュリティ被害に遭わないための最低限のサーバーセキュリティのノウハウ

Published in: Technology
0 Comments
38 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
19,127
On SlideShare
0
From Embeds
0
Number of Embeds
1,643
Actions
Shares
0
Downloads
96
Comments
0
Likes
38
Embeds 0
No embeds

No notes for slide
  • 「VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話」\n過去に、VPS借りてからWebサーバーとして構築するまでのお話をさせてもらいましたが、今回はその続編の位置づけです。\nですので、今日僕とモリタクの勉強会に初めて参加された方にとっては、中には内容が少しむずかしいと感じる方もいらっしゃるかも知れません。\nなるべく始めての方にも分かっていただけるような内容にしたいと思いますのでよろしくお願いします。\n\n\n
  • WordPressの勉強会によく出没しております。\n昨日も神戸でWordPressの勉強会がありまして、発表してきました。\n\n
  • 最近はPHPのフレームワークFuelPHPとかをやっています。\nなのでサーバー屋というよりかはアプリ屋ですね。でもサーバーもわかるので、インフラの構築からお手伝いしています。\nサーバーインフラは3年くらい\nIBMの下請けでサーバー構築とか、バッチプログラム作ったりしていました。\nAIXというOSのマシンです。\n\n
  • 過去に3回、VPSの勉強会やりました。\nこれを見て、さくらインターネットの方から連絡いただいて、今日協賛していただきました。\n上村のVPS使用事例 feeling, offerbox, yakiu.com\nお名前.com は時々Apacheがおちるのでさくらのクラウドに乗り換え予定\nここでこういう活動をしていることがさくらインターネットの目に止まって、「なんか協力できることはありませんか?」ということで協賛していただいています。\nなので、スポンサーしてもらっているから「さくらいいよいいよ」って言ってる訳ではなくて、結果的にそうなったという話なので勘違いしないようにしてください。\nVPSとしては、さくらはコストパフォーマンスがいい。\nアプリがインストールされていないから最初は何もできない。\n最近はAWS(Amazon Web Service)が流行ってきているかも?\nどれくらい料金がかかるかかかるか分からないので少しこわい\n\n\n\n
  • 3時間くらいで基礎からやりました。\n
  • 過去に行ったVPS初心者勉強会の資料を公開しておきます。\nこれでWordPressを導入するところまでできます。\n手順としては、http(Apache)、vsvtpd、MySQLサーバ、php、WordPressのインストール\n
  • 今日はその続編です。\n少し難しい内容が入るかも知れませんが、分からないことがあったら途中質問してもらっても構いません。\n時間があればあとで質問タイムも設けたいと思います。\n
  • CentOS6.3ですが、他社のVPSでもだいたい同じです。バージョンは6.2だったり5.8だったりするかも知れませんが。\nレンタルサーバーでも、まぁ持ってても損はない知識だと思います。\n
  • セキュリティの勉強会はなかなか無いということでやらせてもらっています。\nWordPressの勉強会とか、PHPの勉強会はいっぱいありますが、サーバー系の勉強会って少ないです。\nなんで少ないのか? \n・会社員の人が多い。\n・課外活動に精を出せないほどブラックである\n・メーカー独自の技術があったりするので一般には需要が無い\n\n\n
  • これは認証のログファイルです。\nbinやrootめがけてログインの痕跡があります。\n数秒おきに攻撃されている\n
  • httpサーバーのログです。\n404というのはコンテンツが見つからない場合\nphpmyadminめがけてアタックされている。\n
  • こういうい事例\nzmeuの攻撃があるそうです。\n古いphpmyadminに脆弱性があったみたいです。\n
  • こういう攻撃をブルートフォース攻撃と呼ぶみたいです。\nいわゆる総当たり攻撃ですね。\n\n
  • 情報処理試験とかやってるIPAがセキュリティマニュアルを出しています。\nここを見ると、いろんな攻撃方法とか対策が載っています。\n僕はあまり読んでないですけど。\n\n
  • 2つめ\nSSHのセキュリティです。\nSSH使ったことある人どれくらいいる?\nSSHの接続のやりかたをご紹介するところから入ります。\n\n
  • いわゆる黒い画面\nMacの場合は最初白い画面ですが、黒にした方がかっこいいので黒くしましょう。\n\n
  • ターミナル紹介\niTerm2紹介\nChrome拡張紹介\n\n
  • コマンドはこういったものがあります。\nいくつか説明する\n\n
  • 参考資料はググればいっぱいでてきます。\nこのサイトは簡潔に書かれていて分かりやすかったです。\n\n\n
  • そんなSSHですが、\nデフォルトのポートは22を使っています。ポートについては次のページで少し説明します。\nポートって分かりますかね?\nhttpだったら80です。\n
  • ポートの解説です。\n安易にインターネットのページをそのままパクってきてしまいました。\n
  • 先ほどの認証ログをもういちど出します。\n/var/log/secure\nroot攻撃されてますね。これは危険です。\n\n
  • rootでログインできてしまう例です。\nこれ、一番最初に接続したときはknownhostsにリスト入れるかどうか聞いてきますこれはyesで。\n\n
  • rootのログインを禁止したいのはいいけど、\nでもroot権限は必要になります。そんなときどうするか?\nrootで使いたいときは、一般ユーザで入って、それからrootにスイッチします。\n\n
  • adduserでもuseradd でもOK\nCentOS系では、どちらでも可能\ndebian、ubuntsu系は意味が異なる。\n
  • whoami というのは、自分の今ログインしているユーザーを確認するためのコマンド\nsu - のハイフンは付けた場合は、環境変数を引き継ぎます。付けない場合は引継ぎません。\nsuはsuperuserの略ではありません。\n\n
  • SSHの設定ファイルを触ってみましょう!\nviの説明を少しする。\nssh_configという紛らわしい設定ファイルがあるので気をつけること。\n設定すると、rootではログインできなくなるので、必ず一般ユーザを作って接続を確認してからの方が良い。\nサーバに入れなくなった場合は、VPSコントロールパネルからrootでログインすることはできる。\n\n
  • ポート22のときは-pを指定しなくても自動的に22が指定されるから書かなくてよかった。\n\n
  • ポート22のときは-pを指定しなくても自動的に22が指定されるから書かなくてよかった。\n以上がsshの設定です。\n自分が設定したポート番号は忘れないようにしてくださいね。\nなんか覚えやすい番号にしておくと良いかも知れません。\n10000以上がいいと思います。65535まで\n\n\n
  • ファイアウォールはiptablesというのを使います。\nちょっと難しいんですがお付き合い下さい。\n\n
  • ファイアウォールという単語はご存知ですかね?\nWindowsだったら、Norton Internet Securityとか、トレンドマイクロのウィルスバスターにもファイアウォールはあると思います。\nWindowsでも、セキュリティソフトって導入がほぼ必須ですよね。\nMacはどうなんでしょう?\n\n
  • 今回使うポートはhttp,ftp,sshだけと仮定します。\n\n
  • 3つのチェインについて理解する必要があります。\nFORWARDは、INPUTとOUTPUTを組み合わせてるように見えますが、まったく別のチェインです。\n
  • 事例は上のほうが多い気がします。\nでも下の例のほうが、設定する手間は少ないと思います。\n\n
  • 事例は上のほうが多い気がします。\nでも下の例のほうが、設定する手間は少ないと思います。\n\n
  • iptablesというファイルは、デフォルトでは存在しないので作る必要があります。\n上は原則としてどうするか、の設定です。\n下は許可するポートの設定です。\nftp Passiveポートを空けておくといいかも知れない。\nメールサーバ使うときは、メールサーバーのポートもあけること。\nSSL使いたい場合は443を空けておくこと。\n\n
  • 真ん中の部分におまじないを入れておきます。\nちょっと説明しておくと、\n・ローカルの通信は許可する\n・icmp(PING)を許可する\n・セッション確立したパケットは許可する\n\n
  • iptablesの起動は十分確認してから行なってください。\n最悪、接続できなくなっても、VPSコントロールパネルから接続できます。\nVPSのいいところですね。物理的なサーバーだと、これ失敗すると物理的にマシンの前までいって作業しないといけません。\nchkconfig で、サーバー起動時にも自動で立ち上がるようにしておきます。\n\n
  • 確認こまんどです。\niptables -L -n\nとすれば、ポート番号が出ます。\n\n
  • 参考にできるサイトを紹介します。\n詳しく知りたい場合はこちらのURLが参考になります。\n\n
  • 次は、ユーザを作るときの注意事項です。\nサーバー上に先ほど一般ユーザ作りましたね。\nそのユーザの話です。\n\n
  • もうひとりmorikawaユーザを作ります。\nでも信用ならないので、sshは禁止したい\nそういうときに有効な方法\n\n
  • 最初に\n/etc/passwd\nの話する。/bin/bash で接続できている。\n\n\n
  • bin とかdaemonとかもデフォルトで/sbin/nologinになっています。\n参考資料見といてください。\n\n
  • メールサーバーの話は今回していないですが、\n特定のユーザのメールを使わせたくない場合はこういう風にしたらできるそうです。\n僕はやったことありません。\nメールを止めるというのはあまりニーズは無いかもですね。ググってもあまり見つけられませんでした。\npostfix以外のメールサーバーだとまた違う設定になります。\nメールサーバーの構築の勉強会なんかもやってみたいですが、これニーズがあまり無さそうなので\nちょっとためらっています。\n\n\n
  • セキュリティアップデートの話です。\nWindowsでもWindowsアップデートってありますよね。それに似ています。\n\n
  • すでにさくらVPSには入っていたのでこれはしなくていいです。\n他社のVPSでは必要かも知れません。\n\n
  • ここではインストールのチェックのみです。実際のインストールは行われません。\n
  • このケースではphpmyadminのアップデートがあります。\n\n
  • これはセキュリティだけでなく、すべてのアップデートのチェックです。\nkernelとかglibcとかありますね。\n\n
  • 実際にアップデートを実行するコマンドです。\nそのとき動いている常駐サービスは、いったん再起動されるんじゃないかと思います。\nなのでapacheを動かしている場合は気をつけてください。\n何が更新されるのかは注意して見ておいた方がいいです。\n\n
  • 参考にできるサイトを紹介します。\n詳しく知りたい場合はこちらのURLが参考になります。\n以上がアップデートの話です。\n
  • phpmyadminは使わないに越したことないですが、\nやっぱり便利なので使っちゃいます。\nセキュリティをしっかりしておきましょう。\n\n
  • phpMyAdminってなに?という方のために少し説明しておきます。\n\n
  • すでにVPSでウェブサーバーなどを運用している人はもうインストール済みかも知れませんが、もしphpMyAdminやMySQLが入ってない場合はインストールしておく必要があります。\n\n
  • セキュリティのポイントして3つご紹介します。\n\n
  • URLを変えて、分かりにくいURLにする、ということです。\n冒頭で説明しましたあが、phpmyadminというパスをめがけて攻撃されることが多々あります。\nそういう総当り攻撃からは守れると思います。\n\n
  • phpmyadminの設定ファイルを触ります。\nAliasで定義されているところを変更します。\n\n
  • 次に、アクセスできるIPアドレスを制限する方法です。\nApache2.2のAllowのところを触ればいいです。\n
  • SSLといっても、ここではSSLサーバー証明書を取らなくてもいい。\nSSLの役割は2つ、暗号化、身元確認(身分証明)\n\n
  • Apacheのsslモジュールをインストールします。\nで、httpdサーバーを再起動します。\n\n\n
  • SSLで通信できるようになったのはいいですが、\nphpmyadminのセキュリティは、他に、rootによる直接接続をさせないなどのセキュリティ方策がありますが、\nちょっとめんどくさい感じなので割愛します。\nその場合はMySQLの設定を変更しないといけないです。\n\n
  • いかがでしたでしょうか。\n引き続きモリタクのターンをお楽しみください。\n\n
  • いかがでしたでしょうか。\n引き続きモリタクのターンをお楽しみください。\n\n
  • \n
  • VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話

    1. 1. VPS借りたけどセキュリティが心配!初心者が気をつけたいセキュリティの話 2012.10.14 上村崇
    2. 2. 自己紹介 @uemera uemura上村崇 ( うえむらたかし )フリーランスのシステムエンジニアサーバインフラ、組込みシステム、Web とか。最近はCodeIgniterとかFuelPHPがブーム。IT 業界のキャリア 10 年ちょっと西宮在住
    3. 3. 最近のオレ XOOPS 勉強会準備 WordBench, サーバ関係 PHPフレームワーク FuelPHP、CodeIgniterJavaScript jQuery WordPress主に技術サポート VPS(CentOS)、LAMP、 メールサーバ、git、samba、netatalk サーバインフラ
    4. 4. これまでに「VPSでWordPressを始めよう!      サーバーインフラ初心者勉強会」という名前で勉強会しました。4/29 京橋 27人5/26 本町 30人7/14 十三 33人
    5. 5. VPS初心者勉強会で行った内容1. VPSの概略やメリットは何か?2. 実際にさくらのVPSを契約する方法を説明3. Teratermやターミナル(Mac)の説明と使い方4. Linuxコマンド基礎5. ApacheやMySQLなどサーバアプリケーションの インストール6. PHPの設定7. サーバの起動と終了8. WordPressのインストール
    6. 6. VPS初心者勉強会の資料VPSを初めて借りてから、WordPressを動かせるようになるまでのインストール手順書 (7/14実施分) 7/14 サーバインフラ超初心者勉強会 プログラム - Google ドキュメント https://docs.google.com/document/d/1Wv8jYJXoJhTOGWmdJLhGPC6V2SlrU8Gp6JYsJ5sCGD8/edit
    7. 7. 今日はその続編の位置づけで、もう一歩踏み込んだ話をします。もちろん初めての方にも配慮したいと思います。
    8. 8. 例として、さくらインターネットのVPSを使って説明します。 Linux (CentOS 6.3)・他社のVPSでもだいたいCentOSを使ってるので応用はききます。・これから説明することは、root権限を持てないレンタルサーバーでは出来ない (またはする必要がない)ことが多いですが、セキュリティの知識を高めるという 意味では知っていても損は無いと思います。
    9. 9. 本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
    10. 10. セキュリティ対策の重要性システムのログイン認証ログ/var/log/secure15:12:12 sshd[27259]: Failed password for bin from 69.94.125.45 port 35312 ssh215:12:12 sshd[27259]: Received disconnect from 69.94.125.45: 11: Bye Bye [preauth]15:12:13 sshd[27266]: reverse mapping checking getaddrinfo for nyfishpix.nyfishpix.com [69.94.125.45] failed - POSSIBLE BREAK-IN ATTEMPT!15:12:13 sshd[27266]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=69.94.125.45 user=root15:12:15 sshd[27266]: Failed password for root from 69.94.125.45 port 35822 ssh215:12:15 sshd[27266]: Received disconnect from 69.94.125.45: 11: Bye Bye [preauth]15:12:17 sshd[27271]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=nyfishpix.com user=root15:12:19 sshd[27271]: Failed password for root from 69.94.125.45 port 36315 ssh215:12:20 sshd[27271]: Received disconnect from 69.94.125.45: 11: Bye Bye [preauth]15:12:21 sshd[27277]: reverse mapping checking getaddrinfo for nyfishpix.nyfishpix.com [69.94.125.45] failed - POSSIBLE BREAK-IN ATTEMPT! bin や root ユーザにアクセスされた跡15:12:21 sshd[27277]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=69.94.125.45 user=root しかしパスワード不一致でログイン失敗15:12:23 sshd[27277]: Failed password for root from 69.94.125.45 port 36905 ssh215:12:24 sshd[27277]: Received disconnect from 69.94.125.45: 11: Bye Bye [preauth]15:12:25 sshd[27283]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=nyfishpix.com user=root
    11. 11. httpサーバアクセスログ/var/log/httpd/access_log- - [06/Oct/2012:01:01:19 +0900] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"- - [06/Oct/2012:01:01:19 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"- - [06/Oct/2012:01:01:20 +0900] "GET /pma/scripts/setup.php HTTP/1.1" 404 15327 "-" "ZmEu"- - [06/Oct/2012:01:01:21 +0900] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 15335 "-" "ZmEu"- - [06/Oct/2012:01:01:21 +0900] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 404 15335 "-" "ZmEu"- - [06/Oct/2012:03:48:48 +0900] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"- - [06/Oct/2012:03:48:49 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"- - [06/Oct/2012:03:48:50 +0900] "GET /pma/scripts/setup.php HTTP/1.1" 404 15327 "-" "ZmEu"- - [06/Oct/2012:03:48:51 +0900] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 15335 "-" "ZmEu"- - [06/Oct/2012:03:48:52 +0900] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 404 15335 "-" "ZmEu"- - [06/Oct/2012:04:19:23 +0900] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"- - [06/Oct/2012:04:19:24 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"- - [06/Oct/2012:04:19:25 +0900] "GET /pma/scripts/setup.php HTTP/1.1" 404 15327 "-" "ZmEu"- - [06/Oct/2012:04:19:26 +0900] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 15335 "-" "ZmEu"- - [06/Oct/2012:04:19:27 +0900] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 404 15335 "-" "ZmEu" /phpmyadmn/ フォルダなどを狙って攻撃されている。 ただし、ヒットせず404NotFoundを返している。
    12. 12. phpMyAdminの脆弱性を狙った攻撃
    13. 13. ブルート・フォース攻撃(brute force attack)は、クラッカがパスワードや暗号化キーを解読する手法の一つである。「brute force」とは英語で「力ずく」または「強引に」といった意味で、ブルート・フォース攻撃とは考えられるすべての値を片っ端から試すという力任せの解読方法を指す。
    14. 14. IPAのセキュリティ対策マニュアルが参考になる。 http://www.ipa.go.jp/security/fy12/contents/crack/soho/soho/index.html
    15. 15. 本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
    16. 16. SSHのセキュリティを高めるSSHとは?コマンドラインでサーバーをリモート操作できるツール リモート操作
    17. 17. sshで接続するためのツールMacの場合 ・ターミナル ・iTerm2というのもある。Windowsの場合 ・Teraterm またはChromeの拡張機能 Secure Shell
    18. 18. Linuxコマンドのおさらいls ディレクトリの中身の一覧を表示する。cd 他のディレクトリに移動する cd dir1pwd 現在自分がいるディレクトリを表示するcp ファイルのコピー cp file1 file2rm ファイルの削除 rm file1mkdir ディレクトリの作成 mkdir dir1mv ファイル、ディレクトリの名前変更 mv file1 file2
    19. 19. 参考 これだけは知ってもらいたいLinuxコマンド http://www.tuat.ac.jp/~sanoken/tech/unix/command.html
    20. 20. 通常、VPSのデフォルト状態では、・SSHでrootの直接ログインが可能になっている。・デフォルトのポート番号22を使っている。 デフォルトのまま使っていると危険性が高い!・rootのパスワードが破られるとサーバーが乗っ取られてしまう。・ポート番号22は攻撃されやすい。
    21. 21. 参考 ポート番号 | ネット解説 http://y-kit.jp/inet/page/port.htm
    22. 22. rootで直接ログインできるのはヤバイ15:12:15 sshd[27266]: Failed password for root from 69.94.125.45 port 35822 ssh215:12:15 sshd[27266]: Received disconnect from 69.94.125.45: 11: Bye Bye [preauth]15:12:17 sshd[27271]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=nyfishpix.com user=root15:12:19 sshd[27271]: Failed password for root from 69.94.125.45 port 36315 ssh215:12:20 sshd[27271]: Received disconnect from 69.94.125.45: 11: Bye Bye [preauth]15:12:21 sshd[27277]: reverse mapping checking getaddrinfo for nyfishpix.nyfishpix.com [69.94.125.45] failed - POSSIBLE BREAK-IN ATTEMPT!15:12:21 sshd[27277]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=69.94.125.45 user=root15:12:23 sshd[27277]: Failed password for root from 69.94.125.45 port 36905 ssh215:12:24 sshd[27277]: Received disconnect from 69.94.125.45: 11: Bye Bye [preauth]15:12:25 sshd[27283]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=nyfishpix.com user=root
    23. 23. デフォルトの設定ではrootでログインできてしまうMBA[~/.ssh]$ ssh root@49.212.197.250The authenticity of host 49.212.197.250 (49.212.197.250) cant be established.RSA key fingerprint is e6:ee:a5:be:8b:1e:70:39:55:67:cd:b0:ea:25:20:3c.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 49.212.197.250 (RSA) to the list of known hosts.root@49.212.197.250s password:Last login: Wed Oct 10 20:15:50 2012 from 182-167-47-13f1.hyg1.eonet.ne.jpSAKURA Internet [Virtual Private Server SERVICE]-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)[root@www24476ue ~]# whoamiroot rootでログインできてしまう!
    24. 24. どうしてもrootになって作業する必要がある場合は、いったん一般ユーザでログインした後、rootにスイッチする。 X root直接アクセスは禁止 root o一般ユーザへのアクセスは許可 一般ユーザ 一般ユーザでログイン後、rootに 切り替える
    25. 25. まずはじめに一般ユーザuemuraを作る# adduser uemura ユー ザ u e m u r a 作 成# passwd uemura u e m u r a の パ スワ ー ド を 設 定Changing password for user uemura.New password: ****** パ スワ ー ド 入 力Retype new password: ******passwd: all authentication tokens updated successfully.#
    26. 26. 一般ユーザでログインし、rootにスイッチする手順MBA[~]$ ssh uemura@49.212.197.250 一 般 ユー ザ で ロ グイ ンuemura@49.212.197.250s password: ******SAKURA Internet [Virtual Private Server SERVICE][uemura@www24476ue ~]$ whoami 一 般 ユー ザ u e m u r a で ロ グイ ン 中uemura[uemura@www24476ue ~]$ su - r o o t ユー ザ に スイッ チPassword: ******[root@www24476ue ~]# whoami r o o t ユー ザ で ロ グイ ン 中root
    27. 27. root直接ログインを禁止する設定/etc/ssh/sshd_configPermitRootLogin yes n o に変更するsshのサービスを再起動する。/etc/init.d/sshd restart 再 起 動 後 は 、 設 定 確 認 と して r o o t で ロ グイ ン できないことを確認すること!
    28. 28. sshのポート番号22を変更する設定/etc/ssh/sshd_config#Port 22Port 10022 10022に変更するsshのサービスを再起動する。/etc/init.d/sshd restartポート10022を指定してsshにアクセスするssh uemura@49.212.197.250 -p 10022
    29. 29. 10022ポートで接続した例# ssh uemura@49.212.197.250 -p 10022The authenticity of host [49.212.197.250]:10022 ([49.212.197.250]:10022) cant beestablished.RSA key fingerprint is e6:ee:a5:be:8b:1e:70:39:55:67:cd:b0:ea:25:20:3c.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added [49.212.197.250]:10022 (RSA) to the list of known hosts.uemura@49.212.197.250s password: ******Last login: Thu Oct 11 12:02:42 2012 from 182-167-47-13f1.hyg1.eonet.ne.jpSAKURA Internet [Virtual Private Server SERVICE]$ ロ グイ ン 成 功 !ポート22で接続すると失敗する例# ssh uemura@49.212.197.250ssh: connect to host 49.212.197.250 port 22: Connection refused
    30. 30. 本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
    31. 31. ファイアウォールを設定しようLinuxのファイアウォールはiptablesで。・コマンドラインで実行するツール・テキストファイルを更新して設定する。・概念を理解するのはちょっと難しいかも・でも激しく導入を推奨します。
    32. 32. ポリシーの設定必要なポートのみ通信を許可する。 o port: 80 (http) port: 20,21 (ftp) port: 10022 (ssh) X それ以外のポートは拒否
    33. 33. 3つの出入口(チェイン)INPUT, OUTPUT, FORWARD FORWARD INPUT OUTPUT設定しておきたいポリシーINPUT : 原則として通信禁止、一部のポートを許可OUTPUT: 原則として通信許可FORWARD: 原則として通信禁止、一部のポートを許可
    34. 34. iptablesは2通りの方法で設定できる。・シェルスクリプトを作成して、 そこにコマンドを書いていく方法 #!/bin/bash シェルの中は、行の1つ1つが実行 iptables -F コマンドになっている。 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT ファイル単独で実行する。 iptables -P FORWARD DROP ・・・・・・・・・・iptablesの設定ファイルに書く方法 *filter iptables専用の設定書式で書く。 :INPUT DROP [0:0] :FORWARD DROP [0:0] 設定ファイルなので、これ単独で :OUTPUT ACCEPT [0:0] は実行できない。 :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT ・・・・・・・・・
    35. 35. iptablesは2通りの方法で設定できる。・シェルスクリプトを作成して、 そこにコマンドを書いていく方法 #!/bin/bash シェルの中は、行の1つ1つが実行 iptables -F コマンドになっている。 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT ファイル単独で実行する。 iptables -P FORWARD DROP ・・・・・・・・・・iptablesの設定ファイルに書く方法 *filter iptables専用の設定書式で書く。 :INPUT DROP [0:0] :FORWARD DROP [0:0] 設定ファイルなので、これ単独で :OUTPUT ACCEPT [0:0] は実行できない。 :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT ・・・・・・・・・ この方法でやります
    36. 36. 設定ファイル/etc/sysconfig/iptables3つのチェインの設定 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] FTP (20,21)、SSH(10022)、 HTTP(80)のポートを許可する。許可するポートの設定 -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT COMMIT
    37. 37. 設定ファイル/etc/sysconfig/iptables*filter:INPUT DROP [0:0]:FORWARD DROP [0:0] おまじないとして必要:OUTPUT ACCEPT [0:0]-A INPUT -i lo -j ACCEPT-A INPUT -p icmp --icmp-type any -j ACCEPT-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A INPUT -p tcp -m state --state NEW ! --syn -j DROP-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPTCOMMIT
    38. 38. iptablesの起動/etc/init.d/iptables start ※注意! SSHのポート10022を閉じてしまうとSSH通信ができなくなるので、起動は 慎重に!常駐サービス化chkconfig iptables on
    39. 39. 現在のフィルタ状態を確認する。# iptables -LChain INPUT (policy DROP)target prot opt source destinationACCEPT all -- anywhere anywhereACCEPT icmp -- anywhere anywhere icmp anyACCEPT tcp -- anywhere anywhere state RELATED,ESTABLISHEDDROP tcp -- anywhere anywhere state NEW tcp flags:!FIN,SYN,RST,ACK/SYNACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp-dataACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftpACCEPT tcp -- anywhere anywhere state NEW tcp dpt:10022ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:httpChain FORWARD (policy DROP)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination
    40. 40. <参考>さくらのVPS CentOSでサーバ構築 3 – iptableshttp://akibe.com/centos-setup-3-iptables/最低限の設定について開設しているので分かりやすいです。@IT:ステートフルパケットフィルタを使ったサービスの公開http://www.atmarkit.co.jp/flinux/rensai/iptables01/iptables01a.html体系的な知識を吸収できます。
    41. 41. 本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
    42. 42. ユーザをつくるときに気をつけたいことmorikawaユーザを作るadduser morikawa このコマンド1つで、 ・SSH接続可能 ・FTP接続可能 ・メール送受信可能 なユーザが作られる。passwd morikawa m o r i k a w a の パ スワ ー ド を 設 でも、必要なのはFTP接続機能だけだったりします。
    43. 43. morikawaユーザをSSH接続禁止にするusermod -s /sbin/nologin morikawa※SSH接続禁止にしても、引き続きFTP接続は可能です。
    44. 44. ユーザの一覧はpasswdファイルで確認できる/etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown uemura:x:500:500::/home/uemura:/bin/bash morikawa:x:501:501::/home/morikawa:/sbin/nologin ログイン可能なユーザは/bin/bash ログイン不可能なユーザは/sbin/nologin になっています。<参考>SSH ログインさせないアカウントを作る - Ceekz Logshttp://private.ceek.jp/archives/002511.html
    45. 45. <参考>メールサービスも使わせないようにするメールサーバーpostfixのケース/etc/postfix/main.cf transport_maps = hash:/etc/postfix/transport/etc/postfix/transport bar@example.com error:[postfix-jp: 2107] Re: Local ユーザの一部を拒否は可能?http://www.postfix-jp.info/ML/arc-2.3/msg00106.html
    46. 46. 本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
    47. 47. セキュリティアップデートをしようセキュリティパッケージのインストール(さくらVPSではすでに導入済みでした)yum -y install yum-plugin-security
    48. 48. セキュリティアップデートがあるかどうかチェックyum --security check-updateセキュリティアップデートだけでなく、全てのパッケージでアップデートがあるかどうかチェックyum check-update
    49. 49. セキュリティアップデートがあるかどうかチェック# yum --security check-updateLoaded plugins: fastestmirror, securityLoading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jpLimiting package lists to security relevant ones1 package(s) needed for security, out of 37 availablephpMyAdmin.noarch 3.5.2.2-1.el6 epel phpMyAdminのアップデートが1つある
    50. 50. すべてのアップデートのチェック# yum check-updateLoaded plugins: fastestmirror, securityLoading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jpbind-libs.x86_64 32:9.8.2-0.10.rc1.el6_3.4bind-utils.x86_64 32:9.8.2-0.10.rc1.el6_3.4cups-libs.x86_64 1:1.4.2-48.el6_3.1dbus.x86_64 1:1.2.24-7.el6_3dbus-libs.x86_64 1:1.2.24-7.el6_3dhclient.x86_64 12:4.1.1-31.0.1.P1.el6.centos.1dhcp-common.x86_64 12:4.1.1-31.0.1.P1.el6.centos.1dracut.noarch 004-284.el6_3.1dracut-kernel.noarch 004-284.el6_3.1glibc.x86_64 2.12-1.80.el6_3.5glibc-common.x86_64 2.12-1.80.el6_3.5glibc-devel.x86_64 2.12-1.80.el6_3.5glibc-headers.x86_64 2.12-1.80.el6_3.5initscripts.x86_64 セキュリティアップデートだけではなく、 9.03.31-2.el6.centos.1irqbalance.x86_64 2:0.55-35.el6_3kernel.x86_64 ソフトウェアのアップデートがあれば全てリストアップされる。 2.6.32-279.9.1.el6kernel-devel.x86_64 2.6.32-279.9.1.el6
    51. 51. セキュリティアップデートのみ更新yum --security updateすべてのパッケージを更新yum update
    52. 52. <参考>はじめての自宅サーバ構築 - Fedora/CentOS - yum plugin「yum-security」の導入http://kajuhome.com/yum_security.shtml実際にコマンド打ったときの様子を分かりやすく掲載しています。「yum-security」でセキュリティアップデートのみを適用するhttp://arutora.com/archives/20120201010005/こちらはコマンドが簡潔にまとめられています。
    53. 53. 本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
    54. 54. phpMyAdminのセキュリティ設定phpMyAdminとは: MySQLのテーブルを 操作することができる Webアプリケーション
    55. 55. まずMySQLサーバのインストール(まだインストールしていない場合)yum install mysql-serverphpMyAdminのインストール(まだインストールしていない場合)yum install phpMyAdmin
    56. 56. phpMyAdminセキュリティ強化のポイント・phpMyAdminのURLを分かりにくくする・アクセスできるIPアドレスを限定する・SSLで利用できるようにする。
    57. 57. phpMyAdminのURLを分かりにくくするデフォルトのままだと、http://example.com/phpmyadminで接続することになる。URLが容易に想像できてしまうので危険- - [06/Oct/2012:01:01:19 +0900] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"- - [06/Oct/2012:01:01:19 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 15341 "-" "ZmEu"分かりにくいURLにする。http://example.com/phpmyadminjWtKjgil
    58. 58. phpMyAdminの設定ファイルを変更する。/etc/httpd/conf.d/phpMyAdmin.conf#Alias /Phpmyadmin /Usr/Share/Phpmyadmin コメントアウトする。#Alias /phpmyadmin /usr/share/phpMyAdminAlias /phpmyadminjWtKjgil /usr/share/phpMyAdmin<Directory /usr/share/phpMyAdmin/>   <IfModule mod_authz_core.c> エイリアス設定。これで     # Apache 2.4 http:/xxxx.com/phpmyadminjWtKjgil     <RequireAny> でphpMyAdminにアクセスできるよう       Require ip 127.0.0.1 になる。       Require ip ::1     </RequireAny>   </IfModule>   <IfModule !mod_authz_core.c>     # Apache 2.2     Order Deny,Allow     Deny from All     Allow from All     Allow from ::1   </IfModule></Directory>
    59. 59. アクセスできるIPアドレスを限定する/etc/httpd/conf.d/phpMyAdmin.conf#Alias /Phpmyadmin /Usr/Share/Phpmyadmin#Alias /phpmyadmin /usr/share/phpMyAdminAlias /phpmyadminjWtKjgil /usr/share/phpMyAdmin<Directory /usr/share/phpMyAdmin/>   <IfModule mod_authz_core.c>     # Apache 2.4     <RequireAny>       Require ip 127.0.0.1       Require ip ::1     </RequireAny>   </IfModule>   <IfModule !mod_authz_core.c>     # Apache 2.2     Order Deny,Allow     Deny from All 接続できるIPアドレスを制限するには、     Allow from 123.123.123.123 Allow from で指定すればよい。     Allow from 192.168.0     Allow from ::1   </IfModule></Directory>
    60. 60. phpMyAdminをSSLで利用する。SSLを利用すると通信内容が暗号化されるので、盗聴の被害を食い止めることができる。 port: 80 (http) 暗号化 port: 443 (ssl)
    61. 61. phpMyAdminをSSLで利用するyum install mod_ssl S S L モ ジュ ール イ ン ス ト ール/etc/init.d/httpd restart httpd再起動https://example.com/phpmyadminjWtKjgilでアクセスできるようになる。
    62. 62. httpによるphpMyAdminへの通信を禁止したい場合/etc/httpd/conf.d/phpMyAdmin.conf<Directory /usr/share/phpMyAdmin/>   <IfModule mod_authz_core.c>     # Apache 2.4     <RequireAny>       Require ip 127.0.0.1       Require ip ::1     </RequireAny>   </IfModule>   <IfModule !mod_authz_core.c> この1行を入れてhttp再起動すれば、     # Apache 2.2 http通信は禁止される。 SSLRequireSSL     Order Deny,Allow     Deny from All     Allow from All     Allow from ::1   </IfModule></Directory>
    63. 63. 本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
    64. 64. 今後の勉強会の予定はメールでお知らせできます! 上村・もりたく勉強会 http://toyao.net/studymeeting/
    65. 65. ありがとうございました

    ×