2015-02-28

Мошенники извращаются или "всемподарки ру"

Приходит мне сообщение от одной из списка друзей в ok.ru со ссылкой на youtube
Выглядело это так:
Понятно, что очередной "развод" но думаю дай гляну на каком уровне
Даже GWT был использован как на сайте ok.ru
Но вот зачем то отдельная авторизация и не авторизация через ok.ru а именно ввести логин и пароль

Подводные камни Oracle Solaris 11

Как выяснилось в Oracle Solaris 11 по каким то причинам не работает ping

ping ya.ru 
ya.ru is alive 
Нагуглил вот такое

tty | grep "not a tty" >/dev/null || {MACHINE_THAT_GOES_PING="Yes" ; export MACHINE_THAT_GOES_PING ; } 
Для включения возможности ping надо сделать следуюшее:

MACHINE_THAT_GOES_PING="Yes" 
export MACHINE_THAT_GOES_PING 
Это я добавил в ~/.zshrc т.к. юзаю zsh

Solaris Jumpstart Cheat Sheet

This document is a quick revision sheet, please refer to the sun documation regarding on how to install, configure
and implement Solaris Jumpstart
Create the directory structuremkdir -p /export/jumpstart/Solaris_8
mkdir /export/jumpstart/Solaris_10
mkdir /export/jumpstart/config
mkdir /export/jumpstart/boot
Share out directories# edit the /etc/dfs/dfstab file
share -F nfs -o ro,anon=0 /export/jumpstart/
Create Install server# Obtain the Solaris 8 CD's
setup-install-server /export/jumpstart/Solaris_8

# Obtain the Solaris 10 CD's or DVD
setup-install-server /export/jumpstart/Solaris_10
Add additional software# Solaris normally comes on multiple CD's
add-to-install-server /export/jumpstart/Solaris_8
# Solaris normally comes on multiple CD's
add-to-install-server /export/jumpstart/Solaris_10
Copy the configuration and example scriptsThe samples can be find in and should be copied to /export/jumpstart/config

<your configured path>/Misc/jumpstart_sample
Create boot Servers# If additonal boot servers are required
setup-install-server -b /export/jumpstart/boot
Setup automatic system configcreate the sysidcfg information in the /export/jumpstart/config directory (can use sysidconfig from other servers)
Example sysidcfg file
---------------------------------------------------------------------------------------
timezone=GB
timeserver=localhost
network_interface=primary {netmask=255.255.240.0 protocol_ipv6=no}
terminal=vt100
security_policy=NONE
name_service=NONE
Create profiles# There are various examples on the CD's (directory)
# profile keywords profile values
# ----------------- -----------------
  install_type initial_install
  system_type standalone
  partitioning default
  filesys c0t0d0s0 4000 /
  filesys c0t0d0s1 1000 swap
  filesys c0t0d0s3 1000 /var
  cluster SUNWcuser
  cluster SUNWCacc
  package SUNWman delete
see link for more profile exmaples, you have used the SUNWcall cluster package for everything
Create Begin & Finish scriptsThe scripts can be shell, perl, etc
Create rules fileThe rules are based on keywords with values, begin script, profile, finish script
hostname vclus1   -   cluster_profile  -
Check rules file# Run the check script within the config directory, a file will be created called "rules.ok"
check
Setup clients
# add_install_client is in Solaris_10/Tools directory

./add_install_client
-e 8:0:20:7a:22:7e
-i 192.168.0.1
-t jump1:/export/jumpstart/Solaris_10/Tools/Boot
-p jump1:/export/jumpstart/config
-c jump1:/export/jumpstart/config
-s jump1:/export/jumpstart/Solaris_10
newserver1
sun4u
-e client ethernet address
-i IP address of client
-t install boot image path
-p Profile Server:<path to sysidcfg file >
-c Configuration Server:<custom jumpstart directory >
-s Install Server:<OS Location>
you could have obmitted the -e and -i options if you add them to /etc/ethers and /etc/hosts files
Other useful options
---------------------------------------------------------------------
-d specify as a DHCP client 
check boot server## to make sure that a boot server is on the network, yo can use the command
rpcinfo -b bootparam 1

Команды Cisco в примерах

Конфигурирование Интерфейса
---------------------------
ip address 
Режим: 

Router(config-if)# 

Синтаксис: 

ip address ip-address mask [secondary] 
no ip address 

Описание: 

ip-address mask : ip адрес и маска secondary вотричный адрес (может быть не один) 

Пример: 

Router(config-if)#ip address 192.168.10.1 255.255.255.0 

Online Disk Suite (ODS)

Sun's volume manager has many names
  • Online Disk Suite (ODS) - will be using this name in this document
  • Solstice Disk Suite (SDS)
  • Solaris Logical Volume Manager (Solaris LVM)
ODS is a disk storage management solution, which offers
  • High Availability
  • Improved Performance
  • Simplified disk management
Raid Levels
The disk management software offers the common raid levels
raid 0 (Striping)A number of disks are concatenated together to give the appearance of one very large disk.
Advantages
   Improved performance
   Can Create very large Volumes
Disadvantages
   Not highly available (if one disk fails, the volume fails)
raid 1 (Mirroring)A single disk is mirrored by another disk, if one disk fails the system is unaffected as it can use its mirror.
Advantages
   Improved performance
   Highly Available (if one disk fails the mirror takes over)

Disadvantages
   Expensive (requires double the number of disks)
raid 5Raid stands for Redundant Array of Inexpensive Disks, the disks are striped with parity across 3 or more disks, the parity is used in the event that one of the disks fails, the data on the failed disk is reconstructed by using the parity bit.
Advantages
   Improved performance (read only)
   Not expensive

Disadvantages
   Slow write operations (caused by having to create the parity bit)

Фильтрующий мост между сетевыми интерфейсами

В новых версиях FreeBSD уже многое по дефолту работает и не требует добавления но переношу старую статью как было (может чуток подправил)
Опции ядра

device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_PRIQ
options ALTQ_NOPCC

Я подразумеваю что все знают как пере-собрать ядро и т.д.

Создаём мост
ifconfig bridge0 create
ifconfig bridge0 addm rl0 addm xl0
ifconfig bridge0 up

Удалять интерфейсы из моста можно таким образом
ifconfig bridge0 deletem xl0

Вносим изменения в rc.conf
cloned_interfaces="bridge0"
ifconfig_bridge0="addm rl0 addm xl0 up"
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0 up"
ifconfig_xl0="up"

2015-02-27

Polipo - прокси сервер

Настройка простого прокси-сервера

Допустим у вас есть канал интернет, который нужно раздавать на несколько машин (1-2), т.е. нужно поставить прокси.
Выбор прокси-серверов в *nix огромен. Поиск в репозитарии любого дистра выдаст десяток приложений, ориентированных на разные задачи и протоколы. Возможности у них различны: кэширующие, фильтрующие, прозрачные и так далее. Популярный Squid несколько тяжеловат и в настройке довольно сложен. Если нужен только кэширующий прокси, заменить кальмара поможет или Polipo (www.pps.jussieu.fr/~jch/software/polipo) ? легкий проксик, ориентированный на небольшое количество клиентов, или популярный Oops! (www.oops-cache.org).


SpamAssassin, ClamAV и Exim

Скопипастил, что бы не потерялось (вдруг пригодится)
Ну, можно начать с простого – с clamav. Надо его установить, запустить и регулярно обновлять. Устанавливаем clamav и clamsmtpd:

cd /usr/ports/security/clamav 
sudo make install clean 
cd /usr/ports/security/clamsmtp 
sudo make install clean 

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

cd /usr/local/etc/
cp clamsmtpd.conf-sample clamsmtpd.conf
cp clamd.conf.default clamd.conf
cp freshclam.conf.default freshclam.conf

Установка Apache Tomcat 8.x

Решил установить  контейнер сервлетов - Apache Tomcat.
Не путать с серверами приложений такими как GlassFish или WildFly (бывший JBoss)
Опишу как я это делал
Действия производятся на Ubuntu 14.04.2 LTS



