понедельник, 26 января 2009 г.

ftpd



Установка стандартного встроеного фтп

ftpd_enable="YES"
ftpd_flags=" " прописываем в rc.conf
-----возможные флаги------
-D:запускать ftpd в режиме демона.
-a <адрес>: в режиме демона принимать соединения только на указанный IP-адрес.
-d:включить режим отладки (подробная информация о работе будет выдаваться серверу syslog как LOG_FTP).
-h: не выводить информацию о системе в сообщениях сервера.
-l: протоколировать все сессии (обычно используется/var/log/xferlog).
-A: разрешить только анонимный доступ.
-M: запретить анонимным пользователям создавать папки.
-m: разрешить анонимным пользователям модифицировать существующие файлы (если для этого достаточно системных прав).
-o, -O: разрешить только запись на сервер всем пользователям (-o) или только анонимному пользователю (-O). В частности, таким образом можно организовать сбор с удаленных серверов файлов резервных копий, чтение которых пользователями не предусмотрено.
-r: перевести сервер в режим «только для чтения». Любая модификация размещенных данных будет запрещена.


если просто перегрузицца и все оставить так у нас получиться анонимный фтп с розшареными папками в /usr/ftp (etc incoming i pub)

Чтобы обеспечить анонимный доступ к системе, следует создать пользователя ftp. В man 8 ftpd есть подробные инструкции, как настроить этого пользователя, чтобы обеспечить максимальную безопасность.

....

суббота, 24 января 2009 г.

SAMS

Возможности системы:

* Администрирование системы через web интерфейс
* Ограничение объема трафика пользователей на месяц
* Автоматическое отключение пользователей, превысивших лимит
* Блокировка доступа пользователей к запрещенным ресурсам интернет
* Настройка доступа пользователей через механизм шаблонов
* Разбиение пользователей на группы для удобства администрирования системы
* Ведение статистики посещенных пользователями ресурсов интернет
* Формирование отчетов по трафику пользователей за любой отрезок времени
* Поддержка видов авторизации SQUID: ntlm, ncsa, ip
* Поддержка использования редиректоров SQUID: rejik, squidGuard
* Ограничение скорости закачки для групп пользователей
* Посылку сообщений администратору при отключении пользователей при превышении трафика
* Для хранения данных используется СУБД MySQL

четверг, 22 января 2009 г.

Одной строкой

********************************************************************
dmesg | grep -w CPU #Узнать тип процессора под FreeBSD

********************************************************************
touch # Создает пустой файл. Если файл существует, то тогда комманда touch меняет дату модификации файла.

********************************************************************
mount -t msdos -o -L=ru_RU.KOI8-R /dev/da0s1 /mnt/flashПодключение флешки на FreeBSD с поддержкой русских символов

********************************************************************
Как перечитать содержимое /etc/rc.conf и перестартовать /etc/rc без перезагрузки системы
#shutdown now выход в однопользовательский режим
#return
#exit


********************************************************************
#/etc/rc.d/netif restart # Как обновить IP адресс без перезагрузки?

********************************************************************
#/etc/rc.d/routing restart # Как обновить defaultrouter без перезагрузки?

********************************************************************
tcpdump -ni em0 - покажет пакеты проходящее через интерфейс

********************************************************************
Команды для исправления ошибок на диске (система перестала грузиться).
Загрузится в single user mode.
mount -a (смонтировать все для записи, при необходимости использовать ключи -u -f -w)
fsck -y
fsck_ffs /dev/ad1s1a

********************************************************************
telnetd, rlogind и ftpd Эти сервисы по умолчанию не не шифруют трафик

********************************************************************
find / -name file_name ищет имя файла или директории начиная с корня
find / -user user_name ищет все файлы и папки созданые пользователем
find /usr/local/ -make "*.bin" поиск файлов в директории с розширением bin
find / -type f -atime +30 # поиск всех файлов что не использовались месяц
which # поиск бинарных файлов
whereis # быстрый поиск папок и бинарных файлов портов
********************************************************************
id user #как узнать есть ли такой пользователь в системе в какой он групе и его id


alias # Выводит список алиасов
ee /.cshrc добавить свой алиас типа mm вместо mcedit


PS
ps axw | grep mysql

где

a-
x-
w-


Узнать тип процессора под FreeBSD можно так:
#grep -w CPU: /var/run/dmesg.boot
CPU: Intel Pentium III (1007.80-MHz 686-class CPU)
===========
http://www.3carata.com.ua/ring/338/



**************************************
Как узнать сколько места занимает директория или папка во FreeBSD

