tftp-сервер на Debian

вторник, 24 февраля 2009 г.
Использование atftpd в режиме "inetd"
Установим atftpd (в качестве клиента можно использовать как классический tftp, так и его родной atftp, разницы между ними практически нет, но последний немного удобнее использовать в различных скриптах по причине большего количества аргументов командной строки):
apt-get install atftpd atftp

Сам atftpd может работать как в качестве самостоятельного сервера, так и в качестве одной из подсистем суперсервера inetd (или любого его аналога). По умолчанию он настроен на работу через inetd и для его функционирования в /etc/inetd.conf добавляется строка:
tftp dgram udp4 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /var/lib/tftpboot

Параметров тут перечислено много и информацию по ним лучше всего искать в man-странице atftpd. Основное что нас тут интересует: сервис работает с правами пользователя nobody и считает корнем директорию /var/lib/tftpboot.

Создаём директорию:
mkdir -p /var/lib/tftpboot && chown nobody /var/lib/tftpboot

Создаём тестовый файл:
echo Test File > /var/lib/tftpboot/test && chown nobody /var/lib/tftpboot/test

Пробуем скачать тестовый файл и просмотреть его содержимое:
atftp -g -r test 127.0.0.1 && cat test

Если всё пройдёт нормально то на стандартный вывод будет выдана надпись: "Test File". Если же вместо этого будут какие-то ошибки - нужно начинать искать проблему. Скорее всего она кроется в правах доступа (как и в предыдущем случае).

Использование atftpd в режиме "standalone"
Здесь всё практически так же, как и в предыдущем случае, только нет необходимости запускать суперсервер inetd, поскольку atftpd в этом случае работает как самостоятельный сервер. Если интересен именно такой вариант то нужно сделать следующее: первым делом закоментировать строку запуска atftpd в /etc/inetd.conf:
## tftp dgram udp4 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /var/lib/tftpboot

и перезапустить суперсервер:
invoke-rc.d openbsd-inetd restart

Далее нужно поменять значение переменной USE_INETD в файле /etc/default/atftpd с true на false:
#USE_INETD=true
USE_INETD=false


Дополнительные опции для atftpd при такой настройке перечисляются в переменной OPTIONS всё того же файла. Настройки по умолчанию совпадают с настройками по умолчанию для режима "inetd", соответственно проверка работоспособности сервера проводится так же.

В параметрах можно убрать мультикаст удалив параметры --mcast-port, --mcast-addr, --mcast-ttl и указав --no-multicast 

Apt через proxy

среда, 18 февраля 2009 г.
Создайте файл /etc/apt/apt.conf.d/proxyсо следующим содержанием:
Acquire::http::Proxy "http://host:port";

Если необходимо использование авторизации:
Acquire::http::Proxy "http://login:pass@host:port";'

Использование зеркал:
Acquire
{
  http {
  Proxy "http://host:port/";
  Proxy::mirror "DIRECT";
  Proxy::mirror.example.com "DIRECT";
  }
}


Для FTP proxy соответственно:
Acquire::ftp {
  Proxy "ftp://host:2121/";
  ProxyLogin {
  "USER $(SITE_USER)@$(SITE)";
  "PASS $(SITE_PASS)";
  }
}

John the Ripper

среда, 11 февраля 2009 г.

установка пакета

apt-get install john

Обьединяем информацию файлов /etc/passwd  и /etc/shadow.

unshadow /etc/passwd /etc/shadow > ~/passwords

Запускаем

john ~/password

Получаем результат:

user1:123456:1002:1002:test,,,:/home/test:/bin/bash
user2:qwerty:1003:1003::/home/didi:/usr/bin/rssh

2 passwords cracked, 0 left

IIS ip binding

IIS сервер, по умолчанию, делает 
binding (привязку) ко всем IP адресам которые видны в системе. Даже если 
пройтись по всем установкам IIS и везде принудительно прописать один IP адрес, 
этого будет не достаточно.
Решить эту проблему поможет нам Httpcfg.exe. этот файл можно найти в Support.cab. 
В свою очередь файл Support.cab находится на оригинальном диске Windows Server 
2003 в директории Support\Tools.
Теперь пару слов о том, как работать с Httpcfg.exe. Есть одна маленькая 
особенность. Если у вас на сервере есть больше двух IP адресов и вы хотите, что 
бы ваш IIS слушал сразу по нескольким адресам, то надо будет прописать каждый 
адрес.
Для определения на каком IP будет работать IIS, выходим в командную строку (cmd.exe) 
и запускаем:

httpcfg set iplisten -i xxx.xxx.x.x 

Где xxx.xxx.x.x IP адрес на котором будет работать IIS-6 сервер. Если всё прошло 
нормально, то система выдаст следующий результат:

HttpSetServiceConfiguration completed with 0 

Что-бы проверить результат запускаем:

httpcfg query iplisten 

После выполнения данной процедуры, выполняем следующую команду:

net stop http /y 

и

net start w3svc 

Все, теперь наш IIS работает только на том IP адресе, который мы ему выделили.

