Настройка BGP в Quagga

AS — (Autonomic System) автономная система.
BGP -(Border Gateway Protocol) протокол пограничного маршрутизатора.

Устанавливаем quagga:

apt-get install quagga

Редактируем конфиг и включаем демонов, пишем yes напротив zebra и bgpd:

nano /etc/quagga/daemons

Допустим наш AS1234, провайдера — AS4321.
Редактируем конфиг bgpd:

nano /etc/quagga/bgpd.conf

пример:

hostname AS1234
password пароль
enable password пароль
log file /var/log/quagga/bgpd.log
log stdout
!
router bgp 1234
bgp router-id наш_ip
network  1.1.1.0/24
neighbor провайдера_ip remote-as 4321
neighbor провайдера_ip update-source наш_ip
neighbor провайдера_ip filter-list OUR out
!
ip as-path access-list OUR permit ^$
!
line vty
!

Редактируем конфиг zebra:

nano /etc/quagga/zebra.conf

Пример:

hostname AS1234
password пароль
enable password пароль
log file /var/log/quagga/zebra.log
service password-encryption
!
interface eth0
ip address наш_ip/24
!
ipv6 nd suppress-ra
!
interface lo
!
route 1.1.1.0/24 Null0
!
ip forwarding
ipv6 forwarding
!
line vty
!

Перезапускаем quagga чтобы изменения вступили в силу:

/etc/init.d/quagga restart

Проверяем:

telnet localhost 2605
show ip bgp summary
show ip bgp neighbors
show ip bgp

Debug:

debug bgp updates
debug bgp events

Приведу пример рабочей конфигурации BGP с двумя neighbor (2.2.2.1 — первый neighbor, 2.2.2.2 — второй neighbor, 2.2.2.3 — свой IP, p2p1 смотрит в интернет, p2p2 — в локальную сеть, emX сетевые не используются, 1.1.1.0 — сеть с белыми IP, ):

sudo nano /etc/quagga/zebra.conf
!
! Zebra configuration saved from vty
!   2017/07/21 13:13:02
!
hostname exor
password zebra
enable password zebra
log file /var/log/zebra.log
!
interface em1
 ipv6 nd suppress-ra
!
interface em2
 ipv6 nd suppress-ra
!
interface em3
 ipv6 nd suppress-ra
!
interface em4
 ipv6 nd suppress-ra
!
interface lo
!
interface p1p1
 ipv6 nd suppress-ra
!
interface p1p2
 ipv6 nd suppress-ra
!
ip forwarding
!
!
line vty
!

sudo nano /etc/quagga/bgpd.conf
!
! Zebra configuration saved from vty
!   2017/07/21 13:13:02
!
password qwerty
enable password qwerty
log file /var/log/quagga/bgpd.log
service advanced-vty
!
bgp multiple-instance
bgp config-type cisco
!
router bgp 1234
 no synchronization
 bgp router-id 2.2.2.3
 network 1.1.1.0 mask 255.255.254.0
 aggregate-address 1.1.1.0 255.255.254.0 summary-only
 redistribute connected
 timers bgp 20 60
 neighbor 2.2.2.1 remote-as 4321
 neighbor 2.2.2.1 description PROVIDER2
 neighbor 2.2.2.1 soft-reconfiguration inbound
 neighbor 2.2.2.1 route-map PROVIDER2-OUT out
 neighbor 2.2.2.2 remote-as 4321
 neighbor 2.2.2.2 description PROVIDER
 neighbor 2.2.2.2 soft-reconfiguration inbound
 neighbor 2.2.2.2 route-map PROVIDER-OUT out
 no auto-summary
!
access-list 10 permit 127.0.0.1
access-list 10 permit 1.1.1.5
access-list 10 deny any
access-list all permit any
!
ip prefix-list DEFAULT-ONLY seq 10 deny 0.0.0.0/0 ge 1 le 31
ip prefix-list DEFAULT-ONLY seq 20 permit 0.0.0.0/0
ip prefix-list DEFAULT-STRIP seq 10 deny 0.0.0.0/0
ip prefix-list DEFAULT-STRIP seq 20 permit 0.0.0.0/0 ge 1 le 31
ip prefix-list TO-PROVIDER seq 10 permit 1.1.1.0/23
ip prefix-list TO-PROVIDER seq 100 deny 0.0.0.0/0 le 32
ip prefix-list TO-PROVIDER2 seq 10 permit 1.1.1.0/23
ip prefix-list TO-PROVIDER2 seq 100 deny 0.0.0.0/0 le 32
!
route-map PROVIDER-IN permit 10
 match ip address prefix-list all