# du -hsx /var
вывод команды примерно такой:
790M /var
****************************************

Иногда бывают случаи когда надо срочно посмотреть открыты ли порты на фрюхе или нет. И для того что бы посмотреть открытые порты на FreeBSD нам в этом помогут команды sockstat и netstat

sockstat -4 -l

-4 отображаются только IPv4 сокеты.

-6 отображаются только IPv6 сокеты.

-c отображаются только подключенные сокеты.

-l отображаются только listening сокеты (открытый порт).

$ netstat -nat | grep LISTEN


*******************************************************

Как изменить время

#ntpdate - имя_сервера_времени синхронизация по инет
#ntpdate pool.ntp.org - синхронизация по инет (пул адресов)

#date yymmddhhss - если нет инета
yy - год.последние 2 цифры
mm - месяц
dd - день
hh - час
ss - минуты
!!!после перезагрузки изменения внесенные слетят!!!
делаем
cp /usr/share/zoneinfo/YorRegion /etc/localtime
или
sysinstall (configure>time zone)

воскресенье, 18 января 2009 г.

DHCPd

cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf
Редактируем dhcpd.conf.

option domain-name-servers 192.168.0.112;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.20;
option routers 192.168.10.1;
}

Собственно сама сеть, и диапазон айпи, которые выдавать, роутер по умолчанию, DNS.

Включаем в rc.conf
dhcpd_enable="YES"
dhcpd_ifaces=”rl0″ # в какой сети слушает и раздает адреса наш сервер
--------------------------------------------------------------------------------

Squid



squid -k parse - проверка синтаксиса конфига
squid -k reconfigure - перечитать конфиг
/usr/local/etc/rc.d/squid start запускаем сквид

squid.conf если ставили из портов лежит /usr/local/etc/squid/ Там же лежит squid.conf.default - в нем можно почитать как правильно писать правила.


Самое элементарное, что нам после установки следует сделать, так это разрешить доступ пользователям нашей локальной сети. Для этого служат параметры http_port, http_access. Кроме этого, мы заведем acl (список контроля доступа) для нашей локальной сети.
http_port нам нужен постольку, поскольку наш прокси сервер Squid должен обслуживать только компьютеры нашей локальной сети и быть невидимым для внешнего мира, дабы исключить возможность “плохим людям” внешней сети воспользоваться нашим каналом или трафиком, а в случае, если будут обнаружены “дыры” в коде прокси сервера
Squid, воспользоваться ими.

http_access используется для разрешения или запрещения доступа к определенным ресурсам, определенным адресам либо с определенных адресов, к определенным сайтам, по определенным протоколам, портам и всему тому, что непосредственно указано с помощью Acl (списков контроля доступа).




ВНИМАНИЕ!! Никогда не ставьте стандартные порты вроде 8080 80 или 3128 если не хотите чтобы ваш прокси легко можно было обнаружить)
http_port 1234

(ICP)Internet Cache Protocol для открытия возможности использования кешей соседних squid прокси


Прописывать свои списки доступа (acl) и разрешения/запреты доступа (http_access) нужно между строками
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
и
And finally deny all other access to this proxy
http_access deny all

Порядок задания acl несущественен, а вот порядок следования инструкций http_access крайне важен, т.к. инструкции просматриваются от начала файла к концу, и любая сработавшая инструкция прекращает дальнейший просмотр. Если есть правило с исключениями, надо сначала задать исключения из правила, а потом само правило


If you are trying to use transparent options for squid version above 2.6, and you get the following errors:

# /usr/local/etc/rc.d/squid start
# Starting squid.
# 2007/04/10 17:53:42| parseConfigFile: line 47 unrecognized: 'httpd_accel_host virtual'
# 2007/04/10 17:53:42| parseConfigFile: line 48 unrecognized: 'httpd_accel_port 80'
# 2007/04/10 17:53:42| parseConfigFile: line 49 unrecognized: 'httpd_accel_with_proxy on'
# 2007/04/10 17:53:42| parseConfigFile: line 50 unrecognized: 'httpd_accel_uses_host_header on'


Instead of these lines just use the following:

# http_port 86.12.1.1:8080 transparent




Прозрачный squid
http_port 192.168.1.1:3129 (можна без IP просто порт)
http_port 3128 transparent
icp_port 0
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 128 MB

maximum_object_size 80000 KB
ipcache_size 1024
ipcache_low 90
ipcache_high 95
cache_dir diskd /mnt/squid 28000 32 512 Q1=72 Q2=64

log_fqdn off
logfile_rotate 10

dns_nameservers 10.0.0.1

auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