Это по аналогии с GlassFish взято можно было бы так и не делать но ничего плохого от этого нету
sudo groupadd tomcatadm

Создаём юзера для того что бы всё было сикурно
sudo adduser --home /home/tomcat --system --shell /bin/bash tomcat
sudo usermod -a -G tomcatadm tomcat
sudo adduser --home /home/tomcat --system --shell /bin/bash --ingroup tomcatadm tomcat

Ставим jdk я выбрал open но можно взять и от oracle
sudo apt-get install openjdk-7-jdk

Качаем сам Apache Tomcat
cd /tmp
wget -c http://apache.osuosl.org/tomcat/tomcat-8/v8.0.20/bin/apache-tomcat-8.0.20.tar.gz

Распаковываем
tar -xvf apache-tomcat-8.0.20.tar.gz

Перемещаем туда где он будет теперь "жить"
sudo mv apache-tomcat-8.0.5 /usr/local/bin/apache-tomcat-8

Далее стартовый скрипт
sudo nano /etc/init.d/tomcat8


RancherOS - ещё одна ОС, по принципу контейнерной изоляции

Анонсирована новая операционная система RancherOS, напоминающая по своей сути проекты Atomic и CoreOS, и также предоставляющая минимальную обвязку для запуска изолированных контейнеров. Ключевым отличием RancherOS является отказ от использование системного менеджера systemd и использование собственной системы инициализации, построенной непосредственно на базе инструментария Docker. Код системы написан на языке Go и распространяется под лицензией Apache. Проект основан несколькими известными разработчиками из компании Citrix и бывшими руководителями Cloud.com.

Размер загрузочного образа RancherOS составляет всего 20 Мб. Всё в RancherOS является контейнером. Системное окружение RancherOS скомпоновано в виде ядра Linux и образа начальной загрузки (initrd) и содержит абсолютный минимум, необходимый для запуска контейнеров на базе системы Docker. Всё остальное, включая udev, dhcp, ntp, cloud-init и rsyslog, запускается внутри отдельных системных контейнеров. Над контейнерами функционирует только процесс Docker, выполняемый с PID 1. Пользовательский инструментарий и демон dockerd для запуска пользовательских контейнеров также выполняется в отдельном контейнере User Docker.

2015-02-26

ZFS и FreeBSD

Взято с опеннета, сам уже давно пользуюсь скриптом для установки в одну команду и надобность в такого рода установках отпала

После ряда успешных экспериментов по использованию ZFS во FreeBSD я решил создать эту страничку. Думаю, найдутся те, кому покажется это интересным.
Опишу процесс установки, которым я уже неоднократно пользовался для установки FreeBSD 8.0-CURRENT, используя в качестве корневой файловой системы (да и вообще, всех файловых систем) ZFS.

2015-02-25

Установка и настройка web-сервера nginx

Перенёс со старого блога и как там оказалось уже не помню =)
Установка производится на ОС NetBSD 2.0.2

Установка


Мониторинг системы под FreeBSD или Полезные команды

Команды для проверки текущей нагрузки, информации о системе и куче всякой другой информации.

HDD
atacontrol list - просмотр всех жестких дисков в системе (показывает в том числе и их модели)
mount – показывает смонтированные подразделы и флаги из монтирования
cat /etc/fstab – таблица монтирования при загрузке
disklabel /dev/ad0s1 – показывает список подразделов в первом разделе диска ad0
swapinfo – показывает список подразделов свопинга на дисках и их использование


gstat – нагрузка на диски
fstat – показывает список открытых файлов (имена файлов не выводятся)
pstat -f – выводит список открытых файлов (имена файлов не выводятся)
iostat – выводит информацию, аналогичную systat -vmstat, но не выводит занятости диска по времени и может выводить среднюю статистику с момента загрузки.
iostat -d -w1 -c7 – нагрузка на диски. Статистика в удобном виде
vmstat – выводит количество операций на диске в секунду
sysinstall – можно посмотреть и изменить разметку диска и монтирование

systat -vmstat n – каждые n секунд выводит количество транзакций с диском в секунду, объем записанных/считанных данных на диск в секунду, средний размер транзакции и процент времени в течение которого диск был занят работой.
systat -io start 1 - HDD + CPU
diskinfo -t ad4 – тест на дисковую производительность
tunefs -p /var/ – информация о настройках файловой системы (UFS)


df -h – количество свободного места
df -i – вывести информацию об индексных дескрипторах, а не об использовании блоков

Network
ifconfig – список сетевых интерфейсов с ip-адресами, масками, mac-адресами, типами карт и их статусами (названия карточек можно посмотреть в файле конфигурации ядра)
netstat – вывод активных сетевых соединений (сокетов)

netstat -i ошибки на интерфейсах
netstat -m - просмотр хватает ли mbuf и т.д.
netstat -inb – сколько передано через интерфейс в байтах
netstat -ibt – список интерфейсов, разбитых по ip-адресам (!) с объемом трафика на каждом, количеством ошибок, коллизий, значением watchdog-таймера
netstat -hdw 1 -i net1 - Просмотр количества пакетов в сек, ошибок и дропов на интерфейсе (online)
netstat -r – таблица маршрутизации

systat -ifstat n– интенсивность передачи трафика (online) по всем сетевым интерфейсам за n секунд
systat -netstat n – аналог netstat в реальном времениsysctl kern.ipc.numopensockets – количество открытых сокетов
systat -ip n – таблица IP-пакетов и ошибок по типам за n секунд
systat -tcp n – таблица TCP-пакетов и ошибок по типам за n секунд
systat -icmp n – таблица ICMP-пакетов и ошибок по типам за n секунд

arp -a – просмотр всей таблицы ARP
arp -ad – очистка всей таблицы ARP

tcpdump -i rl0 host 192.168.1.10 and port 80 – сниффер пакетов на интерфейсе rl0, фильтрующий пакеты, содержащие адрес 192.168.1.10 и порт 80
trafshow -i rl0 – программа для сортировки и вывода сетевых потоков (устанавливается дополнительно пакетом или из портов)


System
top -mio – показать I/O по процессам
top -S – показать системные процессы в топе (по дефолту они не показываются)
top -SHPI - показать загрузку по ядрам, в том числе и системные процессы, кроме тех что в простое. Наиболее удобный вариант.

vmstat -z чего не хватает
vmstat -i прерывания по устройствам
systat -vmstat n – просмотр всей сводной статистики по системе(online). вывод показателей загрузки (number of jobs in the run queue averaged over 1, 5 and 15 min), состояния памяти (в страницах), количества процессов в группах, количество вызовов специальных функций ядра (traps, interrupts, system calls, network software interrupts), использование процессора, трансляции имен, активность свопа, прерывания, а также информацию по использованию диска (см)
uptime - можно просмотреть время работы системы без перезагрузок и load averages системы
pcpustat - мониторинг CPU (порт)
ps afx – список запущенных процессов и время процессора на каждый


Memory
freecolor – очень симпатичная утилита для мониторинга использования памяти (ставится из портов)
Для детальной информации по расходу памяти:

fetch -o /usr/local/bin/free http://people.freebsd.org/~rse/dist/freebsd-memory
chmod +x /usr/local/bin/free
free


Демоны времени
date – выводит текущее время и дату
w – выводит, сколько времени назад система загрузилась и список залогиненных пользователей
last – выводит историю перезагрузок и входов пользователей
lastlogin - выводит по пользователям дату и время последнего входа в систему

Товарищ под Углегорском

Товарищ попал в кадр французского телевидения

lshell вместо chroot или вместе со chroot часть 1


Есть в принципе 2 варианта заsecurityтся что касается ssh доступа к серверу
первый заключается в установке шела для ограничения прав пользователя
Но он позволяет шарится по каталогам через sftp если sftp опция включена

И так, только для ssh входа что бы потом попасть в свой контейнер можно настроить один lshell. Сделать это можно так:

sudo apt-get install lshell
sudo adduser --uid 3001 --home /home/chroot/idima --shell /usr/bin/lshell idima


Затем правим конфиг и разрешаем/запрещаем пользователю, что надо

