Wikipediaã«ãããšã ownCloudã¯ãã¯ã©ãŠãã§ã®ããã¥ã¡ã³ãã®ããŒã¿åæããã¡ã€ã«å ±æããªã¢ãŒãã¹ãã¬ãŒãžçšã®ç¡æã®ãªãŒãã³Webã¢ããªã±ãŒã·ã§ã³ã§ãã ãããŠãç§ã«ã¯ãããªãèªèº«ã®ããŒã ã¯ã©ãŠããæŽçããããã®ããªãèå³æ·±ã解決çã®ããã§ãã
ãã ãã FreeNASã·ã¹ãã ã«ãã©ã°ã€ã³ãšããŠã€ã³ã¹ããŒã«ãããããã«äœ¿çšã§ããownCloudã«ã¯ãèªå® ã§äœ¿çšããå Žåã§ãåãé€ãããšãã§ããããã€ãã®æ¬ ç¹ããããŸãã
- ãŸãã SQLiteãšäžç·ã«ã€ã³ã¹ããŒã«ãããŸããããã¯ãå°æ°ã®ãã¡ã€ã«ãšãŠãŒã¶ãŒãããå Žåã«ã®ã¿é©ããŠãããã¯ã©ã€ã¢ã³ãã䜿çšããŠåæããäºå®ãããå Žåã«ã¯çµ¶å¯Ÿã«é©ããŠããŸããã ç§ã®ãªããžããªã¯ãã§ã«5Tbã«ãŸã§åºãã£ãŠããã®ã§ããã®æ¹æ³ã§ã€ã³ã¹ããŒã«ãããç§ã®ownCloudã¯ããã¡ã€ã«ã®äžéšãèŠãããšãåã«æåŠããŸããã ãããŠãåæããªããã°ãã¯ã©ãŠãã§ã®å©çã¯å€§ãããããŸããã ããŒã¿ããŒã¹ãMariaDBã«çœ®ãæããŸã ã
- 第äºã«ãhttpsã§ã®äœæ¥ã¯ãããŸãããã誰ããç§ã®ãã¡ã€ã«ãååã§ãããšããèãã¯å¥œãã§ã¯ãããŸããã httpsããªã³ã«ããŸãã
- 第äžã«ããã«ãŒããã©ãŒã¹æ³ã䜿çšããç°¡åãªãã¹ã¯ãŒãæšæž¬ã«å¯Ÿããä¿è·ã¯ãŸã£ãããããŸããã fail2banã§ãã«ãŒããã©ãŒã¹ããå®ããŸãã
- 第4ã«ããããã³ã°ã®ããã«ãã°ãé »ç¹ã«èª¿ã¹ãã®ã¯é¢åã§ããããã®ãããªè©Šã¿ã«ã€ããŠããã«ç¥ãããã§ãã pushover.netãµãŒãã¹ã䜿çšããŠããã¹ã¯ãŒãã®è©Šè¡ã«é¢ããããã·ã¥éç¥ãèšå®ããŸãã
ããã«äºçŽãããã§ãã ç§ã¯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ã³ãã³ãã§å®è¡ããŠã¿ãŠãã ããã ç§ã«ã¯æããã§ãªãããã€ãã®ã±ãŒã¹ã§ã¯ãäœãããããããªããéå§ãã代ããã«ã次ã®ãšã©ãŒã衚瀺ãããŸãã
ãããä¿®æ£ããããã«ã2ã€ã®ã³ãã³ãã®ã¿ãå®è¡ããŸãã
å ±æãªããžã§ã¯ãã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ãæŒããŠãã ãã
ã«ãŒããã¹ã¯ãŒããèšå®ããŸããïŒ [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ãã¡ã€ã«-ç¹å®ã®ãµãŒãã¹ã®ã»ãã¥ãªãã£èšå®ãã¡ã€ã«
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ã転éããããšãå¿ããªãã§ãã ããã
ãã¡ãããã»ãã¥ãªãã£ã匷åããããã«ãæšæºããŒãããããšããŸããã¯ãªãã®ã«çœ®ãæããããšãã§ããŸãã