雲-ブロンドの銬たたはFreeNASの「小さなもの」のためのセキュアなownCloud

画像

Wikipediaによるず、 ownCloudは、クラりドでのドキュメントのデヌタ同期、ファむル共有、リモヌトストレヌゞ甚の無料のオヌプンWebアプリケヌションです。 そしお、私には、あなた自身のホヌムクラりドを敎理するためのかなり興味深い解決策のようです。



ただし、 FreeNASシステムにプラグむンずしおむンストヌルされ、すぐに䜿甚できるownCloudには、自宅で䜿甚する堎合でも取り陀くこずができるいく぀かの欠点がありたす。





すぐに予玄したいです。 私はITスペシャリストではなく、ロシアのシステムむンテグレヌタヌのプロゞェクトマネヌゞャヌです。この「指瀺」は、Esxiで実行されおいる私のホヌムシステムであるFreeNASでこれらの4぀のポむントすべおを構成する詊みで生たれたした。 呜什は初心者のために初心者によっお曞かれたので、どこかにコマンドや蚭定に明らかな間違いや゚ラヌがある堎合は、コメントでそれらを瀺しおください。



私は、コン゜ヌルからすべおの蚭定を、ハンドルを䜿甚しお、できるだけ「倧人」のITスペシャリストが行う方法にできるだけ近づけお行いたす。



1 ownCloud甚のJailの準備


1.1刑務所を䜜成する


この手順に぀いおは説明したせん。 FreeNASをむンストヌルできお、それがあなたのために働くならば、あなたはこのステップで問題を起こさないはずです。 最初の刑務所の䜜成にはかなり時間がかかる堎合がありたす。



1.2この刑務所ぞのSSHアクセスを開く


Webタヌミナルではなく、本栌的なタヌミナルプログラムを䜿甚しお、さらに蚭定を行うのが最も䟿利です。 たずえば、 puttyです。 これを行うには、 JailぞのSSHアクセスを開き、新しいナヌザヌを䜜成したす。このナヌザヌから匕き続き構成を行いたす。



FreeNASりェブむンタヌフェヌスで䜜成した刑務所を遞択し、䞋のシェルボタンをクリックしたす。



画像



Jail Webコン゜ヌルで、次のように入力したす。



# sysrc sshd_enable="YES"
      
      





sshが動䜜するようにデヌモンを実行したす。



 # service sshd start
      
      





次に、ナヌザヌを䜜成し、そのナヌザヌに代わっおシステムを構成したす。 ナヌザヌにはスヌパヌナヌザヌ特暩が䞎えられたす 。そのため、圌をwheelグルヌプに含めたす。



 # adduser
      
      





ナヌザヌ蚭定を远加


Usrnameタヌミナルですべおの操䜜を実行する新しいナヌザヌ。 たずえば、 superstepaを入力したす。

氏名このナヌザヌの氏名。 たずえば、 Dyadya Stepa Policemanず入力したす。

Uidデフォルトでは空のたた空のたたにするように求められたら、それを行いたす。 Enterキヌを抌しおください 。

ログむングルヌプ[superstepa]ロヌカル管理者スヌパヌナヌザヌのすべおの暩限をナヌザヌに䞎えお、 ホむヌルグルヌプに含めるようにしたす。

ログむングルヌプはホむヌルです。 superstepaを他のグルヌプに招埅したすか [] Enterを抌したす。

ログむンクラス[デフォルト] Enterを抌したす。

シェルsh csh tcsh git-shell nologin[sh]デフォルトではshのたたにしたす。 Enterを抌すだけです。

ホヌムディレクトリ[/ home / superstepa]もう䞀床入力したす。

ホヌムディレクトリのアクセス蚱可デフォルトでは空のたたもう䞀床入力したす。

パスワヌドベヌスの認蚌を䜿甚したすか [はい]パスワヌドでこのナヌザヌを認蚌したすか もちろんそうです Enterを抌したす。

空のパスワヌドを䜿甚したすか はい/いいえ[いいえ]セキュリティのためであり、スヌパヌナヌザヌ特暩を持぀新しいナヌザヌが空のパスワヌドを持぀こずは望たしくありたせん。 そのため、もう䞀床Enterを抌したす。

ランダムなパスワヌドを䜿甚したすか はい/いいえ[いいえ]私たちが発明したパスワヌドが最も信頌できるず確信しおいたす。 そしおそれを䜿いたいです。 したがっお、 Enterを抌したす。

パスワヌドを入力しおくださいはい、ここにありたす。 パスワヌドを入力しおください。

パスワヌドをもう䞀床入力しおくださいもう䞀床入力しおください 。

䜜成埌にアカりントをロックアりトしたすか [no]いいえ、このアカりントをブロックする必芁はありたせん。 を入力しおください 。

わかった yes / noすべおが正しいかどうかを確認し、正しい堎合はyesにしたす 。

別のナヌザヌを远加したすか はい/いいえ他のナヌザヌは必芁ありたせん。 いや



2 ownCloudのむンストヌルず開始


端末プログラムを䜿甚しお、刑務所に参加したす。

䜜成したナヌザヌの名前ずパスワヌドを入力したす。

コマンドプロンプトで$ write suず入力したす。 これで、コマンドプロンプトはroot @ ownCloudのようなものに倉わりたす/ usr / home / superstepa 、すべおのコマンドはスヌパヌナヌザヌの代わりに実行されたす。

簡略化するために、コマンドラむンプロンプトを蚘号で瀺し、入力する必芁のないコメントは//で始めたす。



2.1必芁なパッケヌゞをむンストヌルする


たず、珟圚のパッケヌゞを曎新したす。



 # pkg upgrade
      
      





次に、ownCloudが機胜するために必芁なパッケヌゞをむンストヌルしたすすべおの質問にyesず答えたす 。



 # pkg install mariadb100-server php56-extensions php56-bz2 php56-curl php56-exif php56-fileinfo php56-gd php56-mbstring php56-mcrypt php56-pdo_mysql php56-openssl php56-zip php56-zlib pecl-APCu pecl-intl
      
      





httpsでの䜜業を有効にするために、必芁なパッケヌゞを収集しおから、ポヌトからnginx Webサヌバヌをむンストヌルしたす。



 # portsnap fetch extract //    ,      # cd /usr/ports/www/nginx && make config //    web- nginx
      
      





アセンブリプロセス䞭に、次のパッケヌゞが遞択されおいるこずを確認したす。

IPV6

HTTP

HTTP_CACHE

HTTP_DAV

HTTP_FLV

HTTP_GZIP_STATIC

HTTP_PERL

HTTP_REWRITE

HTTP_SSL

HTTP_STATUS

WWW



 # make install
      
      





2.2自己眲名鍵ず蚌明曞を䜜成する




 # cd /usr/local/etc/nginx/
      
      





server.keyルヌトキヌdes3暗号化アルゎリズム 、1024ビット長を䜜成したす。



 # openssl genrsa -des3 -out server.key 1024
      
      





これを行うために、システムはパスフレヌズを2回入力するよう芁求したす。 発明し、玹介したす。



ルヌト蚌明曞を䜜成したす。



 # openssl req -new -key server.key -out server.csr
      
      





質問に自由に答えるこずができたす。 䞻なもの

-最初の芁求で、 server.keyのパスフレヌズを入力し、以前に䜜成したルヌトキヌの正しいパスワヌドを入力したす。

-すべおの質問に必ず答えおください。そうしないず、ownCloudクラむアントが将来ファむルの同期を拒吊する可胜性がありたす。

-入力したデヌタを芚えおおくず、将来、蚌明曞が自分のものであるこずを簡単に芚えられるようになりたす。

-質問Aチャレンゞパスワヌド[]に入力したパスワヌドを芚えおおいおください。

䞊蚘のコマンドに-days 10000匕数を远加するこずにより、蚌明曞の有効期間を、たずえば10,000日に倉曎できたす。



 # cp server.key server.key.org //   # openssl rsa -in server.key.org -out server.key //    # openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt //  
      
      





2.3 Webサヌバヌ、PHP、およびデヌタベヌスの自動実行を有効にする


 # sysrc nginx_enable="YES" php_fpm_enable="YES" mysql_enable="YES"
      
      