Обновления в Debian

среда, 4 февраля 2009 г.
Конфигурация apt

Кроме основного файла sources.list создаём:

vi /etc/apt/sources.list.d/security.list:
deb http://security.debian.org/debian-security/ etch/updates main contrib non-free


vi /etc/apt/sources.list.d/volatile.list:
deb http://volatile.debian.org/debian-volatile/ etch main contrib non-free



Автоматические обновления с помощью cron-apt

устанавливаем пакет:
apt-get -y install cron-apt

создаём файлы конфигурации

vi /etc/cron-apt/action.d/4-security:
upgrade -y -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list


vi /etc/cron-apt/action.d/5-volatile:
upgrade -y -o Dir::Etc::SourceList=/etc/apt/sources.list.d/volatile.list


volatile — это репозитарий, который позволяет обновлять те пакеты из текущей стабильной версии, которые требуют регулярного обновления. Нужен он для того, чтобы не вносить в стабильный репозитарий пакеты, не прошедшие стандартный путь через ветку testing.

Экономим трафик с apt-proxy

apt-proxy — це демон написаний на python, кеширует и сохраняет на локальной машине загруженные пакеты

установка пакета:
apt-get install apt-proxy

на 9999 порту висит демон apt-proxy, готовый раздавать обновления

по умолчанию загруженные пакеты лежат в папке /var/cache/apt-proxy

конфигурационный файл - /etc/apt-proxy/apt-proxy-v2.conf

на машинах, обновляющихся с прокси в файле /etc/apt/sources.list добавляем следующую строку

http://$APT_PROXY_MACHINE:9999/debian

Очистка Debian

Пакет deborphan удаляет всевозможные библиотеки, которые система не использует или которые остались как зависимости от удалённых пакетов.

Установка
apt-get install deborphan

Посмотреть список пакетов, которые утилита считает лишними
deborphan --guess-all

Выбрать из них те, что действительно не нужны и удалить их с помощью команды apt-get remove <имя_пакета>.
После этого повторно вызвать deborphan и посмотреть не появилось ли новых ненужных пакетов. Если появились - в случае действительно "ненужности" - удалить их.

Можно удалить всё одним махом:
apt-get remove `deborphan --guess-all`

Очистка от пакетов .deb которые больше не используются.
sudo apt-get autoclean

Удаляет неудалённые зависимости от уже удалённых пакетов
sudo apt-get autoremove

Man-страницы на других языках можно удалить следующим образом:
cd /usr/share/man
ls ./ | egrep -v ^man | egrep -v ^ru | xargs rm -Rvf

Брутфорс архивов в Linux

вторник, 3 февраля 2009 г.
Устанавливаем необходимые пакеты для работы RarCrack.
  apt-get install libxml2-dev build-essential

Последнюю версию RarCrack загружаем здесь.
  wget http://surfnet.dl.sourceforge.net/sourceforge/rarcrack/rarcrack-0.2.tar.bz2

Распаковываем пакет и готовим его для дальнейшей установке.
  tar -xjf rarcrack-0.2.tar.bz2
  cd rarcrack-0.2
  make
  make install

На этом процесс установки завершён и вы можете приступить к использованию RarCrack. Это будет выглядеть следующим образом:
  rarcrack ваш_архив.rar

Параметр --threads позволяет определить количество потоков перебора (максимум - 12, по умолчанию - 2).

Время работы программы напрямую зависит от длины и сложности пароля.
Параметры работы находятся в xml-файле ваш_архив.rar.xml

Ещё одна программка для взлома архивов fcrackzip.

Устанавливаем программу:
apt-get install fcrackzip

В каталоге с архивом запускаем
fcrackzip file_name.zip --brute-force

cron & crontab

Пример cron-файла
#minute hour mday month wday who command
*/5 * * * * root /usr/bin/who >> /var/log/who.log

Поле Допустимое значение
Минуты (minute) 0-59
Час (hour) 0-23
День месяца (dayofmonth) 1-31
Месяц (month) 1-12 или первые три буквы английского
названия месяца (регистр не учитывается)
День недели (dayofweek) 0-7 (где 0 и 7 это воскресенье) или первые
три буквы английского названия дня в неделе (регистр не учитывается)

Строка Что это значит

@reboot Запускать при начальной загрузке
@yearly Заменяет "0 0 1 1 *" т.е. «ежегодно в 00:00 1 января»
@annually Тоже что и yearly
@monthly Заменяет "0 0 1 * *" т.е. «ежемесячно в 00:00 1 числа»
@weekly Заменяет "0 0 * * 0" т.е. «еженедельно в 00:00 воскресенье»
@daily Заменяет "0 0 * * *" т.е. «ежедневно в 00:00»
@midnight Тоже что и daily
@hourly Заменяет "0 * * * *" т.е. «ежечасно в 00 минут»

crontab - создание пользовательских списков запланированных заданий

crontab -e редактирование пользовательского cron-файла
crontab -l просмотр пользовательского cron-файла
crontab -r удаление пользовательского cron-файла

