четверг, 29 марта 2012 г.

Blogspot вставка кода


Шаг 1. Изменяем шаблон

Заходим в настройки > "Шаблон" > "Изменить HTML" > "Приступить". Далее добавляем код:

понедельник, 19 марта 2012 г.

Тюнинг SSH

Дом. страница Putty

Запускаем PuTTYgen

Выполняем следующие действия:

Нажимаем кнопку "Generate". После нажатия начинаем хаотично перемещать мышку по столу.
При этом идет генерация ключа. Ход процесса показывает растущая слева направо полоса индикации. После того, как ключ сгенерирован (пропадает индикатор прогресса, а вместо него появляются данные о ключе), жмем кнопку "Save public key", чтобы сохранить файл "публичного" ключа.  Назовем его, например, rsa-pub. Затем нажмем кнопку "Save private key", чтобы сохранить файл  "приватного" ключа. Назовем его, например, rsa-priv.

Порядок сохранения ключей (кого первым, кого последним) — неважен. Важно лишь не забыть, куда мы их сохранили. Ключи эти парные. Приватный ключ хранится на компьютере, с которого осуществляется доступ. А публичный должен быть импортирован на сервер в специальный файл SSH-ключей того пользователя, от имени которого мы будем впоследствии подключаться. Для этого файл  rsa-pub нужно скопировть на сервер и скорректировать чтобы он заработал.  

Оригинальный файл rsa-pub, который был создан puttygen, выглядет так:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20050107"
AAAAB3NzaC1yc2EAAAABJQAAAIEA0vzPSq4tpvZf12OSyd6Q+F+tAEFMSn8kC1eQ
fqIZ9qCX2NNIJkYbtRrwZxLDTw4BR2zEuN+uHXZ4mepIKwtVHIUUiHoYUV8k/hXX
NbO0UMk=
---- END SSH2 PUBLIC KEY ----


Удалите первую, вторую и последнюю строки из него, впереди напишите ssh-rsa затем пробел, далее идет код с убранными символами переноса строки, в конце один пробел. Выглядеть отредактированный файл rsa-pub, будет так:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEA0vzPSq4tpvZf12OSyd6Q+F+tAEFMSn8kC1eQfqIZ9 qCX2NNIJkYbtRrwZxLDTw4BR2zEuN+uHXZ4mepIKwtVHIUUiHoYUV8k/hXXNbO0UMk= 

А затем его нужно импортировать в файл ключей сервера, которй хранится у каждого пользователя в его «домашней» папке в подпапке .ssh и называется authorized_keys. Для этого нужно выполнить команды:

# cd ~
# mkdir .ssh
# chmod 700 .ssh
# cd .ssh

Тут ~/.ssh должен лежать наш rsa-pub

# mv rsa-pub authorized_keys
# chmod 600 authorized_keys


ВНИМАНИЕ!
  1. Команда эта должна выполняться уже в консоли сервера, к которому мы впоследствии будем подключаться по ключу. 
  2. Команда должна выполняться из той самой директории (папки), в которую был скопирован файл rsa-pub. В противном случае в команде нужно будет указать полный путь к файлу ключа.
  3. Команду необходимо выполнять от имени того пользователя, который впоследствии будет осуществлять подключение к серверу.
Теперь сервер готов к авторизации данного пользователя по ключу. Осталось лишь настроить PuTTY на использование этого самого ключа. Для этого в окне настройки в левой колонке выбираем пункт «SSH», а в нем подпункт «Auth». В правой половине открывшегося окна жмем  кнопку «Browse» и указываем месторасположение второго файла ключа - rsa-priv.

Теперь при соединении с сервером PuTTY будет использовать указанный файл ключа вместо пароля. Ну и последнее, что осталось сделать, это указать PuTTY какое имя пользователя подставлять при подключении к серверу. Для этого в окне настройки в левой колонке выбираем пункт «Data«, а в правой половине окна в поле «Auto-login username» вводим имя пользователя.

Выполнив эти два пункта (выбор имени и ключа) не забываем сохранить сессию. Отныне при запуске этой сессии PuTTY будет автоматом подставлять и имя пользователя и ключ (вместо пароля). При этом ничего руками вводить не нужно будет.

Дата последнего входа в систему AD

на Domain Controller
net user имя_пользователя  

На ПК
net user имя_пользователя   /DOMAIN

воскресенье, 18 марта 2012 г.

Как вести лог блокировок в iptables и ipfw


Linux:

- Перед правилом блокировки нужно вставить "log" правило:
   iptables -A FORWARD -p tcp -m tcp -s 192.168.0.0/16 --dport 25 \
      -j LOG --log-level debug --log-prefix "outgoing mail"
   iptables -A FORWARD -p tcp -m tcp -s 192.168.0.0/16 --dport 25 -j DROP

- Проверить запущены ли в системе klogd и syslogd.

- Настроить /etc/syslog.conf на прием kern.debug логов:
   kern.=debug   -/var/log/kernel/info

FreeBSD:
Добавить ключ log в ipfw, например:
   ipfw add 1000 deny log tcp from any to 192.168.10.10 22 via fxp0
   ipfw add 1000 deny log logamount 0 tcp from any to 192.168.10.10 80 via fxp0