grep -v \# /etc/lshell.conf
[global]
logpath         : /var/log/lshell/
loglevel        : 2
[default]
allowed         : ['ls','ssh','cd','ll']
forbidden       : [';', '&', '|','`','>','<', '$(', '${']
warning_counter : 2
aliases         : {'ll':'ls -lah', 'vim':'rvim'}
intro           : "== Мой персональный интро ==\nWelcome to lshell\nВводим '?' или 'help' для вывода команд которые мона делать"
prompt          : "%u@%h"
sftp            : 0
strict          : 1

[idima]
allowed : ['ssh','tar']
forbidden : [';', '&','`','$(', '${']

2015-02-23

Exim шпаргалка

Exim — это так называемый MTA ( Mail Transfer Agent ), агент передачи сообщений, в просторечии - почтовик или почтовый сервер, использующийся в операционных системах Unix. Распространяется по свободной лицензии GPL, то есть доступен для распространения, использования и модификации.
Exim, весьма распространен и в некоторых операционных системах является почтовым сервером по умолчанию.
Данный материал, является вольным переводом exim chearsheet.
ID сообщений и spool файлы

Идентификаторы сообщений в очередях Exim, представляют из себя буквенно-цифровые последовательности в верхнем и нижнем регистрах: XXXXXX-YYYYYY-ZZ и используются большинством команд администрирования очереди и логгирования в Exim.

Для каждого сообщения создаются три файла в spool директории ( зачастую это: /var/spool ). Если вы работает с данными файлами вручную, без использования описанных ниже команд и утилит, убедитесь что обработали все три файла, например, не оставив в очереди exim только один из них, удалив остальные.

Каталог /var/spool/exim/msglog содержит файлы со служебной информацией для каждого сообщения и именуются в соответствии с ID этого сообщения.
Каталог /var/spool/exim/input содержат файлы заголовков и данных, к ID сообщения в имени, добавлены суффиксы -H и -D, соответственно.
Кроме того в этих директориях могут появляться хэшированные подкаталоги для работы с большими почтовыми очередями.
Получение базовой информации по Exim

Вывести количество сообщений в очереди:

root@localhost# exim -bpc

Печать списка сообщений в очереди. Выводятся, время постановки в очередь, размер, ID сообщения, отправитель, получатель:

root@localhost# exim -bp

Печать суммарной информации. Выводимые колонки: количество, объем, старейшее, последнее, домен.

root@localhost# exim -bp | exiqsumm

Чем в данный момент занимается Exim:

root@localhost# exiwhat

Тестирование маршрута доставки до указанного адреса:

root@localhost# exim -bt alias@localdomain.com
user@thishost.com
    <-- alias@localdomain.com
  router = localuser, transport = local_delivery
root@localhost# exim -bt user@thishost.com
user@thishost.com
  router = localuser, transport = local_delivery
root@localhost# exim -bt user@remotehost.com
  router = lookuphost, transport = remote_smtp
  host mail.remotehost.com [1.2.3.4] MX=0

Эмитировать SMTP транзакцию из командной строки, как если-бы сообщение пришло с указанного IP адреса. При этом будет показано прохождение и срабатывание проверок, фильтров и листов доступа (ACL). На самом деле, никакое сообщение никуда доставлено не будет.

root@localhost# exim -bh 192.168.11.22

Листинг всех настроек конфигурации exim:

root@localhost# exim -bP

Поиск очереди с помощью утилиты exiqgrep

Стандартная поставка сервера Exim включает в себя утилиту для поиска по очередям — exiqgrep, это самый оптимальный путь для решения данной задачи.
Если вы используете конвейер команд, например из exim -bp в awk, grep, cut и т.д., вы просто усложняете себе жизнь.
Различные ключи команды exiqgrep, позволяют достаточно тонко настроить критерии поиска.

Ключ -f используется для поиска сообщений конкретного отправителя

root@localhost# exiqgrep -f [luser]@domain

Ключ -r используется для поиска сообщений для определенного адресата

root@localhost# exiqgrep -r [luser]@domain

Ключ -o указывает искать сообщения, старее, указанного количества секунд. В примере, сообщения старее 1 дня:

root@localhost# exiqgrep -o 86400 [...]

Ключ -y ищет сообщения свежее указанного количества секунд. В примере, найти сообщения, пришедшие в течении последнего часа:

root@localhost# exiqgrep -y 3600 [...]

Ключ -s позволяет искать по размеру сообщения, совпадающего с заданным регулярным выражением:

root@localhost# exiqgrep -s '^7..$' [...]

Для поиска только среди заблокированных( замороженных ) сообщений, используйте ключ -z, или -x для поиска только среди не заблокированных.
Еще несколько ключей отвечающих за вывод результатов поиска

Вывести только ID сообщения, в одном из вышеупомянутых вариантов поиска

root@localhost# exiqgrep -i [ -r | -f ] ...

Печатать счетчик сообщений при одном из вышеприведенных вариантов поиска:

root@localhost# exiqgrep -c ...

Вывести только идентификатор всей очереди:

root@localhost# exiqgrep -i

Управление очередями сообщений

Основной бинарник Exim ( /usr/sbin/exim ), используется с различными ключами для управления сообщениями в очереди. Многие ключи, подразумевают указание одного или более ID сообщения в командной строке, как раз тут вам и пригодится команда exiqgrep -i, которая была упомянута выше.

Запуск очереди:

root@localhost# exim -q -v

Запуск очереди только для локальных доставок:

root@localhost# exim -ql -v

Удалить сообщение из очереди:

root@localhost# exim -Mrm  [  ... ]

Очистит все заблокированные сообщения из очереди:

root@localhost# exipick -zi | xargs exim -Mrm

Очистит все сообщения из очереди:

root@localhost# exipick -i | xargs exim -Mrm

Заблокировать( заморозить ) сообщение:

root@localhost# exim -Mf  [  ... ]

Разблокировать сообщение:

root@localhost# exim -Mt  [  ... ]

Доставить сообщение, вне зависимости от состояния блокировки или времени повторной доставки:

root@localhost# exim -M  [  ... ]

Доставить сообщение, только если достигнуто время для повторной доставки:

root@localhost# exim -Mc  [  ... ]

Принудительно остановить сообщение с формулировкой "отменено администратором":

root@localhost# exim -Mg  [  ... ]

Удалить все заблокированные сообщения:

root@localhost# exiqgrep -z -i | xargs exim -Mrm

Удалить все сообщения, старше 5 дней (86400 * 5 = 432000 секунд):

root@localhost# exiqgrep -o 432000 -i | xargs exim -Mrm

Заблокировать все письма от указанного отправителя:

root@localhost# exiqgrep -i -f luser@example.tld | xargs exim -Mf

Просмотреть заголовки сообщений:

root@localhost# exim -Mvh

Просмотреть тело сообщений:

root@localhost# exim -Mvb

Просмотр логов сообщения:

root@localhost# exim -Mvl

Добавить получателя в сообщение:

root@localhost# exim -Mar   [  ... ]

Редактировать отправителя сообщения:

root@localhost# exim -Mes

Листы контроля доступа (Access Control List, ACL)

Exim предоставляет возможность использовать, листы контроля доступа (ACL) на различных этапах SMTP передачи. Условия ACL назначаются в конфигурационном файле exim.conf.
Начать имеет смысл с HELO.

# Назначить ACL для использования после команды HELO
acl_smtp_helo = check_helo

# Условия проверки check_helo для ACL:
check_helo:

    deny message = Gave HELO/EHLO as "friend"
    log_message = HELO/EHLO friend
    condition = ${if eq {$sender_helo_name}{friend} {yes}{no}}

    deny message = Gave HELO/EHLO as our IP address
    log_message = HELO/EHLO our IP address
    condition = ${if eq {$sender_helo_name}{$interface_address} {yes}{no}}

    accept

    Используйте проверку HELO на свой страх и риск. Сейчас HELO не имеет такого большого значения в общей схеме SMTP, так что не стоит сильно доверять его содержимому. Не только спамеры используют строку HELO, вы будете удивлены сколько нормальных сообщений может приходить с кривым HELO. Спамерам не составит труда отправлять сообщения с легальной строкой HELO а не писать там "я спамер", так что много спама вы на этом не отсеете.

