<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mysyslog.ru &#187; security</title>
	<atom:link href="http://mysyslog.ru/posts/tag/security/feed" rel="self" type="application/rss+xml" />
	<link>http://mysyslog.ru</link>
	<description>Всякая IT всячина</description>
	<lastBuildDate>Thu, 08 Sep 2011 09:29:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>mysql_secure_installation cвоими руками во FreeBSD</title>
		<link>http://mysyslog.ru/posts/524</link>
		<comments>http://mysyslog.ru/posts/524#comments</comments>
		<pubDate>Tue, 29 Jun 2010 13:25:40 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=524</guid>
		<description><![CDATA[В большинстве пакетов mysql-server под Linux входи хороший скрипт mysql_secure_installation, которого очень не хватает в порте mysql во FreeBSD. Сделаем все своими руками!

Ставим mysql из портов

cd /usr/ports/databases/mysql51-server/
make install clean
mysql_install_db
chown –R mysql:mysql /var/db/mysql
echo mysql_enable=YES &#62;&#62; /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start

Дальше запускаем консоль командой mysql

UPDATE mysql.user SET Password=PASSWORD('NEWROOTPASSWORD') WHERE User='root';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
DROP [...]]]></description>
			<content:encoded><![CDATA[<p>В большинстве пакетов mysql-server под Linux входи хороший скрипт mysql_secure_installation, которого очень не хватает в порте mysql во FreeBSD. Сделаем все своими руками!<br />
<span id="more-524"></span><br />
Ставим mysql из портов</p>
<pre class="brush: plain;">
cd /usr/ports/databases/mysql51-server/
make install clean
mysql_install_db
chown –R mysql:mysql /var/db/mysql
echo mysql_enable=YES &gt;&gt; /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start
</pre>
<p>Дальше запускаем консоль командой mysql</p>
<pre class="brush: sql;">
UPDATE mysql.user SET Password=PASSWORD('NEWROOTPASSWORD') WHERE User='root';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
DROP DATABASE test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
exit
</pre>
<p>Что мы сделали? В порядке выполнения команд получается так:</p>
<li>Установили новый пароль root &#8211; NEWROOTPASSWORD</li>
<li>Удалили анонимных пользователей</li>
<li>Запретили удаленное подключение root</li>
<li>Физически удалили базу test</li>
<li>Удалили все записи о ней в служебной базе mysql</li>
<li>Перечитали служебные данные о правах пользователей</li>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/524/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mtree на страже вашей FreeBSD</title>
		<link>http://mysyslog.ru/posts/313</link>
		<comments>http://mysyslog.ru/posts/313#comments</comments>
		<pubDate>Wed, 31 Mar 2010 14:46:38 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=313</guid>
		<description><![CDATA[К сожалению в любом программном обеспечение есть уязвимости и дыры, который могут использовать хакеры в свои целях. С момента выхода обновления или security патча до момента исправления в вашей ОС может пройти какое-то время, т.е. это потенциальная возможность получить управление ваши серверов для злоумышленника, который может оставить закладки для будущего использования даже после того, как [...]]]></description>
			<content:encoded><![CDATA[<p>К сожалению в любом программном обеспечение есть уязвимости и дыры, который могут использовать хакеры в свои целях. С момента выхода обновления или security патча до момента исправления в вашей ОС может пройти какое-то время, т.е. это потенциальная возможность получить управление ваши серверов для злоумышленника, который может оставить закладки для будущего использования даже после того, как вы все исправите. Например он может заменить файл su или sudo, даже ps вместе ls могут стать смертельно опасными! Для защиты нужно отслеживать состояние системных файлов (владельцы, права, размер, хеши и т.п.)!<br />
Tripwire &#8211; достаточно сложный и тяжелый продукт, конечно можно поставить из портов, но в FreeBSD уже есть утилита, которая прекрасно справится с поставленной задачей.<span id="more-313"></span></p>
<p>mtree создает список файлов и их свойств в заданном каталоге. Полученный список может использоваться в дальнейшем для сравнения при помощи mtree текущего состояния файлов с моментом, когда создавался список. Если при сравнении будут найдены несоответствия mtree выведет на консоль информацию о них.</p>
<p>Нужно понимать, что файл со списком должен быть надежно защищен. Если злоумышленник найдет этот файл, то он сможет его изменить и он станет совершенно бесполезен. Для защиты лучше всего файл зашифровать и перенести с сервера на другую машину или еще лучше флешку.</p>
<p>Перейдем непосредственно к созданию списка:</p>
<pre class="brush: plain;">
cd /sbin
mtree -c -K uid,gid,mode,flags,size,cksum,md5digest,sha1digest,ripemd160digest &gt; /root/sbin-mtree
</pre>
<p>Теперь файл /root/sbin-mtree можно использовать для проверки.</p>
<pre class="brush: plain;">
cd /sbin
touch test
mtree &lt; /root/sbin-mtree
. changed
        modification time expected Wed Feb 17 14:19:16 2010 found Wed Mar 31 17:11:12 2010
test extra
</pre>
<p>Как видите, все достаточно просто. Поговорим немного об автоматизации и процессе использования mtree. Написать скрипт проверки не составляет проблемы, выглядеть он будет примерно так:</p>
<pre class="brush: bash;">
#!/bin/sh
MTREE_FILES_DIR='/mnt/security'
DIR_LIST='bin sbin etc root usr-bin usr-sbin usr-local-sbin usr-local-bin usr-local-etc boot'

for dir in $DIR_LIST; do
 realdir=&quot;/`/bin/echo $dir|/usr/bin/sed 's/-/\//g'`&quot;
 cd $realdir
 mtree_result=`/usr/sbin/mtree 2&gt;/dev/null &lt; $MTREE_FILES_DIR/${dir}-mtree
 if [ &quot;x$?&quot; != &quot;x0&quot; ]; then
   echo $mtree_result | mail admin@mail.domain
 fi
done
</pre>
<p>Здесь есть важный момент /mnt/security должен монтироваться в read-only по NFS например, так чтобы злоумышленник не мог поменять содержимое файлов.</p>
<p>Для FreeBSD я составил такой список каталогов, конечно же на рабоче системе будут и другие каталоги:<br />
/bin<br />
/sbin<br />
/etc<br />
/root<br />
/usr/bin<br />
/usr/sbin<br />
/usr/local/sbin<br />
/usr/local/bin<br />
/usr/local/etc<br />
/boot</p>
<p>Естественно безопасность добавляет проблем при работе, в данном случае придется при каждом обновлении системы или софта обновлять списки mtree. Но кто сказал, что будет легко?</p>
<p>П.С.<br />
Для написания заметки использовалась глава <strong>&#8220;Use mtree as a Built-in Tripwire&#8221;</strong> из книги <strong>&#8220;BSD hacks&#8221;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/313/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bruteforce на SSH по странам</title>
		<link>http://mysyslog.ru/posts/269</link>
		<comments>http://mysyslog.ru/posts/269#comments</comments>
		<pubDate>Mon, 02 Nov 2009 10:14:33 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=269</guid>
		<description><![CDATA[Что сеть полна ботов, пытающихся сделать что-то нехорошее, уже давно не новость. И увидеть в логах попытки отправить письмо через ваш SMTP, попытки пройти аутентификацию у вас на сайте или попытки подобрать пароль от FTP/SSH &#8211; обычное дело. Ради интереса решил натравить geoip на логи неудачных попыток входа по ssh.
Смотрите что получилось:

Вот такой конструкции пропарсил [...]]]></description>
			<content:encoded><![CDATA[<p>Что сеть полна ботов, пытающихся сделать что-то нехорошее, уже давно не новость. И увидеть в логах попытки отправить письмо через ваш SMTP, попытки пройти аутентификацию у вас на сайте или попытки подобрать пароль от FTP/SSH &#8211; обычное дело. Ради интереса решил натравить geoip на логи неудачных попыток входа по ssh.<br />
Смотрите что получилось:<br />
<span id="more-269"></span><br />
Вот такой конструкции пропарсил лог и получил список числа попыток войти/страны откуда эта попытка была произведена</p>
<pre class="brush: bash; light: true;">
for i in  `gzcat /var/log/messages.*| fgrep ssh | fgrep 'authentication error for illegal'|awk '{print $15}'`;do
geoiplookup $i;
done| cut -d',' -f2|sort|uniq -c|sort -n|tail -n10
</pre>
<p>Получился любопытный график<br />
<img src="http://mysyslog.ru/i/bruteforce.png" alt="ssh bruteforce by countries" /></p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/269/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ipset значительно облегчает жизнь iptables</title>
		<link>http://mysyslog.ru/posts/244</link>
		<comments>http://mysyslog.ru/posts/244#comments</comments>
		<pubDate>Thu, 08 Oct 2009 08:57:18 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[ipset]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=244</guid>
		<description><![CDATA[В iptables мне очень не хватало таблиц PF!
block in quick on $if inet proto tcp from  to $me port 80
Как красиво выглядит такое правило в PF по сравнению с ужасным аналогом в iptables:
$IPTABLES -A INPUT -i eth1 -p tcp -m tcp -s 192.168.0.1 -d $me &#8211;dport 80 -j DROP
$IPTABLES -A INPUT -i eth1 -p [...]]]></description>
			<content:encoded><![CDATA[<p>В iptables мне очень не хватало таблиц PF!</p>
<p>block in quick on $if inet proto tcp from <badip> to $me port 80</p>
<p>Как красиво выглядит такое правило в PF по сравнению с ужасным аналогом в iptables:</p>
<p>$IPTABLES -A INPUT -i eth1 -p tcp -m tcp -s 192.168.0.1 -d $me &#8211;dport 80 -j DROP<br />
$IPTABLES -A INPUT -i eth1 -p tcp -m tcp -s 192.168.4.1 -d $me &#8211;dport 80 -j DROP<br />
$IPTABLES -A INPUT -i eth1 -p tcp -m tcp -s 10.10.0.1 -d $me &#8211;dport 80 -j DROP<br />
$IPTABLES -A INPUT -i eth1 -p tcp -m tcp -s 10.0.1.1 -d $me &#8211;dport 80 -j DROP<br />
&#8230;</p>
<p>И так далее. Более того, проверка каждого нового правила &#8211; это лишняя нагрузка на процессор, так что если у вас несколько тысяч правил, то не удивляйтесь idle процессора, равного 0 процентов&#8230; В общем такое положение дел в iptables меня долго отпугивало от него. Но не так давно я нашел проект http://ipset.netfilter.org/ , который дает весь функционал таблиц PF и даже больше!<br />
<span id="more-244"></span><br />
Настройка вся ведется на gentoo, так что мне не пришлось патчить ядро и пересобирать его:</p>
<p>emerge ipset<br />
modprob ipt_set</p>
<p>Теперь у нас есть и работает ipset. В ipset нет таблиц, а есть set различных типов. Типы  позволяют задавать ip адреса из определенной подсети (ipmap тип), связки ip адресов с MAC адресами (macipmap), порты из заданного диапазона (portmap), набор ip адресов или сетей (iphash, nethash), разные комбинации этих set-ов, или даже хранить ip адреса в set только определенное время (iptree). Более подробно советую посмотреть man ipset(8).</p>
<p>Для нашей задачи подходит тип iphash. Создаем set с именем badip, и смотрим его содержимое:</p>
<p># ipset -N badip iphash<br />
# ipset -L badip<br />
Name: test<br />
Type: iphash<br />
References: 0<br />
Default binding:<br />
Header: hashsize: 1024 probes: 8 resize: 50<br />
Members:<br />
Bindings:</p>
<p>Добавляем несколько ip в badip и смотрим содержимое set</p>
<p># ipset -A badip 192.168.0.1<br />
# ipset -A badip 10.10.0.1<br />
# ipset -L test<br />
Name: test<br />
Type: iphash<br />
References: 0<br />
Default binding:<br />
Header: hashsize: 1024 probes: 8 resize: 50<br />
Members:<br />
192.168.0.1<br />
10.10.0.1<br />
Bindings:</p>
<p>Удаляем ip из set</p>
<p># ipset -D badip 192.168.0.1<br />
# ipset -L test<br />
Name: test<br />
Type: iphash<br />
References: 0<br />
Default binding:<br />
Header: hashsize: 1024 probes: 8 resize: 50<br />
Members:<br />
10.10.0.1<br />
Bindings:</p>
<p>Проверяем, есть ли ip в set</p>
<p># ipset -T badip 10.10.0.1<br />
10.10.0.1 is in set test.</p>
<p>Удаляем все ip из set</p>
<p># ipset -F badip</p>
<p>Удаляем сам set</p>
<p># ipset -X badip</p>
<p>Теперь, когда мы разобрались с основными командами ipset нужно научиться использовать его в iptables, перепишем правило iptables:</p>
<p>$IPTABLES -A INPUT -i eth1 -p tcp -m tcp -d $me -m set &#8211;set badip src &#8211;dport 80 -j DROP</p>
<p>Т.е. мы подключили модуль set (-m set), потом указали какой set использовать (&#8211;set badip src). src &#8211; это флаг, который показывает какие ip сравнивать с set, src или dst . Если нужно проверить и src и dst, то флаг задается так src,dst. В результате использования ipset можно упросить и само написание  правил и быстродействие фаервола в целом.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/244/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenVPN &#8211; простейшая реализация.</title>
		<link>http://mysyslog.ru/posts/241</link>
		<comments>http://mysyslog.ru/posts/241#comments</comments>
		<pubDate>Wed, 30 Sep 2009 12:58:55 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=241</guid>
		<description><![CDATA[OpenVPN &#8211; замечательный продукт сообщества OpenSource, позволяющий легки и просто организовать VPN.
Забудьте про PPTP, L2TP и IpSec, для работы OpenVPN нужен только UDP или TCP порт, что значительно упрощает развертывания VPN для клиентов за NAT.

В короткой статье я опишу, как организовать соединение точка-точка при помощи OpenVPN.
Пакет OpenVPN доступен на всех популярных платформах ОС, процесс установки [...]]]></description>
			<content:encoded><![CDATA[<p>OpenVPN &#8211; замечательный продукт сообщества OpenSource, позволяющий легки и просто организовать VPN.<br />
Забудьте про PPTP, L2TP и IpSec, для работы OpenVPN нужен только UDP или TCP порт, что значительно упрощает развертывания VPN для клиентов за NAT.<br />
<span id="more-241"></span><br />
В короткой статье я опишу, как организовать соединение точка-точка при помощи OpenVPN.<br />
Пакет OpenVPN доступен на всех популярных платформах ОС, процесс установки просто и не требует отдельного описания. Единственное, что нужно упомянуть, для Linux нужна поддержка tun устройств в ядре.<br />
Перейдем сразу к настройке. У нас есть два компьютера, который необходимо соединить туннелем. Пусть первый зовется mars (192.168.0.100) и moon (192.168.100.10). Считаем, что маршрутизация между этими компьютерами есть.<br />
Для mars мы создадим vpn подключение с адресом 10.0.0.1, для moon 10.0.0.2.</p>
<p>root@mars:~# openvpn &#8211;remote 192.168.100.10 &#8211;dev tun0 \<br />
&#8211;ifconfig 10.0.0.1 10.0.0.2<br />
root@moon:~# openvpn &#8211;remote 192.168.0.100 &#8211;dev tun0 \<br />
&#8211;ifconfig 10.0.0.2 10.0.0.1</p>
<p>После какого-то времени должно появится сообщение</p>
<p>Wed Sep 29 15:33:05 2009 Initialization Sequence Completed</p>
<p>Что означает, что туннель был создан. Опция remote задает адрес, к которому будет подключаться openvpn и с которого он готов принимать трафик, dev указывает какой интерфейс использовать для туннеля, последняя опция ifconfig определяет IP адреса для создаваемого туннеля, первый для своей стороны, второй для удаленной.<br />
Теперь можно открыть два новых терминала на mars и moon и проверить, работает ли туннель</p>
<p>user@mars:~$ ping 10.0.0.2<br />
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.<br />
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.421 ms<br />
&#8230;<br />
user@moon:~$ ping 10.0.0.1<br />
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.<br />
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.360 ms<br />
&#8230;</p>
<p>Следует сразу сказать, что так VPN поднимать не нужно по двум причинам. Во-первых мы не задали опций для шифрования, т.е. весь трафик у нас идет в открытом виде. Во-вторых при закрытии консолей, в которых был запущен openvpn, на любом из компьютеров приведет к закрытию туннеля. Так что такой способ подходит только для тестовых целей. </p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/241/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Использование аутентификации по публичному ключу в SSH.</title>
		<link>http://mysyslog.ru/posts/219</link>
		<comments>http://mysyslog.ru/posts/219#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:26:37 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=219</guid>
		<description><![CDATA[Вы когда-нибудь смотрели логи попыток аутентификации по ssh? Каждый день сотни ботов рыскают по интернету, пытаясь подобрать пароль и от вашего сервера. Вам не страшно? У вас пароль из двенадцати символов в разном регистре из букв, цифр и специальных символов? Думаю нет, и в один прекрасный день может оказаться, что ваш сервер уже не только [...]]]></description>
			<content:encoded><![CDATA[<p>Вы когда-нибудь смотрели логи попыток аутентификации по ssh? Каждый день сотни ботов рыскают по интернету, пытаясь подобрать пароль и от вашего сервера. Вам не страшно? У вас пароль из двенадцати символов в разном регистре из букв, цифр и специальных символов? Думаю нет, и в один прекрасный день может оказаться, что ваш сервер уже не только ваш.<br />
Есть простой способ оставить ботов с носом, достаточно использовать аутентификацию по публичному ключу.<br />
<span id="more-219"></span><br />
Сперва нужно сгенерировать на клиентском компьютере (на компьютере с которого вы будете заходить по ssh на сервер) пару ключей (приватный и публичный ключи). Ключи должны быть в каталоге .ssh<br />
cd ~/.ssh<br />
$ ssh-keygen -t rsa<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/admin/.ssh/id_rsa):<br />
Enter passphrase (empty for no passphrase):<br />
Enter same passphrase again:<br />
Your identification has been saved in /home/admin/.ssh/id_rsa.<br />
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.<br />
The key fingerprint is:<br />
45:de:04:26:59:4f:11:a3:43:d3:d6:a4:82:84:dc:1c admin@it-computer01</p>
<p>Лучше поменять права на файл, так чтобы его нельзя было перезаписать:<br />
$ chmod 400 id_rsa<br />
Теперь нужно поместить публичный ключ на сервер, можно это сделать «руками», т. е. скопировать в буфер публичный ключ, зайти на сервер и добавить редактором в ~/.ssh/authorized_keys нужные строчки. А можно воспользоваться утилитой ssh-copy-id:<br />
$ ssh-copy-id -i id_rsa.pub admin@server1.domain.ru<br />
ssh-copy-id не только корректно скопирует ключ, но и проверит права на файл, его владельца, а так же вы копируете именно публичный ключ, а не приватный по ошибке.</p>
<p>При генерации пары ключей ssh-keygen запросит у вас пароль, его можно оставить пустым. Это конечно удобно, заход на сервер будет производиться без каких либо вопросов, но нужно помнить, если ваши ключи будут украдены, ничто не помешает злоумышленнику ими воспользоваться.<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/219/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

