Punta de Choros

27 декември 2009

На 2009г й оставаха 120ч съществуване. От календара падна поредния лист с дата 27 декември и към 10.30ч сутринта ме събуди звън от телефона.

Инсталация на Microsoft шрифтове в Ubuntu 16.04

14 януари 2017

нсталация на Microsoft шрифтове в Ubuntu се поражда от идеята браузърите в различните системи, да показват еднакво текстовото съдържанието на интернет страниците.

Ubuntu 16.04 инсталация на USB disk on Key

19 ноември 2016

Арсеналът ми от мобилни компютри съдържа Fujitsu Lifebook AH530. Това е бюджетна машина от 2011г на Intel Core i5-480M процесор и 4GB DDR3 RAM памет.

gparted

Paragon ExtFS for Windows

30 юли 2016

ExtFS for Windows е утилита на Paragon Software разработена през 2013г. Тя представлява решение, предоставящо пълен достъп на четене и на запис до раздели ...

msvcr100.dll is missing Windows 10

04 октомври 2016

Майк Патерсън от Plixer, компания по компютърната сигурност, публикува доклад , че Windows 10 изпраща данни в криптиран вид от вашата машина на всеки пет минути. Той е направил максимума, за да спре изтичането, но системата продължавала да изпраща информация.


Lynx е един от първите текстови браузъри. Не поддържа таблици и JavaScript. Работи бързо, предлага голямо количество настройки и се явява незаменим помощник в терминала. Например, така изглежда предната тема в моя блог.
Командата за целта е:
lynx [адрес на сайта]

текстови браузър lynx


Някои дизайнери по такъв начин проверяват своите уеб-проекти и как същия е възприеман от ботове и сканиращи паяци.

Резултатът от следната команда стана повод за тази среща.
lynx -head -mime_header https://www.google.ru/

По този начин успяваме да прочетем заглавките (headers), които изпраща сървърът към нашия браузър.

текстови браузър lynx


От горе на долу може да се каже, че Google ползва по-стар протокол (вер. 1.0), за сървър обявява лаконичното gws (Google Web Server). Никакъв намек за сървърен език. Останалото е скучна бисквитка и плява.

Хайде да видим отговора на локалния ми сървър, като ползваме споменатата команда.
lynx -head -mime_header http://prodesktop/index.php

браузър lynx-заглавки от Localhost


Издайнически лъсват две заглавки, които информират за версия на сървър Apache и версия на PHP. Тази информация е жокер за недоброжелатели на вашия сайт и логично ще скрием. Тук се връщам към тема Базова защита на Ubuntu Server 10.04, където бегло засегнах файл security и ще се опитам, да направя ревизия.

ОК, нека започнем и определим какво точно имаме на борда.

Версия OS
lsb_release -a
profruit@prodesktop:~$ lsb_release -a
Description: Ubuntu 10.04.4 LTS
Release: 10.04
Codename: lucid
Версия PHP
php --version
profruit@prodesktop:~$ php --version
PHP 5.4.17-1~lucid+1 (cli) (built: Jul 17 2013 16:42:57) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
Версия Apache
apache2 -v

или така, въпрос на вкус:
/usr/sbin/apache2ctl status | grep 'Server Version'
profruit@prodesktop:~$ apache2 -v
Server version: Apache/2.2.14 (Ubuntu)

Спиране на заглавка X-Powered-By

За нагледност на резултата ще ползвам вграден снифер LiveHTTPHeaders в браузър Firefox 24.0 и помощен файл headers.php.

headers.php
<?php header("X-Powered-By: ASP.NET"); ?>
<?php /*header('Content-Type:text/html; charset=UTF-8' );*/ ?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>X-Powered-By</title>
    </head>
    <body>
  
 <?php 
  echo '<pre>'.print_r(headers_list(), true).'</pre>';
 ?>

    </body>
</html>
Съдържанието в заглавката от първи ред е подвеждащо. Лъже, че се движи от ASP.NET. Резултатът на това действие ще извежда функция на протокола HTTP в PHP - headers_list.

Резултат.
LiveHTTPHeaders

Желаното е постигнато, но някак детски изглежда заглавката да показва едно, а в адресната лента на браузъра, да се вижда разширение *.php.

И още, разработчиците на PHP облекчават подхода ни в този случай с функция header_remove. Тази функция премахва предварително установени заглавки, от което нашия файл придобива този вид.

headers.php
<?php header("X-Powered-By: ASP.NET"); ?>
<?php /*header('Content-Type:text/html; charset=UTF-8' );*/ ?>
<?php header_remove(); ?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>X-Powered-By</title>
    </head>
    <body>
  
 <?php 
  echo '<pre>'.print_r(headers_list(), true).'</pre>';
 ?>

    </body>
</html>
Нека видим резултата в LiveHTTPHeaders. За целта копирам на готово.
HTTP/1.1 200 OK
Date: Fri, 20 Sep 2013 20:08:24 GMT
Server: Apache/2.2.14 (Ubuntu) PHP/5.4.17-1~lucid+1
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 166
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
X-Pad: avoid browser bug

Няма помен от заглавка X-Powered-By, но се появи нежелана X-Pad.

Като цяло тези начини са непрактични. Налага се в всеки файл от сайта да се добавят въпросните заглавки, за да се прикрие версията на PHP. Генерално решение на проблема е изключване на директива expose_php в php.ini. За целта:

Отваряме с редактор php.ini
sudo gedit /etc/php5/apache2/php.ini

и редактираме
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no 
; security threat in any way, but it makes it possible to determine whether 
; you use PHP on your server or not.
; http://php.net/expose-php
expose_php = Off
след което рестартираме индианеца.
sudo /etc/init.d/apache2 restart

Премахваме всички header() в началото на файл headers.php, от което остава един HTML.

Отново гледаме в снифера и ето резултата.
LiveHTTPHeaders

А в браузъра, функция headers_list() печати само това.
Array
(
    [0] => Content-type: text/html
)
Отлично! Целта е постигната. Сървърът не изпраща повече заглавка X-Powered-By, а функцията на PHP не я чете. Това е моят избор!

Пореден начин за спиране на заглавка X-Powered-By

Накратко. PHP в системи Debian/Ubuntu е инсталиран като модул на сървър Apache. Това е php5_module (shared). Този начин предполага сървър Apache, да филтрира заглавка X-Powered-By подавана от PHP, респективно php5_module. За целта е нужен Apache-модул headers.

активация на модул headers
sudo a2enmod headers

след което добавяне на този израз в файл /etc/apache2/conf.d/security
#
# Hide X-Powered-By and Server headers
Header unset X-Powered-By
и нужен рестарт на сървъра, за да влязат промените в сила. В резултат получаваме това.
Header unset X-Powered-By

Получаваме дран-дран, недоклан. Няма X-Powered-By, но пък пръква X-Pad, отделно PHP я вижда.


Модификация на заглавка Server


Това става лесно и се свежда до редакция на директива в познатия файл
/etc/apache2/conf.d/security.

Но нека първо допълним спомената горе стара тема. Реч иде как да скрием подписа на сървъра завинаги от раз. За това са нужни супер привилегии, като условие.

Ако не е забранен преглед на каталозите (листинг на директориите) в вашия сайт, то обръщение към каталог без index файл ще даде тази възможност през уеб. Това е нежелателно и пореден жокер за недоброжелател.

Най-отдолу се вижда подписа на сървъра.
подпис на Apache

За целта редактираме така
#
#ServerSignature
ServerSignature Off

Модификация на заглавка Server постигаме след редакция на ServerTokens. Коментарите на възможните опции говорят сами за себе си, какво предлагат.
#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minimal | Minor | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Prod
Рестарт на сървъра.

Резултат.
без подпис на Apache

Веднага възниква въпрос - а може ли изобщо да се премахне заглавка Server? Краткия отговор е не.

"A number of the Apache HTTP Server developers do not want users to be able to suppress the Server header without modifying the source code or adding third-party modules. The issue comes up from time to time and is subject to change".

И за десерт.
#
# Trace Off
# изключване режим TRACE, под когото са възможни XSS атаки.
#
TraceEnable Off





до нови срещи   ^.^
21.09.2013 profruit 

0 Response to "Модификация на заглавките"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: Ubuntu, WEB, Photoshop, Фотография, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога