<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Непонятность с file2ban на CentOS-7]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=38467&amp;type=atom" />
	<updated>2017-02-06T17:28:26Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=38467</id>
		<entry>
			<title type="html"><![CDATA[Re: Непонятность с file2ban на CentOS-7]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=451888#p451888" />
			<content type="html"><![CDATA[<p>Именно так. Это, в принципе, дефолтная для CentOS-7&nbsp; настройка. Там два файла, error_log и ssl_error_log. Полное ощущение, что не срабатывает фильтр. Так как action ставил аналогичным как и для sshd (для него всё срабатывает), то есть убирал _multiport и оставлял только один httpd порт. Не помогло. Собака, похоже, зарылать именно в регулярном выражении от fail2ban. Но вот где именно там ошибка - я не вижу.</p><p>Насколько я понял синтаксис fail2ban - там регулярное выражение можно развернуть (_apache_error_client), в конце концов, в следующий код:<br /></p><div class="codebox"><pre><code>&lt;?php
if (preg_match (&#039;/^\[\] \[(:?error|\S+:\S+)\]( \[pid \d+(:\S+ \d+)?\])? \[client &lt;HOST&gt;(:\d{1,5})?\] (AH01618: )?user .*? not found(: )?\S*(, referer: \S+)?\s*$/i&#039;, &quot;[Mon Feb 06 20:26:33.352308 2017] [auth_basic:error] [pid 15184] [client 94.188.23.161:57400] AH01618: user 111 not found: /SITE&quot;)) {
    print &quot;A match was found.\n&quot;;
    } else {
    print &quot;A match was not found.\n&quot;;
}</code></pre></div><p>?&gt;</p><p>Если запустить таким образом, то получим, что вхождение не найдено. Но, если убрать из выражения содержимое _apache_error_client, то вхождение прекрасно находится. То есть:<br /></p><div class="codebox"><pre><code>&lt;?php
if (preg_match (&#039;/(AH01618: )?user .*? not found(: )?\S*(, referer: \S+)?\s*$/i&#039;, &quot;[Mon Feb 06 20:26:33.352308 2017] [auth_basic:error] [pid 15184] [client 94.188.23.161:57400] AH01618: user 111 not found: /SITE&quot;)) {
    print &quot;A match was found.\n&quot;;
    } else {
    print &quot;A match was not found.\n&quot;;
}</code></pre></div><p>?&gt;<br />искомое вхождение прекрасно находит. Отсюда вывод: собака зарылась в переменной <br /></p><div class="codebox"><pre><code>_apache_error_client = \[\] \[(:?error|\S+:\S+)\]( \[pid \d+(:\S+ \d+)?\])? \[client &lt;HOST&gt;(:\d{1,5})?\]</code></pre></div><p>которая подставляется в конфигурации соответсвующего фильтра в регулярное выражение:<br /></p><div class="codebox"><pre><code>failregex = ^%(_apache_error_client)s (AH01618: )?user .*? not found(: )?\S*(, referer: \S+)?\s*$</code></pre></div><p>В результате строка <strong>&quot;[Mon Feb 06 20:26:33.352308 2017] [auth_basic:error] [pid 15184] [client 94.188.23.161:57400] AH01618: user 111 not found: /SITE&quot; </strong> не опознается как строка ошибки. И на неё нет реакции. <br />К сожалению, я совершенно не силён в регулярных выражениях и понять в чем именно ошибка - не могу.<br />====================<br />Еще раз внимательно погуглил, пришел к выводу, что проблема из-за изменения формата лога в Apache 2.4. Его &quot;стандартный&quot; file2ban не воспринимает. Ну с с помощью гугля и утилиты file2ban-regexp подобрал следующее выражение<br /></p><div class="codebox"><pre><code>_apache_error_client=\[[^]]*\] \[auth_basic:error\]( \[pid \d+\])? \[client &lt;HOST&gt;(:\d{1,5})?\]( \S+:)?</code></pre></div><p> <br />В общем, если его скормить file2ban-regexp&#039;у, то он находит все &quot;аварийные&quot; строки в регистрационном журнале.&nbsp; Но, если этот параметр вставить в конфиг file2ban - увы...<br />Самое непонятное - если тестировать стандартный _apache_error_client, то file2ban-regexp тоже находит все нехорошие вхождения. А вот демон - атакующего не блокирует... Непонятка...</p>]]></content>
			<author>
				<name><![CDATA[Cruiser78]]></name>
				<uri>https://linuxforum.ru/profile.php?id=631</uri>
			</author>
			<updated>2017-02-06T17:28:26Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=451888#p451888</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Непонятность с file2ban на CentOS-7]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=451863#p451863" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Cruiser78 пишет:</cite><blockquote><p>logpath = /var/log/httpd/*error_log</p></blockquote></div><p>Это точно путь лога вашего сайта?</p>]]></content>
			<author>
				<name><![CDATA[XliN]]></name>
				<uri>https://linuxforum.ru/profile.php?id=6412</uri>
			</author>
			<updated>2017-02-06T15:12:25Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=451863#p451863</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Непонятность с file2ban на CentOS-7]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=451851#p451851" />
			<content type="html"><![CDATA[<p>Коллеги, помогите разобраться с сабжевой непоняткой. А именно:<br />1. Имеем ось CentOS-7+iptables.<br />2. Имеем apache в котором крутится некий сайт, к которому стандартными средствами http (через .htaccess) реализована простенькая авторизация доступа.<br />3. имеется, собственно, file2ban.</p><p>Требуется настроить этот махарай таким образом, чтобы нарушитель получал по рукам, если начнет подбирать пароли. В гугле всё это описано не раз, повторять это не хочу. Итак, настроено, и мы после нескольких попыток подбора не получаем ожидаемого выхлопа.<br />В регистрационном журнале ошибок апача есть строки типа <em>.....AH01618: user 1 not found: /</em><br />В правилах фильтра apache-auth есть регулярка&nbsp; <em>^%(_apache_error_client)s (AH01618: )?user .*? not found(: )?\S*(, referer: \S+)?\s*$</em></p><p>Собственно, правило<br /></p><div class="codebox"><pre><code>[apache]
enabled = true
port = http,https
filter = apache-auth
action   = iptables-multiport[name=apache-auth, port=&quot;http,https&quot;]
logpath = /var/log/httpd/*error_log
maxretry = 3</code></pre></div><p>должно срабатывать, но - фиг вам. </p><p>Коллеги, подскажите, что я не вижу? Ведь тот же тривиальный ssh банится в лучшем виде. А здесь - полный игнор...</p>]]></content>
			<author>
				<name><![CDATA[Cruiser78]]></name>
				<uri>https://linuxforum.ru/profile.php?id=631</uri>
			</author>
			<updated>2017-02-06T08:19:08Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=451851#p451851</id>
		</entry>
</feed>
