Linuxサーバのセキュリティ対策 part3 - ファイル転送編
-
Upload
kazunori-inaba -
Category
Technology
-
view
3.637 -
download
14
Transcript of Linuxサーバのセキュリティ対策 part3 - ファイル転送編
2013/7/17 Kazunori INABA 1
2013.7.17Garage labsサーバー部10U
Linuxサーバーのセキュリティ対策 part3~僕がいつもやっていること
稲葉 一紀@札幌
2013/7/17 Kazunori INABA 2
自己紹介
稲葉 一紀 サーバーインフラ専門のフリーランスエンジニア@札幌 ※HPできました。稲葉サーバーデザイン http://inaba-serverdesign.jp/
おもにアプリ開発企業・エンジニア向けに
セキュリティ・可用性・性能・拡張性を考慮した
ちょっと気の利いた
サーバーインフラ構成設計・設定・支援や既存システムの性能改善調査・支援
を行います。
札幌ライブ情報 公開中 http://wiki.livedoor.jp/sapporo_rock_live/
2013/7/17 Kazunori INABA 3
セキュリティ対策 - 基本方針
・僕がサーバーの設定を行うときにいつもやっていることを発表 します part3
・できるだけPaaS, SaaS的な外部サービスや共用レンタル サーバーを利用して、自分で設定、運用するサービスを減らす。 - 特にDNSとメールは自前でやらない! - SSHとHTTP(S)のみ外部公開するのが理想。 - Webアプリケーションサーバ1台の運用保守を専門業者に 任せるといくらかかる?
・どんな対策をしても、やられるときはやられる! それでも、できるだけ少ない手間で基本的な設定を行い、 不正アクセスされる確率を減らす。
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
2013/7/17 Kazunori INABA 5
セキュリティ対策 - 項目
Part3(今回)・Apache補足・ファイル転送 FTP, SCP/SFTP, WebDAV
Part4以降・メール Postfix・アンチウイルス ClamAV・改ざん検知 Tripwire・SEO対策・その他やってないこと SELinux, IPS, WAF・技術以外の対策
以降、コマンドやConfigは、CentOSにおける例です。
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, サイズによる限定が可能。
2013/7/17 Kazunori INABA 7
Apache補足(2)
ApacheとLDAP連携のセキュリティについて。(自分で試してはいませんが)
・WebサーバーとLDAPサーバーが別であれば、サーバー間は LDAPSで通信を暗号化すると、より安全。 (ぐらいしか思いつきませんでした。)
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アドレス変更など。
2013/7/17 Kazunori INABA 9
ファイル転送 FTP, SFTP, WebDAV
ファイル転送が必要となるケースは比較的多い。 - お客様、Webデザイナーさんによる静的コンテンツファイルの メンテナンス。
- システム間連携。
FTPサーバーはできるだけ立てたくない... - 「Web公開するコンテンツファイルだから暗号化は不要」とよく 言われるが...OSのユーザーパスワードが平文で流れる! (メール送受信のPOP/SMTPも同じことだけど...)
2013/7/17 Kazunori INABA 10
ファイル転送 FTP, SFTP, WebDAV
(続き) - FTPが許されるなら、端末ログインはSSHじゃなくてtelnetでい いし、ログインフォームもHTTPSじゃなくてHTTPでよいの では...
- と思うけど、お客様側の事情もある。 ・FFFTPの操作に慣れている。 ・PCに新しいクライアントソフトをインストールできない。 etc.
- できるだけセキュリティ対策を施してFTPサーバーを稼働させる。
- FTP over SSLで暗号化することや、SFTP, WebDAVで代替する 方法もある。→要件に合わせて適切に選択。
2013/7/17 Kazunori INABA 11
FTP vsftpd(1)
・できれば、アクセス元IPアドレスを限定。
・できれば、アクティブ通信は使用しない。 サーバーからクライアントに向けてデータセッションを張るため、 クライアント側PCのセキュリティ設定や上位Firewallでアクセス許可 が必要となるから。
(以下、設定は /etc/vsftpd/vsftpd.conf) connect_from_port_20=NO
・匿名ユーザーは使用しない。 anonymous_enable=NO
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
2013/7/17 Kazunori INABA 13
FTP vsftpd(3)
・FTPS(FTP over SSL/TLS)による暗号化通信 - 通信をSSLで暗号化する。
- Explicitモード(「明示的に暗号化」、デフォルト)にすれば、 パスワードも暗号化して送られる。→FTPESともいう。
- クライアント側がNAPTだと、ルーターの仕様によっては接続でき ないことがあることに注意! 最近のルータならほとんど問題なし?
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通信も許可する。
2013/7/17 Kazunori INABA 15
SFTP(1)
・SSHを利用したファイル転送。
・通信はSSLで暗号化されるが、chrootの設定がしにくい。 → openssh 4.9以降は、SFTP専用ユーザーのchroot設定が簡単 になった。 ※chrootのトップディレクトリの所有者はrootユーザーでなければ ならないことに注意。 ※chroot内ではシンボリックリンクを辿れないことに注意。
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
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
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参照などの動作確認を 行ってみる。
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
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>
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ほかのクラウド ストレージサービスに対応。