Далее, вы можете провести проверку по отправителю или удаленному хосту. В примере показано как фильтровать по содержимому, идущему после команды RCPT TO. Если прием сообщения будет отклонен в этом месте, вы получите больше данных в логах, нежели при блокировке по MAIL FROM.

# Назначит проверку содержимого после RCPT TO
acl_smtp_rcpt = check_recipient

# Условия для check_recipient ACL
check_recipient:

    # [...]

    drop hosts = /etc/exim_reject_hosts
    drop senders = /etc/exim_reject_senders

    # [ Probably a whole lot more... ]

В приведенном примере для блокировки используются два текстовых файла. В файл /etc/exim_reject_hosts, значения добавляются в виде: имя_хоста/IP_адрес, в файл /etc/exim_reject_senders в виде адреса отправителя, по одной записи в строке.

Кроме того, можно сканировать содержимое сообщения, на предмет совпадения с регулярным выражением. Имейте в виду, это дает дополнительную нагрузку на процессор, особенно на больших сообщениях.

# Назначить ACL для использования после команды DATA
acl_smtp_data = check_message

# Условия проверки для check_messages ACL
check_message:

    deny message = "Sorry, Charlie: $regex_match_string"
    regex = ^Subject:: .*Lower your self-esteem by becoming a sysadmin

    accept


Исправление SMTP аутентификации для pine

В случае, если pine не может использовать аутентификацию на сервере Exim, возвращая сообщение "unable to authenticate", без запроса на ввод пароля, нужно добавить в exim.conf следующие строки.

  begin authenticators

  fixed_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = "${perl{checkuserpass}{$1}{$2}{$3}}"
  server_set_id = $2
>  server_prompts = :

Некоторое время назад, данная проблема имела место быть в CPanel, на текущий момент этот недочет исправлен.
Запись в лог файл заголовка Subject

Один из самых полезных хаков конфигурации Exim. Добавление в exim.conf приведенной строки, позволит писать в лог файл строку subject, писем проходящих через сервер. Это сильно помогает при решении проблем в процессе настройки сервера, а так-же дает дополнительные критерии для отсева спама.

log_selector = +subject

Отключение identd

Честно говоря не думаю что протокол identd был когда либо очень полезен. Identd опирается на подключающийся хост, что-бы подтвердить идентификацию ( System UID ), удаленного пользователя, владельца процесса, устанавливающего сетевое соединение. Это может быть в определенной степени полезно в мире системных оболочек и IRC пользователей, но уж никак не на нагруженном почтовом сервере, где пользователем процесса зачастую является просто какой-нибудь "mail", и за этим может быть любой другой MTA. В итоге куча накладных расходов, нулевой результат, лишь задержки identd запросов и как следствие отказы и таймауты.
Можно запретить Exim делать подобные запросы, установив таймаут 0 секунд в exim.conf.

rfc1413_query_timeout = 0s

Отключение блокировки вложений

Что-бы отключить блокировку исполняемых вложений, что CPanel делает по умолчанию, правда не предоставляя при это контроля "для каждого домена", следующий блок нужно добавить в начало файла /etc/antivirus.exim:

if $header_to: matches "example\.com|example2\.com"
then
  finish
endif

Поиск в журнальных файлах с помощью exigrep

Утилита exigrep ( не путайте с exiqgrep, использующейся для поиска в очереди ), используется для поиска по лог файлам. Например exigrep может вывести все записи из лог файла с совпадающим ID сообщения, что довольно удобно, учитывая что каждое сообщение занимает 3 строки в лог файле.

Поиск сообщений отправленных с определенного IP адреса:

root@localhost# exigrep '<= .* \[12.34.56.78\] ' /path/to/exim_log

Поиск сообщений отправленных на определенный IP адрес:

root@localhost# exigrep '=> .* \[12.34.56.78\]' /path/to/exim_log

Данный пример ищет сообщения содержащие символы "=>", и отправленные на адрес "user@domain.tld", далее по конвейеру, результат передается команде grep, которая из полученного результата выбирает строки, содержащие "<=" с информацией об отправителе, почтовом адресе, IP адресе, размере сообщения, ID сообщения и заголовок subject, если логгирование этой строки включено.

root@localhost# exigrep '=> .*user@domain.tld' /path/to/exim_log | fgrep '<='

Генерировать из лог файла и показать статистику Exim:

root@localhost# eximstats /path/to/exim_mainlog

То-же что и выше но с более подробными данными:

root@localhost# eximstats -ne -nr -nt /path/to/exim_mainlog

Аналогично но за определенный день:

root@localhost# fgrep YYYY-MM-DD /path/to/exim_mainlog | eximstats

В качестве дополнения

Удалить все сообщения в очереди, содержащие в теле, определенную строку:

root@localhost# grep -lr 'a certain string' /var/spool/exim/input/ | \
                sed -e 's/^.*\/\([a-zA-Z0-9-]*\)-[DH]$/\1/g' | xargs exim -Mrm

Командой выше, мы проверяем содержимое каталога /var/spool/exim/input/, в поисках файлов очереди, содержащих определенную строку в теле сообщения, поскольку команда exiqgrep не умеет просматривать тело сообщений. Если вы решите удалить найденные файлы напрямую, ЭТО БУДЕТ НЕ ПРАВИЛЬНО, используйте предназначенные для этого команды exim.
Если вывод используемой команды слишком длинный, например ID сообщений при exiqgrep -i, которые нужно передать дальше по конвейеру команде exim, может быть превышено количество аргументов командной строки вашей системной оболочки. В этом случае передавайте результат поиска через конвейер, команде xargs, которая будет обрабатывать результаты ограниченными порциями.
Например удалим тысячи сообщений, отправленных с адреса joe@example.com:

root@localhost# exiqgrep -i -f '' | xargs exim -Mrm

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

root@localhost# kill -HUP `cat /var/spool/exim/exim-daemon.pid`


source

PPPoE server FreeBSD MPD5

