×
Жесткие переговоры 2.0, в пику Владимиру Соловьеву. Пранк :) (17 мая 2017)

Разговор программиста и работодателя.

Вопрос BulletProof Security. Bonus Code

Больше
1 год 5 мес. назад - 1 мес. 21 ч. назад #1 от Aleksej
Aleksej создал эту тему: BulletProof Security. Bonus Code



Этот топик хотелось бы посвятить описанию фрагментов кода, являющегося бонусом отличного плагина - BulletProof Security (краткая аннотация плагина - по ссылке), который смело можно порекомендовать любому владельцу сайта под управлением WordPress. BulletProof Security, даже в бесплатной версии, предоставляет отличный уровень защиты. Не единожды убеждался, автор (AITpro Website Security, 81 N Katherine Dr Ventura, CA 93003) данного плагина охотно отвечает на любые вопросы в контексте созданного им приложения, не требуя от своих многочисленных корреспондентов платной подписки... что, к слову сказать, далеко не всегда является бизнес-стилем для многих и многих отечественных наших разработчиков.

Следует подчеркнуть, что весь описываемый код вовсе не требует установки BulletProof Security, вы можете использовать любой из описанных Bonus Code, попросту вписав в .htaccess вашего сайта. Speed Boost Cache Code, к слову, не требуя ни малейших изменений, будет работать практически на любом сайте, здесь вовсе не обязателен WordPress; но так только относительно Speed Boost Cache Code, имейте это в виду. Итак:

Protect Login Page from Brute Force Login Attacks

Итак, защищаем наш wordpress от брутфорса, т.е попыток НСД (несанкционированного доступа) в административную часть сайта путем перебора паролей. Достаточно добавить в .htaccess приведенные ниже строки (заменив предварительно XXX.XX.XX.XX на ваш ip; или, может быть, три октета вашего IP вместо четырех), и атаки прекратятся: вы можете воочию в этом убедиться, инициировав попытку взлома и использовав при этом любой анонимайзер. Если вы используете BulletProof Security на вашем сайте - поместите данный код в поле CUSTOM CODE BRUTE FORCE LOGIN PAGE PROTECTION, нажмите Save Root Custom Code button, далее - откройте вкладку Security Modes, кликните Create secure.htaccess, затем активируйте Root Folder BulletProof Mode.


# Protect wp-login.php from Brute Force Login Attacks based on IP Address
<FilesMatch "^(wp-login\.php)">
Order Allow,Deny
# Add your Public IP Address using 2 or 3 octets so that if/when
# your IP address changes it will still be in your subnet range. If you
# have a static IP address then use all 4 octets.
# Examples: 2 octets: 65.100. 3 octets: 65.100.50. 4 octets: 65.100.50.1
Allow from XXX.XX.XX.XX.
</FilesMatch>


POST Attack Protection

Защита вашего сайта, работающего под управлением WordPress, от атак, реализуемых посредством POST-запросов. Приведенный сценарий проверяет все запросы, пришедшие посредством POST, таких как, например, контактная форма или комментарии, etc. Раскомментируйте те строчки, которые сочтете необходимым, скажем, разрешите wp-comments-post и/или contacts. Ни в коем случае не комментируйте разрешения, озаглавленные NEVER COMMENT, остальное - по желанию. Как вариант, и если не уверены, что именно сделать - включите данный код в ваш .htaccess в том виде, как он приведен, и пару-тройку дней внимательно просматривайте логи. Если вы используете BulletProof Security на вашем сайте - поместите данный код в поле CUSTOM CODE BOTTOM HOTLINKING/FORBID COMMENT SPAMMERS/BLOCK BOTS/BLOCK IP/REDIRECT CODE, нажмите Save Root Custom Code, далее - откройте вкладку Security Modes, кликните Create secure.htaccess, затем активируйте Root Folder BulletProof Mode.