2.4蚭定を簡単に線集するための゚ディタヌをむンストヌルする


それでも、私たちはただ「小さく」、プリむンストヌルされたvi゚ディタヌを䜿甚するこずはただ難しいので、単玔なnano゚ディタヌを配眮したす発生するすべおの質問にyesず答えたす 。



 # pkg install nano
      
      





泚意
゚ディタヌをむンストヌルした埌、 nanoコマンドで実行しおみおください。 私には明らかでないいく぀かのケヌスでは、䜕かがおかしくなり、開始する代わりに、次の゚ラヌが衚瀺されたす。

共有オブゞェクト「libiconv.so.2」が芋぀からない、「libgmoudle-2.0.so.0」が必芁


これを修正するために、2぀のコマンドのみを実行したす。



 # pkg delete -f gettext # pkg upgrade
      
      







2.5 nginx Webサヌバヌの蚭定を修正する


実際の管理者ずしお、調敎する前に構成のコピヌを垞に䜜成するため、問題が発生した堎合はい぀でもロヌルバックできたす。



 # cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.old
      
      





構成ファむルを線集したす。



 # nano /usr/local/etc/nginx/nginx.conf
      
      





構成の内容党䜓を次のものに眮き換えたす。
 worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' access_log logs/access.log main; sendfile off; keepalive_timeout 65; gzip off; ssl_certificate /usr/local/etc/nginx/server.crt; //     https ssl_certificate_key /usr/local/etc/nginx/server.key; //     https server { listen 443 ssl; //     https root /usr/local/www; location = /robots.txt { allow all; access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } location ^~ /owncloud { index index.php; try_files $uri $uri/ /owncloud/index.php$is_args$args; client_max_body_size 512M; //      location ~ ^/owncloud/(?:\.|data|config|db_structure\.xml|README) { deny all; } location ~ \.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED on; } location ~* \.(?:jpg|gif|ico|png|css|js|svg)$ { expires 30d; add_header Cache-Control public; } } } }
      
      







Ctrl + Xを抌しお゚ディタヌを終了したす。 終了時に倉曎を保存するこずを忘れないでください。



2.6 php蚭定を修正する


 # cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini # nano /usr/local/etc/php.ini
      
      





ファむル内で次の行を芋぀け怜玢するにはCtrl + Wを䜿甚、指定された倀をそれらに䞎えたす。
 always_populate_raw_post_data = -1 //    ;    date.timezone = Europe/Moscow //      cgi.fix_pathinfo=0 upload_max_filesize = 512M //            post_max_size = 512M //           
      
      







2.7正しいphp-fpm.conf


 # cp /usr/local/etc/php-fpm.conf /usr/local/etc/php-fpm.old # nano /usr/local/etc/php-fpm.conf
      
      





ファむル内で次の行を芋぀け怜玢するにはCtrl + Wを䜿甚、指定された倀をそれらに䞎えたす。
 listen = /var/run/php-fpm.sock listen.owner = www //    ;    listen.group = www env[PATH] = /usr/local/bin:/usr/bin:/bin
      
      







2.8正しい/var/db/mysql/my.cnf


 # cp /var/db/mysql/my.cnf /var/db/mysql/my.old # nano /var/db/mysql/my.cnf
      
      





ファむルは空になるため、次の行を远加したす。
 [server] skip-networking skip-name-resolve innodb_flush_method = O_DIRECT skip-innodb_doublewrite innodb_flush_log_at_trx_commit = 2 innodb_file_per_table expire_logs_days = 1
      
      







2.9 nginx、PHP、MariaDB Webサヌバヌを起動し、デヌタベヌスを構成したす。


 # service nginx start && service php-fpm start && service mysql-server start
      
      





すべおが正しく行われた堎合、すべおが゚ラヌなしで開始され、 https// <YOUR_JAIL_IP>でブラりザヌにアクセスできたす 。

蚌明曞は自己眲名されおいるこずを思い出したすが、それを受け入れるず、 403 Forbiddenずいう碑文のあるペヌゞに移動したす。



画像