Mpd – реализация multi-link PPP протокола для FreeBSD, основанная на netgraph(4). В его основу легли концепции скорости и гибкости настроек. Исходя из этих принципов настройка соединений происходит на пользовательском уровне (user land), в то время как передача данных является функцией ядра (kernel).
Mpd поддерживает множество типов соединений:
* модем – для соединения различных асинхронных последовательных соединений (asychronous serial connections), включая модем, ISDN адаптеры, и нуль-модемное соединение (null-modem). Mpd включает в себя скриптовый язык обработки данных основанный на событиях (event-driven scripting language) для установки типа модема, утановки соединения, авторизации и т.д.
* pptp – соединение точка-точка через Internet по протоколу PPTP (Point-to-Point Tunnelling Protocol). Данный протокол поддерживается большинством производителей операционных систем и оборудования.
* l2tp – соединение через Internet используя протокол 2-го уровня L2TP (Layer Two Tunnelling Protocol). L2TP является дальнейшей реализацией протокола PPTP и также поддерживается современными производителями операционных систем и оборудования.
* pppoe – соединение поверх Ethernet по протоколу PPP (PPP-over-Ethernet). Данный протокол в основном используется DSL провайдерами.
* tcp – тунелирование PPP сессии поверх TCP соединения. Кодирование фреймов (Frames) происходит по аналогии с асинхронным соедиениеним (asychronous serial connections).
* udp – туннелирование PPP сессии поверх UDP соединения. Каждый фрейм инкапсулируется в пакет с UDP датаграммой (UDP datagram packet).
* ng – соединение различных устройств, поддерживаемых netgraph. Netgraph – система сетевых модулей уровня ядра, поддерживает синхронные последовательные соединения (synchronous serial connections), Cisco HDLC, Frame Relay, и многие другие протоколы.
MPD поддерживает некоторые реализации субпротоколов PPP и их расширений, таких как:
* Multi-link PPP
* PAP, CHAP, MS-CHAP и EAP автроризация
* сжатие трафика (traffic compression (MPPC, Deflate, Predictor-1))
* криптование трафика (traffic encryption (MPPE, DESE, DESE-bis))
* IPCP и IPV6CP параметры согласования
В зависимости от конфигурационных правил и параметров соединения, mpd может функционировать как обычный PPP клиент/сервер (client/server) или передавать пакеты без изменения другому хосту, используя поддерживаемый тип соединения, обеспечивая при этом LAC/PAC/TSA функциональность для построения распределенных сетей.
Mpd включает в себя следующие дополнительлные возможности:
* поддержка IPv4 и IPv6.
* управление по Telnet и HTTP.
* различные типы авторизации и методы подсчета трафика (RADIUS, PAM, авторизация по скрипту, авторизация по файлу, …)
* подсчет трафика по NetFlow
* Network address translation (NAT)
* Dial-on-demand с выключением по неактивности (idle timeout)
* Динамическое управление соединением (Dynamic demand based link management (также известное как «rubber bandwidth»))
* Функциональный язык написания скриптов для асинхронных последовательных соединений (synchronous serial ports)
* Готовые скрипты для некоторых основных типов модемов и ISDN адаптеров
* Интерфейс, независимый от типа устройств
* Обширные возможности авторизации
Mpd изначально разрабатывался Whistle Communications, Inc. для ипользования во внутренней сети Whistle InterJet. В его основе лежит iij-ppp user-mode PPP код, сильно изменившийся до сего дня. Домашняя страница разработчиков Mpd в настоящее время хостится на сайте sourceforge.net MPD Project Page
Отличия от 4 версии:
* Изменения структуры:
o Устранены статические линки (static link) – реализация зависимостей бандла (bundle). Линки выбирает бандл, используя параметры согласования на сетевой стадии (NETWORK phase). Этим достигается простота и полная работоспособность клиента и мультифункциональность сервера. Также это дает возможность реализовать боелее сложные LAC, PAC и TSA настройки, чем было до 5 версии.
o Внедрены шаблоны, основанные на динамическом создании линках/бандлах. Это позволило значительно сократить конфигурацию для серверов с большим количеством клиентов. Линк может автоматически создаваться входящим запросом (call request) от устройства или DoD/BoD запросом (Dial on Demand/Brake on Demand) из бандла. Бандл может автоматически создаваться при достижении сетевой стадии NETWORK phase.
o Для упрощения объединена конфигурация физического и канального уровня, разделенных с верии 4.2.
* Новые возможности:
o PAM авторизация.
o Добавлена поддержка динамического пула IP адресов.
o Добавлена поддержка внешних скриптов авторизации ‘ext-acct’ как альтернатива ‘radius-acct’.
* Изменения:
o Значительные изменения в конфигурации комманд. Следует прочитать мануал и примеры.
o FreeBSD 4.x и старые релизы DragonFly не поддерживаются.
Установка
Перед установкой следует решить для себя, как MPD будет загружать модули netgraph – через ядро или самостоятельно по мере необходимости.
Опции:
# netgraph options
options HZ=1000
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_CISCO
options NETGRAPH_ECHO
options NETGRAPH_FRAME_RELAY
options NETGRAPH_HOLE
options NETGRAPH_KSOCKET
options NETGRAPH_LMI
options NETGRAPH_RFC1490
options NETGRAPH_TTY
options NETGRAPH_ASYNC
options NETGRAPH_BPF
options NETGRAPH_ETHER
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_L2TP
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_TEE
options NETGRAPH_UI
options NETGRAPH_VJC
Можно включать в конфиг ядра не все подряд, а только то, что нужно вам.
При установке на FreeBSD черед пэкедж или порт, mpd автоматически установится в /usr/local/sbin/mpd5 с компиллированием дефолтового набора поддерживаемых устройств. Для запуска mpd требуются несколько конфигурационных файлов, которые находятся в директории /usr/local/etc/mpd5. В этой директории вы можете найти примеры конфигурационных файлов.
Перед запуском mpd, нужно выполнить настроики следующих файлов:
mpd.conf
Файл описывает одну или более конфигурации. При старте mpd через консоль указывается название конфигурации (которая может состоять из нескольких mpd комманд), которая и загружается. Если название не указывается, загружается конфигурация, описанная в разделе ‘default’. Каждая конфигурация определяет один или несколько бандлов (bundle), линков (link) или репитеров (repeater). Их описание начинаются с комманды create. Последующие комманды в конфигурации описывают различные уровни этих блоков.
mpd.secret
Файл содержит пары логин-пароль. MPD просматривает файл при авторизации. Файл должен быть доступен для чтения только root.
mpd.script
Файл содержит скрипты для модемных устройств.
Прикручиваем логи:
В файл /etc/syslog.conf добавляем:
!mpd
*.* /var/log/mpd.log
Создаем файл /var/log/mpd.log ручками командой:
touch /var/log/mpd.log
Задаем ротацию логов в файле /etc/newsyslog.conf
/var/log/mpd.log 600 7 100 * JC
Файл /etc/rc.conf должен содержать запись:
mpd_enable=»YES»
иначе система не даст запустить процесс mpd.
Старт MPD проходит через загрузчик /usr/local/etc/rc.d/mpd5 с опцией start.
/usr/local/etc/rc.d/mpd5 start
Стандартные опции {start|stop|restart}.
Системные настройки сервера
Есть некоторые моменты, которые следует учесть, если ваш сервер имеет большое количество соединений. Например, можно столкнуться с ситуацией, когда при выводе комманды ngctl list будет выдававаться No buffer space available. Чтобы этого избежать следует добавить в /boot/loader.conf:
kern.ipc.nmbclusters=16384
kern.ipc.maxsockets=16384
net.graph.maxalloc=2048
kern.maxusers=512
kern.ipc.maxpipekva=32000000
в /etc/sysctl.conf:
net.graph.maxdgram=128000
net.graph.recvspace=128000
Более подробную информацию об этих настройках можно найти здесь.
Если MPD работает на вланах (vlan), которые поднимаются из /etc/rc.local, я наблюдал такую картину. Процесс MPD стартует раньше, чем поднимаются вланы на интерфейсах. В итоге получается, что вроде как сервер рабоатет нормально, только никто подключиться не может. Из этой ситуации есть два выхода (напоминает: из любой ситуации всегда есть два выхода). Либо поднимать вланы через /etc/rc.conf, либо в загрузчик MPD /usr/local/etc/rc.d/mpd5 в начало добавляем строчку:
`/bin/sh /etc/rc.local`
Будьте осторожны, возможно через этот файл у вас прописывается маршрутизация или еще что-нибудь.
Убедитесь, что этот способ не затронет другие сервисы в вашей системе.
Файл конфига mpd.conf
В этой главе я постараюсь по подробнее рассмотреть файл своего рабочего конфига. Если вы мигрируете с более ранней версии MPD, конфигурационный файл придется переписывать. Напомню также, что в 5-ой версии отказались от mpd.links. Для начала полный листинг mpd.conf:
startup:
#configure mpd users
set user admin PASSWORD
#configure the console
set console self 127.0.0.1 5005
set console open
#configure the web server
set web self 0.0.0.0 5006
set web open
default:
load def_conf
def_conf:
create bundle template B
set iface up-script /usr/local/etc/mpd5/vpn_up_mpd.pl
set iface down-script /usr/local/etc/mpd5/vpn_down_mpd.pl
set bundle enable compression
set bundle enable encryption
set iface idle 0
set iface disable proxy-arp
set iface enable tcpmssfix
set ipcp yes vjcomp
set ipcp ranges aaa.bbb.ccc.ddd/32 0.0.0.0/0
set ipcp dns xxx.yyy.zzz.ddd qqq.www.eee.rrr
set ccp yes mppc
set mppc yes e40
set mppc yes e56
set mppc yes e128
set mppc yes stateless
set ecp disable dese-bis dese-old
log -echo -ipv6cp -radius -rep
load common
common:
create link template PPPoE pppoe
set link enable no-orig-auth
set link max-children 300
set auth max-logins 0
load pppoe
pppoe:
set link action bundle B
set link enable multilink
set link yes acfcomp protocomp
set link disable chap pap eap
set link enable chap chap-msv1 chap-msv2 chap-md5
set link keep-alive 10 60
#pppoe on bge1 with service name "service_name0"
create link template bge1_0 PPPoE
set pppoe iface bge1
set link enable incoming
set pppoe service service_name0
#pppoe on bge1 with service name "service_name1"
create link template bge1_1 PPPoE
set pppoe iface bge1
set link enable incoming
set pppoe service service_name1
#pppoe on bge2 with service name "service_name0"
create link template bge2_0 PPPoE
set pppoe iface bge2
set link enable incoming
set pppoe service service_name0
Примечание:
Все строки, кроме комментариев и ссылок (строки которые заканчиваются на «:»), в файле mpd.conf должны начинаться с отступа (пробела).
Блок startup:
В этом блоке описываются юзеры для консольного и web интерфейса MPD, а также сами настройки консоли и web сервера. Если вам это не нужно, то конфигурация может начинаться с блока default, а блока startup может вообще не быть.
Блок default:
В сущности здесь описываются дефолтовые действия, в частности загрузить дефолтовый конфиг, который загружается если не указывать называние конфигурации при загрузке, как было описано выше.
Блок def_conf:
С этого блока начинается конфигурация самого сервера. Если в конфиг файле описаны несколько конфигураций, у каждой должно быть свое уникальное имя.
Далее будем описывать построчно:
create bundle template B – создаем бандл «B», он же будет выступать в качестве шаблона
set iface up-script /usr/local/etc/mpd5/vpn_up_mpd.pl
set iface down-script /usr/local/etc/mpd5/vpn_down_mpd.pl - цепляем
внешние скрипты на события создания и закрытия туннеля ppp.
MPD может передавать данные в качестве аргументов на события подключения и отключения пользователя к серверу:
$ARGV[0] – ngXX – номер тунеля
$ARGV[1] – inet
$ARGV[2] – aaa.bbb.ccc.ddd/32 – IP адрес сервера
$ARGV[3] – IP адрес, выданный пользователю
$ARGV[4] – логин пользователя
Эти аргументы вы можете использовать в perl скриптах vpn_up_mpd.pl и vpn_down_mpd.pl
set bundle enable compression – разрешаем CCP (Compression Control Protocol). Разрешаем только использование протокола, выбор протокола сжатия описан ниже.
set bundle enable encryption – разрешаем ECP (Encryption Control Protocol). Аналогично предыдущему пункту, выбор протокола сжатия описан ниже.
set iface idle 0 – таймаут в секундах неактивности, по истечении которого соединение принудительно разрывается со стороны сервера. «0 – не разрывать (стоит по дефолту).
set iface disable proxy-arp – запрещаем proxy-arp. Этот параметр полезен для имитации единой локалки для удаленных хостов.
set iface enable tcpmssfix – позволяет MPD управлять настройкой входящих и исходящих TCP SYN сегментов таким образом, чтобы не превышать MTU, допустимый на интерфейсе.
set ipcp yes vjcomp – разрешает компрессию заголовков (Van Jacobson TCP).
set ipcp ranges aaa.bbb.ccc.ddd/32 0.0.0.0/0 – пул IP адресов сервера/клиентов
set ipcp dns xxx.yyy.zzz.ddd qqq.www.eee.rrr - dns сервера, отдаваемые клиенту
set ccp yes mppc – включаем MPPC субпротокол сжатия/шифрования
set mppc yes e40 – включаем 40-bit MPPE шифрование
set mppc yes e56 – включаем 56-bit MPPE шифрование
set mppc yes e128 – включаем 128-bit MPPE шифрование
set mppc yes stateless – настройка, полезная при пакетлоссах (потерях)
log -echo -ipv6cp -radius -rep – уровни логгирования
load common – загрузка другого блока с именем common
Переходим к блоку common:
create link template PPPoE pppoe - создаем линк, он же будет выступать в качестве шаблона
set link enable no-orig-auth – Обычно при использовании PAP или CHAP авторизация происходит в начале соединения. Эта опция временно выключает данное требование в случае если наш сервер является единственным в сети, а клиенту вдруг не нравится запрос от сервера на авторизацию.
set link max-children 300 – максимальное количество соединений для этого шаблона
load pppoe – подгружаем следующий блок
set link action bundle B – накладываем на линк настройки бандла
set link enable multilink – опция позволяет создавать множественное подключение PPP. Но в данном случае опция позволяет пропускать большие пакеты (больше MTU) фрагментами. Что-то вроде фрагментации пакетов.
set link yes acfcomp protocomp – сжатие адресного поля, поля заголовков и поля протокола. Для экономии нескольких байтов во фрейме.
set link disable chap pap eap – запрещаем данные протоколы проверки пароля
set link enable chap-msv1 chap-msv2 chap-md5 – разрешаем протоколы проверки пароля (необходимы для возможности включения шифрования (Microsoft)).
set link keep-alive 10 60 – разрешает LCP пакеты. По умолчанию 5 40. Можно отказаться от этой опции, поставив первое значение в «0.
create link template bge1_0 PPPoE – создаем линк bge1_0 и накладываем настройки шаблона PPPoE
set pppoe iface bge1 – задаем интерфейс, где будет поднят наш сервис. Может быть как физическим интерфейсом, так и вланом (vlan).
set link enable incoming – разрешаем входящие соединения
set pppoe service service_name0 – поднимаем сервис-нейм (service-name) на заданном интерфейсе
Если у вас множество интерфейсов, то достаточно дописывать в конец конфига последний видоизмененный блок, как показано в общем листинге.
Заключение
Из плюсов использования MPD в качестве PPPoE сервера хочу отметить меньшую загрузку CPU, особенно в сочетании с использованием поллинга (polling).
Для этого нужно собрать ядро с поддержкой поллинга:
options DEVICE_POLLING
options HZ=1000
После этого можно включить поллинг через /etc/sysctl.conf:
kern.polling.enable=1
kern.polling.user_frac=10
Последнее означает что система будет делить ресурсы CPU в соотношении userland/kernel как 10/90. По умолчанию это значение 50/50.
Конфиг работает на версиях порта mpd-5.0, mpd-5.1. С версией mpd-5.1_1 наблюдались проблемы на серверной стороне. При невыясненных обстоятельствах запускался второй процесс mpd5, который грузил CPU в 100%, а пользователи не могли подключиться. Пришлось откатываться на 5.1.

