Pomoc, rada s bezpečností

Zvolené téma obsahuje celkem 11 odpovědí. Do diskuze (5 účastníků) se naposledy zapojil uživatel  admin a poslední změna je stará 8 let, 9 měsíců.

Aktuálně je na stránce zobrazeno 12 příspěvků - 1. až 12. (z celkem 12)
  • Autor
    Příspěvky
  • #1846

    max
    Participant

    Zdravím, chtěl bych se zeptat, dle dostupných informací jsem si nastavil .htaccess a robots.txt.
    Otázka zní, mám ten .htaccess správně, nebo tam má být např jiné pořadí, nebo nějaké věci jinak, popřípadě bych to potřeboval prosím nějak “učesat” (vím, že asi např. to “RewriteEngine On” tam má být asi na začátku a pouze jednou, ale nejsem si jistý).
    Druhá otázka je, zda se nebude ten .htaccess s tím robots.txt nějak “bít” navzájem?
    Popřípadě zda můj web bude nadále zaindexovatelný a viditelný pro katalogy a vyhledávače? Nerad bych nějakým nešikovným zápisem web “zneviditelnil”.
    Díky moc za rady.

    Tady jsou mé soubory: .htaccess

    # disable server information
    ServerSignature Off
    
    # disable directory browsing
    Options -Indexes
    
    # disables direct access to files through a browser htaccess and htpasswd, and all with the extension ini, phps, fla, psd, logos, sh, bak, backup, back, and especially set sql
    <FilesMatch ".(htaccess|htpasswd)$">
    Order Allow,Deny
    Deny from all
    </FilesMatch>
    <FilesMatch ".(ini|phps|fla|psd|log|sh|bak|backup|back|set|sql)$">
    Order Allow,Deny
    Deny from all
    </FilesMatch>
    
    # protect wpconfig.php
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>
    
    # other lines will protect everything in your wp-includes
    <IfModule mod_rewrite.c>
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /wp-includes/.*$ [NC]
    RewriteCond %{THE_REQUEST} !^[A-Z]{3,9} /wp-includes/js/.+/.+ HTTP/ [NC]
    RewriteCond %{REQUEST_FILENAME} ^.+.php$
    RewriteRule .* - [F,NS,L]
    </IfModule>
    
    #disable hotlinking of images with forbidden or custom image option
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com/.*$ [NC]
    #RewriteRule .(jpg|jpeg|png|gif)$ – [F]
    #RewriteRule .(jpg|jpeg|png|gif)$ http://www.yourdomain.com/hotlink.png [R,L]
    
    # protect from spam comments
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REQUEST_URI} .wp-comments-post.php*
    RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^$
    RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
    
    # limit file uploads to 10mb
    LimitRequestBody 10240000
    
    # remove „category“ in url
    RewriteRule ^category/(.+)$ […]
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /test/
    RewriteRule ^index.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /test/index.php [L]
    </IfModule>
    # END WordPress

    a robots.txt:

    User-agent: *
    Disallow: /wp-admin
    Disallow: /wp-includes
    Disallow: /wp-content/plugins
    Disallow: /wp-content/cache
    Disallow: /wp-content/themes
    Disallow: /trackback
    Disallow: /tag
    Disallow: /author
    Disallow: /wget/
    Disallow: /httpd/
    Disallow: /cgi-bin
    Disallow: /images/
    Disallow: /search
    Disallow: /feed
    Disallow: /feed/
    Disallow: /trackback/
    Disallow: /rss
    Disallow: /comments/feed
    Disallow: /feed/$
    Disallow: /*/feed/$
    Disallow: /*/feed/rss/$
    Disallow: /*/trackback/$
    #12177

    neteyescz
    Participant

    Dobrý den,

    a) – Ano, v podstatě je soubor celkem dobrým zabezpečením vašeho webu pomocí .htaccess. Jen bych měl jednu připomínku, vyměňte yourdomain.com za vlastní doménu.

    b) – Soubor robots.txt máte také správně. Nemusíte se bát, že by vyhledávače přestali indexovat váš web, protože jim zamezujete přístup pouze do administrace.

    S přáním hezkého dne,
    Neteyescz

    #12178

    max
    Participant

    Děkuji za odpověď,
    yourdomain.com je tam zatím jen pro ukázku….
    Čerpal jsem právě z vámi uvedeného odkazu (odstraněn, nefunkční) + ještě nějaké odkazy, jak v cz, tak v AJ.

    akorát ještě nevím, jestli tam musí být:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /test/
    RewriteRule ^index.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /test/index.php [L]
    </IfModule>
    # END WordPress

    nebo zda stačí pouze:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /test/
    RewriteRule ^index.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /test/index.php [L]

    a co RewriteEngine On, to nemusí být úplně nahoře a pouze jednou? Já se v tom htaccessu totiž až zas tak dobře nevyznám. Taky mi jde o to, jestli ty příkazy můžou být v jakémkoliv pořadí, nebo jestli se musí dodržet určitá posloupnost.
    Děkuji.

    #12179

    Lukenzi
    Participant

    Kód

    <IfModule mod_rewrite.c>
    ...
    </IfModule>

    je vlastně podmínka, která říká, že pokud je na serveru aktivní mod_rewrite proveď tento kód.

    Když tento mod na serveru nebude nic se nestane. Jestliže tuto podmínku neuvedete a na serveru tento mod nebude dostanete místo webu chybovou hlášku serveru.

    RewriteEngine On

    Zapíná mod_rewrite jednoduše řečeno, takže stačí pouze jednou. Posloupnost se určitě dodržet musí.

    Každopádně bych to zase s .htaccess moc nepřeháněl, každé načtení stránky způsobí to že server (apache) prvně proleze .htaccess a udělá to co je v něm zadané a až pak se začne pracovat se stránkou, tedy se začne parsovat PHP atd atd. Velké množství podmínek a příkazů v tomto souboru může při velice navštěvovaném webu způsobit další (a někdy ne zrovna malé) vytížení serveru navíc.

    #12180

    Lukenzi
    Participant
    <FilesMatch ".(htaccess|htpasswd)$">
    Order Allow,Deny
    Deny from all
    </FilesMatch>
    <FilesMatch ".(ini|phps|fla|psd|log|sh|bak|backup|back|set|sql)$">
    Order Allow,Deny
    Deny from all
    </FilesMatch>

    lze napsat do jednoho bloku

    <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh|bak|backup|back|set|sql)$">
    Order Allow,Deny
    Deny from all
    </FilesMatch>

    (v závorce jsou koncovky souborů které nebudou dostupné pro přímé načtení)
    (znak “|” znamená “nebo”)

    #12181

    Lukenzi
    Participant

    Co se týče souboru robots.txt používám tento a bez problémů:

    Sitemap: http://domena.cz/sitemap.xml
    User-agent: *
    Disallow: /cgi-bin/
    Disallow: /wp-admin/
    Disallow: /wp-includes/
    Disallow: /wp-content/plugins/
    Disallow: /wp-content/maintanence.php
    Disallow: /wp-content/db-error.php
    Disallow: /wp-content/cache/
    Disallow: /wp-content/themes/
    Disallow: /wp-content/languages/
    Disallow: /wp-content/upgrade/
    Disallow: /trackback/
    Disallow: /feed/
    Disallow: /comments/
    Disallow: /category/*/*
    Disallow: */trackback/
    Disallow: */feed/
    Disallow: */comments/
    Disallow: /*?
    Allow: /wp-content/uploads/
    #12182

    max
    Participant

    To: Lukenzi, díky moc za rady. Jestli byste mi prosím mohl nějak ještě setřídit ten htaccess (jde vidět, že se v tom vyznáte). Jde mi jen o to, abych měl WP trošku více zabezpečený + zakázal linkování obrázků + zobrazování a výpisy adresářů + co by bylo ještě vhodé. Zatím v htaccessu mám pouze:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /test/
    RewriteRule ^index.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /test/index.php [L]
    </IfModule>
    # END WordPress

    Přečetl jsem si nějaké články o bezpečnosti a chtěl bych to aplikovat, ale nějak se mi zdá, že z toho htaccessu mám teď trošku “džungli” :-/ Tak by se mi hodilo, kdyby jste buď Vy (prosím, prosím) nebo nějaká jiná hodná duše mi pomohla tady ten úplně horní .htaccess nějak “učesat”, optimalizovat, nebo navrhnout nějaký jiný, který jak píšu nahoře, by WP trošku více zabezpečil.
    Sám totiž nevím, jak tam ty příkazy naskládat, který příkaz před který a tak….

    #12183

    Bigdrobek
    Participant
    Web

    pro zajímavost přidávám část htaccessu kterou vytváří plugin Better WP Security:

    # BEGIN Better WP Security
    Options All -Indexes
    
    <files .htaccess>
    Order allow,deny
    Deny from all
    </files>
    
    <files readme.html>
    Order allow,deny
    Deny from all
    </files>
    
    <files install.php>
    Order allow,deny
    Deny from all
    </files>
    
    <files wp-config.php>
    Order allow,deny
    Deny from all
    </files>
    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK) [NC]
    RewriteRule ^(.*)$ - [F,L]
    RewriteCond %{QUERY_STRING} ../ [NC,OR]
    RewriteCond %{QUERY_STRING} boot.ini [NC,OR]
    RewriteCond %{QUERY_STRING} tag= [NC,OR]
    RewriteCond %{QUERY_STRING} ftp:  [NC,OR]
    RewriteCond %{QUERY_STRING} http:  [NC,OR]
    RewriteCond %{QUERY_STRING} https:  [NC,OR]
    RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
    RewriteCond %{QUERY_STRING} base64_encode.*(.*) [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>|ę|"|;|?|*|=$).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*("|'|<|>||{||).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
    RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
    RewriteRule ^(.*)$ - [F,L]
    </IfModule>
    
    # END Better WP Security

    Moc by mě zajímalo, jestli by šel udělat nějaký “univerzální” .htaccess co se týče a)bezpečnosti a b)cachování. Cílem takového článku by bylo zvednout bezpečnost a rychlost načítání stránek bez nutnosti mít na to plugin.

    Pokud by na to chtěl někdo napsat článek, bylo by to super a něco bych i přispěl(finančně) kdyby se to věnovalo wpmu :)

    #12184

    max
    Participant

    To: Bigdrobek – Dobrý nápad, návodů je vlastně spousta, ale nikde jsem nenarazil na něco jako “tady máte finální ukázkový zabezpečený .htaccess, který můžete použít”. Taky by se mi nějaký takový .htaccess hodil. Asi nainstaluji pár pluginů, které toto řeší a podívám se, co do toho htaccessu zapisují a v jakém pořadí….

    #12185

    max
    Participant

    Chtěl bych se zeptat, jestli v tom .htaccess to musí mít určitou posloupnost, jako ty zápisy, nebo se můžou napsat v libovolném pořadí? Protože třeba to “RewriteEngine on” je většinou jakoby zanořené např v <IfModule mod_rewrite.c>. Tak mě zajímá, jestli by nešlo zapsat pouze jednou a jestli nemá být spíš úplně na začátku? Taky co ty tagy typu např: <IfModule mod_rewrite.c></IfModule>, musí být ten zápis uvnitř, nebo to může být bez těch tagů? Protože v klasických stránkách máte např toto:

    # stranka s chybovym hlasenim pro chybu 404 - not found
    ErrorDocument 404 /chyba.html
    
    RewriteEngine On
    
    # presmerovani stranky www.neco.cz na neco.cz
    RewriteCond %{HTTP_HOST} ^www.neco.cz$
    RewriteRule ^.*$ http://neco.cz$1 [R=301,QSA]
    
    #neco.cz/index.html > neco.cz
    RewriteRule ^index.html$ http://neco.cz$1 [R=301,L]
    #12186

    Lukenzi
    Participant

    Už to tu jednou bylo zodpovězeno… Pořadí se dodržet musí, jelikož každý řádek má nějaký význam a většinou závisí na řádku předchozím.

    Bez tagů to rozhodně být může, ale v případě, že na hostingu z nějakého důvodu deaktivují mod_rewrite, tak se místo vašeho webu zobrazí hláška “chyba serveru”. Pokud tuto podmínku uvedete web bude nadále funkční (jen nebudou fungovat “hezká url”).

    Jinak k těm předchozím dotazům…až budou všechny servery nakonfigurovány stejně tak určitě bude existovat i nějaký univerzální .htaccess soubor. Uvědomte si, že tyhle “tagy” nastavují server, tedy to na čem fungují vaše stránky. Z tohoto důvodu neexistuje hosting, který by dovolil jen tak si cokoliv nastavovat. Každý hosting má některá omezení a co je povoleno tam nemusí být povoleno jinde.

    #23596

    admin
    Keymaster
    Web

    Po letech doplním aktualizaci k tématu: Na uvedené úpravy souborů .htaccess a robots.txt bych byl trochu opatrný, i když třeba ještě mohou fungovat. Osobně nechávám pouze výchozí nastavení WordPressu, který je dost zabezpečený sám o sobě a žádné speciality ve většině případů nepotřebuje. Naopak si můžete spíše způsobit různé problémy s funkčností webu (ne vše funguje na každém serveru) nebo vyhledávači.

Aktuálně je na stránce zobrazeno 12 příspěvků - 1. až 12. (z celkem 12)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti