Wednesday, December 22, 2010

FTP сервер ProFTPd

Использую именно его, т.к. вполне простой и хорошо настраиваемый.
Первый момент - это то, что метод входа в папку на этом сервере - chroot, а значит система следит за правами доступа на файлы. Чтобы не было проблем с удалением файлов и пр., те файлы которые создаются автоматически должны иметь имя/права корректного пользователя. Либо, как делаю я 777, а потом просто разделение политик READ/WRITE настройками самого сервера.
Тут я выложу свой шаблон конфига, точнее, его отличия от дефолтного:


UseIPv6 off
IdentLookups off # Чтобы не искал DNS

ServerType standalone # Не люблю работать через inetd. Множатся сущности.
TimesGMT off # Хорошая опция :) При ней корректно отображается время файлов при просмотре.

Все остальные опции можно легко найти в мануале по Proftpd.

Friday, December 10, 2010

Про защиту астериска.

Защита астериска, особенно, если о стоит на внешнем IP - первоочередная задача. Итак...

1. Настроим сам Астериск

sip.conf
[general]
context=nocontext ; Чтобы неавторизованные/левые звонки никуда не попадали
allowguest=no ; Вообще запретить неавторизованные вызовы
match_auth_username=no
; Честно, не скажу как это влияет на защиту, но пишут, что влияет. Имеет смысл в том случае, если UserID и AuthUserID - разные
alwaysauthreject=yes ; Не выдает доп. информацию при неудачной регистрации. spwar отказывается работать.
useragent=D-Link DVG-1402S ; Или любой другой - найдите в гугле реальное железо. так вы будете меньше привлекать внимание хацкеров которые ищут астериски в инете.

users.conf
[XXX]
...
deny = 0.0.0.0/0.0.0.0

premit = <подсеть, в которой будет этот телефон>/<маска подсети>
; Не дает возможности регистрироваться экстеншенам из левых подсетей

2. Fail2Ban. Банит IP по проваленным попыткам регистрации.

apt-get install fail2ban
cd /etc/fail2ban/filter.d
vi asterisk.conf

# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf


[Definition]

#_daemon = asterisk

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P\S+)
# Values: TEXT
#
# HOST надо поместить в <> скобки.
failregex = NOTICE.* .*: Registration from '.*' failed for 'HOST' - Wrong password
NOTICE.* .*: Registration from '.*' failed for 'HOST' - No matching peer found
NOTICE.* .*: Registration from '.*' failed for 'HOST' - Username/auth name mismatch
NOTICE.* .*: Registration from '.*' failed for 'HOST' - Device does not match ACL
NOTICE.* .*: Registration from '.*' failed for 'HOST' - Peer is not supposed to register
NOTICE.* failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' \(from \)
NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@.*


# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

vi /etc/fail2ban/jail.conf

[asterisk-iptables]

enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 259200

vi /etc/asterisk/logger.conf

[general]

dateformat=%F %T