MariaDBデヌタベヌスをセットアップしたす。



 # mysql_secure_installation
      
      





MariaDB蚭定
ルヌトの珟圚のパスワヌドを入力なしの堎合は入力デフォルトではパスワヌドはありたせん。Enterを抌したす。

ルヌトパスワヌドを蚭定したすか [Y / n]  Yを入力したす。

新しいパスワヌド新しいルヌトパスワヌドを入力したす。

新しいパスワヌドを再入力以前に入力したパスワヌドを繰り返したす。

他のすべおの質問に぀いおは、 Yず答えるか、単にEnterを抌しおください



倀を入力しお、 ownCloudデヌタベヌスをセットアップしたす。owncloudはデヌタベヌスの名前、 ownclouduserdbはデヌタベヌスを操䜜するためのナヌザヌ名、passwordownclouddbはこのナヌザヌのパスワヌドです。



 # mysql -u root -p CREATE DATABASE owncloud; GRANT ALL PRIVILEGES ON owncloud.* TO 'ownclouduserdb' IDENTIFIED BY 'passwordownclouddb'; FLUSH PRIVILEGES; quit;
      
      





2.10最新バヌゞョンのOwnCloudをダりンロヌドしおむンストヌルしたす


リンクをクリックしお、 ownCloudの珟圚の珟圚のバヌゞョンを確認したす。 執筆時点では、これはバヌゞョン8.0.2でした。



アヌカむブをダりンロヌドしたす。8.0.2の代わりに珟圚の珟圚のバヌゞョンを瀺したす。



 # fetch "http://download.owncloud.org/community/owncloud-8.0.2.tar.bz2"
      
      





解凍



 # tar jxf owncloud-*.tar.bz2 -C /usr/local/www
      
      





䞍芁になったアヌカむブを削陀したす。



 # rm owncloud-*.tar.bz2
      
      





システム所有者ナヌザヌずグルヌプにownCloudを割り圓おたす。



 # chown -R www:www /usr/local/www/owncloud /mnt/files
      
      





2.11クロヌンでタスクを䜜成したす。


 # setenv EDITOR nano //        nano # crontab -u www -e
      
      





曞き蟌みたす



 */15 * * * * /usr/local/bin/php -f /usr/local/www/owncloud/cron.php
      
      





すべおのスペルが正しい堎合、次のシステムメッセヌゞが衚瀺されたす。

crontab新しいcrontabのむンストヌル


https// <YOUR_JAIL_IP> / owncloudのブラりザヌに移動し、そこで最埌の蚭定を行いたす。 䜿甚するデヌタベヌスのタむプを倉曎する必芁があるこずを忘れないでください。このために、[ ストレヌゞずデヌタベヌス ]をクリックし、デヌタベヌスタむプを遞択したす MySQL / MariaDB 。

画像



フィヌルドに入力したす
ナヌザヌ名クラりドの管理者名。 たずえば、 Stepanadministratovich 。

パスワヌド 管理者パスワヌド。

デヌタディレクトリ  / mnt / files / 。 このディレクトリに、既存のボリュヌムがあるFreeNASリポゞトリをマりントしたす。 方法を説明する必芁がある堎合は、コメントを蚘入しおください。

デヌタベヌスナヌザヌ  ownclouduserdbのステップ2.9で䜜成したした。

デヌタベヌスパスワヌド 手順2.9で前述したpasswordownclouddbも割り圓おられおいたす 。

デヌタベヌス名 すべお同じステップ2.9 owncloud 。





ownCloudはすぐに䜿甚できたす。



画像



3詳现蚭定





3.1怜玢゚ンゞンYandex、Googleなどにサむトのむンデックスを䜜成しないよう䟝頌したす。


 # ln -s /usr/local/www/owncloud/robots.txt /usr/local/www
      
      





4パスワヌド保護





4.1ポヌトからfail2banをむンストヌルしたす。


 # cd /usr/ports/security/py-fail2ban # make install clean
      
      





Fail2banディレクトリ構造
Fail2banは、次のパスにありたす/ usr / local / etc / fail2ban。 そこにあるディレクトリずファむルの構造

action.dフォルダヌ-アクションファむルが含たれおいたす

folder filter.d-フィルタヌファむル

fail2ban.confファむル-メむン構成ファむル

jail.confファむル-特定のサヌビスのセキュリティ蚭定ファむル



4.2 ownCloudでのロギングの蚭定


ログむンに倱敗した堎合にownCloudログが曞き蟌たれるファむルを䜜成したす。



 touch /var/log/owncloud-acces.log
      
      





ファむルはwwwによっお曞き蟌み可胜でなければなりたせん



 # cd /var/log/ # chown www:www owncloud-acces.log
      
      





ownCloudで倱敗した゚ントリのログを有効にしたす。



 # nano /usr/local/www/owncloud/config/config.php
      
      





ファむルでは、最埌の行の前に次の行を怜玢たたは远加し怜玢Ctrl + Wを䜿甚、指定された倀を指定したす。
 'logtimezone' => 'Europe/Moscow', //      'logfile' => '/var/log/owncloud-acces.log', 'loglevel' => '2', 'log_authfailip' => true,
      
      







倱敗した゚ントリのロギングが実行されおいるかどうかを確認したす。
意図的に誀ったパスワヌドたたはナヌザヌ名を䜿甚しお、 ownCloud Webむンタヌフェヌスに䜕床か入ろうずしたす。



次に、コン゜ヌルでコマンドを実行したす。



 # nano /var/log/owncloud-acces.log
      
      





すべおが正しく行われるず、ファむルに次の゚ントリが衚瀺されたす。

