21
2013/7/17 Kazunori INABA 1 2013.7.17 Garage labsサーバー部10U Linuxサーバーのセキュリティ対策 part3 ~僕がいつもやっていること 稲葉 一紀@札幌

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

Embed Size (px)

Citation preview

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

2013/7/17 Kazunori INABA 1

2013.7.17Garage labsサーバー部10U

Linuxサーバーのセキュリティ対策 part3~僕がいつもやっていること

稲葉 一紀@札幌

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

2013/7/17 Kazunori INABA 2

自己紹介

稲葉 一紀 サーバーインフラ専門のフリーランスエンジニア@札幌  ※HPできました。稲葉サーバーデザイン http://inaba-serverdesign.jp/

    おもにアプリ開発企業・エンジニア向けに

    セキュリティ・可用性・性能・拡張性を考慮した

    ちょっと気の利いた

    サーバーインフラ構成設計・設定・支援や既存システムの性能改善調査・支援

     を行います。

  札幌ライブ情報 公開中  http://wiki.livedoor.jp/sapporo_rock_live/

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

2013/7/17 Kazunori INABA 3

セキュリティ対策 - 基本方針

・僕がサーバーの設定を行うときにいつもやっていることを発表 します part3

・できるだけPaaS, SaaS的な外部サービスや共用レンタル サーバーを利用して、自分で設定、運用するサービスを減らす。  - 特にDNSとメールは自前でやらない!  - SSHとHTTP(S)のみ外部公開するのが理想。  - Webアプリケーションサーバ1台の運用保守を専門業者に   任せるといくらかかる?

・どんな対策をしても、やられるときはやられる!  それでも、できるだけ少ない手間で基本的な設定を行い、  不正アクセスされる確率を減らす。

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

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

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

2013/7/17 Kazunori INABA 5

セキュリティ対策 - 項目

Part3(今回)・Apache補足・ファイル転送 FTP, SCP/SFTP, WebDAV

Part4以降・メール Postfix・アンチウイルス ClamAV・改ざん検知 Tripwire・SEO対策・その他やってないこと SELinux, IPS, WAF・技術以外の対策

以降、コマンドやConfigは、CentOSにおける例です。

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

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, サイズによる限定が可能。

  

    

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

2013/7/17 Kazunori INABA 7

Apache補足(2)

ApacheとLDAP連携のセキュリティについて。(自分で試してはいませんが)

・WebサーバーとLDAPサーバーが別であれば、サーバー間は LDAPSで通信を暗号化すると、より安全。 (ぐらいしか思いつきませんでした。)

  

    

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

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アドレス変更など。

  

    

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

2013/7/17 Kazunori INABA 9

ファイル転送 FTP, SFTP, WebDAV

ファイル転送が必要となるケースは比較的多い。  - お客様、Webデザイナーさんによる静的コンテンツファイルの   メンテナンス。

  - システム間連携。

FTPサーバーはできるだけ立てたくない...  - 「Web公開するコンテンツファイルだから暗号化は不要」とよく   言われるが...OSのユーザーパスワードが平文で流れる!   (メール送受信のPOP/SMTPも同じことだけど...)

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

2013/7/17 Kazunori INABA 10

ファイル転送 FTP, SFTP, WebDAV

(続き)  - FTPが許されるなら、端末ログインはSSHじゃなくてtelnetでい   いし、ログインフォームもHTTPSじゃなくてHTTPでよいの   では...

  - と思うけど、お客様側の事情もある。    ・FFFTPの操作に慣れている。    ・PCに新しいクライアントソフトをインストールできない。     etc.

  - できるだけセキュリティ対策を施してFTPサーバーを稼働させる。

  - FTP over SSLで暗号化することや、SFTP, WebDAVで代替する   方法もある。→要件に合わせて適切に選択。

    

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

2013/7/17 Kazunori INABA 11

FTP vsftpd(1)

・できれば、アクセス元IPアドレスを限定。

・できれば、アクティブ通信は使用しない。  サーバーからクライアントに向けてデータセッションを張るため、  クライアント側PCのセキュリティ設定や上位Firewallでアクセス許可  が必要となるから。

  (以下、設定は /etc/vsftpd/vsftpd.conf)  connect_from_port_20=NO

・匿名ユーザーは使用しない。  anonymous_enable=NO

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

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

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

2013/7/17 Kazunori INABA 13

FTP vsftpd(3)

・FTPS(FTP over SSL/TLS)による暗号化通信  - 通信をSSLで暗号化する。

  - Explicitモード(「明示的に暗号化」、デフォルト)にすれば、   パスワードも暗号化して送られる。→FTPESともいう。

  - クライアント側がNAPTだと、ルーターの仕様によっては接続でき   ないことがあることに注意!    最近のルータならほとんど問題なし?

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

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通信も許可する。    

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

2013/7/17 Kazunori INABA 15

SFTP(1)

・SSHを利用したファイル転送。

・通信はSSLで暗号化されるが、chrootの設定がしにくい。  → openssh 4.9以降は、SFTP専用ユーザーのchroot設定が簡単    になった。  ※chrootのトップディレクトリの所有者はrootユーザーでなければ    ならないことに注意。  ※chroot内ではシンボリックリンクを辿れないことに注意。

      

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

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

      

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

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

    

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

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参照などの動作確認を  行ってみる。

    

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

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

    

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

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>

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

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