Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
VPS借りたけどセキュリティが心配!初心者が気をつけたいセキュリティの話          2012.10.14 上村崇
自己紹介     @uemera      uemura上村崇 ( うえむらたかし )フリーランスのシステムエンジニアサーバインフラ、組込みシステム、Web とか。最近はCodeIgniterとかFuelPHPがブーム。IT 業界のキャリア 1...
最近のオレ                        XOOPS          勉強会準備           WordBench,          サーバ関係                 PHPフレームワーク          ...
これまでに「VPSでWordPressを始めよう!      サーバーインフラ初心者勉強会」という名前で勉強会しました。4/29 京橋 27人5/26 本町 30人7/14 十三 33人
VPS初心者勉強会で行った内容1. VPSの概略やメリットは何か?2. 実際にさくらのVPSを契約する方法を説明3. Teratermやターミナル(Mac)の説明と使い方4. Linuxコマンド基礎5. ApacheやMySQLなどサーバアプリ...
VPS初心者勉強会の資料VPSを初めて借りてから、WordPressを動かせるようになるまでのインストール手順書 (7/14実施分)         7/14 サーバインフラ超初心者勉強会 プログラム - Google ドキュメント      ...
今日はその続編の位置づけで、もう一歩踏み込んだ話をします。もちろん初めての方にも配慮したいと思います。
例として、さくらインターネットのVPSを使って説明します。                    Linux (CentOS 6.3)・他社のVPSでもだいたいCentOSを使ってるので応用はききます。・これから説明することは、root権限を持...
本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
セキュリティ対策の重要性システムのログイン認証ログ/var/log/secure15:12:12 sshd[27259]: Failed password for bin from 69.94.125.45 port 35312 ssh215:...
httpサーバアクセスログ/var/log/httpd/access_log- - [06/Oct/2012:01:01:19 +0900] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 15...
phpMyAdminの脆弱性を狙った攻撃
ブルート・フォース攻撃(brute force attack)は、クラッカがパスワードや暗号化キーを解読する手法の一つである。「brute force」とは英語で「力ずく」または「強引に」といった意味で、ブルート・フォース攻撃とは考えられるすべ...
IPAのセキュリティ対策マニュアルが参考になる。   http://www.ipa.go.jp/security/fy12/contents/crack/soho/soho/index.html
本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
SSHのセキュリティを高めるSSHとは?コマンドラインでサーバーをリモート操作できるツール         リモート操作
sshで接続するためのツールMacの場合 ・ターミナル ・iTerm2というのもある。Windowsの場合 ・Teraterm またはChromeの拡張機能 Secure Shell
Linuxコマンドのおさらいls      ディレクトリの中身の一覧を表示する。cd      他のディレクトリに移動する        cd dir1pwd     現在自分がいるディレクトリを表示するcp      ファイルのコピー    ...
参考     これだけは知ってもらいたいLinuxコマンド     http://www.tuat.ac.jp/~sanoken/tech/unix/command.html
通常、VPSのデフォルト状態では、・SSHでrootの直接ログインが可能になっている。・デフォルトのポート番号22を使っている。 デフォルトのまま使っていると危険性が高い!・rootのパスワードが破られるとサーバーが乗っ取られてしまう。・ポート...
参考     ポート番号 | ネット解説     http://y-kit.jp/inet/page/port.htm
rootで直接ログインできるのはヤバイ15:12:15 sshd[27266]: Failed password for root from 69.94.125.45 port 35822 ssh215:12:15 sshd[27266]: R...
デフォルトの設定ではrootでログインできてしまうMBA[~/.ssh]$ ssh root@49.212.197.250The authenticity of host 49.212.197.250 (49.212.197.250) cant...
どうしてもrootになって作業する必要がある場合は、いったん一般ユーザでログインした後、rootにスイッチする。    X             root直接アクセスは禁止                                roo...
まずはじめに一般ユーザuemuraを作る# adduser uemura                          ユー ザ u e m u r a 作 成# passwd uemura                         ...
一般ユーザでログインし、rootにスイッチする手順MBA[~]$ ssh uemura@49.212.197.250                          一 般 ユー ザ で ロ グイ ンuemura@49.212.197.250...
root直接ログインを禁止する設定/etc/ssh/sshd_configPermitRootLogin yes                   n o に変更するsshのサービスを再起動する。/etc/init.d/sshd restart...
sshのポート番号22を変更する設定/etc/ssh/sshd_config#Port 22Port 10022              10022に変更するsshのサービスを再起動する。/etc/init.d/sshd restartポート1...
10022ポートで接続した例# ssh uemura@49.212.197.250 -p 10022The authenticity of host [49.212.197.250]:10022 ([49.212.197.250]:10022)...
本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
ファイアウォールを設定しようLinuxのファイアウォールはiptablesで。・コマンドラインで実行するツール・テキストファイルを更新して設定する。・概念を理解するのはちょっと難しいかも・でも激しく導入を推奨します。
ポリシーの設定必要なポートのみ通信を許可する。             o      port: 80 (http)      port: 20,21 (ftp)      port: 10022 (ssh)              X   ...
3つの出入口(チェイン)INPUT, OUTPUT, FORWARD                 FORWARD         INPUT             OUTPUT設定しておきたいポリシーINPUT :  原則として通信禁止、...
iptablesは2通りの方法で設定できる。・シェルスクリプトを作成して、 そこにコマンドを書いていく方法  #!/bin/bash                                      シェルの中は、行の1つ1つが実行  ...
iptablesは2通りの方法で設定できる。・シェルスクリプトを作成して、 そこにコマンドを書いていく方法  #!/bin/bash                                      シェルの中は、行の1つ1つが実行  ...
設定ファイル/etc/sysconfig/iptables3つのチェインの設定 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0]                 ...
設定ファイル/etc/sysconfig/iptables*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]                                 おまじないとして必要:OUTPUT ...
iptablesの起動/etc/init.d/iptables start      ※注意!      SSHのポート10022を閉じてしまうとSSH通信ができなくなるので、起動は      慎重に!常駐サービス化chkconfig ipta...
現在のフィルタ状態を確認する。# iptables -LChain INPUT (policy DROP)target prot opt source       destinationACCEPT all -- anywhere       ...
<参考>さくらのVPS CentOSでサーバ構築 3 – iptableshttp://akibe.com/centos-setup-3-iptables/最低限の設定について開設しているので分かりやすいです。@IT:ステートフルパケットフィル...
本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
ユーザをつくるときに気をつけたいことmorikawaユーザを作るadduser morikawa このコマンド1つで、 ・SSH接続可能 ・FTP接続可能 ・メール送受信可能 なユーザが作られる。passwd morikawa    m o r...
morikawaユーザをSSH接続禁止にするusermod -s /sbin/nologin morikawa※SSH接続禁止にしても、引き続きFTP接続は可能です。
ユーザの一覧はpasswdファイルで確認できる/etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/s...
<参考>メールサービスも使わせないようにするメールサーバーpostfixのケース/etc/postfix/main.cf transport_maps = hash:/etc/postfix/transport/etc/postfix/transpo...
本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
セキュリティアップデートをしようセキュリティパッケージのインストール(さくらVPSではすでに導入済みでした)yum -y install yum-plugin-security
セキュリティアップデートがあるかどうかチェックyum --security check-updateセキュリティアップデートだけでなく、全てのパッケージでアップデートがあるかどうかチェックyum check-update
セキュリティアップデートがあるかどうかチェック# yum --security check-updateLoaded plugins: fastestmirror, securityLoading mirror speeds from cach...
すべてのアップデートのチェック# yum check-updateLoaded plugins: fastestmirror, securityLoading mirror speeds from cached hostfile * base:...
セキュリティアップデートのみ更新yum --security updateすべてのパッケージを更新yum update
<参考>はじめての自宅サーバ構築 - Fedora/CentOS - yum plugin「yum-security」の導入http://kajuhome.com/yum_security.shtml実際にコマンド打ったときの様子を分かりやすく...
本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
phpMyAdminのセキュリティ設定phpMyAdminとは:                MySQLのテーブルを                操作することができる                Webアプリケーション
まずMySQLサーバのインストール(まだインストールしていない場合)yum install mysql-serverphpMyAdminのインストール(まだインストールしていない場合)yum install phpMyAdmin
phpMyAdminセキュリティ強化のポイント・phpMyAdminのURLを分かりにくくする・アクセスできるIPアドレスを限定する・SSLで利用できるようにする。
phpMyAdminのURLを分かりにくくするデフォルトのままだと、http://example.com/phpmyadminで接続することになる。URLが容易に想像できてしまうので危険- - [06/Oct/2012:01:01:19 +09...
phpMyAdminの設定ファイルを変更する。/etc/httpd/conf.d/phpMyAdmin.conf#Alias /Phpmyadmin /Usr/Share/Phpmyadmin     コメントアウトする。#Alias /php...
アクセスできるIPアドレスを限定する/etc/httpd/conf.d/phpMyAdmin.conf#Alias /Phpmyadmin /Usr/Share/Phpmyadmin#Alias /phpmyadmin /usr/share/p...
phpMyAdminをSSLで利用する。SSLを利用すると通信内容が暗号化されるので、盗聴の被害を食い止めることができる。         port: 80 (http)            暗号化         port: 443 (ssl)
phpMyAdminをSSLで利用するyum install mod_ssl         S S L モ ジュ ール イ ン ス ト ール/etc/init.d/httpd restart   httpd再起動https://example...
httpによるphpMyAdminへの通信を禁止したい場合/etc/httpd/conf.d/phpMyAdmin.conf<Directory /usr/share/phpMyAdmin/>   <IfModule mod_authz_cor...
本日のプログラム1. セキュリティ対策の重要性2. SSHのセキュリティを高める3. ファイアウォールを設定しよう4. ユーザをつくるときに気をつけたいこと5. セキュリティアップデートをしよう6. phpMyAdminのセキュリティ設定
今後の勉強会の予定はメールでお知らせできます!   上村・もりたく勉強会   http://toyao.net/studymeeting/
ありがとうございました
Upcoming SlideShare
Loading in …5
×

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

23,948 views

Published on

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

Published in: Technology
  • Be the first to comment

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. ありがとうございました

×