#next, remove
acl localnet src 10.0.0.0/255.255.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 210 1025-65535 280 488 591 777
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0

http_access deny !Safe_ports

http_access allow localnet
http_reply_access allow all
visible_hostname localhost


Поддержка видов авторизации SQUID
NTLM авторизация в домене Windows. WEB интерфейс позволяет импортировать пользователей из домена Windows
NCSA авторизация. WEB интерфейс позволяет импортировать пользователей из файла, созданного htpasswd
доступ по ip адресу

Приглашение Promt



Мой promt
"%n@ %c #"



Ee /.cshrc

правим строку set prompt=
синтаксис
%m - имя компьютера
%M - Полное имя машины
%# - символ
%n - текущий пользователь
%/ - полное имя директории (весь путь)
%c - в какой папке сейчас (короткий путь)
%T - время
%~ Текущая рабочая директория, но домашная директория текущего пользователя представлено тильдой ~ и домашние директории остальных пользователей представлены как ~user. Подстановка ~user действует только в случае если оболочка (shell) уже использует ~user в имени пути в текущей сессии
%c[[0]n],%.[[0]n] Отслеживает конечный компонент пути к текущей рабочей директории или n конечных компонентов, при заданном n. Если n начинается с 0 количество пропущенных компонентов предваряет конечные в формате /trailing. Если установлена переменная оболочки ellipsis, пропущенные компоненты будут представлены как ...trailing. Подстановка ~ действует аналогично
%~, но будет игнорироваться при количестве конечных компонентов больше одного
%C Аналогично %c, но без подстановок ~
%h, %!, ! Номер события в текущей истории
%S (%s) Включить (отключить) стандартный режим
%B (%b) Включить (отключить) режим жирного шрифта
%U (%u) Включить (отключить) режим подчеркивания
%t, %@ Время в 12-часовом (AM/PM) формате
%T Аналогично %t, но в 24-часовом формате (зависит от переменной ampm оболочки)
%p Точное время суток в 12-часовом (AM/PM) формате, с секундами
%P Аналогично %p, но в 24-часовом формате (зависит от переменной ampm оболочки)
\c c будет распознан как код символа
%% Символ %
%n Имя пользователя
%j Количество запущенных в оболочке работ (jobs)
%d День недели в текстовом формате
%D День недели в числовом формате
%w Месяц в текстовом формате
%W Месяц в числовом формате
%y Год в двухзначном формате
%Y Год в четырехзначном формате
%l tty оболочки
%L Очищает от конца приглашения до конца экрана или строки
%$ Подставляет значение переменной оболочки или окружения с именем, заданным сразу после $ (например %$PATH)
%{string%} Включает строку как управляющая escape последовательность. Может использоваться для изменения атрибутов терминала (например для раскраски приглашения) и может не воздействовать на положение курсора. Не может быть последней последовательностью в приглашении
%? Возвращает код ошибки команды, запущенной непосредственно перед приглашением

также можна менять цвет
Цифирками, в строке set prompt = '%{^[[40;32;1m%}%$cwd/>' можно поиграться - они задают цвет самого приглашения, и цвет фона


понедельник, 12 января 2009 г.

Как сменить МАС адрес



1. Создаем файл /etc/start_if.if0, где if0 - имя вашего сетевого интерфейса.

# cat > /etc/start_if.if0
/sbin/ifconfig if0 ether хх:хх:хх:xх:хх:xx
# chmod +x /etc/start_if.if0


2. Перезагружаем машину.

Больше никаких дополнительных действий не требуется. Скрипт будет найден и исполнен без вашего участия.


Для смены mac адреса есть два способа статичный и динамичный. Отличие одного от другого только в том, что статичный останется у Вас и после перезагрузки сервера, а динамичный сразу смениться на реальный mac адрес Вашей сетевой карты. Какой нужен Вам решайте сами.

Динамическая смена mac адреса на FreeBSD:

  1. Заходим в консоль и вводим след команды
  2. ifconfig rl0 down -этой командой отключаем интерфейс rl0:
  3. ifconfig rl0 link ether 00:00:00:00:00:01 – этой командой мы изменяем mac адрес rl0
  4. ifconfig xl0 up -это командой мы включаем интерфейс rl0

PS прошу сразу обратить внимание что смена mac адреса должна быть не заглавными буквами (т.е. прописывайте мак адрес сетевой карты маленькими буквами!!!)

Статическая смена mac адреса на FreeBSD:

Как уже говорил ниже при статической смене мак адреса сетевой карты она у Вас не изменится и после перезагрузке вашего сервера, для этого сделайте след:

  1. Откройте Ваш файл rc.conf и там где у Вас прописан интерфейс сетевой карты
  2. ifconfig_rl0=»inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx»

  3. Допишите в конец строки след:
  4. ifconfig_rl0=»inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx ether 00:00:00:00:00:01″

PS тут тоже будьте аккуратней потому как прописывать MAC адрес надо только маленькими буквами, если пропишите большими то при след перезагрузке сервера у Вас вылетит ошибка в месте где идет загрузка файла rc.conf и он будет ругаться и выдаст такую ошибку : etc/rc.conf : 32: Syntax error: Unterminated quoted string Enter full pathname of shell or RETURN for /bin/sh:











воскресенье, 11 января 2009 г.

Настройка роутера



Для начала, можно просто включить NAT, указать что наш сервер является роутером, прописать DNS-ы провайдера и на всех остальных компьютерах, которым необходим выход в интернет - прописать IP адрес сервера в качестве основного шлюза. И все, интернет уже работает.
...
Пока нам нужно знать только название сетевой карты (eth0, dc0, rl0 и т.д.)
Там могут быть и другие устройства например:
plip0 - это параллельный порт.
lo0 - это интерфейс для работы с localhost адрес 127.0.0.1
tun0 - это тунельный интерфейс ppp

#ee /etc/rc.conf

ifconfig_eth0="inet 222.11.222.12 netmask 255.255.255.0" #Установка IP для внешнего интерфейсаifconfig_rl0="inet 192.168.1.1 netmask 255.255.255.0" #Установка IP для внутренего интерфейсаhostname="gw.example.com" #Указал имя серверуdefaultrouter="222.11.222.1" #Указал Основной шлюз. Это IP адресс провайдера.gateway_enable="YES" #Эта машина будет работать в качестве шлюзаnatd_enable="YES" #Включил NATnatd_interface="eth0" #Повесил его (NAT) на внешний интерфейс, смотрящий на провайдераsshd_enable="YES" #Включил SSH демон, чтобы можно было управлять сервером, лежа на берегу моря :)sendmail_enable="NONE" #Запрещаю запуск почтаря Sendmail, он пока не нуженТеперь нужно прописать DNS-ы провайдера. Конфигурационный файл находится здесь /etc/resolv.conf.
#ee /etc/resolv.conf

nameserver 172.27.137.10
nameserver 172.27.137.20

перезапускаем систему: #shutdown -r now или #reboot

Теперь компьютеры в сети, должны получить выход в интернет.

BIND



Запуск Bind-a и проверка зон на работоспособность.
named-checkconf #это для проверки named.conf на ошибки
named-checkzone test.com /etc/namedb/master/test.com #это проверяет файл зоны на ошибки
/etc/rc.d/named start #(или forcestart, а также stop, restart)
named.reload # Обновить базу данных bind-a т.е. чтобы перечитал свои файлы можно коммандой:
( если вы сделали изменения в файлах зон и забыли изменить serial то после этой комманды bind вам напомнит об этом)


Посмотреть bind в процессах
# top | grep named
И послушать висит ли Bind на 53 порту:
# sockstat -l4 -p 53
***********************************************************************************

Команда # sh make-localhost не нужна.(как написано в хендбуке)
Руководство немножко устарело у вас уже есть localhost-forward.db и localhost-reverse.db в /etc/namedb/master/


named.conf
Директива options определяет каталог, в котором хранятся файлы описания зон, директива zone определяет зоны, которые поддерживает сервер.
Зона "." сервером не поддерживается. Это корневая зона. Поэтому она имеет тип hint, т.е. "подсказка" на то, где описаны серверы корневой зоны.
Зона "0.0.127.in-addr.arpa" имеет тип master, т.к. данный сервер действительно является мастером для этой зоны.
Значение version "8.2.4"; добавляется для того, чтоб злоумышленник не мог определить точную версию нашего ДНС сервер.
Значение recursion no делает запрет на рекурсию.
Значение listen-on говорит на каких ИП отрабатывать запросы.


************************************************************************************
Проверяем:

/etc/namedb/>rndc reload
server reload successful
/etc/namedb/>rndc status
number of zones: 2
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running
/etc/namedb/>sockstat | grep named
bind named 14438 3 dgram -> /var/run/logpriv
bind named 14438 20 udp4 213.125.15.4:53 *:*
bind named 14438 21 tcp4 213.125.15.4:53 *:*
bind named 14438 22 udp4 127.0.0.1:53 *:*
bind named 14438 23 tcp4 127.0.0.1:53 *:*
bind named 14438 24 udp4 *:63739 *:*
bind named 14438 25 udp6 *:63740 *:*
bind named 14438 26 tcp4 127.0.0.1:953 *:*

Утилита rnc нам необходима для работы в сервером ДНС: перезагрузка, статус, ошибки и т.д. rnc утилита - для 8 версии и ниже в 9той - rndc!


named.conf
options { #назначает переменные
directory "/etc/namedb"; # Указываем где находится рабочая директория
pid-file "/var/run/named/pid"; # Где находится пид файл
dump-file "/var/dump/named_dump.db"; #Где находится дамп
statistics-file "/var/stats/named.stats"; # Проверить состояние бинда можно здесь
allow-transfer { 195.24.128.164; 193.218.105.146; };
allow-query { any; };
recursion no;
notify yes;
version "hi";
};

Как мы видим файл состоит из блоков/секций. Блоки:
options
listen-on #IP-адреса интерфейсов сервера на котором будет запущена служба named

allow-recursion #список IP-адресов и/или подсетей которым разрешена рекурсия. По умолчанию DNS сервер обслуживает запросы любых клиентов для любых доменов, но если вы не хотите, чтобы кто то использовал Ваш DNS сервер (бережете трафик или ресурсы машины) необходимо использовать эту директиву, которая “скажет” DNS серверу о том, что для IP-адресов которых нет в списке allow-recursion отвечать только на запросы касаемые зон которые прописаны на данном DNS сервере.

acl #секция позволяющая создать access control list из IP-адресов, дабы потом не перечеслять их каждый раз в других секциях. acl “trusted-dns” в данном случае описывает IP-адреса доверительных DNS серверов которым позволено скачивать зоны полностью с нашего DNS сервера, т.к. по умолчанию скачать копию вашей зоны с вашего master DNS сервера сможет любой желающий указав с своем конфиге IP-адрес вашего master DNS сервера как первичного для вашей зоны. Если вы собираетесь вводить ограничения не скачивание файла зоны, то не забудьте в acl указать IP-адрес(а) вторичного(ных) DNS сервера(ов).

logging #

zone #собственно секция отвечающая за поддержку нашего тестового домена mydomain.ru данный сервер является мастером (master) для данной зоны. Внутри секции zone идет “ссылка” на “trusted-dns”, это, как вы должны помнить, acl смысл которого описан чуть выше. Секция zone обязательно должна описывать: тип (type) зоны (master или slave), путь до файла (file) зоны. В случаее если это тип slave доавляется обязательный параметр masters:

masters { IP-ADDRESS; };

где IP-ADDRESS это адрес первичного DNS сервера для данной зоны.


Конфигурим зоны
zone "." {
type hint;
file "named.root";
};

zone "localhost." {
type master;
file "master/localhost";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "master/localhost.rev";
};

zone "test.com" {
type master;
file "master/test.com";
};

zone "122.21.211.in-addr.arpa" {
type master;
file "master/test.com.rev";
};


Зоны

Символ @ при анализе файла заменяется named на то, что указано в кавычках после слова "zone" в named.conf - в нашем случае это myhost.ru. Кстати, именно поэтому в E-mail адресе, который указан на следующей строке, нужно применять точку вместо @.


http://www.intodns.com


файл зоны обратного просмотра 0.17.172.in-addr.arpa
$TTL 3600
@_____IN_____SOA_____ns.kiev.ua hostmaster.kiev.ua. (
_____________________2003042103
_____________________3600
_____________________1800
_____________________604800
_____________________3600 )

_____________IN______NS_____ns.kiev.ua.
_____________IN______NS_____ns2.kiev.ua.
1_____IN_____PTR_____boss.kiev.ua.
2_____IN_____PTR_____fr.kiev.ua.

файл зоны прямого просмотра
$TTL 3600
@_____IN_____SOA_____ns.kiev.ua hostmaster.kiev.ua. (
_____________________2003042103
_____________________3600
_____________________1800
_____________________604800
_____________________3600 )

_____________________IN______NS_____ns.kiev.ua.
_____________________IN______MX_____10_____mail.kiev.ua.
boss_________________IN______A______172.17.0.1
fr___________________IN______A______172.17.0.2




ВАЖНО: после каждого изменения строка Serial должна увеличиваться на 1 цифру в конце, иначе secondary NS не обновит у себя файл зоны домена. Подробно описывать файл не буду.
Перезапускаем named:   # service named restart


dig postfix-book.com MX
dig postfix-book.com A
dig -x 100.100.100.100

днс трафик бегает по udp
tcp - нада если будет трансфер зон