Для ведения логов ядро должно быть собрано с IPFIREWALL_VERBOSE или нужно
выставить "sysctl -w net.inet.ip.fw.verbose=1".

Далее проверить чтобы в /etc/syslog.conf было упоминание LOG_SECURITY:
   security.*      /var/log/security

Через параметр logamount передается число записей которые будет записано в лог,
после превышения записи перестанут появляться в логе, до тех пор пока не будет вызвана команда
"ipfw resetlog". Максимальное число сообщений можно также установить
через sysctl net.inet.ip.fw.verbose_limit.
Для отмены лимитирования на число записей, нужно установить атрибут в 0.

Как увеличить размер таблицы контроля сессий ip_conntrack в Linux


Если ядро ругается "kernel: ip_conntrack: table full, dropping packet.", причину флуда
(скорее всего вирус или сканирование портов) можно найти по списку /proc/net/ip_conntrack
Если просто общая загрузка большая, увеличить размер таблицы можно через /proc/sys/net/ipv4/ip_conntrack_max

Также можно увеличить размерность хэша через параметр  hashsize модуля ip_conntrack:
/etc/modules.conf:
   options ip_conntrack hashsize=N

Более тонкий тюнинг можно произвести через переменные определенные в /proc/sys/net/ipv4/netfilter

Скрипт для блокировки в iptables целых стран


Скрипт для организации блокировки диапазонов IP адресов в привязке к названию страны.
Например, можно использовать для блокирования всех непрофильных сайту стран в моменты DDoS атаки или запретить приход почты для стран с которыми явно не ведется переписка.

Список привязки IP к странам загружается с сайта http://www.ipdeny.com/ipblocks/data/countries

   #!/bin/bash
   ### Block all traffic from AFGHANISTAN (af) and CHINA (CN). Use ISO code ###
   ISO="af cn"

   ### Set PATH ###
   IPT=/sbin/iptables
   WGET=/usr/bin/wget
   EGREP=/bin/egrep

   ### No editing below ###
   SPAMLIST="countrydrop"
   ZONEROOT="/root/iptables"
   DLROOT="http://www.ipdeny.com/ipblocks/data/countries"

   cleanOldRules(){
   $IPT -F
   $IPT -X
   $IPT -t nat -F
   $IPT -t nat -X
   $IPT -t mangle -F
   $IPT -t mangle -X
   $IPT -P INPUT ACCEPT
   $IPT -P OUTPUT ACCEPT
   $IPT -P FORWARD ACCEPT
   }

   # create a dir
   [ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT

   # clean old rules
   cleanOldRules

   # create a new iptables list
   $IPT -N $SPAMLIST

   for c  in $ISO
   do
# local zone file
tDB=$ZONEROOT/$c.zone

# get fresh zone file
$WGET -O $tDB $DLROOT/$c.zone

# country specific log message
SPAMDROPMSG="$c Country Drop"

# get
BADIPS=$(egrep -v "^#|^$" $tDB)
for ipblock in $BADIPS
do
  $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
  $IPT -A $SPAMLIST -s $ipblock -j DROP
done
   done

   # Drop everything
   $IPT -I INPUT -j $SPAMLIST
   $IPT -I OUTPUT -j $SPAMLIST
   $IPT -I FORWARD -j $SPAMLIST

   # call your other iptable script
   # /path/to/other/iptables.sh

   exit 0


Вместо последовательного добавления правил, для увеличения производительности,
рекомендуется использовать систему ipset (http://ipset.netfilter.org/) или
nfqueue (http://nfqueue.sf.net/)


Использовать можно примерно так:

    #!/bin/sh
    iptables -F INPUT

    ipset -N spam ipmap

    cat block_country_net_list.txt | while read net; do
       ipset -A spam --network $net
    done

    iptables -A INPUT -m set --set spam src -j REJECT


Другой эффективный вариант - использовать iptables модуль geoip (http://people.netfilter.org/peejix/geoip/),
который не входит в базовую поставку iptables и требует установки patch-o-matic и
загрузки дополнительной базы привязки к странам, например с http://www.maxmind.com/

Например, блокировка ICMP запросов из Франции, Италии и Испании будет выглядеть так:

   iptables -A OUTPUT -p icmp -m geoip --dst-cc FR,IT,ES -j REJECT

Ограничение возможностей ssh туннеля при помощи iptables

Использование туннелей на основе ssh сейчас широко распространено. И многие используют его как 
универсальное решение для организации туннелей внутрь локальной сети для
доступа к различным сервисам.
И в связи с этим очень часто возникает вопрос "А как ограничить возможности такого туннеля".

Например: 
есть компания, которая обслуживает ваш web сервер. Для выполнения этой работы требуется доступ 
к серверу web-server.dmz по портам 80 и 443.

Решение: 
на сервере ssh, через который создаётся туннель, выполняем: 

1) добавляем пользователя aaa

2) устанавливаем ему шелл /bin/false (или другой, только так чтобы он не мог залогиниться)

3) Добавляем правила iptables:

   iptables -A OUTPUT -d web-server.dmz -p tcp -m tcp --dport 80 -m owner --uid-owner aaa -j ACCEPT
   iptables -A OUTPUT -d web-server.dmz -p tcp -m tcp --dport 443 -m owner --uid-owner aaa -j ACCEPT
   iptables -A OUTPUT -m owner --uid-owner aaa -j REJECT