# BPS POST Request Attack Protection
RewriteCond %{REQUEST_METHOD} POST [NC]
# NEVER COMMENT OUT THIS LINE OF CODE BELOW FOR ANY REASON
RewriteCond %{REQUEST_URI} !^.*/wp-admin/ [NC]
# NEVER COMMENT OUT THIS LINE OF CODE BELOW FOR ANY REASON
RewriteCond %{REQUEST_URI} !^.*/wp-cron.php [NC]
# NEVER COMMENT OUT THIS LINE OF CODE BELOW FOR ANY REASON
RewriteCond %{REQUEST_URI} !^.*/wp-login.php [NC]
# Whitelist the WordPress Theme Customizer
# RewriteCond %{HTTP_REFERER} !^.*/wp-admin/customize.php
# Whitelist XML-RPC Pingbacks, JetPack and Remote Posting POST Requests
# RewriteCond %{REQUEST_URI} !^.*/xmlrpc.php [NC]
# Whitelist Network|Multisite Signup POST Form Requests
# RewriteCond %{REQUEST_URI} !^.*/wp-signup.php [NC]
# Whitelist Network|Multisite Activate POST Form Requests
# RewriteCond %{REQUEST_URI} !^.*/wp-activate.php [NC]
# Whitelist Trackback POST Requests
# RewriteCond %{REQUEST_URI} !^.*/wp-trackback.php [NC]
# Whitelist Comments POST Form Requests
# RewriteCond %{REQUEST_URI} !^.*/wp-comments-post.php [NC]
# Example 1: Whitelist Star Rating Calculator POST Form Requests
# RewriteCond %{REQUEST_URI} !^.*/star-rating-calculator.php [NC]
# Example 2: Whitelist Contact Form POST Requests
# RewriteCond %{REQUEST_URI} !^.*/contact/ [NC]
# Example 3: Whitelist PayPal IPN API Script POST Requests
# RewriteCond %{REQUEST_URI} !^.*/ipn_handler.php [NC]
RewriteRule ^(.*)$ - [F]


Speed Boost Cache Code

Ускоряем, и довольно значительно ускоряем загрузку страниц вашего блога на WordPress, включая таким образом кэширование браузера. В верхней части приведенного кода вы видите шпаргалку, т.е. в данном случае способ регулировать сроки кэша для различных видов контента; можете, если интересно, поэкспериментировать. Но автор BulletProof Security рекомендует оставить все как есть; выигрыш в несколько миллисекунд навряд ли окажется критичен для вас. Если вы используете BulletProof Security на вашем сайте - поместите данный код в поле CUSTOM CODE TOP PHP/PHP.INI HANDLER/CACHE CODE, нажмите Save Root Custom Code, далее - откройте вкладку Security Modes, кликните Create secure.htaccess, затем активируйте Root Folder BulletProof Mode.


# BEGIN WEBSITE SPEED BOOST
# Time cheat sheet in seconds
# A86400 = 1 day
# A172800 = 2 days
# A2419200 = 1 month
# A4838400 = 2 months
# A29030400 = 1 year

# Test which ETag setting works best on your Host/Server/Website
# with Firefox Firebug, Firephp and Yslow benchmark tests.

# Create the ETag (entity tag) response header field
#FileETag MTime Size

# Remove the ETag (entity tag) response header field
Header unset ETag
FileETag none

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpg A4838400
ExpiresByType image/gif A4838400
ExpiresByType image/jpeg A4838400
ExpiresByType image/png A4838400
ExpiresByType video/webm A4838400
ExpiresByType application/x-shockwave-flash A4838400
ExpiresByType application/x-javascript A4838400
ExpiresByType application/javascript A4838400
ExpiresByType text/javascript A4838400
ExpiresByType text/css A4838400
#ExpiresByType text/html A86400
# Default is 2 days below so the line above is not needed / commented out
ExpiresDefault A172800
</IfModule>

<IfModule mod_headers.c>
<FilesMatch "\.(js|css|flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|gif|jpg|jpeg|png|swf|webm)$">
Header append Cache-Control "public"
</FilesMatch>
<FilesMatch "\.(txt|html)$">
Header append Cache-Control "proxy-revalidate"
</FilesMatch>
<FilesMatch "\.(php|cgi|pl|htm|xml)$">
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</FilesMatch>
</IfModule>

<IfModule mod_deflate.c>
# Insert filters
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml

