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.

Linuxサーバのセキュリティ対策 part3 - ファイル転送編

5,248 views

Published on

Published in: Technology

Linuxサーバのセキュリティ対策 part3 - ファイル転送編

  1. 1. 2013/7/17 Kazunori INABA 1 2013.7.17 Garage labsサーバー部10U Linuxサーバーのセキュリティ対策 part3 ~僕がいつもやっていること 稲葉 一紀@札幌
  2. 2. 2013/7/17 Kazunori INABA 2 自己紹介 稲葉 一紀  サーバーインフラ専門のフリーランスエンジニア@札幌   ※HPできました。稲葉サーバーデザイン http://inaba-serverdesign.jp/     おもにアプリ開発企業・エンジニア向けに     セキュリティ・可用性・性能・拡張性を考慮した     ちょっと気の利いた     サーバーインフラ構成設計・設定・支援や既存システムの性能改善調査・支援      を行います。   札幌ライブ情報 公開中   http://wiki.livedoor.jp/sapporo_rock_live/
  3. 3. 2013/7/17 Kazunori INABA 3 セキュリティ対策 - 基本方針 ・僕がサーバーの設定を行うときにいつもやっていることを発表  します part3 ・できるだけPaaS, SaaS的な外部サービスや共用レンタル  サーバーを利用して、自分で設定、運用するサービスを減らす。   - 特にDNSとメールは自前でやらない!   - SSHとHTTP(S)のみ外部公開するのが理想。   - Webアプリケーションサーバ1台の運用保守を専門業者に    任せるといくらかかる? ・どんな対策をしても、やられるときはやられる!   それでも、できるだけ少ない手間で基本的な設定を行い、   不正アクセスされる確率を減らす。
  4. 4. 2013/7/17 Kazunori INABA 4 セキュリティ対策 - 項目 Part1 ・SSH ・Firewall ・iptables ・TCP Wrapper ・不要なサービスの停止 ・DNS bind http://www.slideshare.net/kazunoriinaba/20130510-linuxsecurity1-21092608 Part2 ・(再)DNS bind ・Apache http://www.slideshare.net/kazunoriinaba/20130619-linuxsecurity2
  5. 5. 2013/7/17 Kazunori INABA 5 セキュリティ対策 - 項目 Part3(今回) ・Apache補足 ・ファイル転送 FTP, SCP/SFTP, WebDAV Part4以降 ・メール Postfix ・アンチウイルス ClamAV ・改ざん検知 Tripwire ・SEO対策 ・その他やってないこと SELinux, IPS, WAF ・技術以外の対策 以降、コマンドやConfigは、CentOSにおける例です。
  6. 6. 2013/7/17 Kazunori INABA 6 Apache補足(1) 前回発表した以外のApacheセキュリティ関連モジュール。 ・mod_security   (参考)http://www.ipa.go.jp/security/vuln/waf.html   - Web Application Firewall(WAF)   - SQLインジェクション、XSSなどの脆弱性を突いたアクセスを    検知してくれる。   - サードパーティのソフトウェアを使用するときに使うとよい。   - 誤検知があり得るので、当初は攻撃検知時はアクセスを遮断    せずにログを出力するのみとするとよい。 ・mod_bw   - 帯域制限、接続数制限。   - 接続元のネットワーク、UserAgentによる限定が可能。   - ファイルのType, サイズによる限定が可能。   
  7. 7. 2013/7/17 Kazunori INABA 7 Apache補足(2) ApacheとLDAP連携のセキュリティについて。 (自分で試してはいませんが) ・WebサーバーとLDAPサーバーが別であれば、サーバー間は  LDAPSで通信を暗号化すると、より安全。  (ぐらいしか思いつきませんでした。)        
  8. 8. 2013/7/17 Kazunori INABA 8 Apache補足(3) 大規模DDoS攻撃対策。  結論:  「自前で対策するのではなく、ISPのサービスを利用するべき」 (参考) ・FWやIPSでは防げない「最新型DDoS攻撃」の傾向と対策 http://businessnetwork.jp/tabid/65/artid/2485/page/2/Default.aspx   ※自前でできることは、「できるだけ早く気づいて早く対処する」     ぐらいか。。。サーバーのIPアドレス変更など。   
  9. 9. 2013/7/17 Kazunori INABA 9 ファイル転送 FTP, SFTP, WebDAV ファイル転送が必要となるケースは比較的多い。   - お客様、Webデザイナーさんによる静的コンテンツファイルの    メンテナンス。   - システム間連携。 FTPサーバーはできるだけ立てたくない...   - 「Web公開するコンテンツファイルだから暗号化は不要」とよく    言われるが...OSのユーザーパスワードが平文で流れる!    (メール送受信のPOP/SMTPも同じことだけど...)
  10. 10. 2013/7/17 Kazunori INABA 10 ファイル転送 FTP, SFTP, WebDAV (続き)   - FTPが許されるなら、端末ログインはSSHじゃなくてtelnetでい    いし、ログインフォームもHTTPSじゃなくてHTTPでよいの    では...   - と思うけど、お客様側の事情もある。     ・FFFTPの操作に慣れている。     ・PCに新しいクライアントソフトをインストールできない。      etc.   - できるだけセキュリティ対策を施してFTPサーバーを稼働させる。   - FTP over SSLで暗号化することや、SFTP, WebDAVで代替する    方法もある。→要件に合わせて適切に選択。     
  11. 11. 2013/7/17 Kazunori INABA 11 FTP vsftpd(1) ・できれば、アクセス元IPアドレスを限定。 ・できれば、アクティブ通信は使用しない。   サーバーからクライアントに向けてデータセッションを張るため、   クライアント側PCのセキュリティ設定や上位Firewallでアクセス許可   が必要となるから。   (以下、設定は /etc/vsftpd/vsftpd.conf)   connect_from_port_20=NO ・匿名ユーザーは使用しない。   anonymous_enable=NO
  12. 12. 2013/7/17 Kazunori INABA 12 FTP vsftpd(2) ・chrootを有効として、ホームディレクトリより上位にアクセス  させない。   chroot_local_user=YES   chroot_list_enable=YES   chroot_list_file=/etc/vsftpd/chroot_list   ※/etc/vsftpd/chroot_list には、アクセスを禁止するユーザーを列挙。    root, mysql など。 ・パッシブ通信のListenポートを21から10021などに変更。  さらにデータ通信時の使用ポートの範囲を限定。   listen_port=10021   pasv_enable=YES   pasv_min_port=10030   pasv_max_port=10049
  13. 13. 2013/7/17 Kazunori INABA 13 FTP vsftpd(3) ・FTPS(FTP over SSL/TLS)による暗号化通信   - 通信をSSLで暗号化する。   - Explicitモード(「明示的に暗号化」、デフォルト)にすれば、    パスワードも暗号化して送られる。→FTPESともいう。   - クライアント側がNAPTだと、ルーターの仕様によっては接続でき    ないことがあることに注意!     最近のルータならほとんど問題なし?
  14. 14. 2013/7/17 Kazunori INABA 14 FTP vsftpd(4) ・FTPS(FTP over SSL/TLS) の設定   (参考)  http://www005.upp.so-net.ne.jp/develop-tom/deb/vsftpd-deb.html  http://centossrv.com/vsftpd.shtml   ssl_enable=YES   rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem   force_local_logins_ssl=NO   force_local_data_ssl=NO   ssl_ciphers=HIGH // これを指定しないとFilezillaで接続できない。   ※証明書ファイルは、秘密鍵と証明書を一体化させる。   ※force_local~は、接続時に必ずSSL接続させるか否か。     NOとすると、暗号化していないFTP通信も許可する。     
  15. 15. 2013/7/17 Kazunori INABA 15 SFTP(1) ・SSHを利用したファイル転送。 ・通信はSSLで暗号化されるが、chrootの設定がしにくい。   → openssh 4.9以降は、SFTP専用ユーザーのchroot設定が簡単     になった。   ※chrootのトップディレクトリの所有者はrootユーザーでなければ     ならないことに注意。   ※chroot内ではシンボリックリンクを辿れないことに注意。        
  16. 16. 2013/7/17 Kazunori INABA 16 SFTP(2) (設定例)   Webデザイナーさんによるコンテンツアップロード用に、   Web DocumentRoot(/var/www/web1)配下のみアクセスできる   SFTP専用ユーザー designer を作成する。 ・OpenSSHの設定   -- /etc/ssh/sshd_config   Subsystem sftp internal-sftp   Match Group sftponly PasswordAuthentication yes AllowAgentForwarding no AllowTcpForwarding no ChrootDirectory /home/%u ForceCommand internal-sftp        
  17. 17. 2013/7/17 Kazunori INABA 17 SFTP(3) ・Web DocumentRootディレクトリ /var/www/web1 を作成  # mkdir /var/www/web1  # chown apache.apache /var/www/web1 // 所有グループはapache  # chmod 2770 /var/www/web1     // アップロードしたファイルの所有グループがapacheとなるようにする。 ・グループ、ユーザーの追加  # groupadd -g <gid> sftponly  # useradd -u <uid> -g sftponly -G apache -d /home/designer -M -s /sbin/nologin -c 'for Designer SFTP only user' designer     // Webコンテンツをアップロードできる権限をもたせるため、     // apacheグループにも所属させる。  # passwd designer
  18. 18. 2013/7/17 Kazunori INABA 18 SFTP(4) ・chrootユーザーのホームディレクトリを作成  # mkdir /home/designer  # chown root.sftponly /home/designer  # chmod 750 /home/designer ・chrootユーザー配下のディレクトリとWebディレクトリを同期   mountコマンドのbindオプションを使用して、/var/www/web1を   /home/designer/web1 として再マウントする。  # mkdir /home/designer/web1  # mount -o bind /var/www/web1 /home/designer/web1  # df -a // -aオプションをつけないと、bindディレクトリは表示されない。  ※この状態でコンテンツのアップロード、Web参照などの動作確認を   行ってみる。     
  19. 19. 2013/7/17 Kazunori INABA 19 SFTP(5) ・OS起動時の自動マウント   マウント済みのときは、いったんアンマウントする。  # umount /home/designer/web1   /etc/fstabに追記する。 -- /etc/fstab /var/www/web1 /home/designer/web1 none bind 0 0  # mount /home/designer/web1     
  20. 20. 2013/7/17 Kazunori INABA 20 WebDAV(1) ・Apacheの設定だけで済むので影響が少ない。   - 稼働中のシステムで新たにFTPやSSHのファイアウォール    ポリシーを変更できない(したくない)場合など。 -- /etc/httpd/conf/httpd.conf LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so <IfModule mod_dav_fs.c> DAVLockDB /var/lib/dav/lockdb </IfModule> <Directory "/var/www/html/dav"> DAV On </Directory>
  21. 21. 2013/7/17 Kazunori INABA 21 WebDAV(2) ・Apacheのさまざまな機能を使用できる。   - HTTP Proxyを経由したアクセスも可能。     →Reverse ProxyでプライベートLAN内サーバーへの転送も可能に。   - HTTPS必須、アクセス元IPアドレスによる制限、BASIC認証を    組み合わせれば、セキュアになる。   - ディレクトリにApacheプロセス起動ユーザーによる書き込み権限    が必要であることに注意。 ・クライアントソフトはCyberduckが便利。(ちょっと重いけど)   - Windows/Macの両者に対応。   - SCP, FTPなどの各種プロトコルやAmazon S3ほかのクラウド    ストレージサービスに対応。        

×