SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
2013/7/17 Kazunori INABA 1
2013.7.17
Garage 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ほかのクラウド
   ストレージサービスに対応。
  
    

Mais conteúdo relacionado

Mais procurados

AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門kk_Ataka
 
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)Yosuke Hiraishi
 
KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料Sumito Tsukada
 
2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話Shohei Koyama
 
Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Shinji Tanaka
 
Jupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIJupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIaxsh co., LTD.
 
My sql security (暗号化)
My sql security (暗号化) My sql security (暗号化)
My sql security (暗号化) Shinya Sugiyama
 
Ossフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみたOssフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみたAkifumi Niida
 
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~decode2016
 
5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE5分で分かるサイボウズのSRE
5分で分かるサイボウズのSREuchan_nos
 
オープニング
オープニングオープニング
オープニングkonekto
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料leverages_event
 
Ansible はじめてみました
Ansible はじめてみましたAnsible はじめてみました
Ansible はじめてみましたTakeshi Kuramochi
 
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~真乙 九龍
 

Mais procurados (20)

AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
 
KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料
 
2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話
 
Devlove mackerel
Devlove mackerelDevlove mackerel
Devlove mackerel
 
Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形
 
Jupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIJupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NII
 
My sql security (暗号化)
My sql security (暗号化) My sql security (暗号化)
My sql security (暗号化)
 
Baser cms3beta
Baser cms3betaBaser cms3beta
Baser cms3beta
 
Vagrant on SoftLayer
Vagrant on SoftLayerVagrant on SoftLayer
Vagrant on SoftLayer
 
Ansible provisioning
Ansible provisioningAnsible provisioning
Ansible provisioning
 
Ossフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみたOssフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみた
 
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
 
実録!AnsiblevsChef-solo
実録!AnsiblevsChef-solo実録!AnsiblevsChef-solo
実録!AnsiblevsChef-solo
 
入門Ansible
入門Ansible入門Ansible
入門Ansible
 
5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE
 
オープニング
オープニングオープニング
オープニング
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
 
Ansible はじめてみました
Ansible はじめてみましたAnsible はじめてみました
Ansible はじめてみました
 
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
 

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

IaaSクラウド比較'14
IaaSクラウド比較'14IaaSクラウド比較'14
IaaSクラウド比較'14Kazunori Inaba
 
EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策Kazunori Inaba
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテストKazunori Inaba
 
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜syou6162
 
Alibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストAlibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストKazunori Inaba
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118Nozomi Kurihara
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo NagataInsight Technology, Inc.
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較真治 米田
 
青空文庫サーバの今と今後
青空文庫サーバの今と今後青空文庫サーバの今と今後
青空文庫サーバの今と今後Keisuke Katsuki
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
もう2度と止まらせない
もう2度と止まらせないもう2度と止まらせない
もう2度と止まらせないShogo Hashimoto
 
OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介Akihiko Horiuchi
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネット株式会社
 
コミュニティ運営とレンタルサーバ
コミュニティ運営とレンタルサーバコミュニティ運営とレンタルサーバ
コミュニティ運営とレンタルサーバ法林浩之
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Hiroyuki Ohnaka
 
Azure Functionsから始めるServerless
Azure Functionsから始めるServerlessAzure Functionsから始めるServerless
Azure Functionsから始めるServerlessryosuke matsumura
 
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介Hinemos
 
【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏
【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏
【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏Developers Summit
 

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

IaaSクラウド比較'14
IaaSクラウド比較'14IaaSクラウド比較'14
IaaSクラウド比較'14
 
EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテスト
 
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜
 
Alibaba Cloudのベンチマークテスト
Alibaba CloudのベンチマークテストAlibaba Cloudのベンチマークテスト
Alibaba Cloudのベンチマークテスト
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
青空文庫サーバの今と今後
青空文庫サーバの今と今後青空文庫サーバの今と今後
青空文庫サーバの今と今後
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
もう2度と止まらせない
もう2度と止まらせないもう2度と止まらせない
もう2度と止まらせない
 
OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
161218 cybozu SRE
161218 cybozu SRE161218 cybozu SRE
161218 cybozu SRE
 
コミュニティ運営とレンタルサーバ
コミュニティ運営とレンタルサーバコミュニティ運営とレンタルサーバ
コミュニティ運営とレンタルサーバ
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
 
Azure Functionsから始めるServerless
Azure Functionsから始めるServerlessAzure Functionsから始めるServerless
Azure Functionsから始めるServerless
 
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
 
【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏
【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏
【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏
 

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

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