<?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>Одминский блог &#187; FreeBSD</title>
	<atom:link href="http://odminblog.ru/partition/freebsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://odminblog.ru</link>
	<description>Блог о технологиях, технократии и методиках борьбы с граблями</description>
	<lastBuildDate>Mon, 21 May 2012 20:58:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>FTP для маленькой такой компании</title>
		<link>http://odminblog.ru/ftp-dlya-malenkoj-takoj-kompanii/</link>
		<comments>http://odminblog.ru/ftp-dlya-malenkoj-takoj-kompanii/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 17:31:22 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Сети]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[Сетевые протоколы]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1683</guid>
		<description><![CDATA[Сегодня пришлось поехать к клиенту как раз по поводу многострадального шарика с видяхами, и пока суть да дело- нарисовался планчик для локального ftp-сервера, который необходимо поставить в конторе. Рисовать не охота, да и Visio я себе так и не поставил, поэтому опишу на пальцах куда рыть.
Собственно принципиальная схема работы следующая: FTP-сервер работающий под ProFTPd с [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня пришлось поехать к клиенту как раз по поводу многострадального шарика с видяхами, и пока суть да дело- нарисовался планчик для локального ftp-сервера, который необходимо поставить в конторе. Рисовать не охота, да и Visio я себе так и не поставил, поэтому опишу на пальцах куда рыть.</p>
<p>Собственно принципиальная схема работы следующая: FTP-сервер работающий под ProFTPd с хранением учеток в базе MySQL. К нему есессно подрублен контроль файлов и clamav. Сам сервак находится в DMZ за фаерволом, где на него подключены собственно порты 20, 21 и все выше 1024, для отработки пассива. Также ставим apache и открываем 80 порт на фаерволе, так как некоторым тупым бургам понадобится скачивать из локалок, а по своему опыту работы я неоднократно сталкивался с ситуацией когда у таких &#8220;васяток&#8221; банально нет чела который им мог бы объяснить как переключить ftp-клиента в пассивный режим, а факи которые им шлешь на почту, почему то не вспомогают. Вот для таких граждан необходимо также иметь web-сервер на котором завести некоторое количество папочек, запароленных на основе .htaccess.</p>
<p>Остальные пакеты это samba сервер, через который внутренние клиенты раскидывают файлы по папкам, с аутентификацией на уровне пользователей. Тут собственно можно сделать два варианта: либо разрешить прохождение smb пакетов из сетки через фаервол, либо засунуть сервак вторым интерфейсом в локалку, но это не особо хорошая идея, ибо хотя шансов что нам сломают ftp крайне мало, но все равно это получается лишний вход. В принципе можно его вывести вторым шнутом во внутренний DMZ, куда уже фильтровать пакетики от внутренних сетей. Такой ход более гиморный, но зато и наиболее спокойный.</p>
<p>Каждому юзверю, или отделу создается папка- желательно конечно с квотированием, иначе ftp-сервер превращается в неконтролируемую файлопойку похуже файл-сервера. В этой связи есть смысл подрубить еженедельную отправку на почту статистики вывода:<br />
df -ah<br />
du -ch -d 1 /ftphome</p>
<p>Теперь по защите всего это хозяйства, как я и сказал: на фаерволе делаем маппинг по портам, или же безусловную трансляцию, закрывая все порты ниже 1024 порта, кроме 20, 21 и 80 вовне, а внутрь от сервера пропускаем все или же только smb протоколы.</p>
<p>После чего все это дело настраиваем и радуемся жизни.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/peredacha-bolshix-obemov-dannyx-cherez-internet/" rel="bookmark" class="crp_title">Передача больших объемов данных через интернет</a></li><li><a href="http://odminblog.ru/kak-skachat-ftp-na-russkom-ili-podderzhka-unicode-ftp-klientami/" rel="bookmark" class="crp_title">Как скачать ftp на русском или поддержка unicode ftp-клиентами</a></li><li><a href="http://odminblog.ru/sozdanie-rezervnoj-kopii-sajta-cherez-ftp/" rel="bookmark" class="crp_title">Создание резервной копии сайта через ftp</a></li><li><a href="http://odminblog.ru/web-filtering-update-issue/" rel="bookmark" class="crp_title">Проблема обновления URL/Web Filtering на шлюзе CP</a></li><li><a href="http://odminblog.ru/sofaware-500w/" rel="bookmark" class="crp_title">Sofaware 500W</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/ftp-dlya-malenkoj-takoj-kompanii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Баг прохождения пакетов keep state через фаервол IPF</title>
		<link>http://odminblog.ru/bag-proxozhdeniya-paketov-keep-state-cherez-faervol-ipf/</link>
		<comments>http://odminblog.ru/bag-proxozhdeniya-paketov-keep-state-cherez-faervol-ipf/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 16:02:47 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[Сетевые протоколы]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1635</guid>
		<description><![CDATA[Столкнулся с древним косяком работы Ipfilter, который был замечен в версии FreeBSD 6.1/6.2, но у меня вылез на 8.2. Причем совершенно не понятным образом, так как фаервол у людей работал уже порядка полугода, и тут отвалился VoIP. То есть в один прекрасный день, как водится в понедельник, перестали коннектится телефоны к удаленному VoIP серверу. Сначала [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с древним косяком работы Ipfilter, который был замечен в версии FreeBSD 6.1/6.2, но у меня вылез на 8.2. Причем совершенно не понятным образом, так как фаервол у людей работал уже порядка полугода, и тут отвалился VoIP. То есть в один прекрасный день, как водится в понедельник, перестали коннектится телефоны к удаленному VoIP серверу. Сначала думал что траблы в телефоне, но потом оказалось что не работают все.</p>
<p>Стал ковыряться и обнаружил в логах ipmon интересные записи:<br />
<em>Date em1 @0:38 b LAN_IP,port -&gt; VoIP_server,port PR tcp len 20 60 -S OUT OOW<br />
Date em1 @0:58 b VoIP_server,port -&gt; LAN_IP,port  PR tcp len 20 81 -AP IN OOW NAT<br />
Date em1 @0:58 b VoIP_server,port -&gt; GW_LAN_IP,port  PR tcp len 20 81 -AP IN OOW NAT</em></p>
<p>Собственно самое интересно в этом флаг <strong>OOW</strong>, который переводится как <strong>out of window</strong>, и является багом фильтарции пакетов для которых правило идет со статусом <strong>keep state</strong>, то есть в момент установленного уже соединения, которое фаервол должен пропускать, он вдруг решает, что это неожиданный пакет и банит его именно по причине <strong>OOW</strong>. В моем случае- все эти прохождения пакетов были разрешены, и все блокировки были именно по флагу <strong>OOW</strong>.<br />
Бороться с этим можно двумя способами: либо пропатчив фаервол, либо исключая из правила флаг <strong>keep state</strong>. Я предпочел последний, тем более что у меня баг срабатывает только на VOIP трафик, тогда как остальной продолжает ходить с флагом <strong>keep state</strong>.</p>
<p>Самое унылое во всем этом, что судя по инетам данная проблема была пофиксена еще на версии 1.3b5, тогда как у меня в данный момент используется:<br />
<strong># ipf -V<br />
ipf: IP Filter: v4.1.28 (400)<br />
Kernel: IP Filter: v4.1.28 </strong><br />
так что видимо с оказией надо будет подумать об обновлении на текущую версию 5.1.0</p>
<p>Кстати просмотреть пакеты дропающиеся по out of window можно с помощью команды:<br />
<strong># ipmon -oI</strong><br />
Тогда как увидеть список загруженных правил можно с помощью команды:<br />
<strong># ipfstat -nio</strong></p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/optimizaciya-raboty-ipf-i-ipnat/" rel="bookmark" class="crp_title">Оптимизация работы ipf и ipnat</a></li><li><a href="http://odminblog.ru/nastroyka-programmnogo-firewall-na-baze-freebsd/" rel="bookmark" class="crp_title">Настройка программного фаервола на базе FreeBSD</a></li><li><a href="http://odminblog.ru/zabavnyj-glyuk-raboty-svyazki-named-i-ssh/" rel="bookmark" class="crp_title">Забавный глюк работы связки named и ssh</a></li><li><a href="http://odminblog.ru/ssh-post-low-chance-of-hack/" rel="bookmark" class="crp_title">Смена порта SSH-сервера как мера безопасности</a></li><li><a href="http://odminblog.ru/port-redirect-on-d-link-dfl-210/" rel="bookmark" class="crp_title">Проброс портов на D-Link DFL-210</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/bag-proxozhdeniya-paketov-keep-state-cherez-faervol-ipf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка VPN-сообщества под FreeBSD и OpenVPN</title>
		<link>http://odminblog.ru/nastrojka-vpn-soobshhestva-pod-freebsd-i-openvpn/</link>
		<comments>http://odminblog.ru/nastrojka-vpn-soobshhestva-pod-freebsd-i-openvpn/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 18:48:29 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[vpn client]]></category>
		<category><![CDATA[Сетевые протоколы]]></category>
		<category><![CDATA[Сети]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1605</guid>
		<description><![CDATA[Возникла тут необходимость дать видеоинженерам клиента удаленный доступ в локалку. Видеоинженеры же народ ленивый- хочет монтировать передачи и ролики, не отрывая задницу от домашнего дивана, так что этим они несколько похожи на одминов. Поскольку клиент оказался нераскручивываем на приобретение CheckPoint UTM-1, а фаервол я ему уже как то поднимал под FreeBSD, то пришлось мутиться с [...]]]></description>
			<content:encoded><![CDATA[<p>Возникла тут необходимость дать видеоинженерам клиента удаленный доступ в локалку. Видеоинженеры же народ ленивый- хочет монтировать передачи и ролики, не отрывая задницу от домашнего дивана, так что этим они несколько похожи на одминов. Поскольку клиент оказался нераскручивываем на приобретение CheckPoint UTM-1, а фаервол я ему уже как то поднимал под FreeBSD, то пришлось мутиться с настройкой VPN сервера под фряхой 8.2. Хотя я и хотел поставить Untangle, про который уже как то рассказывал, но по итогам решил, что проще будет поднять все на одной машине, но под управлением хорошо зарекомендовавшего себя пакета OpenVPN, который помимо того что поддерживает все вариации подключений, так еще и идет со своим клиентом. Поднимать все это богатство я решил на сертификатах открытых ключей Х.509 под управлением RSA Key Management. Лить воду на жернов копирайта по поводу выбора сертификации мне неохота, так как меня от этой темы трясет еще с экзаменов CCSA, так что сразу перейду к настройке решения. Ставить будем на нашу любимскую FreeBSD, предварительно заточив её по всем правилам науки.</p>
<p><span id="more-1605"></span><em># cd /usr/ports/security/openvpn<br />
# make &amp;&amp; make install<br />
# make clean</em><br />
в логе инсталяшки видим напоминалку о том, что надо бы врубить работу пакета в <strong>/etc/rc.conf</strong>, синтаксис которого описан в файле <strong>/usr/local/etc/rc.d/openvpn</strong>. В этой связи добавляем в <strong>/etc/rc.conf </strong>следующие строки:<br />
<strong>openvpn_enable=&#8221;YES&#8221;<br />
openvpn_if=&#8221;tun&#8221;              # driver(s) to load, set to &#8220;tun&#8221;, &#8220;tap&#8221; or &#8220;tun tap&#8221;<br />
openvpn_configfile=&#8221;/usr/local/etc/openvpn/openvpn.conf&#8221;<br />
openvpn_dir=&#8221;/usr/local/etc/openvpn&#8221; </strong><br />
Поскольку указанных директорий и файлов у нас нет, то создаем их:<br />
<em># mkdir /usr/local/etc/openvpn<br />
# touch /usr/local/etc/openvpn/openvpn.conf</em><br />
а также всю внутреннюю структуру папки <strong>/usr/local/etc/openvpn</strong><br />
<em># mkdir /usr/local/etc/openvpn/ccd<br />
# mkdir /usr/local/etc/openvpn/keys</em></p>
<p>Надо отметить, что в работе openvpn использует openssl и его структуру, так что если мы планируем еще тщательнее защищаться, то нам надо весь фарш из папки <strong>/etc/ssl</strong> переносить в нашу папку <strong>/usr/local/etc/openvpn/ </strong>, включая как папки certs, crl, serial, private, так и  базы данных сертификатов serial и index.txt. Поскольку я бился на удаленной системе посредством ssh, а переться в офис мне совсем не хотелось, то я оставил все на месте, минимизировав перенастройку openssl.</p>
<p>После этого переходим к созданию сертификатов RSA, для чего следуем в папку <strong>/usr/local/share/doc/openvpn/easy-rsa/2.0</strong> где редактируем файл <strong>/usr/local/share/doc/openvpn/easy-rsa/2.0/vars</strong> где прописываем свои настройки, чтобы этого не делать при создании сертификатов:<br />
<strong>export KEY_COUNTRY=&#8221;RU&#8221;<br />
export KEY_PROVINCE=&#8221;RF&#8221;<br />
export KEY_CITY=&#8221;Moscow&#8221;<br />
export KEY_ORG=&#8221;Peredelka&#8221;<br />
export KEY_EMAIL=&#8221;admin@odminblog.ru&#8221;<br />
export KEY_CN=vpn-server<br />
export KEY_NAME=odmin_root<br />
export KEY_OU=Adminz</strong></p>
<p>После этого надо дать права на исполнение для некоторых файлов:<br />
<em># chmod +x whichopensslcnf vars clean-all build-ca pkitool build-key-server build-key build-dh </em><br />
после чего можно инициировать создание файлов ключей (если вы используете bash, то первую команду можно опустить):<br />
<em># sh<br />
# . vars<br />
# ./clean-all<br />
# ./build-ca </em><br />
где собственно в диалоге уже будут прописаны наши данные, так что стоит ограничиваться только нажатием энтера.<br />
Теперь создаем сертификат X.509 для нашего сервера, который мы указали в <strong>KEY_CN=vpn-server</strong>, при этом нам будет предложено задать пароль для обмена ключами, а также надо отметить, что переменную <strong>An optional company name []</strong> следует задавать той же что и была указана для создания корневого сертификата <strong>Organization Name (eg, company)</strong>. После этого подписываем наш сертификат своими силами.<br />
<em># ./build-key-server vpn-server</em><br />
Создаем сертификат X.509 для клиентской части, при этом имя клиента <strong>KEY_CN</strong> мы указываем отличным от имени сервера, например vpn-client.<br />
<em># ./build-key vpn-client</em><br />
Теперь генерим ключи Диффи-Холмана, которые будут использоваться при хендшейках и обмене ключами:<br />
<em># ./build-dh </em><br />
генерация займет некоторое время, но она идет на автомате. На последок создаем файл для TLS аутентификации:<br />
<em># openvpn &#8211;genkey &#8211;secret keys/ta.key</em><br />
после чего в папке keys смотрим полученные ключики, которые соотносятся следующим образом.</p>
<p>Ключи сервера:<br />
<strong>ca.crt , vpn-server.crt , vpn-server.key, dh1024.pem, ta.key</strong><br />
Ключи клиентской части:<br />
<strong>ca.crt , vpn-client.crt , vpn-client.key, ta.key</strong><br />
Серверные ключики копируем из папки создания в папку openvpn, созданную нами первоначально  <strong>/usr/local/etc/openvpn/keys</strong>, после чего переходим к редактированию файла конфигурации <strong>/usr/local/etc/openvpn/openvpn.conf</strong><br />
<strong>### openvpn.conf  ###<br />
dev tun0<br />
port 5656<br />
proto udp<br />
ca /usr/local/etc/openvpn/keys/ca.crt<br />
cert /usr/local/etc/openvpn/keys/vpn-server.crt<br />
key /usr/local/etc/openvpn/keys/vpn-server.key<br />
dh /usr/local/etc/openvpn/keys/dh1024.pem<br />
tls-auth /usr/local/etc/openvpn/keys/ta.key 0<br />
client-config-dir ccd<br />
# задаем подсеть сервера VPN<br />
server 172.16.0.0 255.255.255.0<br />
# Прописываем маршрутизацию на внутреннюю сетку (у меня 192.168.0.0)<br />
push &#8220;route 192.168.0.0 255.255.255.0&#8243;<br />
# Маршрутизация для клиента<br />
route 172.16.0.0 255.255.255.252<br />
tls-server<br />
tls-timeout 120<br />
comp-lzo<br />
auth MD5<br />
cipher BF-CBC<br />
keepalive 10 120<br />
max-clients 100<br />
user nobody<br />
group nobody<br />
status /var/log/openvpn/openvpn-status.log<br />
log /var/log/openvpn/openvpn.log<br />
verb 3<br />
#########</strong><br />
Создаем файл c именем клиентского хоста, заданным при генерации сертификата:<br />
<em># echo &#8220;ifconfig-push 172.16.0.2 172.16.0.1&#8243; &gt; /usr/local/etc/openvpn/ccd/vpn-client</em><br />
при этом у нас получается подсеть для клиента с маской 255.255.255.252 которую мы указывали в файле настроек, так что в нашем случае это будет туннель с клиентской частью 172.16.0.2, серверной частью 172.16.0.1, широковещательным адресом 172.16.0.3 и адресом сетки 172.168.0.0, так что последующих клиентов эта запись будет иметь вид (в файлах для их имён и сертификатов):<br />
<strong>ifconfig-push 172.16.0.6 172.16.0.5<br />
ifconfig-push 172.16.0.10 172.16.0.9<br />
ifconfig-push 172.16.0.14 172.16.0.13<br />
</strong>если кто не понял то адресация IP идет +4<strong></strong></p>
<p>также создаем файлы журналирования:<br />
<em># mkdir /var/log/openvpn<br />
# touch /var/log/openvpn/openvpn-status.log<br />
# touch /var/log/openvpn/openvpn.log </em><br />
Открываем на нашем фаерволе входящий трафик на порт udp/5656 для того чтобы внешние клиенты могли подрубаться к нашему VPN серверу, а также разрешить прохождение трафика через интефрейс OpenVPN и внутресетвой трафик.</p>
<p>Теперь копируем сертификаты клиентской части на внешний носитель, так как они нам буду нужны на локальной машине при настройке удаленного клиента.</p>
<p>Вроде как теперь все должно работать, так что для того чтобы все запустилось- перезапускаем сервер, и настраиваем клиента на локальной машине.<br />
На локальной машине, ставим пакет OpenVPN, который можно <a href="http://odminblog.ru/links/go.php?url=http://openvpn.net/index.php/open-source/downloads.html" target="_blank"><strong>взять с офф.сайта</strong></a>. После этого сливаем клиентские файлы: <strong>ca.crt , vpn-client.crt , vpn-client.key, ta.key</strong> в папочку <strong>C:\Program Files\OpenVPN\config</strong> (или той куда ставили клиента) и создаем в ней файл клиентских настроек <strong>openvpn.ovpn</strong>, в который прописываем следующие параметры:<br />
<strong>#### openvpn.ovpn ###<br />
dev tun0<br />
proto udp<br />
# внешний IP VPN-сервера<br />
remote X.X.X.X<br />
# порт подключения<br />
port 5656<br />
client<br />
resolv-retry infinite<br />
ca ca.crt<br />
cert vpn-client.crt<br />
key vpn-client.key<br />
tls-client<br />
tls-auth ta.key 1<br />
auth MD5<br />
cipher BF-CBC<br />
ns-cert-type server<br />
comp-lzo<br />
persist-key<br />
persist-tun<br />
verb 3<br />
#########</strong></p>
<p>После этого запускаем клиента и он автоматом ломится на наш сервак и устанавливает сессию.</p>
<p>Собственно на этом можно было бы закочить, если бы в сети не жили беспокойные парни, которым обязом надо поставить себе Windows 7, да еще и x64. Для запуска OpenVPN под Windows 7 следует ставить версию <strong><a href="http://odminblog.ru/links/go.php?url=http://openvpn.net/release/openvpn-2.1_rc19-install.exe" target="_blank">openvpn-2.1_rc19</a></strong> (или какую нить другую от _rc15). Выкачиваем её и щелкаем правой кнопкой на инсталлер: <strong>Свойства -&gt; Совместимость -&gt; Запустить пакет в режиме Windows Vista</strong> , а также выставить галку &#8220;<strong>Выполнять эту программу от имени администратора</strong>&#8220;. После этого можно запускать инсталлер, который встанет без проблем, после чего на значке OpenVPN GUI надо будет также выставить, что запускать его следует от админа.</p>
<p>Для особо беспокойных, живущих в режиме параноик-мод, файлы ключиков, можно записать например на шифрованный диск или внешний носитель, и запускать клиент только после того как диск будет подмонтирован, тогда в openvpn.ovpn , пути настроек будут выглядеть следующим образом (сертификаты расположены в папке keys):<br />
<strong>ca  &#8220;X:\\keys\\ca.crt&#8221;<br />
cert &#8220;X:\\keys\\vpn-client.crt&#8221;<br />
key &#8220;X:\\keys\\vpn-client.key&#8221;<br />
tls-auth &#8220;X:\\keys\\ta.key&#8221; 1</strong></p>
<p>При установке клиента под Линух, файл конфигурации клиента openvpn.conf должен лежать в папке /usr/local/etc/openvpn , местоположение ключиков задаем естественно из него.</p>
<p>На тему настройки клиента под Mac я видимо отпишусь позже, так как мне это поставили на вид, но настраивать я не стал, так как макаки у меня под рукой нет, а убивать полдня на поиск имиджа по виртуалку меня заломало. Так что как только мне выдадут подопытную обезьяну, то отпишусь по результатам.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/povyshenie-bezopasnosti-vpn-soobshhestva/" rel="bookmark" class="crp_title">Повышение безопасности VPN сообщества</a></li><li><a href="http://odminblog.ru/vpn-network-routing-issue-in-windows-7/" rel="bookmark" class="crp_title">Проблема маршрутизации VPN сети в Windows 7</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/iphone-in-cisco-asa-vpn/" rel="bookmark" class="crp_title">Пытаемся подружить iPhone и Cisco ASA VPN</a></li><li><a href="http://odminblog.ru/installing-support-snx-and-endpoint-connect/" rel="bookmark" class="crp_title">Установка поддержки SNX и Endpoint Connect на шлюзах</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/nastrojka-vpn-soobshhestva-pod-freebsd-i-openvpn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка кеширующего DNS сервера на базе BIND</title>
		<link>http://odminblog.ru/cashing-dns-server-under-bind/</link>
		<comments>http://odminblog.ru/cashing-dns-server-under-bind/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 07:47:20 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Сайты и их проблемы]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[named]]></category>
		<category><![CDATA[домен]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[настройка системы]]></category>
		<category><![CDATA[Сети]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1525</guid>
		<description><![CDATA[Думаю что не надо лишний раз лить воду на жернов копирайта пустословия, относительно того что для жизни сетей и Интернета в частности, сервера доменных имен являются краеугольной тематикой. Ибо без их существования все доменные имена, типо мойкрутойдомен.ком были бы пустыми словами. И для того, чтобы выходить из любой сети в интернет, нам необходимо использовать DNS [...]]]></description>
			<content:encoded><![CDATA[<p>Думаю что не надо лишний раз лить воду на жернов <span style="text-decoration: line-through;">копирайта</span> пустословия, относительно того что для жизни сетей и Интернета в частности, сервера доменных имен являются краеугольной тематикой. Ибо без их существования все доменные имена, типо мойкрутойдомен.ком были бы пустыми словами. И для того, чтобы выходить из любой сети в интернет, нам необходимо использовать DNS сервер для разрешения доменных имен в IP адреса.  Но в данном случае нам хватит, так называемого кеширующего сервера имен, то есть отвечающего только за разрешение имен и не содержащего описаний доменных зон.</p>
<p>С помощью стандартного сервера доменных имен BIND, настроить такой сервер, на базе любой *nix системы, можно за считанные минуты, но при этом необходимо выполнить некоторое количество телодвижений, которые я и перечислю ниже.</p>
<p><span id="more-1525"></span>В файл <em>/etc/rc.conf</em> добавляем строку запускающую наш сервер доменных имен:<br />
<strong>named_enable=&#8221;YES&#8221;</strong><br />
Открываем наш файл, отвечающий за локальных резолв <em>/etc/resolv.conf</em> и меняем его содержимое (вероятнее всего там стоит провайдерские DNS), на следующие строки, содержащие ваши домены:<br />
<strong>domain  your-domain.ru<br />
search host.your-domain.ru your-domain.ru<br />
nameserver 127.0.0.1</strong><br />
для того чтобы сделать поиск доменных имен по кешу локального сервера.<br />
Проверяем в файле <em>/etc/nsswitch.conf</em> наличие записи<br />
<strong>hosts:      files dns</strong><br />
говорящей о том, что при резолве имен сначала будет использоваться информация содержащаяся в файле <em>/etc/hosts</em>, а затем запрашивать у доменных серверов, в соответствии с описанием в файле <em>/etc/resolv.conf </em><br />
После этого в файл <em>/etc/host.conf</em> добавляем строку<br />
<strong>order hosts,bind</strong><br />
которая разрешает ту же последовательность, что и в файле <em>/etc/nsswitch.conf </em><br />
После этого переходим к настройке основного файла конфигурации любого доменного сервера, а не только кеширующего: <em>/etc/namedb/named.conf</em>. Для начала добавляем и раскомментируем следующие опции, идущие списком после директивы <strong>options {</strong><br />
Каждая строка, а также перечисление например IP адресов, должно закрываться символом точки с запятой &#8220;<strong>;</strong>&#8221;<br />
Определяем на каких интерфейсах слушать входящие пакеты:<br />
<strong>listen-on       { 127.0.0.1; 192.168.0.1; 172.16.0.1; };</strong><br />
Данную строку следует прописывать, если возникают какие то проблемы с фаерволом:<br />
<strong>query-source address * port 53;</strong><br />
Также если охота поиграться с безопасностью, то можно озвучить сети, из которых разрешены запросы (сети определяем перед директивой options), а также отрубить фингерпринт и включить обработчик рекурсивных запросов:<br />
<strong>acl &#8220;our_lanz&#8221; { 192.168.0.0/24; };<br />
options {<br />
directory &#8220;/etc/namedb&#8221;;<br />
allow-recursion { &#8220;our_lanz&#8221;; };<br />
allow-query {&#8220;our_lanz&#8221;; };<br />
version &#8220;unknown&#8221;;<br />
fake-iquery no;<br />
};</strong><br />
Добавляем директивы запросов к DNS провайдера, для того чтобы дергать запросы из них и тем самым облегчить работу сетки:<br />
<strong>forwarders {<br />
NS_IP1; NS_IP2;<br />
};<br />
forward first;</strong><br />
На этом в принципе можно и остановиться, ибо все должно уже начать шуршать, после перезапуска сервера доменных имен, но для того чтобы произвести классические действия- идет в описание доменных зон и добавляем локальные зоны:<br />
<strong>zone &#8220;.&#8221; {<br />
type hint;<br />
file &#8220;named.root&#8221;;<br />
};<br />
zone &#8220;0.0.127.in-addr.arpa&#8221; {<br />
type master;<br />
file &#8220;master/127.0.0&#8243;;<br />
};</strong><br />
Надо отметить, что все эти файлы указываются от корневой директории <em>named.conf</em>, так что создаем упомянутый файл <em>/etc/named/master/127.0.0</em><br />
<strong>@               IN      SOA     host.your-domain.ru. hostmaster.your-domain.ru. (<br />
1       ; Serial<br />
8H      ; Refresh<br />
2H      ; Retry<br />
1W      ; Expire<br />
1D)     ; Minimum TTL<br />
NS      host.your-domain.ru.<br />
1                       PTR     localhost.</strong><br />
и проверяем что файл <em>/etc/named/named.root</em> содержит информацию о корневых доменных серверах, в нем на самом деле много инфы, вроде подобного:<br />
<strong>.                        3600000  IN  NS    A.ROOT-SERVERS.NET.<br />
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4<br />
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30</strong><br />
;<br />
Теперь радостно перезапускаем наш сервер доменных имен, и можем спокойно тестить или заниматься другими делами.<br />
Тестится естественно через терзания nslookup&#8217;a:<br />
<strong># nslookup<br />
Default server: 127.0.0.1<br />
Address: 127.0.0.1#53<br />
&gt; odminblog.ru<br />
Server:         127.0.0.1<br />
Address:        127.0.0.1#53<br />
Non-authoritative answer:<br />
Name:   odminblog.ru<br />
Address: 174.120.3.60</strong></p>
<p>Как видно из <strong>Non-authoritative answer</strong> сервер берет эти данные из кеша, о чем нас и предупреждает этой надписью.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/resolve-tunning-for-quick-queries/" rel="bookmark" class="crp_title">Ускоряем разрешение доменных имен через resolve.conf</a></li><li><a href="http://odminblog.ru/delegirovanie-upravleniya-subdomain/" rel="bookmark" class="crp_title">Делегируем управление субдоменом</a></li><li><a href="http://odminblog.ru/zabavnyj-glyuk-raboty-svyazki-named-i-ssh/" rel="bookmark" class="crp_title">Забавный глюк работы связки named и ssh</a></li><li><a href="http://odminblog.ru/ttl-in-dns-for-migrate/" rel="bookmark" class="crp_title">Изменение значений TTL в сервере DNS/BIND при миграции</a></li><li><a href="http://odminblog.ru/bind-vulnerability/" rel="bookmark" class="crp_title">Найдена критическая уязвимость для BIND 9</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/cashing-dns-server-under-bind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Оптимизация работы ipf и ipnat</title>
		<link>http://odminblog.ru/optimizaciya-raboty-ipf-i-ipnat/</link>
		<comments>http://odminblog.ru/optimizaciya-raboty-ipf-i-ipnat/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 16:44:54 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1471</guid>
		<description><![CDATA[В дополнение ко вчерашней статье о настройке фаервола, хотел бы упомянуть также некоторые моменты касаемые эксплуатации программного фаервола на базе пакета ipfilter или ipf, которые могут всплыть в процессе работы с указанным фаерволом. А также несколько фич, используя которые можно оптимизировать работу фаервола и механизма NAT.
После внесения изменений в правила фаервола, данные правила можно применить [...]]]></description>
			<content:encoded><![CDATA[<p>В дополнение ко вчерашней <a title="настройка фаервола" href="http://odminblog.ru/nastroyka-programmnogo-firewall-na-baze-freebsd/">статье о настройке фаервола</a>, хотел бы упомянуть также некоторые моменты касаемые эксплуатации программного фаервола на базе пакета ipfilter или ipf, которые могут всплыть в процессе работы с указанным фаерволом. А также несколько фич, используя которые можно оптимизировать работу фаервола и механизма NAT.</p>
<p>После внесения изменений в правила фаервола, данные правила можно применить без перезагрузки фаервола, просто перечитав файл правил, причем это может быть как дефолтовый файл, так и рандомный:<br />
<strong># ipf -Fa -f /etc/ipf.rules</strong><br />
где,<br />
-Fa сброс всех правил фаервола.<br />
-f указывает фаайлец с новыми правилами фаервола (так что не ошибитесь, ибо как вы помните фаервол мы собираели с блоком по умолчанию)</p>
<p>Полную статистику работы фаервола с момента загрузки системы  можно просмотреть командой<br />
<strong># ipfstat</strong><br />
При этом ключ -ih выдаст количество входящих пакетов, со статистикой прохождения или блокировок с попаданием в правила,<br />
ключ -oh выдаст туже статистику для исходящих пакетов. Это отличное подспорье в оптимизации работы фаервола, путем помещения наиболее часто используемых правил фаервола наверх таблицы.<br />
Обнулить эту статистику можно командой<br />
<strong># ipf -Z</strong><br />
Просмотреть проходящие пакеты в режиме реального времени, можно командой<br />
<strong># ipmon</strong><br />
собственно её вывод и пишется в логфайл.</p>
<p>При использовании ключа  -n адреса и порты будут преобразованы в хостнеймы и сервисы, что довольно удобно для мониторинга того- кто где сидит в данный момент,<br />
а при использовании ключа -x данные проводящих пакетов будут выводиться в hex-коде, что тоже может доставить много интересных минут сисадмину.<br />
Используя команду ipnat можно просматривать таблицу состояния адрес трансляций:<br />
<strong># ipnat -l</strong> выведет все открытые на данный момент трансляции адресов<br />
<strong># ipnat -s</strong> выводит статистику работы адрес трансляции<br />
<strong># ipnat -F</strong> обнуляет все активные соединения из актуальной таблицы адрес трансляций</p>
<p>У ipnat есть, по умолчанию вшитое, количество возможных открытых сессий, и проверить его можно командой:<br />
<strong># ipf -T list | grep nattable</strong><br />
и вероятнее всего вы получите ответ что максимальное число открытых сессий 30к, что для большой сети не так уж и много, так что увеличить это число можно добавив в файл <strong>rc.conf</strong> следующую строчку:<br />
<strong>ipfilter_flags=&#8221;-D -T ipf_nattable_sz=10009,ipf_nattable_max=200000 -E&#8221;</strong><br />
и перегрузив ipfilter, тем самым увеличив число сессий до 200к.<br />
Также если ваш ipnat.rules предполагает более 127 правил, которые установлены по умолчанию, вам необходимо  также добавить в переменную <strong>ipfilter_flags </strong>файла <strong>rc.conf</strong> ключики <strong>ipf_natrules_sz=1023,ipf_rdrrules_sz=1023</strong><br />
Еще один момент касаемый уменьшения таймаута TCP сессии, что также позволит оптимизировать работу NAT, так как многие сессии сохраняются в таблице не смотря на то что соединение уже давно закончилось. Для этого добавляем во флаги, также ключи <strong>fr_tcptimeout=180,fr_tcpclosewait=60,\<br />
fr_tcphalfclosed=7200,fr_tcpidletimeout=172800</strong><br />
В итоге на выходе в rc.conf имеем следующее выражение:<br />
<strong>ipfilter_flags=&#8221;-D -T ipf_nattable_sz=10009,ipf_nattable_max=200000,fr_tcptimeout=180,\<br />
fr_tcpclosewait=60,fr_tcphalfclosed=7200,fr_tcpidletimeout=172800,\<br />
ipf_natrules_sz=1023,ipf_rdrrules_sz=1023 -E&#8221;</strong></p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/bag-proxozhdeniya-paketov-keep-state-cherez-faervol-ipf/" rel="bookmark" class="crp_title">Баг прохождения пакетов keep state через фаервол IPF</a></li><li><a href="http://odminblog.ru/nastroyka-programmnogo-firewall-na-baze-freebsd/" rel="bookmark" class="crp_title">Настройка программного фаервола на базе FreeBSD</a></li><li><a href="http://odminblog.ru/zabavnyj-glyuk-raboty-svyazki-named-i-ssh/" rel="bookmark" class="crp_title">Забавный глюк работы связки named и ssh</a></li><li><a href="http://odminblog.ru/autorestart-daemon/" rel="bookmark" class="crp_title">Авторестарт демона после падения</a></li><li><a href="http://odminblog.ru/ogranicheniya-steka-protokola-tcpip-v-windows/" rel="bookmark" class="crp_title">Ограничения стека протокола TCP/IP в Windows</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/optimizaciya-raboty-ipf-i-ipnat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка программного фаервола на базе FreeBSD</title>
		<link>http://odminblog.ru/nastroyka-programmnogo-firewall-na-baze-freebsd/</link>
		<comments>http://odminblog.ru/nastroyka-programmnogo-firewall-na-baze-freebsd/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 16:11:18 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1458</guid>
		<description><![CDATA[
Наконец то дошли руки, до воссоздания манула по настройке фаервола на базе системы FreeBSD, который помимо стабильности, надежности и безопасности отличается еще одним немаловажным, для многих компаний, качеством &#8211; это бесплатный фаервол. Большая часть настроек выработана годами опытной эксплуатации, так что они означают уже припомнить довольно сложно, да и к тому же  займет еще полстатьи, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-1459" title="настройка фаервола" src="http://odminblog.ru/wp-content/uploads/2011/08/firewall-installing-300x211.jpg" alt="настройка фаервола" width="300" height="211" /></p>
<p>Наконец то дошли руки, до воссоздания манула по настройке фаервола на базе системы FreeBSD, который помимо стабильности, надежности и безопасности отличается еще одним немаловажным, для многих компаний, качеством &#8211; это бесплатный фаервол. Большая часть настроек выработана годами опытной эксплуатации, так что они означают уже припомнить довольно сложно, да и к тому же  займет еще полстатьи, так что вероятнее всего часть настроек, которые я не рассматривал в данной статье, я распишу несколько позднее.</p>
<p>Переведем данное мероприятие сразу же в плоскость экономической выгоды для сисадмина, ибо на мой взгляд, настройка программного брандмауэра находится на втором месте, после лечения компьютера от вирусов, и перед восстановлением данных- по соотношению заработанных средств к затраченному времени. Поскольку на настройку программного фаервола на базе FreeBSD тратится от 6 до 10 часов, с момента как вы включили пустую машину, до момента когда вы можете уже включать данный сервер в разрез сети. Естественно, что поднять сам фаервол займет от силы полтора-два часа на создание и обкатку правил: большую часть времени занимает пересборка и апгрейд системы.</p>
<p>Также надо отметить, что данный пост повествует исключительно о настройке фаервола, а не унифицированного средства защиты с потоковым антивирусом и IPS, о которых я возможно поговорю позднее.</p>
<p>Итак- настраиваем программный фаервол на базе FreeBSD.</p>
<p><span id="more-1458"></span>Ставить буду ipfilter, исключительно по идейным соображениям работы ipfw с NAT и тем что сам функционал ipfilter для меня проще и давно изучен (опять же про установку PF расскажу как нить позже, но его ставить на конторский фаервол усомнился, так как имеются траблы с многопоточностью). Описывать процедуры я буду не полностью, так как, о части работ я уже писал ранее, так что просто отошлю к этим постам.</p>
<p>Для начала поднимаем сервер FreeBSD (я для последнего раза выбрал систему FreeBSD 8.2), на котором проводим <a title="обновление дерева портов" href="http://odminblog.ru/ports-update-freebsd/">обновление системы и дерева портов</a>, после чего раздракониваем нашу систему на <a title="настройка защищенной системы FreeBSD" href="http://odminblog.ru/hardening-freebsd/">предмет повышения безопасности</a>. После этого <a title="пересборка ядра FreeBSD" href="http://odminblog.ru/kernel-update/">пересобираем ядро системы</a>, отключая не нужные нам дрова (тут не лишне будет перелопатить dmesg на предмет наличия устройств, чтобы не забанить что-нить архиважное- например IPv4 вместо IPv6), и предварительно включив в ядре поддержку ipfilter:<br />
<strong>options     IPFILTER </strong> <em># поддержка IPFilter</em><br />
<strong>options     IPFILTER_LOG</strong> <em> # поддержка логирования IPFilter</em><br />
<strong>options     IPFILTER_DEFAULT_BLOCK</strong> <em># блокируем все пакеты по умолчанию</em><br />
<strong>options     IPFILTER_LOOKUP</strong><br />
также, если не добавляли при настройке усиленной системы, то ставим следующие опции ядра<br />
<strong>options IPSTEALTH</strong> <em># не увеличивает счетчик TTL при прохождении пакета</em><br />
<strong>options TCP_DROP_SYNFIN</strong> <em># дропаем SYN/FIN пакеты, но не работает вроде как с 7 ветки</em><br />
<strong>options SC_DISABLE_REBOOT</strong> <em># запрет перезагрузки сервера через Ctrl+Alt+Del</em><br />
<strong>options         SOFTUPDATES</strong> <em># включение технологиии softupdate для тюнинга работы системы</em></p>
<p>По хорошему, перед правкой ядра стоит на всякий случай почитать следующие файлы, хотя бы для повышения личной образованности, а уж в случае наличия ошибок при сборке ядра- однозначно:<br />
<strong>/usr/sys/UPDATING<br />
/usr/src/sys/conf/NOTES</strong></p>
<p>Пересборку ядра проводим с включенными опами, только в случае локальной установки, в случае же удаленной установки, от греха- сначала настраиваем правила ipf и врубаем поддержку фаервола в rc.conf, только после чего пересобираем ядро, чтобы не получилось лока фаервола в удаленном офисе, что является классическим косяком удаленного админа.</p>
<p>Затем включаем в системе поддержку фаервола, путем добавления следующих операндов в файл <strong>/etc/rc.conf</strong> :<br />
######################################<br />
<strong>ipfilter_enable=&#8221;YES&#8221;<br />
ipnat_enable=&#8221;YES&#8221;<br />
ipfilter_rules=&#8221;/etc/ipf.rules&#8221;<br />
ipnat_rules=&#8221;/etc/ipnat.rules&#8221;<br />
gateway_enable=&#8221;YES&#8221;<br />
icmp_bmcastecho=&#8221;YES&#8221;<br />
ipmon_enable=&#8221;YES&#8221;<br />
ipmon_flags=&#8221;-D /var/log/ipmon.log &amp;&#8221;</strong><br />
########################################</p>
<p>Создаем вышеупомянутые файлы <strong>ipf.rules</strong> и <strong>ipnat.rules</strong> , делаем их владельцем root и задаем на них права 644. Затем создаем правило полного доступа для всех в файле <strong>/etc/ipf.rules</strong>. Естественно что помимо lo0, добавляем все имеющиеся в системе интерфейсы и особенно те, через которые мы и настраиваем сервер- в моем случае это внутренний интерфейс rl0.<br />
#################################<br />
pass in quick on lo0 all<br />
pass out quick on lo0 all<br />
pass out quick on rl0 all<br />
pass in quick on rl0 all<br />
#################################</p>
<p>После этого можем пересобирать ядро и перегружать машину с тем, чтобы инстальнуть новое ядро, а затем, сыграв победное соло на бубне, по корректной загрузке машины, продолжить настройку остальных опций.</p>
<p>Далее несколько подправляем работу ядра через файл настроек  <strong>/etc/sysctl.conf</strong> для добавления всяческих фич противодействия DoS и DDoS атакам, а также повышению безопасности системы, которые сохраняются, благодаря файлу, в системе и после перезагрузки. Здесь их подробно описывать не буду, а как нить позже приведу полный разбор полетов- пока просто вписываем в указанный файл следующие значения (файл создаем при его отсутствии):</p>
<p><strong>net.inet6.ip6.redirect=0<br />
kern.ipc.somaxconn=32768<br />
net.inet.tcp.blackhole=1<br />
net.inet.udp.blackhole=1<br />
net.inet.tcp.msl=7500<br />
net.inet.tcp.sendspace=32768<br />
net.inet.tcp.recvspace=32768<br />
net.inet.tcp.syncookies=1<br />
net.inet.tcp.log_in_vain=1<br />
net.inet.udp.log_in_vain=1<br />
net.inet.tcp.sack.enable=1<br />
net.link.ether.inet.max_age=1200<br />
net.inet.ip.redirect=0<br />
net.inet.ip.sourceroute=0<br />
net.inet.ip.accept_sourceroute=0<br />
net.inet.ip.ttl=64<br />
net.inet.ip.random_id=1<br />
net.inet.ip.forwarding=1<br />
net.inet.ip.check_interface=1<br />
net.inet.icmp.bmcastecho=0<br />
net.inet.icmp.maskrepl=0<br />
net.inet.icmp.maskrepl=0<br />
net.inet.icmp.icmplim=30<br />
net.inet.icmp.icmplim_output=0<br />
net.inet.icmp.drop_redirect=1<br />
net.inet.icmp.log_redirect=1</strong></p>
<p><strong>net.inet.tcp.drop_synfin=1</strong> <em># если подключили в ядре опцию TCP_DROP_SYNFIN</em></p>
<p>Затем настраиваем ротацию логов фаервола, для чего устанавливаем пакет logrotate:<br />
<strong># cd /usr/ports/sysutils/logrotate/<br />
# make &amp;&amp; make install &amp;&amp; make clean</strong><br />
Создаем и настраиваем конфиг ротации логов:<br />
<strong># cp /usr/local/etc/logrotate.conf.sample /usr/local/etc/logrotate.conf</strong><br />
добавляем в файл logrotate.conf следующие строки<br />
############### <strong>logrotate.conf</strong><br />
<strong>/var/log/ipmon.log {</strong><br />
<strong>Daily </strong><em># какова периодичность ротации логов</em><br />
<strong>rotate 14</strong> <em># какое количество логов хранить</em><br />
<strong>missingok </strong><em># игнорировать отсуствие файла ipmon.log</em><br />
<strong>notifempty </strong><em>#  не обрабатывать лог файл, если он пустой</em><br />
<strong>noolddir </strong><em># содержать все файлы логов в одном каталоге</em><br />
<strong>compress </strong><em>#  сжимать обработанные логи</em><br />
<strong>postrotate </strong><em># описание что делать  с ipmon после ротации</em><br />
<strong>/sbin/killall -HUP ipmon</strong> <em># в нашем случае перезапустить ipmon</em><br />
<strong>endscript</strong> <em>#  конец описания действия после ротации</em><br />
<strong>} </strong> <em>#   конец описания ротации файла протокола ipfilter</em><br />
###########################</p>
<p>Добавляем наш ротатор логов в крон:<br />
<strong>0 1 * * * /usr/local/sbin/logrotate -s /var/lib/logrotate.status /usr/local/etc/logrotate.conf</strong></p>
<p>Создаем сам лог файл через команду<br />
<strong># touch <strong>/var/log/ipmon.log<br />
</strong></strong>ибо автоматом он не создастся, и с чувством глубокого удовлетворения переходим к настройке правил фаервола и адрес-трансляции пакетов.</p>
<p>Начем с правил NAT ибо их меньше и они проще (предположим что внешний интерфейс <strong>fxp0</strong>). Надо отметить что правило проксирования исходящих ftp-сессий ставится первым, за ним идут адрес-трансляции для внутренних серверов (адрес <strong>Server-FW_external_IP</strong> поднимается алиасом на внешнем интерфейсе фаервола), если их необходимо представить в инете, а за ними уже следуют правила ната для сетки:<br />
####### <strong>/etc/ipnat.rules </strong>#######</p>
<p><strong>map fxp0 internal_NET_IP/24 -&gt; FW_external_IP/32 proxy port ftp ftp/tcp</strong><strong><br />
</strong><em>### Безусловная трансляция на внутренний адрес</em><strong><br />
map fxp0 Server_exnternal_IP/32  -&gt; Server-FW_external_IP/32<br />
bimap fxp0 Server_external_IP/32 -&gt; Server-FW_external_IP/32<br />
</strong>##########<strong><br />
</strong><em>### Редирект порта с внешнего интерфейса фаервола на внутреннюю машину (как пример RDP)</em><strong><br />
rdr <strong>fxp0 </strong><strong>external_GW_IP</strong> port 3389 -&gt; <strong>Server_internal_IP</strong> port 3389 tcp</strong><br />
#########<strong><br />
map fxp0 internal_NET_IP/24 -&gt; 0.0.0.0/32<br />
map fxp0 internal_NET_IP/24 -&gt; FW_external_IP/32 portmap tcp/udp 20000:64000</strong> <em># натим порты</em><br />
############################</p>
<p>Теперь переходим к настройке самого муторного- правилам фаервола. Помним о том, что в классическом фаерволе перебор правил идет сверху вниз, поэтому все блокировки помещаем вниз, кроме единственных закрывающих атаки cifs. Также разрешаем внутрисетевой трафик в нашей локальной сети, что мы уже определили первыми правилами в самом начале (<strong>rl0 </strong>у нас внутренний интерфейс):<br />
####### <strong>/etc/ipf.rules</strong> #######<br />
<em>### Разрешаем внутрисетевой трафик</em><br />
<strong>pass in quick on lo0 all<br />
pass out quick on lo0 all<br />
pass out quick on rl0 all<br />
pass in quick on rl0 all</strong><br />
<em>### Лочим все прорезки в виндовые уязвимости</em><br />
<strong>block in log quick on fxp0 proto tcp from any to any port = 113<br />
block in log quick on fxp0 proto tcp/udp from any to any port = 135<br />
block in log quick on fxp0 proto tcp/udp from any to any port = 136<br />
block in log quick on fxp0 proto tcp/udp from any to any port = 137<br />
block in log quick on fxp0 proto tcp/udp from any to any port = 138<br />
block in log quick on fxp0 proto tcp/udp from any to any port = 139<br />
block out log on fxp0 proto tcp/udp from any to any port = 135<br />
block out log on fxp0 proto tcp/udp from any to any port = 136<br />
block out log on fxp0 proto tcp/udp from any to any port = 137<br />
block out log on fxp0 proto tcp/udp from any to any port = 138<br />
block out log on fxp0 proto tcp/udp from any to any port = 139<br />
block out log on fxp0 proto tcp/udp from any to any port = 445</strong><br />
<em>### Разрешаем NS-запросы из сети</em><br />
<strong>pass out quick on fxp0 proto tcp from any to DNS1 port = 53 flags S keep state keep frags<br />
pass out quick on fxp0 proto udp from any to DNS1 port = 53 keep state keep frags<br />
pass out quick on fxp0 proto tcp from any to DNS2 port = 53 flags S keep state keep frags<br />
pass out quick on fxp0 proto udp from any to DNS2 port = 53 keep state keep frags</strong><br />
<em>### Разрешаем выход пассивного FTP протокола</em><br />
<strong>pass out quick on fxp0 proto tcp from any to any port = 20 flags S keep state keep frags<br />
pass out quick on fxp0 proto tcp from any to any port = 21 flags S keep state keep frags</strong><br />
<em>### Разрешаем работу по ssh на нашем фаерволе на своем порту</em><br />
<strong>pass in quick on fxp0 proto tcp from any to any port = 19212 flags S keep state</strong><br />
<em>### Разрешаем протокол smtp только к почтовому серверу, для предотвращения работы потенциальных спам-ботов</em><br />
<strong>pass out quick on fxp0 proto tcp from any to MAIL_SERVER_IP port = 25 flags S keep state keep frags</strong><br />
<em>#### Разрешаем работу whois из сети</em><br />
<strong> pass out quick on fxp0 proto tcp from any to any port = 43 flags S keep state keep frags</strong><br />
<em>#### Разрешаем просмотр сайтов по http</em><br />
<strong>pass out quick on fxp0 proto tcp from any to any port = 80 flags S keep state keep frags</strong><br />
<em> ### Получаем почту по pop3</em><br />
<strong>pass out quick on fxp0 proto tcp from any to any port = 110 flags S keep state keep frags</strong><br />
<em>### Разрешаем работу по протоколу https</em><br />
<strong>pass out quick on fxp0 proto tcp from any to any port = 443 flags S keep state keep frags<br />
pass out quick on fxp0 proto tcp from any to any port = 591 flags S keep state keep frags</strong><br />
<em>### Разрешаем работу по FTP в пассивном режиме, когда сервер выбирает порт для работы</em><br />
<strong>pass out quick on fxp0 proto tcp from any to any port &gt; 1023 flags S keep state keep frags</strong><br />
<em># Разрешаем работу traceroute</em><br />
<strong>pass out quick on fxp0 proto udp from any to any port 33434 &gt;&lt; 33525 keep state keep frags</strong><br />
<em># Разрешаем пинг во вне</em><br />
<strong>pass out quick on fxp0 proto icmp from any to any keep state keep frags</strong><br />
<em>### Разрешаем вход внутрь сетки по RDP</em><br />
<strong>pass in log quick on fxp0 proto tcp from any to RDP_Server_IP port = 3389 flags S keep state keep frags</strong><br />
<em>### Разрешаем из сети работу линейки <img src='http://odminblog.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em><br />
<strong>pass out quick in fxp0 proto tcp/udp from Client_IP to  217.117.182.1 port &gt; 10 keep state<br />
pass in quick on fxp0 proto tcp/udp from  217.117.182.1 to GW_internal_IP port &gt; 10 keep state<br />
pass out quick in fxp0 proto tcp/udp from any to any port = 2106 keep state<br />
pass in quick on fxp0 proto tcp/udp from any to any port = 2106 keep state</strong><br />
<em>### Обрабатываем работу icmp протокола</em><br />
<strong>pass in on fxp0 proto icmp from any to any icmp-type echo<br />
pass in on fxp0 proto icmp from any to any icmp-type echorep<br />
pass in quick on fxp0 proto icmp from any to any icmp-type 3 keep state keep frags<br />
pass in quick on fxp0 proto icmp from any to any icmp-type 11 keep state keep frags<br />
block return-icmp (3) in proto udp from any to any port &gt; 30000<br />
block return-icmp (3) in on fxp0 proto icmp from any to any icmp-typenunreach code 3<br />
block in proto icmp all</strong><br />
<em>### Блокируем все остальное</em><br />
<strong>block out log first quick on fxp0 all<br />
block in quick on fxp0 from 192.168.0.0/16 to any    #RFC 1918 private IP<br />
block in quick on fxp0 from 172.16.0.0/12 to any     #RFC 1918 private IP<br />
block in quick on fxp0 from 10.0.0.0/8 to any        #RFC 1918 private IP<br />
block in quick on fxp0 from 127.0.0.0/8 to any       #loopback<br />
block in quick on fxp0 from 0.0.0.0/8 to any         #loopback<br />
block in quick on fxp0 from 169.254.0.0/16 to any    #DHCP auto-config<br />
block in quick on fxp0 from 192.0.2.0/24 to any      #reserved for docs<br />
block in quick on fxp0 from 204.152.64.0/23 to any   #Sun cluster interconnect<br />
block in quick on fxp0 from 224.0.0.0/3 to any       #Class D &amp; E multicast<br />
block in log quick on fxp0 all with frags<br />
block in log quick on fxp0 proto tcp all with short<br />
block in log quick on fxp0 all with opt lsrr<br />
block in log quick on fxp0 all with opt ssrr<br />
block in log first quick on fxp0 proto tcp from any to any flags FUP<br />
block in log quick on fxp0 all with ipopts<br />
block in log quick on fxp0 proto icmp all icmp-type 8<br />
block in log first quick on fxp0 all<br />
block in log all<br />
block out log all</strong><br />
#####################</p>
<p>Также добиваем сюда правила необходимые для вашей локальной сети, например банки-клиенты, специфические программы- игрушки, и добавляем их в секцию разрешенных пакетов. Только мой совет- обязательно описывайте отдельно все порты отличные от стандартных, ибо в большой сети, через полгода опытной эксплуатации фаервола- смотреть на фаервольные правила можно будет только сквозь слезы и с вооружившись бутылкой коньяка. Если что то не работает или не понимаете как <strong>ЭТО </strong>следует разрешать, то отсматривайте логи- обычно инфы о блокировках из них вполне достаточно для того, чтобы понять что именно следует разрешать.</p>
<p>Хотелось бы также заметить следующий момент- при любых правках вносимых в таблицу правил, создавайте ревизию, и тогда в случае ошибки, вы сможете максимально быстро откатиться к предыдущей версии и после этого уже искать случайно поставленный или, наоборот, забытый символ, ибо правила также считываются от начала файла, и как только пакет встречает не разрешимый символ или выражение- применение правил заканчивается и вы получаете только тот набор правил, что успели всосаться в систему.</p>
<p>З.Ы. Хотел написать об этом моменте в отдельном посте, но решил что это будет не очень корректно, так что привожу в виде небольшого послесловия. Дело в том, что файл правил фаервола ipf поддерживает набор переменных, что конечно же гораздо удобнее для системного администратора, так как позволяет переносить файл правил с одного шлюза на другой, корректируя только объявления переменных в самом начале файла. Одна беда, что сам пакет ipf не понимает переменные и файл с ними надо сохранять в отдельный скрипт <strong>/etc/ipf.rules.script</strong>, запуская который пользователь создает или обновляет правила в файле ipf.rules. В сам скрипт пишется следующее:<br />
### <strong>ipf.rules.script</strong> ###</p>
<p><em>### Описание переменных</em><br />
<strong>oif=&#8221;fxp0&#8243; </strong> <em># имя внешнего интерфейса</em><br />
<strong>odns=&#8221;DNS1-IP&#8221;</strong> <em># IP адрес внешного DNS сервера</em><br />
<strong>mynet=&#8221;172.168.0.0&#8243;</strong> <em># Внутренняя сетка</em><br />
<strong>ks=&#8221;keep state&#8221;<br />
fsks=&#8221;flags S keep state&#8221;<br />
###<br />
cat &gt; /etc/ipf.rules &lt;&lt; EOF</strong><em><br />
# Доступ из сети к внешнему DNS серверу</em><br />
<strong>pass out quick on $oif proto tcp from any to $odns port = 53 $fks<br />
pass out quick on $oif proto udp from any to $odns port = 53 $ks</strong><br />
<em># Разрешить выход из сети во вне по http</em><br />
<strong>pass out quick on $oif proto tcp from $mynet to any port = 80 $fks</strong><br />
<em> #### ну и так далее</em></p>
<p>После изменения правил фаервола необходимо запустить данный скрипт, что бы правила перечитались и файл ipf.rules обновился:<br />
<strong># sh /etc/ipf.rules.script</strong></p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/bag-proxozhdeniya-paketov-keep-state-cherez-faervol-ipf/" rel="bookmark" class="crp_title">Баг прохождения пакетов keep state через фаервол IPF</a></li><li><a href="http://odminblog.ru/optimizaciya-raboty-ipf-i-ipnat/" rel="bookmark" class="crp_title">Оптимизация работы ipf и ipnat</a></li><li><a href="http://odminblog.ru/ssh-post-low-chance-of-hack/" rel="bookmark" class="crp_title">Смена порта SSH-сервера как мера безопасности</a></li><li><a href="http://odminblog.ru/backup-mars-config-to-nfs/" rel="bookmark" class="crp_title">Резервирование MARS на NFS том Linux</a></li><li><a href="http://odminblog.ru/usage-of-tcpdump/" rel="bookmark" class="crp_title">Использование утилиты tcpdump</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/nastroyka-programmnogo-firewall-na-baze-freebsd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Как настроить машрутизатор средствами FreeBSD</title>
		<link>http://odminblog.ru/kak-nastroit-mashrutizator-sredstvami-freebsd/</link>
		<comments>http://odminblog.ru/kak-nastroit-mashrutizator-sredstvami-freebsd/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 12:07:46 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Сети]]></category>
		<category><![CDATA[Сетевые протоколы]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1262</guid>
		<description><![CDATA[В связи с появившимся в обилии свободным временем могу подтянуть все свои стародавние статейки относительно различных фрёвых сервисов, которые уже лет 6-7 валялись у меня на диске в ожидании когда же до них наконец то дойдут руки, и вот потихоньку это время настало.
Так что не боясь предстать капитаном очевидность в этот раз я распишу как [...]]]></description>
			<content:encoded><![CDATA[<p>В связи с появившимся в обилии свободным временем могу подтянуть все свои стародавние статейки относительно различных фрёвых сервисов, которые уже лет 6-7 валялись у меня на диске в ожидании когда же до них наконец то дойдут руки, и вот потихоньку это время настало.</p>
<p>Так что не боясь предстать капитаном очевидность в этот раз я распишу как организовать программный маршрутизатор средствами FreeBSD. И хотя писалось все это еще под 4.2, но тем не менее и под 7.4 все эти же рецепты применимы, разве только с той разницей, что все пакеты отличаются версиями с большую сторону.  Сказать откровенно, я предпочитаю программные маршрутизаторы за их дешевизну, простоту и быстроту в настройке, поскольку для программного маршрутизатора сгодится любая древняя машинка, главное чтобы в ней была возможность поставить дополнительные сетевухи. При этом программный маршрутизатор отличается от аппаратных аналогов тем, что произведя один раз настройку маршрутизатора вы следующий настроите уже за полчаса, а не будите копаться в мануалах нового для вас агрегата, купленного клиентом с оказией, не понимая почему це фича вдруг оказалась багой. К тому же вменяемый аппаратный маршрутизатор стоит не малых денег и вполне сопоставим по стоимости с хорошим компом, который помимо того что будет с сотни раз мощнее, также при этом сможет, естественно при желании, стать принт-сервером, фаерволом, проксей, поточным антивирем и еще чем угодно, и что самое основное- это решение маштабируемое, то есть добавление нового интерфейса сопряжено с гораздо меньшими затратами, нежели при попытке расширения аппаратного маршрутизатора, главное подобрать материнку с 2-3 слотами под сетевуху, ибо найти две интегрированные не проблема. И естественно формула скорость работы/цена для программного маршрутизатора будет на порядки ниже аппаратного, так как стоимость гигабитного маршрутизатора уже будет сопоставима с покупкой мощного сервера для офиса.  Ну это просто вода относительно того за что я люблю программные рутеры, а теперь собственно перейдем к самой настройке маршрутизатора.</p>
<p><span id="more-1262"></span>Для начала устанавливаем систему FreeBSD 7.4 и настраиваем её в соответствии с нашими требованиями, то есть можно настроить как <a title="защищенная система FreeBSD" href="http://odminblog.ru/hardening-freebsd/">защищенную систему</a> если она торчит в инет, или служит для защиты серверной фермы от локалки; ну а ленивцы могут ограничиться просто установкой нужных пакетов, если она будет служить просто для маршрутизации пакетов между сетями внутренней сети предприятия.</p>
<p>Собственно для начала имеем две сетки: 192.168.0.0/24 (основная) и 192.168.10.0/24 (дополнительная) которые нам и надо совокупить посредством нашего настроенного сервера FreeBSD, в который мы же загодя воткнули две-три-четыре и более сетевых карт (максимум который у меня прекрасно существовал было 5 сопряженных сетей, не считая вирутальных интерфейсов). Предположим что для сетевых интерфейсов мы выбрали IP адреса: 192.168.0.1 и 192.168.10.1</p>
<p>Смотрим что за интернерфейсы установлены в системе:<br />
<strong># ifconfig</strong><br />
тут нам главное понять какой интерфейс какой, для чего не плохо было бы ознакомиться с чипами карт. Порядок интерфейсов обычно идет от проца к периферии, а у дополнительных интерфейсов в зависимости от нумерации слотов, возрастая от видюхи. Но проверить все это можно эмперическим путем просто воткнув рабочий кабель в систему, посе чего интерфейс перейдет из статуса status: no carrier в status: active. Предположим у нас в системе два интерфейса rl0 и rl1.<br />
Поняв какие интерфейсы будем сопрягать, идем в /etc/rc.conf и добавляем необходимый интерфейс, так как там уже должен присуствовать один из интерфейсов, если в процессе настройки системы FreeBSD мы поднимали сетку.<br />
<em><strong>##### /etc/rc.conf #####</strong><br />
ifconfig_rl0=&#8221;inet 192.168.0.1  netmask 255.255.255.0&#8243;<br />
ifconfig_rl1=&#8221;inet 192.168.10.1  netmask 255.255.255.0&#8243;<br />
#####################</em><br />
Чтобы поднять теперь интерфейс, выполним<br />
<strong># /etc/netstart</strong><br />
Второй интерфейс rl1 ожил и теперь пингуется из подсети 192.168.10.1, но для того чтобы сервер настроить как маршрутизатор необходимо в ядре разрешить пересылку пакетов между пакетами, за что отвечает парметр net.inet.ip.forwarding. Его значение в системе в данный момент:<br />
<strong># sysctl net.inet.ip.forwarding<br />
net.inet.ip.forwarding: 0</strong><br />
где значение 0 означает что маршрутизация запрещена, поэтому для включения функционала маршрутизации, нам необходимо присвоить этому значению 1, для чего выполняем:<br />
<strong># sysctl net.inet.ip.forwarding=1<br />
net.inet.ip.forwarding: 0 -&gt; 1</strong><br />
Теперь настройка маршрутизации завершена и маршрутизатор будет фурычить до перезагрузки системы, после чего значение net.inet.ip.forwarding переключится обратно в 0. Для того чтобы избежать этого добавляем в файл /etc/rc.conf следующую строку:<br />
<em>gateway_enable=&#8221;YES&#8221;</em><br />
после чего уже безбоязненно можем перегрузить машину.<br />
При такой схеме наш маршрутизатор будет рутить только сопряженные с ним сети, представленные интерфейсами, или же алиасами на интерфейсах, в том же случае когда у нас в сети уже существуют маршрутизаторы, прикрывающие еще какие то сети, то тогда поднимаем на нашей машине статическую таблицу маршрутизации. Делается это также в файле /etc/rc.conf<br />
<em><strong>##### /etc/rc.conf #####</strong><br />
static_routes=&#8221;network1 network2 network3&#8243;<br />
route_network1=&#8221;-net 10.10.15.0/24 192.168.0.25&#8243;<br />
route_network2=&#8221;-net 172.168.10.0/24 192.168.0.25&#8243;<br />
route_network3=&#8221;-net 192.168.168.0/24 192.168.10.111&#8243;<br />
#####################</em><br />
то есть мы задаем названия маршрутов, которые дальше выводим в виде сетки, и внешнего, для нашего маршрутизатора, интерфейса шлюза.<br />
Также в случае использовании настроенного сервера FreeBSD в качестве внутреннего маршрутизатора, необходимо на внешнем шлюзе, заданном для рабочих станций и серверов сети дефолтным маршрутом, поднять маршрутизацию на внутреннюю сеть задав маршрут в 192.168.10.0, через 192.168.0.1. На самом деле тут обычно и возникает самый косячный момент, особенно в случае использования интернет шлюзом аппаратных фаерволов типо D-Link, у которых вроде функционал рутинга имеется, но чтобы настроить удаленный маршрут надо долго и упорно танцевать с бубном, так что гораздо проще для нашего уже настроенного маршрутизатора задать дефолтовым маршрутом интернет-шлюз, а все машины предприятия завернуть на него- это добавит лишний хоп, но уберет проблему настройки маршрутизации на сторонних серверах.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/nastrojka-routing-v-ms-windows/" rel="bookmark" class="crp_title">Настройка маршрутизации в MS Windows</a></li><li><a href="http://odminblog.ru/nastroyka-ip-v-centos/" rel="bookmark" class="crp_title">Настройка IP в CentOS</a></li><li><a href="http://odminblog.ru/ogranichenie-dostupa-ssh-po-ip/" rel="bookmark" class="crp_title">Ограничение доступа ssh по IP в CentOS</a></li><li><a href="http://odminblog.ru/cashing-dns-server-under-bind/" rel="bookmark" class="crp_title">Настройка кеширующего DNS сервера на базе BIND</a></li><li><a href="http://odminblog.ru/obyedinyaem-interface-v-centos/" rel="bookmark" class="crp_title">Объединяем интерфейсы в CentOS</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/kak-nastroit-mashrutizator-sredstvami-freebsd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Как определить версию Unix системы</title>
		<link>http://odminblog.ru/kak-opredelit-versiyu-unix-sistemy/</link>
		<comments>http://odminblog.ru/kak-opredelit-versiyu-unix-sistemy/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 21:50:20 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1255</guid>
		<description><![CDATA[Часто ли с вами бывало, что попав в гости в какую то квартиру вы начинаете спрашивать у живущих там людей, что это за квартира, что за адрес и кто здесь живет? Полагаю не часто, ибо в этом случае хозяева квартиры довольно быстро вызовут вам скорую, которая с удовольствием отвезет в дурку. Но вот при работе [...]]]></description>
			<content:encoded><![CDATA[<p>Часто ли с вами бывало, что попав в гости в какую то квартиру вы начинаете спрашивать у живущих там людей, что это за квартира, что за адрес и кто здесь живет? Полагаю не часто, ибо в этом случае хозяева квартиры довольно быстро вызовут вам скорую, которая с удовольствием отвезет в дурку. Но вот при работе с юниксовыми системами частенько возникает необходимость попав в новую среду опознать что это вообще за система, ибо нормально настроенный логин выдает только время логина и хостнейм. И тогда нам на помощь приходят утилиты определения версии операционки.</p>
<p>Для начала понимаем что это вообще за класс операционки, путем вывода универсальной для всех Unix-систем команды:<br />
<strong>$ uname -a</strong><br />
которая нам выведет что то типо такого:<br />
<em>Linux hostname.com 2.6.18-194.17.4.el5PAE #1 SMP Mon Oct 25 16:35:27 EDT 2010 i686 i686 i386 GNU/Linux</em><br />
или<br />
<em>FreeBSD hostname.com 5.5-STABLE FreeBSD 5.5-STABLE #0: Wed Dec  5 20:00:38 MSK 2007  email@</em><em>hostname.com</em><em>:/usr/obj/usr/src/sys/GENERIC  i386</em><br />
или<br />
<em>AIX svcas07 3 4 000145364C00<br />
OS Name Release Version Machine ID</em><br />
из чего нам либо станет понятно кто это, либо перейдем к более подробному изучению линуха, для того чтобы уже конкретно определить версию линукса:<br />
<strong>$ cat /proc/version </strong><br />
<em>Linux version 2.6.18-194.17.4.el5PAE (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Mon Oct 25 16:35:27 EDT 2010</em><br />
то есть нам понятно семейство линуха и версия ядра, тем более что у семейства шапки есть более подробная команда, для того чтобы узнать версию linux:<br />
<strong>$ cat /etc/redhat-release</strong><br />
<em>CentOS release 5.6 (Final)</em><br />
По хорошему это исчерпывающий ответ, но в шапке также имеется дополнительная утилита ставящаяся в полном комплекте, которая выведет более подробную информацию про версию linux:<br />
<strong>$ lsb_release -a</strong><br />
<em>LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch<br />
Distributor ID: CentOS<br />
Description:    CentOS release 5.5 (Final)<br />
Release:        5.5<br />
Codename:       Final</em></p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/cpinfo-usage/" rel="bookmark" class="crp_title">Использование утилиты CPinfo</a></li><li><a href="http://odminblog.ru/ports-update-freebsd/" rel="bookmark" class="crp_title">Обновление локального дерева портов FreeBSD</a></li><li><a href="http://odminblog.ru/egroupware-installing/" rel="bookmark" class="crp_title">Установка eGroupWare</a></li><li><a href="http://odminblog.ru/remote-x-connection-to-centos/" rel="bookmark" class="crp_title">Удаленное X-подключение к серверу CentOS</a></li><li><a href="http://odminblog.ru/packets-install-in-linux/" rel="bookmark" class="crp_title">Установка пакетов в Linux</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/kak-opredelit-versiyu-unix-sistemy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пространные рассуждения про VoIP трафик</title>
		<link>http://odminblog.ru/prostrannye-rassuzhdeniya-pro-voip-trafik/</link>
		<comments>http://odminblog.ru/prostrannye-rassuzhdeniya-pro-voip-trafik/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 21:40:16 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[Check Point]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Дела Одминские]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[Checkpoint]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[настройка системы]]></category>
		<category><![CDATA[Сетевые протоколы]]></category>
		<category><![CDATA[Сети]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1147</guid>
		<description><![CDATA[Один из клиентов жадно захотел IP телефонию, в связи с чем начал понемногу рыть в этом направлении, но ощущение от знакомства с телефонизацией офиса по VoIP оказалось примерно такое же, как будто я заглянул в бездонный колодец, так что видимо ближайшие несколько недель у меня пройдут под эгидой SIP протокола.
Начну с того что я остановился [...]]]></description>
			<content:encoded><![CDATA[<p>Один из клиентов жадно захотел IP телефонию, в связи с чем начал понемногу рыть в этом направлении, но ощущение от знакомства с телефонизацией офиса по VoIP оказалось примерно такое же, как будто я заглянул в бездонный колодец, так что видимо ближайшие несколько недель у меня пройдут под эгидой SIP протокола.</p>
<p>Начну с того что я остановился сразу на платформе Asterisc, во первых потому что это наиболее популярный open-sourse, во-вторых потому что по данной платформе огромное количество полезной информации в интернете.</p>
<p>Погуглив, почитав и пообщавшись по форумам с людьми, выявил для себя следующие моменты:<br />
под платформу лучше всего использовать отдельный сервер, поскольку на виртуалке могут возникнуть траблы как с трафом, так и с производительными мощностями, особенно в случае если трафик от провайдера приходит в одном кодеке, а в офисе мы используем другой;<br />
для дедика вполне хватит сore2 или core i3, как минимум с 2Гб оперативы на борту, так что на первое время вполне сгодится какой нить десктоп, если руководство жмет деньги на приобретение полноценного сервера;<br />
использовать лучше кодек g711, при этом под каждый активный разговор отводится порядка 64 кбит/с, так что умножаем на это число количество входящих линий и получаем необходимую под VoIP полосу пропускания;<br />
использовать можно FreeBSD или CentOS, хотя тут мнения разделяются, как собственно и в любой холиваре- единственное что я пока осознал, что обновления для платформы Asterisc выходят на Cent OS с большим опозданием, по сравнению с фрей;<br />
для сервака лучше использовать внешний, отдельный IP, поскольку при пробросе SIP портов (5060 udp/tcp и выделенный upd диапазон для траффа) через NAT могут возникнуть проблемы (в моем случае точно, поскольку на D-Link&#8217;e эти проблемы возникли даже при пробросе rdp);<br />
можно использовать аналоговые телефоны, но для них придется докупать либо специальную карту в сервер, чья стоимость составляет около 2к грина, либо же VoIP шлюз, который также стоит в районе 200 грин;<br />
цены на IP-телефоны начинают от 4к за более менее нормальные аппараты, так что имеет резон использовать бесплатные софтовые клиенты, так как в этом случае контора попадает только на гарнитуры, чья стоимость составляет от 700 рублей за штуку;<br />
если планируется иметь факс, то его лучше вешать на аналоговую линию, поскольку для передачи факсимильных сообщений требуется идеализированный траффик, в противном случае факсы будут приходить крайне отстойного качества;<br />
сама платформа Asterisc метит траффик, так что использовать для него приоритезацию траффика QoS не составляет проблемы;<br />
некоторые провайдеры имеют свойство зафильтровывать SIP траффик, чтобы потенциальные клиенты не пользовались сторонними сервисами, так что придется либо брать данный вид трафа у этого провайдера, либо же каким то образом договариваться с ним;<br />
в этом же ключе я пробивал возможность использования VoIP со шлюзом Checkpoint, который я уже успел несколько подзабыть за прошедшие полгода, в связи с чем выяснилось несколько моментов: в стандартной поставке Checkpoint FW будет корректно обрабатывать и пропускать VoIP траффик, и даже фильтровать его по политикам безопасности (при заведении объекта шлюза VoIP), а также симафорить с помощью IPS блейда, имеющего стандартными несколько сигнатур для проверки VoIP траффика. Но есть хочется чего то большего, то необходимо приобретать блейд  Voice over IP (VoIP) Software Blade, который этих сигнатур имеет большее количество и к тому же может не только проверять VoIP траффик, но и при необходимости вносить изменения в пакеты: транслировать адреса или вносить исправления в заголовки. Единственный момент здесь в том, что данный блейд встает только на версию R65, то есть весьма и весьма древнюю, так как на новых версиях SPLAT данный блейд не работает.</p>
<p>Пока эти размышления поставили мне мозги набекрень, так что ближайшие пару дней буду думать, куда мне копать дальше. Ну и да- главный аспект сколько за эти работы можно снять бабла- вот это для меня пока остается загадкой, так как сам не пойму во сколько можно оценить общий фимоз мозга, который я заработал за сегодняшний день, пока грыз всю эту инфу.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/bag-proxozhdeniya-paketov-keep-state-cherez-faervol-ipf/" rel="bookmark" class="crp_title">Баг прохождения пакетов keep state через фаервол IPF</a></li><li><a href="http://odminblog.ru/lechenie-problemy-so-skype/" rel="bookmark" class="crp_title">Лечение проблемы со Skype</a></li><li><a href="http://odminblog.ru/chto-vybratxrumer-ili-scrapebox/" rel="bookmark" class="crp_title">Что выбрать: xRumer или Scrapebox</a></li><li><a href="http://odminblog.ru/untangle-re-routing-ce-ne-baga-ce-ficha/" rel="bookmark" class="crp_title">Untangle Re-Routing: це не бага, це фича</a></li><li><a href="http://odminblog.ru/sravnenie-oborudovaniya-checkpoint-i-cisco/" rel="bookmark" class="crp_title">Сравнение оборудования Cisco и Check Point</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/prostrannye-rassuzhdeniya-pro-voip-trafik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Устанавливаем Splunk</title>
		<link>http://odminblog.ru/installing-splunk/</link>
		<comments>http://odminblog.ru/installing-splunk/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 14:35:05 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[Дела Одминские]]></category>
		<category><![CDATA[splunk]]></category>
		<category><![CDATA[настройка системы]]></category>
		<category><![CDATA[сервис]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=981</guid>
		<description><![CDATA[Собственно о системе Splunk я писал буквально в предыдущем посте, так что добавить ничего не могу, кроме того что это система управления инцидентами и событиями информационной безопасности. Ставить систему будем на FreeBSD 6.4, ибо она вся такая для меня приятная.
Итак поехали, ибо создатели пакета обещают что ставится она на раз-два-три:
# wget &#8216;http://www.splunk.com/index.php/download_track?file=4.1.4/freebsd/splunk-4.1.4-82143-FreeBSD-i386.tgz&#38;ac=&#38;wget=true&#38;name=wget&#38;typed=releases&#8217;
# tar -xzvf splunk-4.1.4-82143-FreeBSD-i386.tgz
Поскольку, [...]]]></description>
			<content:encoded><![CDATA[<p>Собственно <a href="http://odminblog.ru/siem-splunk-udobnoe-upravlenie-logami/" target="_blank">о системе Splunk</a> я писал буквально в предыдущем посте, так что добавить ничего не могу, кроме того что это система управления инцидентами и событиями информационной безопасности. Ставить систему будем на FreeBSD 6.4, ибо она вся такая для меня приятная.<br />
Итак поехали, ибо создатели пакета обещают что ставится она на раз-два-три:</p>
<p># wget &#8216;http://www.splunk.com/index.php/download_track?file=4.1.4/freebsd/splunk-4.1.4-82143-FreeBSD-i386.tgz&amp;ac=&amp;wget=true&amp;name=wget&amp;typed=releases&#8217;<br />
# tar -xzvf splunk-4.1.4-82143-FreeBSD-i386.tgz</p>
<p>Поскольку, как оказалось, пакет пришел нам в уже собранном виде, то оправляем его по месту постоянного жительства:<br />
# cp -R splunk /usr/local/</p>
<p>Перед запуском системы необходимо внести изменения в конфигурационные файлы:</p>
<p><strong>/boot/loader.conf</strong><br />
<em>kern.maxdsiz=&#8221;2147483648&#8243; # 2GB<br />
kern.dfldsiz=&#8221;2147483648&#8243; # 2GB<br />
machdep.hlt_cpus=0 </em></p>
<p><strong>/etc/sysctl.conf</strong><br />
<em>vm.max_proc_mmap=2147483647</em></p>
<p>После этого перегружаем сервер для того чтобы изменения вступили в силу. При желании можем создать ручками пользователя от которого будет работать splunk, а также и его группу, но мне что то сегодня в ломы. Поэтому запускаем сервис: перед первым запуском сервера необходимо согласиться с лицензионным соглашением, для этого стартуем:<br />
<strong># $SPLUNK_HOME/bin/splunk start &#8211;accept-license</strong></p>
<p>После некоторого диалога, сервер сообщит, что он теперь запущен на http://our_server_hostname:8000 хотя зайти можно и по адресу http://our_server_IP:8000. В данном случае 8000 это дефолтный порт нашего веб сервера.</p>
<p>Теперь переходим к настройке сервера.<br />
Логин и пароль по умолчанию для входа в web-консоль:<br />
<strong>username: admin<br />
password: changeme</strong></p>
<p>В верхнем правом углу белеет на темном фоне кнопочка Manager, нажав на которую мы попадаем в общирное меню, позволяющее нам настроить наш сервер в разделе System configurations, а также добавить необходимые модули Apps, собития, поиски и прочая в разделе Apps and knowledge.</p>
<p>В System settings задается хостнейм и настраиваются веб-морда сервера, а также параметры индексирования. Также настраивается отправка алертов по почте и всевозможные уровни логирования, которых доступно шесть вариантов: DEBUG, INFO, WARN, ERROR, CRIT, FATAL.</p>
<p>На сегодня хватит, на днях распишу больше- но по сути настройка системы заканчивается именно на этом разделе- дальше идет уже тюнинг, причем интерфейс интуитивно понятен и прост.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/siem-splunk-udobnoe-upravlenie-logami/" rel="bookmark" class="crp_title">SIEM Splunk &#8211; удобное управление логами</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/su2-install/" rel="bookmark" class="crp_title">Установка утилиты su2</a></li><li><a href="http://odminblog.ru/remote-x-connection-to-centos/" rel="bookmark" class="crp_title">Удаленное X-подключение к серверу CentOS</a></li><li><a href="http://odminblog.ru/mysql-server-install/" rel="bookmark" class="crp_title">Установка сервера БД MySQL</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/installing-splunk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка защищенной системы FreeBSD</title>
		<link>http://odminblog.ru/hardening-freebsd/</link>
		<comments>http://odminblog.ru/hardening-freebsd/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 11:15:21 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[защищенная система]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=519</guid>
		<description><![CDATA[При использовании того или иного сервиса очень большую роль играет система на которой будет работать наш сервер. И наибольшее значение предварительная настройка этой системы, чтобы минимизировать риски от её использования. Для этого существуют процедуры повышения безопасности системы
В этом разборе полетов я буду осуществлять предварительную настройку системы FreeBSD 7.2. Сама система FreeBSD является одной из наиболее [...]]]></description>
			<content:encoded><![CDATA[<p>При использовании того или иного сервиса очень большую роль играет система на которой будет работать наш сервер. И наибольшее значение предварительная настройка этой системы, чтобы минимизировать риски от её использования. Для этого существуют процедуры повышения безопасности системы</p>
<p>В этом разборе полетов я буду осуществлять предварительную настройку системы FreeBSD 7.2. Сама система FreeBSD является одной из наиболее защищенных операционных систем, причем её код, не смотря на открытую идеологию open sourse многократно проверяется и тестируется. Не смотря на то, что с комплекте поставки FreeBSD уже идет с сильной безопасностью, существуют меры по её повышению почти до параноидального режима работы.</p>
<p><span id="more-519"></span>Для начала мы ставил чистую систему FreeBSD 7.2 и поднимаем на ней стандартный сервер sshd2, чтобы не сидеть в консоли. После этого приступаем к настройкам:</p>
<p>В системе достаточно иметь только одну директорию для хранения временных файлов, хотя в стандартной упаковке их две /tmp и /var/tmp , поскольку разные пакеты используют разные директории. Поскольку нам достаточно одной, то ограничим их в этом свободном выборе, удалив /var/tmp</p>
<p># mv /var/tmp/* /tmp/<br />
# rm -rf /var/tmp<br />
# ln -s /tmp /var/tmp</p>
<p>Следом отрубаем возможность входа в консоль под пользователем root, ибо заход под ним дает пользователю сразу же неограниченные права на систему. Поэтому пользователь должен подключаться под собой и только после это забирать права с помощью использования команды su. Для это открываем файл  /etc/ttys и меняем каждую запись &#8220;secure&#8221; на &#8220;insecure&#8221;, что запретит пользователю root подключаться к консоли. Это же изменение будет будет требовать пароль пользователя root при рагрузке в однопользовательском режиме системы (single-user mode), что в свою очередь значительно усложнит изменение пароля суперпользователя.</p>
<p># vi /etc/ttys<br />
#########################################################<br />
console none                            unknown off insecure<br />
#<br />
ttyv0   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
# Virtual terminals<br />
ttyv1   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
ttyv2   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
ttyv3   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
ttyv4   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
ttyv5   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
ttyv6   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
ttyv7   &#8220;/usr/libexec/getty Pc&#8221;         cons25  on  insecure<br />
ttyv8   &#8220;/usr/X11R6/bin/xdm -nodaemon&#8221;  xterm   off insecure<br />
# Serial terminals<br />
# The &#8216;dialup&#8217; keyword identifies dialin lines to login, fingerd etc.<br />
ttyd0   &#8220;/usr/libexec/getty std.9600&#8243;   dialup  off insecure<br />
ttyd1   &#8220;/usr/libexec/getty std.9600&#8243;   dialup  off insecure<br />
ttyd2   &#8220;/usr/libexec/getty std.9600&#8243;   dialup  off insecure<br />
ttyd3   &#8220;/usr/libexec/getty std.9600&#8243;   dialup  off insecure<br />
# Dumb console<br />
dcons   &#8220;/usr/libexec/getty std.9600&#8243;   vt100   off insecure<br />
#########################################################</p>
<p>Закручиваем безопасность для ssh сервера. Как его вывести на совсем параноидальный режим, буду разбирать позднее. Пока же ограничиваем пользователей имеющих право на вход в консоль, запрещаем вход с пустым паролем и вход пользователю root. Также ограничиваем время отводимое на подключение к серверу и количество попыток.  Включаем вторую версию SSHv2 вместо идущей по умолчанию первой, т.к. она обеспечивает более высокую безопасность соединения. Поскольку использовать X11 на рабочем сервере мы не планируем то отключим опцию форвардинга.</p>
<p># vi /etc/ssh/sshd_config<br />
#########################################################<br />
Protocol 2<br />
SyslogFacility AUTH<br />
LogLevel INFO<br />
LoginGraceTime 15s<br />
PermitRootLogin no<br />
AllowUsers anchous<br />
StrictModes yes<br />
MaxAuthTries 3<br />
PermitEmptyPasswords no<br />
PrintLastLog yes<br />
UsePrivilegeSeparation yes<br />
UseDNS yes<br />
X11Forwarding no<br />
#########################################################</p>
<p>Теперь переходим к политикам хранения паролей. По умолчанию FreeBSD использует алгоритм md5 для хэширования паролей. Это стойкий и надежный 128-битный алгоритм, но некоторое время назад были найдены слабости в его реализации, поэтому рекомендуется использовать алгоритм blowfish для хранения паролей. Для перевода системы хранения паролей в этот алгоритм, нам следует изменить несколько файлов. парои кстати не будут автоматически сконвертированы в blowfish, и будут храниться в md5 до следующего изменения.</p>
<p># echo &#8220;crypt_default=blf&#8221; &gt;&gt; /etc/auth.conf</p>
<p>После этого необходимо задать в файле /etc/login.conf параметр хранения паролей по умолчанию в класс blf.  Также меняем политику применяемых паролей: минимальная длинна, использование верхнего и нижнего регистра, время действия пароля в три месяца и отключения пользователя после 10 минут бездействия.  Также меняем маску прав доступа по умолчанию umask для того чтобы предотвратить доступ пользователей для всех. Маска пробразуется в формат chmod, и все новые созданные файлы и папки будут иметь права доступа 0750, т.е. у &#8220;остальных&#8221; пользователей не будет никаких прав на данные файлы.</p>
<p># vi /etc/login.conf<br />
#########################################################<br />
default:\<br />
<strong>:passwd_format=blf:\</strong><br />
:copyright=/etc/COPYRIGHT:\<br />
:welcome=/etc/motd:\<br />
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\<br />
:path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin:\<br />
:nologin=/var/run/nologin:\<br />
:cputime=unlimited:\<br />
:datasize=unlimited:\<br />
:stacksize=unlimited:\<br />
:memorylocked=unlimited:\<br />
:memoryuse=unlimited:\<br />
:filesize=unlimited:\<br />
:coredumpsize=unlimited:\<br />
 <img src='http://odminblog.ru/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> penfiles=unlimited:\<br />
:maxproc=unlimited:\<br />
:sbsize=unlimited:\<br />
:vmemoryuse=unlimited:\<br />
:priority=0:\<br />
:ignoretime@:\<br />
<strong>:minpasswordlen=8:\<br />
:mixpasswordcase=true:\<br />
:passwordtime=90d:\<br />
:accounted=true:\<br />
:autodelete=90d:\<br />
:warnpassword=14d:\<br />
:idletime=10:\<br />
:umask=027:</strong><br />
#########################################################</p>
<p>Обновляем базу логинов:</p>
<p># /usr/bin/cap_mkdb /etc/login.conf</p>
<p>После смены пароля пользователя в файле их хранения in /etc/master.passwd  записи паролей будут начинаться с $2a. Это будет свидетельствовать о том, что для данного пользователя включилось хеширование blowfish.</p>
<p>Теперь переназначаем правда доступа для пользователей к планировщику задач. Планировщик задач является удобным и в тоже время чрезвычайно мощным средством администрирования *nix платформ. Его неправомочное и неправильное использование может привести сервер в неработоспособное состояние. Это может быть неправильно составленые задания, так и злонамеренное зацикливание выполнения задания, способное привести машину к отказу в обслуживании.</p>
<p>Назначаем права на планирование задач только для пользователя root</p>
<p># echo &#8220;root&#8221; &gt; /var/cron/allow<br />
# echo &#8220;root&#8221; &gt; /var/at/at.allow<br />
# chmod o= /etc/crontab<br />
# chmod o= /usr/bin/crontab<br />
# chmod o= /usr/bin/at<br />
# chmod o= /usr/bin/atq<br />
# chmod o= /usr/bin/atrm<br />
# chmod o= /usr/bin/batch</p>
<p>Также ограничим доступ на чтение и запуск некоторых файлов, к которым у обычных пользователей нет необходимости в доступе:</p>
<p># chmod o= /etc/fstab<br />
# chmod o= /etc/ftpusers<br />
# chmod o= /etc/group<br />
# chmod o= /etc/hosts<br />
# chmod o= /etc/hosts.allow<br />
# chmod o= /etc/hosts.equiv<br />
# chmod o= /etc/hosts.lpd<br />
# chmod o= /etc/inetd.conf<br />
# chmod o= /etc/login.access<br />
# chmod o= /etc/login.conf<br />
# chmod o= /etc/newsyslog.conf<br />
# chmod o= /etc/rc.conf<br />
# chmod o= /etc/ssh/sshd_config<br />
# chmod o= /etc/sysctl.conf<br />
# chmod o= /etc/syslog.conf<br />
# chmod o= /etc/ttys</p>
<p>Также ограничиваем доступ к директориям содержащим лог файлы, поскольку потенциальный взломщик после своего пребывания всегда устраняет все следы оставленные в системе, путем чистки логов. Поэтому отключаем доступ к логам, для обычных пользователей.<br />
*** Эта процедура повлияет на ротацию логов, которая станет недоступна.</p>
<p># chmod o= /var/log<br />
# chflags sappnd /var/log<br />
# chflags sappnd /var/log/*</p>
<p>Отключаем пользователям возможность использования части программ, в которых нет необходимости, по их юзверьским делам.</p>
<p># chmod o= /usr/bin/users<br />
# chmod o= /usr/bin/w<br />
# chmod o= /usr/bin/who<br />
# chmod o= /usr/bin/lastcomm<br />
# сhmod o= /usr/sbin/jls<br />
# chmod o= /usr/bin/last<br />
# chmod o= /usr/sbin/lastlogin</p>
<p>Также надо заблокировать несколько сервисов:</p>
<p># chmod ugo= /usr/bin/rlogin<br />
# chmod ugo= /usr/bin/rsh</p>
<p>а также ограничить доступ к продуманным и полезным, для системного администратора конечно, утилитам, которые скорее всего будут установлены на машину:</p>
<p># chmod o= /usr/local/bin/nmap<br />
# chmod o= /usr/local/bin/nessus</p>
<p>В правами вроде бы закончили, теперь перейдем к горячо любимому файлу /etc/rc.conf в котором мы прикроем некоторые сервисы запущенные в системе по умолчанию, но нам ненужные.<br />
Отключаем MTA, которым по умолчанию является sendmail. Если этот сервис необходим, то имеет смысл использоваться exim или qmail</p>
<p># echo &#8217;sendmail_enable=&#8221;NONE&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>###############################<br />
***Примечание от 13.012010<br />
По данному синтаксису может возникнуть спор, аналогичный тому что возник у меня с Алексеем ака tess, т.к. по разным версиям фришного мануала sendmail отрубается разным синтаксисом:  по самому man sendmail v.8 рекомендуется использовать приведенный выше, по руководству к самой операционке FreeBSD рекомендуется использовать следующий синтаксис, добавленный в /etc/rc.conf (его же следует использовать если вы хотите чтобы отключить демона работающего на прием почты, а например логи вам высылались ежедневно на почту):</p>
<p>sendmail_enable=&#8221;NO&#8221;<br />
sendmail_submit_enable=&#8221;NO&#8221;<br />
sendmail_outbound_enable=&#8221;NO&#8221;<br />
sendmail_msp_queue_enable=&#8221;NO&#8221;<br />
###############################</p>
<p>По умолчанию уровень безопасности системы (kernel level) равен -1, т.е. мало защищенный. Если предполагается использовать защищенный уровень, то рекомендуется использовать 2, или даже 3 &#8211; как наиболее защищенный.</p>
<p># echo &#8216;kern_securelevel_enable=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf<br />
# echo &#8216;kern_securelevel=&#8221;2&#8243;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>Если не планируется на сервере использовать систему NFS, то отключаем его и демона portmap:</p>
<p># nfs_server_enable=&#8221;NO&#8221; &gt;&gt; /etc/rc.conf<br />
# nfs_client_enable=&#8221;NO&#8221; &gt;&gt; /etc/rc.conf<br />
# echo &#8216;portmap_enable=&#8221;NO&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>Запрещаем inetd, демон отвечающий за сетевые сервисы (network daemon dispatcher), в виду того что его использование несет много уязвимостей</p>
<p># echo &#8216;inetd_enable=&#8221;NO&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>На уровне старта системы чистим директроию временных файлов /tmp , чтобы быть уверенным что весь мусор который может там находиться никаким образом не повлияет на работу нашей системы</p>
<p># echo &#8216;clear_tmp_enable=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>Если не пишем логи на удаленную машину, то задаем демону syslogd не занимать сетевые сокеты</p>
<p># echo &#8217;syslogd_flags=&#8221;-ss&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>Cообщения ICMP redirect могут быть использованы для атаки, поэтому игнорируем и логируем их</p>
<p># echo &#8216;icmp_drop_redirect=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf<br />
# echo &#8216;icmp_log_redirect=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>Регистрируем все попытки подключения на закрытые порты, с тем чтобы понимать о том, кто и зачем пытается подключиться на неработающие порты.</p>
<p># echo &#8216;log_in_vain=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>Чтобы при входе в консоль не выводилась версия OS и координаты ядар, запрещаем обновление файла с сообщением дня (Message of Day)</p>
<p># echo &#8216;update_motd=&#8221;NO&#8221;&#8216;  &gt;&gt; /etc/rc.conf</p>
<p>Задаем несколько параметров ядра путем редактирования файла /etc/sysctl.conf . Для начала запрещаем обычным пользователям просмотр процессов запущенных с иным UID</p>
<p># echo &#8220;security.bsd.see_other_uids=0&#8243; &gt;&gt; /etc/sysctl.conf</p>
<p>Включаем систему поддержки так называемых &#8220;черных дыр&#8221;, что является предотвращением отправки отклика RST пакета, на запрос пришедший на закрытый порт.</p>
<p># echo &#8220;net.inet.tcp.blackhole=2&#8243; &gt;&gt; /etc/sysctl.conf<br />
# echo &#8220;net.inet.udp.blackhole=1&#8243; &gt;&gt; /etc/sysctl.conf</p>
<p>Генерируем произвольный ID для IP пакета для того чтобы исключить возможность fingerprint и  затруднить возможность злоумышленника систематизировать пакеты.</p>
<p># echo &#8220;net.inet.ip.random_id=1&#8243; &gt;&gt; /etc/sysctl.conf<br />
# echo &#8220;net.inet.icmp.maskrepl=0&#8243; &gt;&gt; /etc/sysctl.conf</p>
<p>Следующая опция ядра подойдет для рутеров, фаерволов и шлюзов: конфигурируем систему отбрасывать SYN/FIN пакеты, при желании её можно включать и на обычных срверах, но это чревато падением производительности.</p>
<p>#  echo &#8216;tcp_drop_synfin=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf</p>
<p>Вносим небольшие правки в ядро, которое придется пересобрать. Первой мы иключаем возможность перезагрузки от ctrl+alt+del, второй устанавливаем генерацию ID для сетевых пакетов (вариант с sysctl.conf работает только на системах от 5.3, на всех предыдущих необходимо перебирать ядро). Также включаем сброс SYN/FIN и режим stealth forwarding, который позволяет переправлять пакеты через хост без изменения из TTL, т.е. эта функция подойдет например для сокрытия фаервола от команды tracerote</p>
<p>#  vi /usr/srs/sys/i386/conf/Custom_KERNEL</p>
<p>#########################################################<br />
options         SC_DISABLE_REBOOT       # Disable Ctrl+Alt+Del<br />
options         RANDOM_IP_ID                               # Enables random IP ID generation<br />
options         TCP_DROP_SYNFIN             # Enables the ability to drop SYN/FIN packets<br />
options         IPSTEALTH                                   # Enable stealth forwarding<br />
#########################################################</p>
<p>После чего перестраиваем ядро и перегружаем машину. Теперь у нас есть сервер, на котором максимально поднята безопасность и он готов к тому чтобы настраивать на нем необходимые нам сервисы.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/su2-install/" rel="bookmark" class="crp_title">Установка утилиты su2</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/kernel-update/" rel="bookmark" class="crp_title">Обновление системы (продолжение обновления портов)</a></li><li><a href="http://odminblog.ru/permission-mask/" rel="bookmark" class="crp_title">Маски прав доступа</a></li><li><a href="http://odminblog.ru/installing-service-desk/" rel="bookmark" class="crp_title">Установка системы Service Desk</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/hardening-freebsd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка утилиты su2</title>
		<link>http://odminblog.ru/su2-install/</link>
		<comments>http://odminblog.ru/su2-install/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 09:10:48 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[su2]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=525</guid>
		<description><![CDATA[Утилита su2 является более защищенным аналогом команды su, служащей для перехвата прав другого пользователя, только в отличии от su, эта утилита дает возможность получать права суперпользователя пользователям не входящим в группу wheel, т.е. не имеющим права на возможность перехвата root с помощью su. Поэтому заводим пользователя с униками выше тысячи, так чтобы он выглядел не [...]]]></description>
			<content:encoded><![CDATA[<p>Утилита su2 является более защищенным аналогом команды su, служащей для перехвата прав другого пользователя, только в отличии от su, эта утилита дает возможность получать права суперпользователя пользователям не входящим в группу wheel, т.е. не имеющим права на возможность перехвата root с помощью su. Поэтому заводим пользователя с униками выше тысячи, так чтобы он выглядел не привилегированный пользователем. После этого устанавливаем утилиту:<br />
<span id="more-525"></span># cd /usr/ports/sysutils/su2/<br />
# make &amp;&amp; make install &amp;&amp; make clean</p>
<p>После этого необходимо создать файл: /usr/local/etc/super-users или .su2rc в домашней папке пользователя чьи права необходимо перехватывать, т.е. в нашем случае это будет /root/.su2rc<br />
В этих файлах прописываются имена пользователя, которым разрешается перехватывать права данного пользователя. Права на запись в эти файлы устанавливаем только для root, остальные права можно обнулить. Если перед именем разрешенного пользователя стоит +  то перехват прав происходит без запроса пароля, если при использовании su2 задается ключик -u, то пароль запрашивается в обязательном порядке.</p>
<p>Дальше имеем два пути реализации:<br />
1. который я пользую на внутренних машинах: создаем файл /root/.su2rc  на который линкуем /usr/local/etc/super-users , в них прописываем имена разрешенных пользователей, после чего команда su2 будет запрашивать повторно пароль пользователя (или не запрашивать если поставить +) и повышать ранг прав до суперпользователя</p>
<p># su2<br />
Password:<br />
#</p>
<p>2. чуть более сложный: когда в единственный файл  /usr/local/etc/super-users пишем пользователя root, т.е. все пользователи системы могут забирать права root, но таким образом, что команда su2 запущенная без аргументов, будет выдавать ошибку авторизации.</p>
<p># su2<br />
Password:<br />
su2: User anchous is not authorized for this system.<br />
su2: For authorization, see your system administrator.</p>
<p># echo &#8216;root&#8217; &gt; /usr/local/etc/super-users<br />
# su2 -u root<br />
Password:<br />
#</p>
<p>Теперь можно пользоваться утилитой su2 для своего удовольствия и безопасности</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/root-password-change-at-iphone/" rel="bookmark" class="crp_title">Смена стандартного пароля пользователя root на iPhone</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/permission-mask/" rel="bookmark" class="crp_title">Маски прав доступа</a></li><li><a href="http://odminblog.ru/autorestart-daemon/" rel="bookmark" class="crp_title">Авторестарт демона после падения</a></li><li><a href="http://odminblog.ru/cron-log-over-mail/" rel="bookmark" class="crp_title">Отправка отчетов по почте планировщиком cron</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/su2-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отправка отчетов по почте планировщиком cron</title>
		<link>http://odminblog.ru/cron-log-over-mail/</link>
		<comments>http://odminblog.ru/cron-log-over-mail/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 10:35:03 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Подсказки]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=384</guid>
		<description><![CDATA[Что то скриптики cron по очистке баз данных почтовика перестали слать свои милые радостные отчетики о проделанной работе, пришлось озадачиться ковыряканием крона по новой.
Наиболее простой способ выяснился после разглядывания подробностей файла /etc/crontab
простая установка директивы  MAILTO= в описании основных параметров отправит всю почту на указанный мейл, но в моем случа нужно давать эпизодического пендаля хозяину сервера, [...]]]></description>
			<content:encoded><![CDATA[<p>Что то скриптики cron по очистке баз данных почтовика перестали слать свои милые радостные отчетики о проделанной работе, пришлось озадачиться ковыряканием крона по новой.</p>
<p>Наиболее простой способ выяснился после разглядывания подробностей файла /etc/crontab<br />
простая установка директивы  MAILTO= в описании основных параметров отправит всю почту на указанный мейл, но в моем случа нужно давать эпизодического пендаля хозяину сервера, чтобы он следил за своей вотчиной, а я за своей, в этой связи обнаружилось два способа:</p>
<p>корявенький, с указанием директивы mailto в поле команды:<br />
<strong>3    1  * * * root MAILTO=xxx@odminblog.ru /root/scripts/mailcleaner.sh</strong><br />
и на мой взгляд более корректный с перенаправлением вывода исполнения скрипта:<br />
<strong>3    1  * * * root</strong><strong> /root/scripts/mailcleaner.sh 2&gt;&amp;1 | mail -s &#8220;Mail base cleaning&#8221; xxx@odminblog.ru </strong></p>
<p>, также можно перенаправить вывод выполнения скрипта в лог файл:<br />
<strong>3    1  * * * root</strong><strong> /root/scripts/mailcleaner.sh &gt;&gt; /var/log/cron.log 2&gt;&amp;1</strong></p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/autorestart-daemon/" rel="bookmark" class="crp_title">Авторестарт демона после падения</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/root-password-change-at-iphone/" rel="bookmark" class="crp_title">Смена стандартного пароля пользователя root на iPhone</a></li><li><a href="http://odminblog.ru/su2-install/" rel="bookmark" class="crp_title">Установка утилиты su2</a></li><li><a href="http://odminblog.ru/recent-call-log-delete-iphone/" rel="bookmark" class="crp_title">Удаление записей состоявшихся разговоров</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/cron-log-over-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Борьба со спамом в MTA EXIM на основе ACL</title>
		<link>http://odminblog.ru/exim-acl-vs-spam/</link>
		<comments>http://odminblog.ru/exim-acl-vs-spam/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 00:20:18 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>
		<category><![CDATA[Почтовые системы]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[почтовые системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=252</guid>
		<description><![CDATA[Как говорят знающие люди, хуже спама может быть только борьба со спамом. Но тем не менее с тем ужасным потоком, что обрушивается на незащищенного пользователя, необходимо что то делать, т.к. иначе конечному пользователю приходится тратить часы на разборы тех словесных завалов, что валятся ему в ящик.
Можно сколь угодно долго рассуждать относительно этичности использования RBL листов, [...]]]></description>
			<content:encoded><![CDATA[<p>Как говорят знающие люди, хуже спама может быть только борьба со спамом. Но тем не менее с тем ужасным потоком, что обрушивается на незащищенного пользователя, необходимо что то делать, т.к. иначе конечному пользователю приходится тратить часы на разборы тех словесных завалов, что валятся ему в ящик.<br />
Можно сколь угодно долго рассуждать относительно этичности использования RBL листов, но внедрение их автоматически снижает нагрузку спама в разы, тем более что для рассылок последнее время очень часто используются бот-сети, полностью имулирующие нормальное соединение.<br />
<span id="more-252"></span><br />
В этой связи MTA Exim имеет большое подспорье, в виде ACL листов, которые позволяют отсекать спам на основе стоп-слов, заголовков SMTP диалога, использования HELO в диалоге и многое другое.<br />
Ниже я привожу используемую мной конфигурацию файла exim.conf c фрагментом раздела ACL. Небольшие комментарии, надеюсь помогут разобраться, хотя  все должно быть понятно из описания логирования:</p>
<p>####################################</p>
<p>begin acl</p>
<p>#  Отбиваем всякие пакости на основе проверки содержимого письма<br />
acl_check_virus:<br />
deny  message   = Message rejected: virus found. NO PASARAN!(Ernesto Che Guevara).<br />
hosts  = *<br />
demime = *<br />
malware = *<br />
accept</p>
<p>acl_check_rcpt:<br />
accept  hosts = :<br />
accept  local_parts =<br />
deny    hosts =</p>
<p># Задаем почтовые адреса для внутреннего использования, с закрытой внешней пересылкой<br />
deny    message         = SRY, but address not permitted for external use!<br />
hosts           = !+relay_from_hosts<br />
local_parts     = all<br />
!authenticated  = *</p>
<p># пропускаем почту через RBL<br />
deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text\<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru</p>
<p>!authenticated  = *<br />
log_message   = found in $dnslist_domain<br />
dnslists      = relays.mail-abuse.org</p>
<p>deny    message       = rejected, $sender_host_address Open Proxy, see: $dnslist_domain\n$dnslist_text\<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru</p>
<p>!authenticated  = *<br />
log_message   = found in $dnslist_domain<br />
dnslists      = dnsbl.void.ru</p>
<p>deny    message       = Spam blocked see:http://www.spamcop.net/w3m?action=checkblock&amp;ip=$sender_host_address\<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru</p>
<p>!authenticated  = *<br />
log_message   = found in $dnslist_domain<br />
dnslists      = bl.spamcop.net</p>
<p>deny    message        = host is listed in $dnslist_domain<br />
!authenticated  = *<br />
log_message   = found in $dnslist_domain<br />
dnslists     =     opm.blitzed.org</p>
<p>deny    message       = rejected, $sender_host_address is listed in: http://relays.osirusoft.com/cgi-bin/rbcheck.cgi \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
!authenticated  = *<br />
!local_parts    = abuse                # Эта строка задает игнорирование данного правила для заданных адресов<br />
log_message   = found in spamguard.leadmon.net<br />
dnslists      = spamguard.leadmon.net</p>
<p>deny    message       = rejected, $sender_host_address is listed in: http://www.spamsources.fabel.dk/ \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
!authenticated  = *<br />
!local_parts    = abuse<br />
log_message   = found in http://www.spamsources.fabel.dk/<br />
dnslists      = spamsources.fabel.dk</p>
<p>deny    message       = rejected, $sender_host_address is listed in: http://www.spamhaus.org/ \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
!authenticated  = *<br />
!local_parts    = abuse<br />
log_message   = found in http://www.spamhaus.org/<br />
dnslists      =         sbl.spamhaus.org : \<br />
xbl.spamhaus.org : \<br />
pbl.spamhaus.org : \<br />
sbl-xbl.spamhaus.org : \<br />
zen.spamhaus.org</p>
<p># Проводим процедуру обратного звонка, т.е. при поступлении запроса на отправку от отпределенного адреса, происходит встречный запрос к серверу отправителя<br />
verify = sender/callout=90s,maxwait=120s<br />
verify = recipient/defer_ok/callout=90s/callout_defer_ok<br />
message = The sender cannot be verified. Check your email-client settings! \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
!local_parts    = abuse<br />
!sender_domains = +domains_disable_senderverify # в данном списке, объявленом в главной конфигурации, мы задаем исключения для доменов</p>
<p>deny    message       = rejected, $sender_host_address is listed in: http://mail-abuse.org/ \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
!authenticated  = *<br />
!local_parts    = abuse<br />
log_message   =   found in  www.mail-abuse.org<br />
dnslists        = blackholes.mail-abuse.org : \<br />
dialup.mail-abuse.org</p>
<p># Проверяем диалог на соответствие RFC<br />
deny message        = HELO/EHLO required by SMTP RFC<br />
condition           =  ${if eq{$sender_helo_name}{}{yes}{no}}<br />
delay           = TEERGRUBE</p>
<p># Проверяем корректность IP адреса отправителя, проверка направлена на манипуляции с HELO<br />
deny message        = Forged IP detected in HELO-$sender_helo_name<br />
hosts          = !+relay_from_hosts<br />
log_message    = Forged IP detected in HELO: $sender_helo_name<br />
!authenticated  = *<br />
condition      = ${if eq{$sender_helo_name}{$interface_address}{yes}{no}}<br />
delay          = TEERGRUBE</p>
<p># Проверяем корректность IP адреса отправителя, проверка направлена на манипуляции с HELO<br />
deny message        = Forged IP detected in HELO -$sender_helo_name != $sender_host_address<br />
hosts          = !+relay_from_hosts<br />
!authenticated  = *<br />
condition      = ${if match{$sender_helo_name}{\N^\d+(\.\d+){3}$\N} {yes}{no}}<br />
condition      = ${if eq{$sender_helo_name}{$sender_host_address} {no}{yes}}<br />
delay          = TEERGRUBE</p>
<p>deny message        = Forged hostname detected in HELO -$sender_helo_name<br />
hosts          = !+relay_from_hosts<br />
!authenticated  = *<br />
log_message     = Forged hostname detected in HELO -$sender_helo_name<br />
condition       = ${if match_domain{$sender_helo_name}{+local_domains} {yes}{no}}<br />
delay           = TEERGRUBE</p>
<p># Отбиваем больше одного пустого отправителя<br />
deny message        = Only one recipient accepted for NULL sender<br />
senders        = :<br />
condition      = ${if &gt;{$rcpt_count}{1} {1}}<br />
delay          = TEERGRUBE</p>
<p>####### Данный раздел перекрывает большие листы рассылки и перебор пользователей<br />
.ifdef ALLOWEDRCPTFAIL<br />
drop message   = too many unknown users (${eval:$rcpt_fail_count+1} failed recipients)<br />
log_message    = Dictionary attack (${eval:$rcpt_fail_count+1} failed recipients).<br />
condition      = ${if &gt;{$rcpt_fail_count}{${eval:ALLOWEDRCPTFAIL-2}} {1}{0}}<br />
delay          = ${eval:FAILEDRCPTDELAY*$rcpt_fail_count}s<br />
domains        = +local_domains<br />
hosts          = !+relay_from_hosts<br />
!authenticated  = *<br />
.endif<br />
deny message        = unknown user<br />
log_message    = Teergrube: dictionary attack (${eval:$rcpt_fail_count+1} failed recipients)<br />
condition      = ${if &gt;{$rcpt_fail_count}{0} {1}{0}}<br />
delay          = ${eval:FAILEDRCPTDELAY*$rcpt_fail_count}s<br />
domains        = +local_domains<br />
!verify         = recipient</p>
<p>deny hosts     = !+localadds:!+hosts_disable_callback:*<br />
sender_domains = !+envdomain_disable_callback:!+domains_callback_norandom:!+domains_disable_senderverify:*<br />
local_parts    = !+noenvfromcallback<br />
!verify         = sender/callout=90s,random<br />
delay          = TEERGRUBE</p>
<p># Проводим обратный звонок, для всех кроме специально заданных доменов и хостов<br />
deny hosts     = !+localadds:!+hosts_disable_callback:*<br />
sender_domains = !+domains_callback_norandom:!+domains_disable_senderverify<br />
local_parts    = !+noenvfromcallback<br />
!verify         = sender/callout=90s<br />
delay          = TEERGRUBE</p>
<p>############### Проводим проверки на уровне SMTP диалога</p>
<p>deny    message       = Wrong HELO &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
hosts         = !+relay_from_hosts<br />
!local_parts    = abuse<br />
!authenticated = *<br />
condition     = ${if !match{$sender_helo_name}{\N\w\.\w\N}{yes}{no}}</p>
<p>deny    message       = Too short HELO &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
hosts         = !+relay_from_hosts<br />
!local_parts    = abuse<br />
!authenticated = *<br />
condition     = ${if &lt;{${strlen:$sender_helo_name}}{5}{yes}{no}}</p>
<p>deny    message       = Bad HELO domain symbols &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
hosts         = !+relay_from_hosts<br />
!local_parts    = abuse<br />
!authenticated = *<br />
condition     = ${if match{$sender_helo_name}{\N_\N}{yes}{no}}</p>
<p>deny    message       = HELO is IP address &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
!local_parts    = abuse<br />
condition     = ${if isip{$sender_helo_name}}</p>
<p>deny    message       = Used HELO: $sender_helo_name not equal IP: $sender_host_address &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
!local_parts    = abuse<br />
!authenticated = *<br />
condition     = ${if match{$sender_helo_name}{\N^\[(\d+\.\d+\.\d+\.\d+)\]$\N}\<br />
{yes}{no}}<br />
condition     = ${if !eq{$sender_host_address}{${sg{$sender_helo_name}\<br />
{\N^\[(\d+\.\d+\.\d+\.\d+)\]$\N}{\$1}}}\<br />
{yes}{no}}</p>
<p>deny    message       = Must be letters in HELO domain &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
hosts         = !+relay_from_hosts<br />
!local_parts    = abuse<br />
!authenticated = *<br />
condition     = ${if match{$sender_helo_name}\<br />
{\N^[-\d\.]+$\N}{yes}{no}}</p>
<p>deny    message       = Wrong HELO domain &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
hosts         = !+relay_from_hosts<br />
!local_parts    = abuse<br />
!authenticated = *<br />
condition     = ${if match{$sender_helo_name}{\N^.*\.(arpa|local|localdomain)$\N}{yes}{no}}</p>
<p>deny    message       = Main Hostname in your HELO &#8211; access denied. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
hosts         = !127.0.0.1<br />
!local_parts    = abuse<br />
condition     = ${if match{$sender_helo_name}{$primary_hostname}{yes}{no}}</p>
<p># Блокировка попытки подмены IP адреса отправителя на адрес получателя<br />
deny     message       = &#8220;Go ahead, it&#8217;s mine IP!!!!&#8221;<br />
condition     = ${if eq{$sender_helo_name}{$sender_host_address} \<br />
{true}{false}}<br />
hosts         = * : !+relay_from_hosts</p>
<p># Запрет на использование в доменных именах различных приставок модемного доступа, на основе стоп-слов.<br />
deny    message       = Access denied &#8211; dsl/dialup/cable relays HELO detected, use your ISP SMTP server. \<br />
If you think that the system is mistaken, please report details to abuse@odminblog.ru<br />
hosts         = !+relay_from_hosts<br />
sender_domains = !+greedy_suckers    # Исключение для серверов, имеющих в имени, приведенные стоп-слова<br />
!local_parts    = abuse<br />
!authenticated = *<br />
condition     = ${if match{$sender_helo_name}\<br />
{\N^((\d{1,3}[\.\-_x]){3}|.*(\d{6,12}|wireless|broadband|modem|dyn|\<br />
cable|client|dial|unused|gprs|dsl|dhcp|user|vpn|home|dip|catv|(v|w)\<br />
lan|as(1|2|3|4|5)|dynamic(?&gt;ip)|host-ip|ppp|cdma|(?&lt;!mx|s)pool|unassigned)\<br />
.*\.[-a-z0-9]+\.\w+|.*(?&lt;!smtp).*(cust|host).*\.[-a-z0-9]+\.\w+)$\N}\<br />
{yes}{no}}</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/global-external-alias-using-exim/" rel="bookmark" class="crp_title">Организация глобального внутреннего алиаса средствами exim</a></li><li><a href="http://odminblog.ru/cheets-and-tips-exim/" rel="bookmark" class="crp_title">Всякие полезности для exim</a></li><li><a href="http://odminblog.ru/ogranichenie-dostupa-ssh-po-ip/" rel="bookmark" class="crp_title">Ограничение доступа ssh по IP в CentOS</a></li><li><a href="http://odminblog.ru/autoreply-for-exim/" rel="bookmark" class="crp_title">Автоответ в Exim</a></li><li><a href="http://odminblog.ru/cashing-dns-server-under-bind/" rel="bookmark" class="crp_title">Настройка кеширующего DNS сервера на базе BIND</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/exim-acl-vs-spam/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка Port Sentry</title>
		<link>http://odminblog.ru/portsentry-install/</link>
		<comments>http://odminblog.ru/portsentry-install/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 17:53:20 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT безопасность]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=248</guid>
		<description><![CDATA[Если поглядеть логи доступа любого сервера, каким либо боком торчащего в интернет, то обнаружится, что атаки по портам излюбленная тематика интернет-фриков, которые по-видимому могу круглосуточно шакалить в поиске какого нибудь, криво сконфигурированного сервера. Естественно, что предотвращению этих угроз служат полноценный IPS модули и сервера, но в большинстве своем они являются платными решениями, а т.к. нас [...]]]></description>
			<content:encoded><![CDATA[<p>Если поглядеть логи доступа любого сервера, каким либо боком торчащего в интернет, то обнаружится, что атаки по портам излюбленная тематика интернет-фриков, которые по-видимому могу круглосуточно шакалить в поиске какого нибудь, криво сконфигурированного сервера. Естественно, что предотвращению этих угроз служат полноценный IPS модули и сервера, но в большинстве своем они являются платными решениями, а т.к. нас интересует по возможности халявные продукты, то при настройке файервола или какого либо инет-сервера, я прикручиваю Port Sentry, некий аналог IPS, систему по обнаружению сканирования портов.</p>
<p>Интерактивная защита позволяет отнести систему к IPS, т.к. система поддерживает: обнаруживает почти все известные типы сканирования: TCP connect(), SYN/half-open, Null, XMAS и многое другое; позволяет настроить свой механизм работы таким образом, что при обнаружении сканирования путем запуска произвольного скрипта может блокировать атакующего по IP, или отправлять его в т.н черные дыры; ведет логирование всех попыток установления соединения.</p>
<p><span id="more-248"></span>На данный момент программу можно скачать с сайта <noindex><a rel="nofollow" href="http://sourceforge.net/projects/sentrytools/" target="_blank">Source Forge</a></noindex> и на данный момент доступна бета-версия 1.2. Скачав распаковываем архив, и изучаем файл <em>portsentry_config.h , </em>содержащий в себе параметры конфигурации установки.</p>
<p>/* Путь к конфигурационному файлу. При изменении необходимо тоже самое сделать в Makefile */<br />
#define CONFIG_FILE &#8220;/usr/local/psionic/portsentry/portsentry.conf&#8221;<br />
/* Путь к файлам hosts.deny для tcpwrapper. Стандартное местоположение в /etc */<br />
#define WRAPPER_HOSTS_DENY &#8220;/etc/hosts.deny&#8221;<br />
/* Задаем тип логов для syslogd*/<br />
#define SYSLOG_FACILITY LOG_DAEMON<br />
/* Задаем уровень важности логов демона для  syslogd*/<br />
#define SYSLOG_LEVEL LOG_NOTICE<br />
/* Максимальное количество запоминаемых для проверки повторного подключения хостов */<br />
#define MAXSTATE 50</p>
<p>Изменив все по нашему желанию, проделываем стандартную процедуру:<br />
# make &amp;&amp; make install &amp;&amp; make clean</p>
<p>После установки настраиваем систему, посредством редактирования /usr/local/etc/portsentry.conf</p>
<p>############################ /usr/local/etc/portsentry.conf ############################<br />
# TCP-порты которые прослушивает PortSentry &#8211; здесь нужно указывать неиспользуемые приложениями порты.<br />
# Проверить какие порты заняты можно примерно так:<br />
# sockstat | grep {tcp}:{udp} | grep -v 127.0.0.1 | awk &#8216;{print $6}&#8217; | sort | uniq -c<br />
TCP_PORTS=&#8221;1,11,15,23,79,81,111,119,540,635,1080,1524,2000,5742,6667,8080,8085&#8243;<br />
# UDP-порты для прослушивания<br />
UDP_PORTS=&#8221;1,7,9,69,513,635,640,641,700&#8243;</p>
<p># Верхний порт диапазона, если используется метод Advanced Stealth Scan Detection Options<br />
ADVANCED_PORTS_TCP=&#8221;1024&#8243;<br />
ADVANCED_PORTS_UDP=&#8221;1024&#8243;<br />
# порты исключаемые из прослушивания при работе в Advanced Stealth Scan Detection<br />
ADVANCED_EXCLUDE_TCP=&#8221;113,139&#8243;<br />
ADVANCED_EXCLUDE_UDP=&#8221;520,138,137,67&#8243;</p>
<p># Список игнорируемых хостов (сюда вносим админские станции и удаленные серверы)<br />
IGNORE_FILE=&#8221;/usr/local/etc/portsentry.ignore&#8221;<br />
# Список хостов, которые были внесены в блэклист<br />
HISTORY_FILE=&#8221;/usr/local/etc/portsentry.history&#8221;<br />
# строка по которой строится имя файла куда писать заблокированные хосты<br />
BLOCKED_FILE=&#8221;/usr/local/etc/portsentry.blocked&#8221;</p>
<p># использовать ли преоброзование IP адресов хостов в имена, или нет; лучше не использовать, т.к это лишняя нагрузка на сервер&#8230;<br />
RESOLVE_HOST = &#8220;1&#8243;</p>
<p># Какие телодвижения предпринимать при обнаружении сканирования:<br />
# 0 = никаких действий, кроме записи в лог<br />
# 1 = заблокировать хост и запустить внешнюю команду<br />
# 2 = только запустить внешнюю команду<br />
BLOCK_UDP=&#8221;1&#8243;<br />
BLOCK_TCP=&#8221;1&#8243;</p>
<p># команда на блокирование хоста. поскольку мы собираемся использовать IPFW , то и танцуем от стенки, также есть возможность прикрутить ipchains и просто сторонние программы, вплоть до rm -Rf / <img src='http://odminblog.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
KILL_ROUTE=&#8221;/sbin/ipfw add 2 deny all from $TARGET$:255.255.255.255 to any&#8221;</p>
<p># Если стоит 1 &#8211; вначале запускается KILL_RUN_CMD а потом уже KILL_ROUTE, если 0- то наоборот<br />
KILL_RUN_CMD_FIRST = &#8220;0&#8243;<br />
# Внешняя команда выполняемая при обнаружении сканирования портов, в данном случае внешний скриптик отправляет письмо об обнаруженном сканировании<br />
KILL_RUN_CMD=&#8221;/usr/home/script/work/scan_port_mail.sh $TARGET$ $PORT$&#8221;</p>
<p># Сколько портов будет позволено отсканить прежде чем будет выполнено действие.<br />
# 0 &#8211; реагирует после первой не угаданной цифры<br />
# 1 &#8211; на втором<br />
# 2 &#8211; на третьем и т.д<br />
SCAN_TRIGGER=&#8221;0&#8243;</p>
<p># Какой `баннер` вешать на порты прослушиваемые PortSentry.<br />
PORT_BANNER=&#8221;.. WE ARE WRITING YOUR ADDRESS IN CIA LOG ..&#8221;</p>
<p>############################</p>
<p>В файле <em>portsentry.ignore</em> мы упоминаем  IP-адреса компьютеров, которые не должны быть блокированы при подключении к отслеживаемому порту. По умолчанию, в файле заданы два IP-адреса: 127.0.0.1 и 0.0.0.0. туда следует добавить внутреннюю сеть и свои сервера.</p>
<p>После этого создаем указанный в конфиге внешний скрипт для отправки почты:</p>
<p># mkdir -p /usr/home/script/work/<br />
# cd /usr/home/script/work/<br />
# touch scan_port_mail.sh<br />
# chmod +x scan_port_mail.sh</p>
<p>###################### /usr/home/script/work/scan_port_mail.sh ######################<br />
#!/bin/sh -xv<br />
# оповещение по почте о попытках сканирования хостов</p>
<p># вводим переменные:<br />
main_e_mail=&#8221;root@sane4ka.ru&#8221;<br />
attak_date=&#8221;`date +%Y-%m-%d`&#8221;<br />
attak_time=&#8221;`date +%H:%M:%S`&#8221;<br />
local_mashine=&#8221;`uname -n`&#8221;</p>
<p># достаём хост с которого сканили<br />
hacker_IP=$1<br />
scanned_port=$2</p>
<p># определяем DNS-атакующего<br />
hacker_DNS=`host ${hacker_IP} | awk &#8216;{print $5}&#8217;`</p>
<p># ваяем тревожную мессагу<br />
echo &#8221; обнаружена попытка сканирования .<br />
Имя машины:             ${local_mashine}<br />
Отсканенные порты:       ${scanned_port}</p>
<p>Прикрепляем данные атакующего:<br />
IP:     ${hacker_IP}<br />
DNS:    ${hacker_DNS}</p>
<p>=======<br />
Атака заблокирована.<br />
&#8221; | mail -s port_scanned_on_${local_mashine} ${main_e_mail}</p>
<p>############################</p>
<p>В случае фаервола естественно необходимо открыть прослушиваемые порты, для более успешной рыбалки.</p>
<p>Portsentry возможно запускать в трех режимах для каждого протокола. Режим работы задается в командной строке при вызове демона, посредством ключика. Одновременно можно использовать только один режим работы на одном протоколе.</p>
<p>Classic<br />
Работая в данном режиме Portsentry открывает порты, указанные в TCP_PORTS или UDP_PORTS и находится в состоянии ожидания соединения. При попытке подключения к перечисленному порту происходит блокирование удаленного хоста. В этом режиме  Portsentry не реагирует на Stealth-сканирование. Данный режим работы задается опциями командной строки: -tcp и -udp , для TCP и UDP-портов соответственно.</p>
<p>Enhanced Stealth Scan Detection<br />
Данный режим используется для проверки перечисленных в TCP_PORTS или UDP_PORTS портов на предмет подключения или сканирования. Отличительная черта, то что палит практически все типы Stealth-сканирования, а не ограничивается только сканирование подключением. Порты, в отличие от предыдущего режима открытыми не держит, посему атакующий получает достоверную информацию об открытых портах. Задается ключиками командной строки: -stcp и -sudp , для TCP и UDP-портов соответственно.</p>
<p>Advanced Stealth Scan Detection<br />
Данный режим используется для проверки всех портов входящих в пул от 1 до ADVANCED_PORT_TCP (для TCP) или ADVANCED_PORT_UDP (для UDP). Порты, открытые работающими на хосте программами и перечисленные в ADVANCED_EXLUDE_TCP(для TCP) или ADVANCED_EXCLUDE_UDP(для UDP) не проверяются. Любой хост, попытавшийся подключится к порту из этого промежутка, мгновенно блокируется. Наиболее удобный для использования метод, т.к. реакция на сканирование или попытку подключения у данного метода самая быстрая, а также в этом режиме используется гораздо меньше процессорного времени, чем в остальных. Задается ключами из коммандной строки: -atcp и -audp , TCP и UDP-портов соответственно.</p>
<p>Таким образом Portsentry можно запускать в следующих режимах:</p>
<p>/usr/local/psionic/portsentry/portsentry -tcp<br />
Classic Mode для TCP-портов<br />
/usr/local/psionic/portsentry/portsentry -udp<br />
Classic Mode для UDP-портов<br />
/usr/local/psionic/portsentry/portsentry -stcp<br />
Enhanced Stealth Scan Detection для TCP-портов<br />
/usr/local/psionic/portsentry/portsentry -sudp<br />
Enhanced Stealth Scan Detection для UDP-портов<br />
/usr/local/psionic/portsentry/portsentry -atcp<br />
Advanced Stealth Scan Detection для TCP-портов<br />
/usr/local/psionic/portsentry/portsentry -audp<br />
Advanced Stealth Scan Detection для UDP-портов</p>
<p>Команду запуска можно добавить в rc.conf или же создать запускающий файлик</p>
<p>*** При установках и последующем написании how-to были использованы материалы сайтов:<br />
<a href="http://www.opennet.ru/" target="_blank">Opennet.ru</a><br />
<a href="http://www.lissyara.su" target="_blank">Lissyara.su</a></p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/ssh-post-low-chance-of-hack/" rel="bookmark" class="crp_title">Смена порта SSH-сервера как мера безопасности</a></li><li><a href="http://odminblog.ru/ports-update-freebsd/" rel="bookmark" class="crp_title">Обновление локального дерева портов FreeBSD</a></li><li><a href="http://odminblog.ru/mysql-server-install/" rel="bookmark" class="crp_title">Установка сервера БД MySQL</a></li><li><a href="http://odminblog.ru/backup-mars-config-to-nfs/" rel="bookmark" class="crp_title">Резервирование MARS на NFS том Linux</a></li><li><a href="http://odminblog.ru/su2-install/" rel="bookmark" class="crp_title">Установка утилиты su2</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/portsentry-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с очередью Exim</title>
		<link>http://odminblog.ru/exim-queue/</link>
		<comments>http://odminblog.ru/exim-queue/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 13:28:33 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Почтовые системы]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[почтовые системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=208</guid>
		<description><![CDATA[Работая с Exim, постоянно наталкиваешься на какие то проблемы, когда письмо зависает в очереди, по тем или иным причинам, либо хост не доступен, либо криво настроены повторы   и встает задача, что то сделать с зависшими сообщениями. Собственно ниже, о том как бороться с очередями Exim

Способы очистки очереди:
Наиболее прямолинейный и грубый прием, тем не [...]]]></description>
			<content:encoded><![CDATA[<p>Работая с Exim, постоянно наталкиваешься на какие то проблемы, когда письмо зависает в очереди, по тем или иным причинам, либо хост не доступен, либо криво настроены повторы <img src='http://odminblog.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  и встает задача, что то сделать с зависшими сообщениями. Собственно ниже, о том как бороться с очередями Exim<br />
<span id="more-208"></span><br />
Способы очистки очереди:<br />
Наиболее прямолинейный и грубый прием, тем не менее позволяющий очистить очередь безусловно, но настоятельно не рекомендую его использовать:<br />
rm -rf /var/spool/exim/input/*</p>
<p>Корректный способ, имеющий так же результатом полную очистку очереди сообщений:<br />
service exim stop;<br />
rm -rf /var/spool/exim/input.bak;<br />
mv /var/spool/exim/input /var/spool/exim/input.bak;<br />
mkdir /var/spool/exim/input;<br />
chown mailnull.mail /var/spool/exim/input;<br />
chmod 750 /var/spool/exim/input;<br />
service exim start;</p>
<p>Официальный способ очистки очереди:<br />
exim -qff</p>
<p>Тоже самое с включенным дебаггом процесса:<br />
exim -qff -d9</p>
<p>Собственно все тоже самое можно проделать скриптом. Как условие- все исполняемые файлы должны быть прописаны полностью, и пользователь стартующий скрипт должен быть доверенным для Exim&#8217;а.<br />
Также данный скрипт может помочь в ситуации когда после доставки сообщения Exim куда то девает телосообщения, в результате чего письмо становится гостом и в листинге очереди exim -bp объем не указывается, в результате чего exiqgrep, не понимая о чем речь, выпадает с ошибкой.<br />
Собственно скрипт убивающий сообщения из очереди, но оговорюсь сразу- письма уходят навсегда.</p>
<p>#!/bin/bash</p>
<p># Определяем qualify_domain &#8212; он необходим для удаления всяческого мусора<br />
domain=`exim -bP | grep -i &#8220;^qualify_domain&#8221; | sed -e s/.*\=\ //g`</p>
<p># Прощаемся со всеми замороженными сообщениями<br />
exim -bpr | grep &#8216;<' | awk '{print $2}' | grep '-' | xargs exim -Mrm 2> /dev/null</p>
<p># при передаче скрипту параметра c, включаем агрессивный режим<br />
if [ "$1" == "c" ]; then</p>
<p>    # Удаляем все баунсы старше 20 минут<br />
    exiqgrep -o 1200 -if &#8216;^<>$&#8217; |xargs exim -Mrm<br />
    # Сносим все сообщения с адресами начинающихся со спец.символов, таких как нижний подчерк, минус или тире<br />
    exiqgrep -f &#8216;^<\_|^<\-|^<\|' -i | xargs exim -Mrm<br />
    exiqgrep -r '^\_|^\-|^\|' -i | xargs exim -Mrm<br />
    #Выкашиваем сообщения отправленные на китайские домены, за последние 20 минут<br />
    exiqgrep -f "$domain" -r '.cn$' -o 1200 -i | xargs exim -Mrm<br />
    # Удаляем любые сообщения отправленные скриптами, если они зависли в очереди более чем на 12 часов<br />
    exiqgrep -f "$domain" -o 43200 -i | xargs exim -Mrm<br />
    exit<br />
fi</p>
<p># В мягком режиме удаляем только frozen баунсы и письма с невозможными адресами в заголовках<br />
exiqgrep -zif '^<>$&#8217; |xargs exim -Mrm<br />
exiqgrep -f &#8216;^<\_|^<\-|^<\|&#8217; -i | xargs exim -Mrm<br />
exiqgrep -r &#8216;^\_|^\-|^\|&#8217; -i | xargs exim -Mrm </p>
<p>##########################################<br />
Работа с очередью Exim.<br />
Когда возникает необходимость удалить одно или несколько замороженных сообщений из очереди, мы прибегаем к утилите Exipick:<br />
exipick &#8211; показывает сообщения в очереди экзима<br />
exipick -z &#8211; показывает замороженные сообщения<br />
exipick -i &#8211; показывает ID сообщений</p>
<p>exim -Mrm ID &#8211; удаляет из очереди сообщение с определенным ID</p>
<p>В итоге получаем:<br />
exipick -zi | xargs exim -Mrm //очистит все замороженные сообщения из очереди<br />
exipick -i | xargs exim -Mrm //очистит все сообщения из очереди<br />
exipick -i | xargs exim -Mg  // Очистка почтовой очереди в MTA Exim. Сервер пытается немедленно доставить все письма, находящиеся в очереди. Если какое-либо письмо не удалось доставить, оно удаляется из очереди.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/cheets-and-tips-exim/" rel="bookmark" class="crp_title">Всякие полезности для exim</a></li><li><a href="http://odminblog.ru/autoreply-for-exim/" rel="bookmark" class="crp_title">Автоответ в Exim</a></li><li><a href="http://odminblog.ru/global-external-alias-using-exim/" rel="bookmark" class="crp_title">Организация глобального внутреннего алиаса средствами exim</a></li><li><a href="http://odminblog.ru/upravlenie-avtopovtorami-v-exim/" rel="bookmark" class="crp_title">Управление автоповторами в Exim</a></li><li><a href="http://odminblog.ru/perenapravlenie-pochty-na-vneshnij-adres-sredstvami-dbmail/" rel="bookmark" class="crp_title">Перенаправление почты на внешний адрес средствами dbmail</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/exim-queue/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Автоответ в Exim</title>
		<link>http://odminblog.ru/autoreply-for-exim/</link>
		<comments>http://odminblog.ru/autoreply-for-exim/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 16:45:37 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Почтовые системы]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[почтовые системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=205</guid>
		<description><![CDATA[Часто бывает необходимо отсылать автоответ о том, что сотрудник временно отсутствует в офисе, причем желательно это производить на уровне сервера, а не почтового клиента. В Exim это можно сделать несколькими способами.
Первый способ подходит для классически настроенного Exim.

##########################################################
Раздел  ROUTERS CONFIGURATION:
autoreply:
driver = accept
require_files = /usr/home/exim/$local_part/.vacation.txt
condition = ${if or { \
{match {$h_precedence:} {(?i) junk&#124;bulk&#124;list}} \
{eq {$sender_address} {}} [...]]]></description>
			<content:encoded><![CDATA[<p>Часто бывает необходимо отсылать автоответ о том, что сотрудник временно отсутствует в офисе, причем желательно это производить на уровне сервера, а не почтового клиента. В Exim это можно сделать несколькими способами.<br />
Первый способ подходит для классически настроенного Exim.<br />
<span id="more-205"></span><br />
##########################################################<br />
Раздел  ROUTERS CONFIGURATION:</p>
<p>autoreply:<br />
driver = accept<br />
require_files = /usr/home/exim/$local_part/.vacation.txt<br />
condition = ${if or { \<br />
{match {$h_precedence:} {(?i) junk|bulk|list}} \<br />
{eq {$sender_address} {}} \<br />
{match {$h_subject:} {(ADV|Adv)}} \<br />
} {no} {yes}}<br />
no_expn<br />
senders = !+noautoreply_senders<br />
transport = address_reply<br />
unseen<br />
no_verify</p>
<p>##########################################################<br />
Раздел TRANSPORTS CONFIGURATION:</p>
<p>address_reply:<br />
driver = autoreply<br />
file = /usr/home/exim/$local_part/.vacation.txt<br />
file_expand<br />
once = /var/log/exim-$local_part-vacation.db<br />
once_repeat = 1d<br />
from = $local_part@odminblog.ru<br />
headers_add = &#8220;Auto_Repl:$reply_address&#8221;<br />
to = $sender_address<br />
subject = Re: ${rfc2047:$h_subject:}</p>
<p>##########################################################<br />
В разделе MAIN CONFIGURATION определяем местоположение списка исключений для автоответа</p>
<p>addresslist  noautoreply_senders = /etc/mail/autorep.noanswer</p>
<p>##########################################################</p>
<p>И собственно определяем сам список доменов, на письма с которых не нужно отсылать автоответ:</p>
<p>##########################################################<br />
####    /etc/mail/autorep.noanswer<br />
##########################################################</p>
<p>^.*-request@.*<br />
^owner-.*@.*<br />
^.*-owner@.*<br />
^.*-admin@.*<br />
^bounce-.*@.*<br />
^.*@bounce\..*<br />
^.*-outgoing@.*<br />
^.*-relay@.*<br />
^.*-bounces@.*<br />
^.*-bounce@.*<br />
^.*-confirm@.*<br />
^.*-errors@.*<br />
^mailer@.*<br />
^postmaster@.*<br />
^mailer-daemon@.*<br />
^mailer_daemon@.*<br />
^majordomo@.*<br />
^majordom@.*<br />
^mailman@.*<br />
^nobody@.*<br />
^reminder@.*<br />
^autoreply.*@.*<br />
^.*-autoresponder@.*<br />
^autoresponder@.*<br />
^listserv@.*<br />
^daemon@.*<br />
^server@.*<br />
^root@.*<br />
^noreply.*@.*<br />
^no-reply@.*<br />
^bounce@.*<br />
^news@.*<br />
^request.*@.*<br />
^httpd@.*<br />
^lighttpd@.*<br />
^www@.*<br />
^www-data@.*<br />
^nagios@.*<br />
^sales@.*<br />
^info@.*<br />
^fetchmail.*@.*<br />
^listmaster@.*<br />
^mailmaster@.*<br />
^webmaster@.*<br />
^squid@.*<br />
^support@.*<br />
^exim@.*<br />
scomp@aol.net</p>
<p>Теперь все что от нас требуется, это своевременно закинуть в домашнюю директорию пользователя файлик .vacation.txt с текстом автоответа. Кодировка по умолчанию будет utf-8</p>
<p>##########################################################<br />
На EximWiki несколько иная конфигурация которая выглядит довольно убедительно, но я её не пробовал, т.ч. просто привожу.<br />
##Router##<br />
uservacation:<br />
driver = accept<br />
domains = +local_domains<br />
condition = ${if or { \<br />
{ match {$h_precedence:} {(?i)junk|bulk|list} } \<br />
{ eq {$sender_address} {} } \<br />
{ def:header_X-Cron-Env: } \<br />
{ def:header_Auto-Submitted: } \<br />
{ def:header_List-Id: } \<br />
{ def:header_List-Help: } \<br />
{ def:header_List-Unsubscribe:} \<br />
{ def:header_List-Subscribe: } \<br />
{ def:header_List-Owner: } \<br />
{ def:header_List-Post: } \<br />
{ def:header_List-Archive: } \<br />
{ def:header_Autorespond: } \<br />
{ def:header_X-Autoresponse: } \<br />
{ def:header_X-Autoreply-From: } \<br />
{ def:header_X-eBay-MailTracker: } \<br />
{ def:header_X-MaxCode-Template: } \<br />
{ match {$h_X-Auto-Response-Suppress: } {OOF} } \<br />
{ match {$h_X-OS:} {HP Onboard Administrator} } \<br />
{ match {$h_X-MimeOLE:} {\N^Produced By phpBB2$\N} } \<br />
{ match {$h_Subject:} {\N^Yahoo! Auto Response$\N} } \<br />
{ match {$h_Subject:} {\N^ezmlm warning$\N} } \<br />
{ match {$h_X-FC-MachineGenerated:} {true} } \<br />
{ match {$message_body} {\N^Your \&#8221;cron\&#8221; job on\N} } \<br />
{ match {$h_Subject:} {\N^Out of Office\N} } \<br />
{ match {$h_Subject:} {\N^Auto-Reply:\N} } \<br />
{ match {$h_Subject:} {\N^Autoresponse:\N} } \<br />
{ match {$h_Subject:} {\N(Auto Reply)$\N} } \<br />
{ match {$h_Subject:} {\N(Out of Office)$\N} } \<br />
{ match {$h_Subject:} {\Nis out of the office.$\N} } \<br />
{ match {$h_X-Spam-Flag:} {\N^yes\N} } \<br />
{ match {$h_From:} {\N(via the vacation program)\N } } \<br />
} \<br />
} {no} {yes} \<br />
}<br />
require_files = /.vacation.msg<br />
user = ${lc:$local_part}<br />
senders = !+noautoreply_senders<br />
transport = vacation_transport<br />
unseen<br />
no_expn<br />
no_verify<br />
##########################################<br />
##Transport##<br />
vacation_transport:<br />
driver = autoreply<br />
log = /.vacation.log<br />
once = /.vacation.once<br />
once_repeat = 7d<br />
# Errors-To: is deprecated<br />
# There are arguments over whether this should send to the SMTP sender, or<br />
# to a From:, Reply-To: or Resent-From: header<br />
to = &#8220;${if def:h_Errors-To: {$h_Errors-To:} {$sender_address}}&#8221;<br />
file =  /.vacation.msg<br />
return_message<br />
subject = ${if def:h_subject: \<br />
{Auto: Re: ${rfc2047:${quote:${escape:${length_60:$h_subject:}} }} }\<br />
{Auto: I am away from my mail} \<br />
}<br />
user = ${lc:$local_part}</p>
<p>Файлы исключения для автоответа прописываются таким же образом.<br />
##########################################################</p>
<p>Второй способ значительно проще, и подразумевает запущенную связку Exim + DBmail + MySQL. В этом случае мы всего лишь определяем в разделе Transport следующую строку:<br />
address_reply:<br />
driver = autoreply</p>
<p>и в конфигурационном DBMAIL dbmail.conf определяем дерективу отвечающую за использование таблицы  auto_reply для автоответа.</p>
<p>AUTO_REPLY      = yes</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/exim-acl-vs-spam/" rel="bookmark" class="crp_title">Борьба со спамом в MTA EXIM на основе ACL</a></li><li><a href="http://odminblog.ru/global-external-alias-using-exim/" rel="bookmark" class="crp_title">Организация глобального внутреннего алиаса средствами exim</a></li><li><a href="http://odminblog.ru/exim-queue/" rel="bookmark" class="crp_title">Работа с очередью Exim</a></li><li><a href="http://odminblog.ru/cheets-and-tips-exim/" rel="bookmark" class="crp_title">Всякие полезности для exim</a></li><li><a href="http://odminblog.ru/perenapravlenie-pochty-na-vneshnij-adres-sredstvami-dbmail/" rel="bookmark" class="crp_title">Перенаправление почты на внешний адрес средствами dbmail</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/autoreply-for-exim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Авторестарт демона после падения</title>
		<link>http://odminblog.ru/autorestart-daemon/</link>
		<comments>http://odminblog.ru/autorestart-daemon/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 12:32:56 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=107</guid>
		<description><![CDATA[Есть демон, чья работа критична для системы. Бывают ситуации когда он может вылететь без предупреждения и ночь пойдет на смарку. Наша задача составить скриптик для проверки состояния демона и его старта, в том случае когда он отсутствует в процессах. Возьмем время повтора тестирования 5 секунд:
################################
while [ 0 -eq 0 ]; do
[ -z "`ps axu &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Есть демон, чья работа критична для системы. Бывают ситуации когда он может вылететь без предупреждения и ночь пойдет на смарку. Наша задача составить скриптик для проверки состояния демона и его старта, в том случае когда он отсутствует в процессах. Возьмем время повтора тестирования 5 секунд:</p>
<p><span id="more-107"></span>################################</p>
<p>while [ 0 -eq 0 ]; do</p>
<p>[ -z "`ps axu | grep <em><strong>имя</strong><strong> </strong><strong>процесса</strong></em> | grep <em><strong>имя</strong><strong> владельца процесса</strong></em> | grep -v grep`" ] &amp;&amp; <em><strong>команда</strong><strong> </strong><strong>для</strong><strong> </strong><strong>запуска</strong></em><br />
sleep 5<br />
done</p>
<p>################################</p>
<p>Для закрепления пройденного материала накропим скриптик для рестарта веб-сервера под апачем:<br />
Имя процесса &#8211; httpd<br />
Пользователь родительского процесса &#8211; root<br />
Команда для старта &#8211; apachectrl startssl<br />
Соответственно:</p>
<p><code>#!/bin/sh</code><br />
<code>while [ 0 -eq 0 ]; do</code><br />
<code>[ -z "`ps axu | grep http | grep root | grep -v grep`" ] &amp;&amp; apachectrl startssl</code><br />
<code>sleep 5</code><br />
<code>done</code></p>
<p>Для автоматизации загрузки этого процесса &#8211; прописываем его в  <code>/etc/rc.local</code>.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/change-external-ip-check-point-ngx/" rel="bookmark" class="crp_title">Смена внешнего IP на Check Point NGX</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/cron-log-over-mail/" rel="bookmark" class="crp_title">Отправка отчетов по почте планировщиком cron</a></li><li><a href="http://odminblog.ru/egroupware-installing/" rel="bookmark" class="crp_title">Установка eGroupWare</a></li><li><a href="http://odminblog.ru/exim-queue/" rel="bookmark" class="crp_title">Работа с очередью Exim</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/autorestart-daemon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновление системы (продолжение обновления портов)</title>
		<link>http://odminblog.ru/kernel-update/</link>
		<comments>http://odminblog.ru/kernel-update/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 12:13:03 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=102</guid>
		<description><![CDATA[В предыдущем посте я рассказал как обновляется дерево портов. Обновление системы проводится после того как мы все это проделали, с активированными в конфиге опциями по обновлению исходников системы. Итак продолжаем:
После того как обновление закончилось, следуем в папку /usr/src. Все изменения версий описаны в файле UPDATING.
Далее просто листинг команд:
1. cd /usr/obj
2. rm -rf *
Если при удаление [...]]]></description>
			<content:encoded><![CDATA[<p>В предыдущем посте я рассказал как обновляется дерево портов. Обновление системы проводится после того как мы все это проделали, с активированными в конфиге опциями по обновлению исходников системы. Итак продолжаем:</p>
<p><span id="more-102"></span>После того как обновление закончилось, следуем в папку /usr/src. Все изменения версий описаны в файле UPDATING.<br />
Далее просто листинг команд:<br />
1. cd /usr/obj<br />
2. rm -rf *<br />
Если при удаление выдало ошибки по поводу установленных флагов, то необходимо выполнить команду<br />
chflags -R noschg *<br />
и потом повторить удаление.<br />
3. cd /usr/src<br />
Вот теперь мы собственно и начнем собирать систему:<br />
4. make buildworld<br />
конфигурим ядро:<br />
5. make buildkernel KERNCONF=YOUR_KERNEL_HERE (YOUR_KERNEL_HERE &#8211; название ядра которое лежит в папке /usr/src/sys/i386/conf. Но заметьте, вы путь не указываете, а указываете только имя файла. Советую переименовать файл, чтобы скомпилилось новое ядро, а не то что было до обновления системы)<br />
инсталлируем ядро:<br />
6. make installkernel KERNCONF=YOUR_KERNEL_HERE<br />
7. reboot (загрузиться в single mode)<br />
В следующем пункте будьте осторожны, здесь проверяются конфигурационные файлы и предлагается заменить файлы вашей системы файлами новой системы; оставить старые файлы; объединить. Таким макаром можно удалить всех своих пользователей, поэтому все делаем аккуратно:<br />
8. mergemaster -p<br />
Инсталлим новую систему:<br />
9. make installworld<br />
И снова правим файлы:<br />
10. mergemaster<br />
И последняя перезагрузка<br />
11. reboot</p>
<p>Собственно все- имеем рабочую машину с обновленным ядром</p>
<p>Примечание:<br />
На рабочем, а тем более удаленном сервере пункты 7 и 8 можно опустить, переходя сразу к 9. У меня за многочисленные разы никаких проблем не возникало.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/ports-update-freebsd/" rel="bookmark" class="crp_title">Обновление локального дерева портов FreeBSD</a></li><li><a href="http://odminblog.ru/packets-install-in-linux/" rel="bookmark" class="crp_title">Установка пакетов в Linux</a></li><li><a href="http://odminblog.ru/su2-install/" rel="bookmark" class="crp_title">Установка утилиты su2</a></li><li><a href="http://odminblog.ru/peremennye-okruzheniya-v-centos/" rel="bookmark" class="crp_title">Переменные окружения в CentOS</a></li><li><a href="http://odminblog.ru/hardening-freebsd/" rel="bookmark" class="crp_title">Настройка защищенной системы FreeBSD</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/kernel-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Обновление локального дерева портов FreeBSD</title>
		<link>http://odminblog.ru/ports-update-freebsd/</link>
		<comments>http://odminblog.ru/ports-update-freebsd/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 10:30:11 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[настройка системы]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=97</guid>
		<description><![CDATA[Я например люблю ставить пакеты из исходников, не потому что бубен мой любимый народный инструмент, но если нужно что то быстро поставить и настроить, то прибегаю к портам. Или ломы мучиться с ключами. Вообще, дерево портов необходимо поддерживать в актуальном состоянии, чтобы когда припрет не морочиться тем, что из портов вам пытаются установить устаревший пакет, [...]]]></description>
			<content:encoded><![CDATA[<p>Я например люблю ставить пакеты из исходников, не потому что бубен мой любимый народный инструмент, но если нужно что то быстро поставить и настроить, то прибегаю к портам. Или ломы мучиться с ключами. Вообще, дерево портов необходимо поддерживать в актуальном состоянии, чтобы когда припрет не морочиться тем, что из портов вам пытаются установить устаревший пакет, который уже днем с огнем не сыщешь по инету.</p>
<p><span id="more-97"></span>Порт &#8211; это наиболее удобный способ установки приложений в среде FreeBSD, причем приложение устанавливается со всеми выпущенными на данный момент заплатками и патчами. Процесс установки начинается командой make в корневой директории порта и сводится к поиску подходящих исходниках на зеркалах, скачиванию, разархивированию, компиляции и, после задания команды make install, установки с преднастроенными параметрами, и регистрацией в каталоге /var/db/pkg/(база установленных пакетов) .</p>
<p>Собственно для обновления дерева портов, необходимо поставить основной порт, отвечающий за данную процедуру- cvsup.</p>
<p># cd /usr/ports/net/cvsup-without-gui<br />
# make install</p>
<p>После этого нам необходимо настроить конфигурационный файл cvsupfile, находящийся в каталоге /etc<br />
######################################<br />
*default host=cvsup.FreeBSD.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default release=cvs<br />
*default tag=.<br />
*default delete use-rel-suffix</p>
<p>src-all<br />
*default tag=.<br />
ports-all<br />
doc-all<br />
######################################<br />
Параметры конфига таковы:<br />
*default host=cvsup.FreeBSD.org &#8211; адрес сервера откуда мы тащим обновления.<br />
*default tag=RELENG_6_3 &#8211; до какой версии обновляемся<br />
RELENG_4 &#8211; обновление до FreeBSD-4-Stable<br />
RELENG_4_10 &#8211; обновление до FreeBSD-4-10<br />
RELENG_5 &#8211; обновление до FreeBSD-5-Stable<br />
RELENG_5_3 &#8211; обновление до FreeBSD-5-3<br />
RELENG_6_3 &#8211; обновление до FreeBSD-6-3<br />
. &#8211; обновление до Current версии (по преданиям на рабочих серверах этого лучше не делать) Если обновляются только порты, то нужно ставить точку, если же вы нацелились на <a href="http://odminblog.ru/kernel-update/">make world</a>, то необходимо указывать версию системы.<br />
src-all &#8211; обновить исходники системы<br />
*default tag=. &#8211; указатель до какой версии обновить порты, если указать что то вместо точки, то порты благополучно потрутся, и придется поновой обновляться чтобы получить их назад.<br />
ports-all &#8211; указываем что хотим обновить все порты</p>
<p>После того как конфиг сохранили, следует запустить обновление ситемы:<br />
# /usr/local/bin/cvsup -g -L 2 /etc/cvsupfile</p>
<p>после этого можно спокойно идти пить чай-кофе-пиво (нужное подчеркнуть), т.к. процесс будет идти минут 15-20 как минимум, в зависимости от канала.</p>
<p>Теперь чтобы поддерживать актуальную коллекцию портов (звучит очень комильфо), необходимо засунуть задачу в cron, для это в каталоге /usr/local/sbin/ создаем файло например ports_update.sh, прописываем в него указанную выше строку, и пишем в cron</p>
<p>35 23 * * 6            root            /usr/local/sbin/cvsup_up.sh</p>
<p>хотя можно засунуть файл и в /etc/periodic/weekly/<br />
Естетсвенно в обоих случаях файлу следует дать права на исполнение.</p>
<p>Для работы с установленными пакетами используются команды семейства pkg_ :<br />
просмотр версий пакетов, устаревших и актуальных<br />
# pkg_version -v</p>
<p>Если необходимо обновить какой либо порт, то идем в директорию его порта, и говорим следующее:</p>
<p># make clean<br />
# make<br />
# pkg_delete -f имя_пакета  (имя пакеты выводится при листинге pkg_version  )<br />
# make install<br />
# make clean</p>
<p>***<strong>Примечание</strong>:<br />
При обновлении портов, можно опустить неиспользуемые порты с языковыми поддержками, путем добавления в файл /usr/sup/refuse следующих строк:</p>
<p>ports/arabic<br />
ports/chinese<br />
ports/french<br />
ports/german<br />
ports/hebrew<br />
ports/hungarian<br />
ports/japanese<br />
ports/korean<br />
ports/portuguese<br />
ports/polish<br />
ports/vietnamese</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/kernel-update/" rel="bookmark" class="crp_title">Обновление системы (продолжение обновления портов)</a></li><li><a href="http://odminblog.ru/su2-install/" rel="bookmark" class="crp_title">Установка утилиты su2</a></li><li><a href="http://odminblog.ru/packets-install-in-linux/" rel="bookmark" class="crp_title">Установка пакетов в Linux</a></li><li><a href="http://odminblog.ru/mysql-server-install/" rel="bookmark" class="crp_title">Установка сервера БД MySQL</a></li><li><a href="http://odminblog.ru/procurve-error-port-is-blocked-lacp/" rel="bookmark" class="crp_title">Ошибка HP ProCurve: port XX is Blocked by LACP</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/ports-update-freebsd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Маски прав доступа</title>
		<link>http://odminblog.ru/permission-mask/</link>
		<comments>http://odminblog.ru/permission-mask/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 16:15:12 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=55</guid>
		<description><![CDATA[Права доступа в Unix определяются для трех основных категорий: Владелец (User), Группа (Group) и все остальные (Other). Для каждой категории задаются три типа прав r (read) = чтение, x (execute) = запуск, w (write) = изменение. Т.е права доступа к тому или иному файлу/каталогу имеют вид: rwxr-xr-x, где каждые три цифры представляют собой права для [...]]]></description>
			<content:encoded><![CDATA[<p>Права доступа в Unix определяются для трех основных категорий: Владелец (User), Группа (Group) и все остальные (Other). Для каждой категории задаются три типа прав r (read) = чтение, x (execute) = запуск, w (write) = изменение. Т.е права доступа к тому или иному файлу/каталогу имеют вид: rwxr-xr-x, где каждые три цифры представляют собой права для UID:GID:Public. Задаются права с помощью команды chmod с последующим перечислением задаваемых прав:<br />
<em># chmod  u+r g+r o+r test.file</em><br />
Где u &#8211; это UID выраженный либо именем пользователя, либо ID системы; g &#8211; GID выраженный либо наименованием группы, либо уникальным ID системы; o &#8211; это public, т.е. все остальные пользователи. Знак + означает добавление прав, знак &#8211; значит ограничение прав.<br />
Для удобства задания прав принято использовать числовые маски прав доступа, которыми задают права на файл, в отличии от предыдущего синтаксиса в котором правда либо добавляются, либо отнимаются:<br />
<em># chmod  444 test.file</em></p>
<p><em><span id="more-55"></span><br />
</em></p>
<p>Вычисление масок происходит путем вычисления сумм основных прав доступа:</p>
<p>4 = Read (права на чтение)<br />
2 = Write (права на запись)<br />
1 = Execute (права на выполнение)</p>
<p>Исходя из это все комбинации цифр от 1 до 7 обозначают определенные права доступа, представленные ниже:</p>
<p>7 = Read, Write, Execute (Полные права)<br />
6 = Read, Write (Права на чтение и изменение)<br />
5 = Read, Execute (Права на чтение и запуск)<br />
4 = Read (Права только на чтение)<br />
3 = Write, Execute (Права на изменение и запуск)<br />
2 = Write (Права на изменение)<br />
1 = Execute (Права на запуск)</p>
<p>Ниже приведены основные команды управления доступом:</p>
<p><strong>chmod</strong><br />
Задание или изменение прав доступа для файла или каталога</p>
<p><strong>chown</strong><br />
Задание или изменение владельца, или группы владельцев, на файл или каталог</p>
<p><strong>ls</strong><br />
Вывод подробной информации о файле или владельце, в том числе и права доступа (при использовании ключа -l).</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/su2-install/" rel="bookmark" class="crp_title">Установка утилиты su2</a></li><li><a href="http://odminblog.ru/installing-support-snx-and-endpoint-connect/" rel="bookmark" class="crp_title">Установка поддержки SNX и Endpoint Connect на шлюзах</a></li><li><a href="http://odminblog.ru/phpbb-install/" rel="bookmark" class="crp_title">Установка движка форума phpBB</a></li><li><a href="http://odminblog.ru/vulnerabilities-wmf/" rel="bookmark" class="crp_title">Уязвимость в Windows Media File Processing</a></li><li><a href="http://odminblog.ru/hardening-freebsd/" rel="bookmark" class="crp_title">Настройка защищенной системы FreeBSD</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/permission-mask/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