!
route-map PROVIDER2-IN permit 10
 match ip address prefix-list all
!
route-map PROVIDER-OUT permit 10
 description MYNETWORK <-> PROVIDER
 match ip address prefix-list TO-PROVIDER
!
route-map PROVIDER2-OUT permit 10
 description MYNETWORK <-> PROVIDER2
 match ip address prefix-list TO-PROVIDER2
 set local-preference 50
!
line vty
 access-class 10
 no login

IP назначены в /etc/network/interfaces:

auto p2p2
iface p2p2 inet static
        address 10.0.0.2
        netmask 255.255.255.0
		
auto p2p1:555
iface p2p1:555 inet static
        address 2.2.2.3
        netmask 255.255.255.252
        #gateway 2.2.2.1

auto p2p1
iface p2p1 inet static
        address 1.1.1.1
        netmask 255.255.255.240

Приведу пример рабочей конфигурации с одним neighbor (в /etc/network/interfaces нужно раскомментироваться gateway):

sudo nano /etc/quagga/bgpd.conf
!
! Zebra configuration saved from vty
!   2017/07/21 13:13:02
!
password qwerty
enable password qwerty
log file /var/log/quagga/bgpd.log
service advanced-vty
!
bgp multiple-instance
bgp config-type cisco
!
router bgp 1234
 no synchronization
 bgp router-id 2.2.2.3
 network 1.1.1.0 mask 255.255.254.0
 aggregate-address 1.1.1.0 255.255.254.0 summary-only
 redistribute connected
 timers bgp 20 60
 neighbor 2.2.2.1 remote-as 4321
 neighbor 2.2.2.1 description PROVIDER
 neighbor 2.2.2.1 soft-reconfiguration inbound
 neighbor 2.2.2.1 route-map PROVIDER-OUT out
 no auto-summary
!
access-list 10 permit 127.0.0.1
access-list 10 permit 1.1.1.5
access-list 10 deny any
access-list all permit any
!
ip prefix-list DEFAULT-ONLY seq 10 deny 0.0.0.0/0 ge 1 le 31
ip prefix-list DEFAULT-ONLY seq 20 permit 0.0.0.0/0
ip prefix-list DEFAULT-STRIP seq 10 deny 0.0.0.0/0
ip prefix-list DEFAULT-STRIP seq 20 permit 0.0.0.0/0 ge 1 le 31
ip prefix-list TO-PROVIDER seq 10 permit 1.1.1.0/23
ip prefix-list TO-PROVIDER seq 100 deny 0.0.0.0/0 le 32
!
route-map PROVIDER-IN permit 10
 match ip address prefix-list all
!
route-map PROVIDER-OUT permit 10
 description MYNETWORK <-> PROVIDER
 match ip address prefix-list TO-PROVIDER
!
line vty
 access-class 10
 no login
!

PHP. Работа с файлами

Автор: Мухаметшин Д.Ф

Правильно работать с файлами должен уметь каждый программист. Данная статья ориентирована на начинающих PHP программистов, однако «сборник рецептов» будет полезен и продвинутым пользователям.
Работа с файлами разделяется на 3 этапа:

Открытие файла.
Манипуляции с данными.
Закрытие файла.

I. Открытие файла
Для того чтобы открыть файл в среде PHP используется функция fopen(). Обязательными параметрами этой функции является имя файла и режим файла.

$fp = fopen('counter.txt', 'r');

Согласно документации PHP выделяют следующие виды режимов файлов:
r – открытие файла только для чтения.
r+ — открытие файла одновременно на чтение и запись.
w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.
w+ — аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется.
a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла).
a+ — открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

Примечание: в конце любой из строк может существовать еще один необязательный параметр: b или t. Если указан b, то файл открывается в режиме бинарного чтения/записи. Если же t, то для файла устанавливается режим трансляции перевода строки, т.е. он воспринимается как текстовый.