root может управлять файлами пользователей
crontab -u user {-e | -l | -r }

Отслеживание изменений файлов в Linux

#install package
apt-get -y install tripwire

#generate keys
twadmin --generate-keys --local-keyfile /etc/tripwire/$(HOSTNAME)-local.key
twadmin --generate-keys --site-keyfile /etc/tripwire/site.key

#create config and policy file
twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
twadmin --create-polfile -S /etc/tripwire/site.key /etc/tripwire/twpol.txt

# init database
tripwire --init

#check
tripwire --check --quiet --email-report >/var/log/tripware.log
tripwire --check --quiet --email-report --email-report-level 1 >/var/log/tripware.log

# backup and remove *.txt config file !!!

# edit cron file for email report

vi /etc/cron.d/tripware

>30 3 * * 1-6 root test -x /usr/sbin/tripwire && /usr/sbin/tripwire --check --quiet --email-report --email-report-level 1 >/var/log/tripware.log

>30 3 * * 0 root test -x /usr/sbin/tripwire && /usr/sbin/tripwire --check --quiet --email-report --email-report-level 4 >/var/log/tripware.log

#
rm -f /etc/cron.daily/tripwire

# update policy
tripware --update-policy --secure-mode low /etc/tripwire/twpol.txt

ротация логов Linux

пример файла настроек (etc/logrotate.conf).
"/www/logs/access.log"
{
rotate 10 # кол-во хранимых сжатых фрагментов
size=16M # максимальный размер несжатого файла; пока размер текущего
# файла журнала не превысит данный порог, файл не будет "ротирован"
missingok # отсутствие файла не является ошибкой
nocopytruncate # не сбрасывать файл журнала после копирования
nocreate # не создавать пустой журнал
nodelaycompress # не откладывать сжатие файла на следующий цикл
nomail # не отправлять содержимое удаляемых (старых) журналов по почте
notifempty # не обрабатывать пустые файлы
noolddir # держать все файлы в одном и том же каталоге
compress # сжимать
postrotate
/usr/bin/killall -HUP httpd
endscript # Между postrotate и endscript расположены команды
# интерпретатора sh(1), исполняемые непосредственно после ротации.
# В данном примере сюда помещена команда kill, перезапускающая
# httpd-сервер. Это необходимо для нормальной процедуры
}

"/www/logs/errors.log"
{
rotate 4 # кол-во хранимых сжатых фрагментов
weekly # игнорировать размер файла; производить ротацию регулярно, раз в неделю
missingok
nocopytruncate
nocreate
nodelaycompress
nomail
notifempty
noolddir
compress
postrotate
/usr/bin/killall -HUP httpd
endscript

}

Как можно увидеть из примеров, существует два подхода: обычная
(регулярная) ротация и ротация по достижению предельного размера
файла.

access.log
Для журнала access.log в примере выбран второй подход, по
достижению файлом размера 16 мегабайт. Если утилита
обнаруживает данный факт, ротация происходит. Всего система
хранит 10 архивных фрагментов. Самый старый удаляется.

errors.log
Журнал диагностики errors.log ротируется регулярно, раз в
неделю. Система хранит 4 архивных фрагмента (за месяц), самый
старый удаляется.

Расчет объема файлов

Для оптимальной ротации журналов нужно правильно рассчитать
параметры: какой предел выставить и сколько архивных файлов
хранить. Эта задача решается следующим образом.
Для начала следует принять коэффициент сжатия K = 10 (журналы
сжимаются хорошо). Также нужно определить максимальный объем
пространства, занимаемый журналом S. Примем число фрагментов равным
N = 10. Нужно найти предельный размер (порог) ротации L.
Рассчитаем суммарный объем, занимаемый журналом и частями его
архива:

N * L / K + L = 10 * L / 10 + L = 2 * L = S;
L = S/2

Мы заключили, что суммарный занимаемый объем равен двойному порогу
ротации. Если мы хотим отвести на журнал четверть дисковой квоты Q,
то L = Q/8.
Замечания

1. В устойчивом состоянии общий размер файлов будет колебаться между
величинами L и 2*L. Нижний предел соответствует состоянию после
ротации, верхний - непосредственно перед ротацией.
2. Расчет произведен условно. Предполагается, что ротация происходит
примерно в том же время, что и достижение размера текущего файла
порогового значения.
3. Желательно иметь запас дискового пространства для хранения
временных файлов.

Синхронизация времени в Linux

понедельник, 2 февраля 2009 г.
# setup ntp client
apt-get -y install ntp ntpdate

# setup ntp-server
apt-get -y install ntp-server

# config high ntp server
vi /etc/ntp.conf
>server ntp.server prefer # prefered server
>server ntp1.server
# only my client can connect to server but not change
>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# my ntp-server ignore all computer
>restrict default ignore


#stop server
/etc/init.d/ntp stop

# check server time
ntpdate ntp.server

# set seerver time to local
ntpdate -bs ntp.server

#start server
/etc/init.d/ntp start

# list current ntp server
ntpq -p
ntpdc -p

# set local time to hardware clock
hwclock --systohc