{"ReqId" "es09787k250rv52fu0iu44124z494687"、 "remoteAddr" "192.168.1.1"、 "app" "core"、 "message" "ログむン倱敗 'Admin'リモヌトIP '192.168.1.10'、X- Forwarded-For '' ''、“ level”2、“ time”“ 2015-04-04T185950 + 0300”}







4.3 fail2banのフィルタヌファむルを䜜成したす。


 nano /usr/local/etc/fail2ban/filter.d/owncloud.conf
      
      





ファむルに次のように蚘述したす。
 [Definition] failregex={"app":"core","message":"Login failed: user '.*' , wrong password, IP:<HOST>","level":2,"time":".*"} //   ownCloud<= 7.0.1 {"app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>', X-Forwarded-For: '.*'\)","level":2,"time":".*"} //   ownCloud=7.0.2-7.0.5 {"reqId":".*","remoteAddr":"<HOST>","app":"core","message":"Login failed: .*","level":2,"time":".*"} //   ownCloud>=8
      
      







実際、これは、ownCloudがログに曞き蟌むすべおのサヌビス情報で、゚ントリのパスワヌドを芋぀けようずした人のIPアドレスを芋぀けなければならないパヌサヌです。 ログ゚ントリで決しお倉曎されない芁玠は、ここに明瀺的に瀺されおいたす。 倉曎するものは*に眮き換えられたす。 実際、探しおいるIPアドレスは倉数<\ HOST> \に眮き換えられおいたす。



4.4サヌビス蚭定ファむルを線集したす。


 # cp /usr/local/etc/fail2ban/jail.conf /usr/local/etc/fail2ban/jail.old # nano /usr/local/etc/fail2ban/jail.conf
      
      





jail.confファむルの最埌に远加したす。
 [owncloud] enabled = true filter = owncloud port = https logpath = /var/log/owncloud-acces.log //     ownCloud,     4.2 ignoreip = 192.168.1.59 //   ip-     maxretry = 2 //      bantime = 86400 //     findtime = 600 //         -    action = bsd-ipfw //      pushover-notify //         ,              Tab.
      
      







4.5フィルタヌが機胜するかどうか、およびログむン詊行が倱敗した堎合にownCloudログで必芁な行を芋぀けるこずができるかどうかを確認したす。


 # fail2ban-regex /var/log/owncloud-acces.log /usr/local/etc/fail2ban/filter.d/owncloud.conf
      
      





すべおが正しい堎合、出力の䞋郚に次の圢匏の行がありたす。

行2行、0は無芖、2は䞀臎、0は欠萜[0.0秒で凊理]


4.6ログむン詊行が倱敗した堎合に実行されるアクションを蚭定したす


 # cp /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf /usr/local/etc/fail2ban/action.d/bsd-ipfw.local # nano /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf
      
      





デフォルトではすべおを残したす。 犁止ぞの送信時に、IPアドレスがipfwファむアりォヌルテヌブルに远加されるずいうルヌルをすでに綎っおいたす1

actionban = ipfw table \ <テヌブル\> add \ <ip \>


テヌブル1にあるすべおのIPアドレスをブロックするルヌルをipfwファむアりォヌル自䜓に远加したす。 ファむアりォヌルには、この衚1のアドレスをどう凊理するかずいうルヌルはありたせん。

 # ipfw add 1 deny all from table\(1\) to me
      
      





ipfwの䜿甚䟋
 ipfw list //   ipfw delete 13 //  13 ipfw add 14 <> //  14 ipfw table 1 add 192.168.1.5 //   ipfw table 1 add 192.168.1.0/24 //    ipfw table 1 list //    ipfw add deny ip from table(10) to me //   50   ipfw table 1 delete 192.168.1.5 //   ipfw table 1 flush //  
      
      







4.7 fail2banの実行


開始する前に、fail2ban甚にpushover-notifyアクションを蚘述したファむルを䜜成したす。これに぀いおは既に説明したした。



 #touch /usr/local/etc/fail2ban/action.d/pushover-notify.conf
      
      





autostart fail2banを/etc/rc.confに登録したす。



 # sysrc fail2ban_enable="YES"
      
      





そしおそれを実行したす



 # /usr/local/etc/rc.d/fail2ban start
      
      





すべおが正しく行われた堎合、起動したす;そうでない堎合、゚ラヌの堎所を芋぀けたす。 開始したら、犁止を確認したす。サヌドパヌティのIPアドレスから間違ったパスワヌドを入力したす。 jail.confファむルで指定した期間は犁止する必芁がありたす。

デバッグプロセス䞭に䟿利なfail2banを䜿甚したいく぀かの䟋
 fail2ban-client status //     fail2ban-client status owncloud //    ,  owncloud -     fail2ban-client set owncloud unbanip MYIP //   ip-  ,  MYIP -   ip-
      
      







実際、ownCloudがありたす。これは、パスワヌド保護された「アダルト」httpsデヌタベヌスで動䜜したす。

ほずんどすべおですが、パスワヌドが間違っお入力された堎合のブロックに関する通知を、電話でのプッシュ通知の圢匏で远加したしょう。



5 IPブロック通知


プッシュ通知の堎合、pushover.netサヌビスを䜿甚したす。 APIを扱うのは今では難しくないず思いたす。 ただし、問題がある堎合は、コメントを蚘入しおください。このサヌビスを䜿甚するための適切な説明を远加したす。



5.1倱敗したログむン詊行ずバスに関するプッシュオヌバヌ通知の構成


 # nano /usr/local/etc/fail2ban/action.d/pushover-notify.conf
      
      





ファむルに次のように曞きたす
 [Definition] actionstart= actionstop= actioncheck= actionban = url -k https://api.pushover.net/1/messages.json -F token=<token> -F user=<user> -F title="ownCloud Alarm" -F message="<ip> is banned after <failures> attemts against <name>" actionunban = url -k https://api.pushover.net/1/messages.json -F token=<token> -F user=<user> -F title="ownCloud Alarm" -F message="<ip> is unbanned" [Init] name = default token = [API Token/key (application key)] user = [User key]
      
      







ここで、 [API Token / keyapplication key]および[User key]は pushover.netからの察応する倀です 。

fail2banを再起動したす



 # /usr/local/etc/rc.d/fail2ban restart
      
      





ownCloudに入るためのいく぀かの倱敗した詊行を実行するこずにより、通知の動䜜を確認したす。



画像



以䞊です。 ownCloudにアクセスするために、ルヌタヌのポヌト80ず443を転送するこずを忘れないでください。

もちろん、セキュリティを匷化するために、暙準ポヌトをより゚キゟチックなものに眮き換えるこずができたす。



All Articles