Для демонстрации рассмотрим следующий сценарий:

<?php
//Открывает файл в разных режимах
$fp = fopen('counter.txt', 'r'); // Бинарный режим
$fp = fopen('counter.txt', 'rt'); // Текстовый режим
$fp = fopen("http://www.yandex.ru", "r");// Открывает HTTP соединение на чтение
$fp = fopen("ftp://user:password@example.ru", 'w'); //Открываем FTP соединение с указанием логина и пароля
?>

II. Манипуляции с данными файла
Записывать данные в файл при помощи PHP можно при помощи функции fwrite(). Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла:

<?php
$fp = fopen("counter.txt", "a"); // Открываем файл в режиме записи
$mytext = "Это строку необходимо нам записать\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла
?>

Для построчного считывания файла используют функцию fgets(). Функция принимает 2 обязательных параметра:

<?php
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
while (!feof($fp))
{
$mytext = fgets($fp, 999);
echo $mytext."<br />";
}
}
else echo "Ошибка при открытии файла";
fclose($fp);
?>

Примечание: В данном примере значение 999 определяет количество символов, которые будут считываться до тех пор, пока указатель не достигнет конца файла (EOF).
Для того, чтобы считать файл как единое целое, нужно использовать функцию readfile(), принимающая 1 обязательный параметр. Функция открывает файл, отображает его содержимое в окне браузера, а затем закрывает файл:

<?php
echoreadfile("counter.txt");
?>

Также можно использовать функцию fpassthru() которая принимает 1 обязательный параметр. Перед использованием этой функции необходимо открыть файл в режиме чтения. По окончанию считывания файла функция автоматически закрывает файл(при этом дескриптор файла становиться недействительным).

<?php
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp) echo fpassthru($fp);
elseecho "Ошибка при открытии файла";
?>

Очень часто встречаются ситуации, когда необходимо содержимое сайта считать в массив. Эту возможность предусматривает использование функции file(). При вызове этой функции, каждая строка файла сохранятся в отдельном элементе указанного массива.
Примечание: Не следует применять функцию file() к двоичным файлам (binary-safe), т.к. она не является безопасной в плане считывания двоичных файлов, если при этом, где-то встретиться символ конца файла (EOF), то она не гарантирует вам чтение всего двоичного файла.

<?php
$file_array = file("counter.txt"); // Считывание файла в массив $file_array
//
// Работа с данными массива
//
?>

Примечание: Работа с массивами подробно описывается здесь, авторы: Мухаметшин Д.Ф., Симдянов И.В.
В конце статьи, вы найдете хороший «сборник рецептов» по массивам, который дает решение многих проблем, с которыми ежедневно встречается веб-программист.
Давайте представим ситуацию, когда файл необходимо считать по символам. Для этого мы можем воспользоваться функцией fgetc(). Функция принимает единственный параметр. Функция полезна если нам необходимо найти какой-либо символ или количество одинаковых символов.

<?php
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
  while(!feof($fp))
  {
  $char = fgetc($fp);
  if ($char == 'с') $i = $i + 1;// Находим символ «с»
  }
echo 'Количество букв "c" в файле: '. $i;
}
else echo "Ошибка при открытии файла";
?>

III. Закрытие файла
Закрытие файла происходить с помощью функции fclose(), которая принимает 1 обязательный параметр.

<?php
$fp = fopen("counter.txt", "r");
if ($fp)
{
echo 'Файл открыт';
fclose($fp); // Закрытие файла
}
?>

Сборник рецептов
1) Нам необходимо проверить существует ли тот или иной файл. Для этого мы воспользуемся функцией file_exists().

<?php
myfile("counter.txt"); // Используем функцию myfile, передав в качестве аргумента имя файла

function myfile($name) //Создаем функцию для проверки существования файла
{
if (file_exists($name)) echo 'Файл существует';
else echo "Файл не существует";
}
?>

Примечание: Функция file_exists не производит проверку файлов на удаленном веб-сервере. Для правильной работы функции, файл со скриптом должен находиться на том сервере, где и проверяемый файл.

2) Определяем размер файла с помощью функции filesize()