source

2015-02-22

Обход ограничений прокси

Итак, вы работаете в компании где живут злобные админы. И эти плохие дядьки закрыли доступ к нашей всеми любимой аське, контакту и одноклассникам!
и что теперь делать? весь день работать? выход есть %] И так, что нам дано? Есть доступ в инет с закрытыми сервисами, но часть сайтов у нас
работает. Задача получить доступ ко всему. Вся статья по примеру связки httptunnel+polipo+freebsd
Нам нужно:
  1. vds'ка (тут ничего не поделать, нужен root'овый доступ), стоит нынче совсем не дорого, порядка 200 рублей в месяц, а еще и хостить свои сайты будет где, да и файлики в интернете выложить. Наш любимый firstvds.ru пойдет в самый раз(на нем и настраивалось мной)
  2. httptunnel (взять тут: http://nocrew.org/software/httptunnel/), если у вас винда, захватите и версию для нее. Если сервер на freebsd, то httptunnel есть в портах (/usr/ports/www/httptunnel).
  3. какой-нибудь маленький proxy (3proxy, ziproxy (этот нам еще и трафик сэкономит), polipo, etc) Я взял себе polipo ибо он первый на глаза попался.
Все, поехали:
В чем смысл всего, мы прокидываем туннель до внешнего сервера(вашего) со своего компьютера. Весь трафик будет прикидываться httpшным летая по 80 порту до сервера,
а оттуда уже по миру куда надо и назад по той же схеме через свой прокси.
Для начала нам надо все это дело собрать:
cd /usr/ports/www/httptunnel && make install && make clean
cd /usr/ports/www/polipo && make install && make clean
добавляем в /etc/rc.conf:
polipo_enable="YES"
Теперь некоторые особенности работы, на нашей vds'ке крутится еще апача которая слушает 80 порт(скорей всего в вашей(как в моем случае) компании наружу
открыт только 80(http) и 443(https) порт. Но нашему веб-серверу он тоже нужен. Тут выхода по сути два. Первый не совсем правильный - это мы
покупаем отдельную vds для нашего обхода и просто гасим там apache. Минусы очевидны, не сайта положить, ни файлика забросить. И второй более грамотный - мы
покупаем просто дополнительный ip. Вешаем его на отдельный домен(благо домена третьего уровня сами клепать можем) и просим апачу слушать только первый
ip на котором и висит основной домен с нашими сайтами. Для этого нужно лишь чуток подправить конфиг apache:
vi /usr/local/etc/apache/httpd.conf
Listen first.vds.server.ip:80 Listen first.vds.server.ip:443
first.vds.server.ip - это ip сервера первый (тот, что мы купили дополнительно привязываем к какому-нибудь домену по вашему вкусу и оставляем.
Теперь сервер слушает все домены кроме отдельно заведенного с новым ip (сделали вы это уже, да?;])
Поднимаем прокси:
cd /usr/local/etc/polipo && cp ./config.simple ./config && vi ./config
proxyAddress = "second.vds.server.ip"    # IPv4 only
allowedClients = "127.0.0.1, 192.168.0.0/24"
proxyName = "obhod.youserver.com"
proxyPort = 3128
authCredentials = admin:pass
chunkHighMark = 819200
objectHighMark = 128
diskCacheFilePermissions=0640
diskCacheDirectoryPermissions=0750
diskCacheRoot = ""
Конфиг настроен, теперь запускаем его:
/usr/local/etc/rc.d/polipo.sh start
Проверьте запустился ли:
ps ax|grep polipo
если нет, читайте в чем проблема:
cat /var/log/polipo
Поднимаем тунель:
hts -F obhod.youserver.com:3128 obhod.youserver.com:80
Ну и теперь проверим, все ли отвечает и слушает нас:
netstat -na||grep tcp
tcp4       0      0  92.63.98.42.80         *.*                    LISTEN
tcp4       0      0  92.63.98.42.3128       *.*                    LISTEN
Замечательно, видно, что оба сидят и слушают )) Все, осталось самое интересное, у себя на компьютере запускаете
htc -P proxy.company.com:3128 -F 1020 you.server.com:80
в случае винды соответственно htc.exe
Теперь чуток подправляем параметры вашего браузера/icq/и прочих клиентов. Указываем использовать прокси у себя с параметрами: server : localhost, port: 1020 и вперед, читайте общайтесь, но про работу все же не забывайте

