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

4,544 views
4,276 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ほかのクラウド    ストレージサービスに対応。        

×