<?php
myfile("counter.txt");
function myfile($name) //Создаем функцию для проверки существования файла и определения размера файла
{
if (file_exists($name)) echo "Размер файла: ".filesize($name).' байт';
else echo "Файл не существует";
}
?>

3) Создание временного файла с помощью функции tmpfile()

<?php
$myfile = tmpfile();
fwrite($myfile, "Эта строка записывается во временный файл."); // Записываем во временный файл
fseek($myfile, 0); // Устанавливаем указатель файла
echo fread($myfile, 1024); // выводим содержимое файла
?>

4) Вам необходимо определить количество строк в файле. Для этого используем функцию count()

<?php
$fp = file("counter.txt");
echo 'Количество строк в файле: '.count($fp);
?>

5) Нам необходимо использовать механизм блокировки файла

<?php
$fp = fopen("counter.txt", 'a');
flock($fp, LOCK_EX); // Блокирование файла для записи
fwrite($fp, "Строка для записи");
flock($fp, LOCK_UN); // Снятие блокировки
fclose($fp);
?>

6) Нам необходимо удалить определенную строку из файла

<?php
$num_stroka = 5; //Удалим 5 строку из файла
$file = file("counter.txt"); // Считываем весь файл в массив

for($i = 0; $i < sizeof($file); $i++)
if($i == $num_stroka) unset($file[$i]);

$fp = fopen("counter.txt", "w");
fputs($fp, implode("", $file));
fclose($fp);
?>

7) Определение типа файла. Используем функцию filetype(), которая принимает единственный параметр

<?php
$mytype = filetype("counter.txt");
echo "Тип файла: ".$mytype;
?>

После вызова строка может содержат одно из следующих значений:
file – обычный файл
dir – каталог
ink – символическая ссылка
fifo – fifo-канал
block – блочно — ориентированное устройство
char – символьно — ориентированное устройство
unknown – неизвестный тип файла

8) Если вы хотите просмотреть все параметры файла, то следует воспользоваться функцией stat()

<?php
$filename = stat("counter.txt");
echo "<pre>";
print_r($filename);
echo "</pre>";
?>

9) Нам необходимо очистить файл, используем функцию ftruncate()

<?php
$fp = fopen("counter.txt", 'a'); //Открываем файл в режиме записи
ftruncate($fp, 0) // очищаем файл
?>

10) Нам необходимо узнать дату последнего изменения файла, используем функцию filectime(). Функция возвращает значение времени в форме Unix timestamp.

<?php
echo filectime("counter.txt");
?>

Активация PUSH уведомлений на хактивизированных Iphone (SAM)

Не некоторых неправильно хактивированных Iphone могут не работать PUSH уведомления, одним из вариантов решения этой проблемы есть установка SAM (Subscriber Artificial Module).
Открываем Cydia, добавляем репозитоий (Manager — Sources — Edit — Add) — http://repo.bingner.com.
Ищем SAM, устанавливаем и перезагружаем устройство.
На рабочем столе и в настройках появится SAMPrefs. Запускаем его, выбираем Utilities и жмем Revert Lockdown to Stock. Ждем уведомление об успешном выполнении. Жмем De-Activate iPhone (clear push) и снова ждем уведомление.
Подключаем Iphone к компьютеру, запускаем Itunes и ждем пока активируется. После чего в SAMPref в вкладке More information должно быть написано Wildcard Activated.
Заходим в Utilities, нажимаем Backup Activation и потом Restore Activation.
Приложения которые были установлены до SAM активации, необходимо удалить и снова установить, так как push уведомления на них скорее всего не будут работать.
Все.

Установка и настройка Logwatch

Приведу пример установки в Ubuntu/Debian:

sudo apt-get install logwatch

Установка в CentOS

yum install logwatch

Создаем необходимый для работы каталог:

sudo mkdir /var/cache/logwatch
sudo chown www-data:www-data /var/cache/logwatch

Копируем и редактируем конфигурационный файл:

sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
sudo nano /etc/logwatch/conf/logwatch.conf

Из текстового редактора nano для выхода используются клавиши Ctrl+X и y или n для сохранения либо отмены изменений.
В конфигурационном файле можно увеличить детальность, чтобы приходило больше информации, указав в Detail = High. Чтобы отключить информацию о конкретном сервисе необходимо прописать Service = «-имя».
В Format можно указать формат отчета text/html.