Настройка Cisco (Cisco 1841)

Встала необходимость в одном из филиалов в качестве маршрутизатора установить Cisco, т.к. предполагалось впн-соединение с зарубежным филиалом (а их требование наличие Cisco), то была выбрана модель Cisco 1841 SEC/K9. Если кто-то будет закупать подобную модель (c SEC/K9) обратите внимание, что по нынешнему законодательству, ее использование требует наличия регистрации в ФСБ.
Но сейчас не об этом, т.к. в настройках цисок я ничего не понимал, пришлось садиться и курить мануалы. Что накурил, судить Вам =). Здесь будет рассмотрена только первоначальная настройка, без настройки маршрутизаций, dhcp и других прелестей.
Итак у меня в руках циска, с консольным кабелем, вопрос, где в нынешнее время найти com-порт?! Сам работаю на ноуте, в серверный шкаф лезть лень, юзеров сгонять с мест тоже неохота, в итоге в загашниках нашел старую машину с Арчем, то что надо.
В качестве терминала будем использовать minicom -
pacman -S minicom
Конфигурируем
minicom -s
где выставляем -
Serial Device: /dev/ttyS0
Bps/Par/Bits: 9600 8N1
Удаляем все из строк modem Init and Reset strings, сохраняем save setup as dfl и выходим Exit from Minicom.
Запускаем без ключа -s, включаем циску, коннект есть.
Любители мелкомягких с таким же успехом могут использовать HyperTerminal.
Имя и пароль по умолчанию - cisco. Итак, мы в консоли, с чего начать?
Можно начать с команды -
setup
которая поможет нам настроить основные параметры, но мы обойдемся без нее.
Создадим пользователя для последующих входов.
Входим в привилегированный режим -
Router>enable
Router#
# - знак привилегированного режима.
Далее входим в режим конфигурирования -
Router# configure terminal
Router(config)#
можно просто conf t, циска сама подберет необходимое. Если вы забыли написания команд, то можно использовать справку - ?
Например:
show ?
или
sh?
Итак создаем пользователя:
Router(config)# username vash_user privilege 15 super_puper_password
где,
vash_user - имя пользователя
super_puper_password - Ваш супер сложный пароль.
Задаем имя хоста:
Router(config)# hostname Cisco
Cisco(config)#
Для фанатов Дениса Попова, вид системного приглашения возможно изменить:
Cisco(config)# prompt %h:%n%p
Cisco(config)# exit
Cisco:5#
Возможные символы:
%% - знак процента
%h - Имя хоста
%n - Номер TTY-порта для данного сеанса.
%p - Символ приглашения: > для пользовательского режима и # для привилегированного режима
%s - Пробел
%t - Табуляция
Далее для простоты написания будет использовано имя хоста Router.
Комментарии в конфигурационных файлах cisco также полезны, как и в других системах. Комментарии начинаются со знака !. Единственное что комментарии лучше вносить когда вы редактируете файл конигурации не на самой циске, а где-нибудь на сервере. Если вносить комментарии с командной строки, то при сохранении конигурации они не сохранются.
Задаем пароль на привилегированный режим -
Router(config)# enable password vash_password
Заставляем маршрутизатор хранить пароль в зашифрованном виде -
Router(config)# service password-encryption
Настраиваем интерфейсы:
Router>enable
Router# conf t
Router(config)# interface FastEthernet0/1
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Router(config-if)# description LAN
Router(config-if)# no shutdown
Router(config-if)#exit
Router(config)#
Таким же образом настраивается второй интерфейс
Задаем dns-сервера -
Router(config)# ip name-server 192.168.1.5
Router(config)# ip name-server 192.168.1.6
Задаем имя для неуточненных доменов
Router(config)# ip domain-name your-domain.ru
Отключаем поиск в системе ДНС
Router(config)# no ip domain-lookup
Задаем шлюз по умолчанию -
ip default-gateway 107.23.128.13
Устанавливаем время на маршрутизаторе -
Router(config)# clock set 15:00:00 11 oct 2011
Временную зону -
Router(config)# clock timezone MSK +3
Задаем сервер ntp -
Router(config)# ntp server 192.168.1.6
Т.к. наша циска поддерживает шифрование, то включим ssh для доступа к ней.
Включаем службу AAA (Authentication, Authorization, Accounting)и указываем тип авторизации:
aaa new-model
aaa authentication login default local
aaa authorization exec default local
до активации ААА в системе обязательно должен быть заведен хотя бы один пользователь
Генерируем ключ для ssh
Router(config)# crypto key generate RSA
И переходим к настройке виртуального терминала -
Router(config)# line vty 1
Router(config-line)# login
Router(config-line)# exec-timeout 30 0
Router(config-line)# transport input ssh
Router(config-line)# privilege level 15
Router(config-line)# exit
Router(config)#
Мы настроили ssh только для одного витртуального терминала, чтобы настроить для нескольких виртуальных линий, необходимо указывать например:
line vty 0 5
Если наша циска не поддерживает ssh, то можно использовать telnet для подключения, тогда необходимо будет заменить транспорт соотвественно на telnet (transport input telnet)
Для тех кто не может жить без вэб-морды, включаем вэб-сервер -
ip http server
ip http authentication local
Для более надежного соединения включаем https (не все циски это умеют)
ip http secure-server
И заходим по нашему айпи-адресу через вэб-браузер. Без острой необходимости не советую включать http сервер, а тем более выставлять его на внешний интерфейс.
После всех возможных настроек и проверки конфига сохраняем его как загрузочный -
Router# copy running-config startup-config
Если Вы этого не сделаете, то при следущей загрузке Вы не увидите изменений, которые так долго вносили.
Полезная информация -
Копирование конфига на tftp -
copy running-config tftp
Просмотр версии -
show version
Просмотр содержимого flash -
show flash
Просмотр загруженного конфига -
show running-config
Ну и не забываем про -
show ?
Стандартные списки доступа.
Общий вид правила:
access-list номер действие источник
где -
номер - число идентифицирующее список (1-99 стандартные списки доступа для IP, 100-199 расширенные списки доступа для протокола IP)
действие - permit или deny (разрешить, запретить), в комментариях не нуждается.
источник - адрес источника пакетов
Пример:
access-list 5 deny 10.10.10.0 0.0.0.255
access-list 5 deny 10.10.20.0 0.0.0.255
access-list permit any
Пример запрещает доступ для сетей 10.10.10.0 и 10.10.20.0 и разрешает для всех остальных.
Будьте внимательней, при составлении правил маршрутизатор обрабатывает правила последовательно и если поставить строку access-list permit any первый, то остальные два отрабатывать не будут.
Применение списка доступа к интерфейсу -
interface FastEthernet0/1
ip access-group out
То бишь мы запрещаем исходящий трафик на интерфейсе FastEthernet0/1 для вышеперечисленных сетей.
Списки доступа также можно применять для доступа по ssh (см. первую часть)-
transport input ssh
access-class 10 in
access-list 10 permit host 10.10.10.45
или для доступа к web-серверу маршрутизатора -
ip http server
ip http access-class 25
ip http authentication aaa
ip http port 8080
Расширенные списки доступа:
access-list номер действие протокол источник исх_порт приемник цел_порт дополнительные_аргументы
где -
номер - аналогично обычному списку доступа только в диапазоне от 100 до 199
протокол -ip,tcp, udp или icmp, к которому применяется правило
источник - адрес источника
исх_порт - Исходящий порт для TCP и UDP
приемник - адрес приемника
цел_порт - порт назначения пакетов для UDP и TCP
дополнительные_аргументы - необязательные аргументы, такие как established (все параметры можно найти в документации, здесь на них мы останавливаться не будем.)
Коментарии в списках доступа (remark)-
access-list 110 remark Блокировать директору все, достал!
acces-list 110 deny ip 10.10.10.5 0.0.0.255 any
Настройка времени в списках доступа (time-range - глобальная команда) -
Рабочее время в будние дни:
time-range block-http
periodic weekdays 8:00 to 17:00
Пример использования:
ip access-list extended list1
deny tcp any any eq www time-range block-http
permit any any
Здесь первое правило блокирует HTTP-трафик в рабочее время и разрешает прочий трафик.
Пример списка доступа -
! Блокировать подделку наших IP-адресов (spoofing)
access-list 110 deny ip 10.10.10.0 0.0.0.255 any
! Разрешить возвращение обратно в сеть любых исходящих ТСР-соединений
access-list 110 permit tcp any any established
! Разрешить передачу электронной почты (порт SMTP 25) на наш SMTP-сервер
access-list 110 permit tcp any host 10.10.10.5 eq smtp
! Разрешить веб-трафик (порт 80) только на наш веб-сервер
access-list 110 permit tcp any host 10.10.10.6 eq www
! Разрешить DNS-трафик на наш DNS-сервер; разрешить TCP и UDP
access-list 110 permit tcp any host 10.10.10.8 eq domain
access-list 110 permit udp any host 10.10.10.8 eq domain
! Разрешить внутренним узлам обращаться
! к внешнему DNS-серверу (192.168.1.100)
access-list ПО permit upd host 192.168.1.100 eq domain any gt 1023
! Разрешить FTP-трафик на наш FTP-сервер
access-list 110 permit tcp any host 10.10.10.6 eq ftp
access-list 110 permit tcp any host 10.10.1.25 eq ftp-data
! Разрешить передачу новостей внутреннему NNTP-клиенту
! только с легитимных NNTP-серверов
access-list 110 permit tcp host 198.168.1.98 host 10.10.10.200 eq nntp
access-list 110 permit tcp host 192.168.1.99 host 10.10.10.200 eq nntp
! Разрешить telnet-соединения (порт 23) только с одним узлом!
access-list 110 permit tcp any host 10.10.10.237 eq telnet
! Некоторые вещи необходимо запретить: Xwindows, NFS
access-list 110 deny tcp any any range 6000 6003
access-list 110 deny tcp any any range 2000 2003
access-list 110 deny tcp any any eq 2049
access-list 110 deny udp any any eq 2049
! Так как мы применяем непассивное FTP-соединение на наших FTP-клиентах,
! следующая строка необходима, чтобы разрешить возвращение этих FTP-сеансов
! обратно в сеть. Если у вас есть FTP-сервер. для него следует создать
! отдельный пункт,
access-list 110 permit tcp any eq ftp-data any gt 1024
! Разрешить ICMP-трафик в нашу сеть
! Внимание! ICMP - это больше, чем просто эхо-запрос. Если вы решите
! запретить его. то следует явно запретить определенные типы ICMP-команд
! (echo, echo-reply и т. п.).
! Механизмы выбора маршрутов для MTU и подавления источника работают
! благодаря протоколу ICMP и очень важны для некоторых соединений.
! Сначала запрещаем перенаправление широковещательных ICMP-рассылок
access-list 110 deny icmp any any redirect
! Затем разрешаем все остальное
access-list 110 permit icmp any any
! Разрешить NTP-сообщения времени на все внутренние машины
access-list 110 permit udp any any eq ntp
! Неявное запрещение
! Оно задано по умолчанию, но мы включаем его сюда, чтобы команда
! show access-list выводила число пакетов, заблокированных
! из-за неявного запрещения.
access-list 110 deny ip any any
Примените этот список к нашему интерфейсу:
interface FastEthernet 0/1
ip access-group 110 in
Настройка snmp
По умолчанию доступ по протоколу SNMP отключен. Чтобы включить его,
необходимо выполнить -
snmp-server community имя режим список_доступа
Ниже перечислены параметры команды:
имя - Строка сообщества (community string),
режим - доступны два режима: R0 — доступ (непривилегированный) только для
чтения и RW — доступ (привилегированный) для чтения и записи.
список_доступа - Имя или номер стандартного списка управления доступом.
snmp-server community not-public R0 1
! Включение привилегированного доступа и применение списка доступа 2
snmp-server community highly-secure RW 2
snmp-server location Servernaya
snmp-server contact admin@my-domain.ru
snmp-server host 10.10.10.2 highly-secure traps
! Списки доступа
access-list 1 permit 10.10.10.0 0.0.0.255
access-list 2 permit 10.10.10.35
Настройка DHCP
! Исключаемые адреса
ip dhcp excluded-address 10.10.10.245 10.10.10.254
ip dhcp excluded-address 10.10.10.1 10.10.10.10
ip dhcp ping packets 4
! Описываем область
ip dhcp pool MY_POOL
import all
network 10.10.10.0 255.255.255.0
domain-name dbschenker.ru
default-router 10.10.10.1
dns-server 10.10.10.2
lease 3
Настройка маршрутизации и NAT
Задаем шлюз по умолчанию (вместо default-gateway) описанном в первой части и статические маршруты-
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 125.12.232.15
ip route 192.168.1.0 255.255.255.0 125.12.232.15
Включаем скоростную передачу от Cisco для IPv4
ip cef
и отключаем для IPv6
no ipv6 cef
Настраиваем NAT
! на Интернет интерфейсе
interface FastEthernet0/0
ip nat outside
! на локальном интерфейсе
interface Vlan1
ip nat inside
! создаем список IP имеющих доступ к NAT
ip access-list extended NAT
permit ip host 10.10.10.10 any
! включаем NAT на внешнем интерфейсе
ip nat inside source list NAT interface FastEthernet0/0 overload