# Drop problematic browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
# END WEBSITE SPEED BOOST


Protect the wp-trackback.php file to prevent trackbacks or pingbacks

Защищаемся от DDOS-атак, имеющих целью WordPress XML-RPC Server/Protocol/xmlrpc.php. Для этой цели добавьте в ваш .htaccess следующие строчки кода; если вы используете BulletProof Security на вашем сайте - поместите данный код в поле CUSTOM CODE BOTTOM HOTLINKING/FORBID COMMENT SPAMMERS/BLOCK BOTS/BLOCK IP/REDIRECT CODE, нажмите Save Root Custom Code, далее - откройте вкладку Security Modes, кликните Create secure.htaccess, затем активируйте Root Folder BulletProof Mode. После включения вы можете проверить работу данного Bonus Code, набрав в адресной строке браузера vash_site/xmlrpc.php - при этом вы должны увидеть 403 ошибку.


# XML-RPC DDoS & TRACKBACK/PINGBACK PROTECTION
# Using this code blocks Pingbacks and Trackbacks on your website.
# You can whitelist your IP address if you use A Weblog Client
# or want to whitelist your IP address for any other reasons.
# Example: uncomment #Allow from x.x.x. by deleting the # sign and
# replace the x's with your actual IP address. Allow from 99.88.77.
# Note: It is recommended that you use 3 octets x.x.x. of your IP address
# instead of 4 octets x.x.x.x of your IP address.

<FilesMatch "^(xmlrpc\.php|wp-trackback\.php)">
Order Deny,Allow
# Whitelist Jetpack/ Automattic CIDR IP Address Blocks
Allow from 192.0.64.0/18
Allow from 209.15.0.0/16
Allow from 66.155.0.0/17
Deny from all
</FilesMatch>



The External iFrame|Clickjacking Bonus Custom Code above with the MIME sniffing|Drive-by Download Attack Bonus Custom Code

Блокировка возможности отображаения страниц вашего сайта в фидах и фреймах, Clickjacking Protection. Также Mime Sniffing, Data Sniffing, Content Sniffing, Drive-by Download Attack Protection - всего в нескольких строчках кода, которые необходимо разместить в вашем .htaccess. Если вы используете BulletProof Security на вашем сайте - поместите данный код в поле CUSTOM CODE TOP PHP/PHP.INI HANDLER/CACHE CODE, нажмите Save Root Custom Code, далее - откройте вкладку Security Modes, кликните Create secure.htaccess, затем активируйте Root Folder BulletProof Mode.


<IfModule mod_headers.c>
# Using DENY will block all iFrames including iFrames on your own website
# Header set X-Frame-Options DENY
# Recommended: SAMEORIGIN - iFrames from the same site are allowed - other sites are blocked
# Block other sites from displaying your website in iFrames
# Protects against Clickjacking
Header always append X-Frame-Options SAMEORIGIN
# Protects against Drive-by Download attacks
# Protects against MIME/Content/Data sniffing
Header set X-Content-Type-Options nosniff
</IfModule>


Пожалуй, на сегодня это все.
Внимание, данная статья отображает лишь необходимый для использования минимум информации; для более подробных инструкций используйте, пожалуйста сайт автора BulletProof Security. Отмечу лишь, что для всех полей ввода кода, являющегося бонусом BulletProof Security - совершенно все равно, в какой последовательности вы запишете приведенные фрагменты; это утверждение является истинным для всех филдов, кроме CUSTOM CODE TOP PHP/PHP.INI HANDLER/CACHE CODE. Таким образом, если вы решите использовать одновременно и BEGIN WEBSITE SPEED BOOST и The External iFrame|Clickjacking Bonus Custom Code above with the MIME sniffing|Drive-by Download Attack Bonus Custom Code - правильным будет сделать это в следующем порядке:

<IfModule mod_headers.c>
# Using DENY will block all iFrames including iFrames on your own website
-----------------
-----------------
</IfModule>

# BEGIN WEBSITE SPEED BOOST
------------------
------------------
# END WEBSITE SPEED BOOST
Последнее редактирование: 1 мес. 21 ч. назад от p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.