Можно также скопировать и настроить другие конфигурационные файлы, например:

sudo cp /usr/share/logwatch/default.conf/logfiles/http.conf /etc/logwatch/conf/logfiles/

Logwatch автоматически ежедневно запускается благодаря тому что он добавлен в директорию планировщика cron /etc/cron.daily/

Для проверки работы Logwatch можно выполнить команду которая выведет отчет на экран:

sudo logwatch

Либо выполнить задание которое добавлено в cron, после чего отчет придет на почту:

sudo /etc/cron.daily/00logwatch

Для удаления logwatch используется первая команда для Ubuntu/Debian, вторая CentOS:

sudo apt-get remove logwatch
yum remove logwatch

online.pl скрипт количества пользователей онлайн

Приведу пример скрипта выполняющего sql запрос в mysql базу с выводом результата. Можно прицепить его к графикам Zabbix, Cacti и т.д. чтобы мониторить например количество игроков онлайн на каком нибудь игровом сервере.

#!/usr/bin/perl
use DBI;
my $host = "localhost";
my $port = "3306";
my $user = "root";
my $pass = "";
my $db = "test";
$dbh = DBI->connect("DBI:mysql:$db:$host:$port",$user,$pass);
$sth = $dbh->prepare("SELECT count(id) FROM `online`");
$sth->execute;
while ($ref = $sth->fetchrow_arrayref) {
print "$$ref[0]\n";
}
$rc = $sth->finish;
$rc = $dbh->disconnect;

Установка и настройка AWstats на Ubuntu

AWStats — генератор HTML отчетов анализа данных log файлов веб серверов, почты, FTP и т.д.

Приведу пример установки в Ubuntu:

sudo apt-get install awstats

Копируем конфигурационный файл и добавляем в него имя домена:

sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.example.com.conf

Через любой текстовый редактор прописываем в скопированном конфиге путь к логам домена, имя домена, алиасы домена.

LogFile="/var/log/apache2/access.log" 
SiteDomain="example.com"
HostAliases="localhost 127.0.0.1 example.com"

Обновляем статистику:

sudo /usr/lib/cgi-bin/awstats.pl -config=example.com -update

В настройках apache2 конфига домена добавляем строки:

Alias /awstatsclasses "/usr/share/awstats/lib/"
Alias /awstatsicons/ "/usr/share/awstats/icon/"
Alias /awstatscss "/usr/share/doc/awstats/examples/css"
ScriptAlias /awstats/ /usr/lib/cgi-bin/
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch

После чего /awstats/awstats.pl будет открываться на любом домене которые обслуживает apache2.

Перезапускаем apache2 чтобы изменения вступили в силу:

sudo /etc/init.d/apache2 reload

Статистику можно посмотреть набрав в браузере адреса:

http://example.com/awstats/awstats.pl
http://example.com/awstats/awstats.pl?config=example.com

Чтобы статистика автоматически собиралась и генерировалась добавляем в планировщик cron сторуку:

0 */3 * * * /usr/lib/cgi-bin/awstats.pl -config=example.com -update > /dev/null

Все.

Настройка SNMP Traps в Ubuntu

Установка в Ubuntu:

sudo apt-get install snmpd snmptt snmptrapd

В конфиге /etc/default/snmpd.conf изменяем значение параметра TRAPDRUN с no на yes.

В конфигурационном файле /etc/snmp/snmptrapd.conf укажем комьюнити и что трапы необходимо передавать на snmptt:

authCommunity log,execute,net КОМЬЮНИТИ
traphandle default snmptthandler

В конфигурационном файле /etc/snmp/snmptt.ini укажем параметры:

mode = daemon
net_snmp_perl_enable = 1
mibs_environment = ALL
unknown_trap_log_enable = 1

Перезапустим snmpd и snmptt чтобы применить изменения:

sudo /etc/init.d/snmpd restart
sudo /etc/init.d/snmptt restart

Можно временно остановить snmpd и запустить его вручную чтобы посмотреть в реальном времени какие трапы приходят на сервер:

sudo service snmpd stop
sudo snmptrapd -f -L o

Если в системе используется iptables, то разрешим указанной ниже командой прием udp пакетов на порт 162 и сохраним добавленное правило чтобы оно не сбросилось после перезапуска системы:

sudo iptables -A INPUT -p udp -m udp -s 192.168.0.0/24 --dport 162 -j ACCEPT
sudo service iptables save

Если все правильно настроили, то трапы должны записываться в директории /var/log/snmptt/.

Смотрите также: Настройка SNMP Traps на коммутаторах D-Link

Установка и настройка DNS-сервера BIND9

BIND (Berkeley Internet Name Domain) — открытая и наиболее распространённая реализация DNS-сервера, обеспечивающая выполнение преобразования DNS-имени в IP-адрес и наоборот.

Установка в Linux Ubuntu:

sudo apt-get install bind9

Остановка/Запуск/Перезапуск Bind9:

sudo /etc/init.d/bind9 stop/start/restart

Чтобы использовать локальный DNS нужно прописать в /etc/resolv.conf:

nameserver 127.0.0.1

Редактируем конфигурационные файлы в директории /etc/bind/ под свои нужды.

Откроем файл конфигурации named.conf.options например в текстовом редакторе nano:

sudo nano /etc/bind/named.conf.options

Добавим вначале ACL с сетями которым будут разрешены запросы к DNS серверу:

acl localclients {
localhost;
localnets;
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/16;
};

В options укажем этот ACL, разрешив запросы:

allow-recursion { localclients; };
allow-query { localclients; };
allow-query-cache { localclients; };

Можно указать IP-адреса на которых будет работать bind9:

listen-on {
127.0.0.1;
192.168.1.1;
};

Или на всех:

listen-on { any; };

Либо можно также указать адреса которым разрешена рекурсия, чтобы DNS не обслуживал запросы всех клиентов, а только указанных (все остальные не прописанные адреса смогут получить только информацию прописанную в этом DNS):

allow-recursion { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/16; 172.16.0.0/16; };

Правильность настроек можно проверить следующей командой (если она ничего не сообщила — значит все в порядке):

named-checkconf

Применяем изменения:

sudo rndc reload

или так:

sudo  /etc/init.d/bind9 restart

Проверка:

rndc status
netstat -lnp | grep :53
sudo ps -ax | grep bind

Из Windows можно проверить командой (где 192.168.1.1 — адрес bind9):

nslookup example.com 192.168.1.1

Кэш DNS сервера можно очистить командой:

sudo rndc flush

Сохранить кэш в файл (/var/cache/bind/):

sudo rndc dumpdb

Смотрите также:
Настройка логов Bind9
Настройка Fail2Ban под Bind9

Изменение данных User Agent

Для редактирования настроек набимраем в адресной строке мозиллы:

about:config

Расширение для браузера Mozilla Firefox, позволяющее создавать, редактировать и выбирать данные заголовка User_Agent:
https://addons.mozilla.org/ru/firefox/addon/user-agent-switcher/

User Agent Switcher для Google Chrome:
https://chrome.google.com/webstore/search/user%20agent%20switcher/

Запуск Google Chrome с параметром -user-agent:

/opt/google/chrome/google-chrome '-user-agent=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)'

Для виндовс, редактируем ярлык, в конце пути к файлу добавляем:

'-user-agent=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; en)'

Проверить информацию выдаваемую браузером можно на сайтах:
whatsmyuseragent.com
panopticlick.eff.org
www.mybrowserinfo.com
и т.д.

Веб-прокси Privoxy

Privoxy — свободный веб-прокси с расширенными возможностями.

Официальный сайт: www.privoxy.org

Установка в Linux Ubuntu:

sudo apt-get install privoxy

После установки нужно прописать в настройки любього бразера http и SSL прокси с адресом:

localhost:8118

Работоспособность и настройки можно посмотреть оп адресу config.privoxy.org

Сами конфиги находятся в директории /etc/privoxy/

Можно соединить privoxy с TOR. Для этого нужно добавить в /etc/privoxy/config строку:

forward-socks4a / localhost:9050 .

или

forward-socks5 / 127.0.0.1:9050 .

и перезапустить privoxy:

sudo /etc/init.d/privoxy restart