Захист Asterisk'а

Асте­ріск вер­сії 1.8, якраз той, що в сер­вер­ній Убун­ті, на жаль, не містить security framework (його дода­ли пізні­ше, чи то в 10‑й, чи то в 11‑й вер­сії). Усе, що мені поки потрі­бно від security framework — це IP-адре­си бру­тфор­се­рів, щоб їх бани­ти iptables'ом, але які 1.8 про­сто не пока­зує.

Але для мого випад­ку про­бле­ма може вирі­шу­ва­ти­ся іна­кше.

Оскіль­ки на сер­ва­ку нала­што­ва­но тран­ки від трьох про­вай­де­рів, адре­си сер­ва­ків яких зазда­ле­гідь відо­мі, можна зро­би­ти спо­ча­тку так:

-A INPUT -s 62.221.34.22/32 -d x.y.z.t -p udp -m udp --dport 5060 -j ACCEPT
-A INPUT -s 80.91.169.4/32 -d x.y.z.t -p udp -m udp --dport 5060 -j ACCEPT
-A INPUT -s 195.128.182.62/32 -d x.y.z.t -p udp -m udp --dport 5060 -j ACCEPT
-A INPUT -d x.y.z.t -p udp -m udp --dport 5060 -j LOG

де x.y.z.t — зов­ні­шня IP-адре­са мого сер­ва­ка, а неза­ма­ско­ва­ні адре­си — це не що інше, як адре­си SIP-сер­ве­рів Дата­гру­па, Інтер­те­ле­ко­ма та Веги. Від­по­від­но, тра­фік від про­вай­дер­ських сер­ва­ків пуска­є­мо до себе так, а інший тра­фік логу­є­мо.

У логи ядра сипа­ти­ме­ться ота­ка фігня:

[3747869.901323] IN=em1 OUT= MAC=00:22:4d:82:db:3e:00:25:90:08:0c:70:08:00 SRC=94.23.202.102 DST=x.y.z.t LEN=378 TOS=0x08 PREC=0x20 TTL=119 ID=18357 DF PROTO=UDP SPT=5080 DPT=5060 LEN=358

Тут якраз видно IP-адре­су бру­тфор­се­ра (фран­цузь­ка адре­са, до речі; їм там що, роби­ти нічо­го?). Зві­сно, це може бути і не бру­тфор­сер, а про­сто свій зов­ні­шній клі­єнт, але сво­їх клі­єн­тів до IP-теле­фо­нії ззов­ні пуска­ти тре­ба тіль­ки через VPN. Під­кре­слюю, тіль­ки так.

Від­по­від­но, маю­чи вже кон­кре­тну адре­су кул­ха­цке­ра, можна його заба­ни­ти на годин­ку, щоб він нам не засмі­чу­вав логи. Роби­ться це через fail2ban. Спо­ча­тку у файл /etc/fail2ban/jail.local дода­є­мо нову слу­жбу:

[asterisk-ipt]
enabled = true
port = 5060
protocol = udp
filter = asterisk-ipt
logpath = /var/log/syslog
maxretry = 3
bantime = 3600

Тут asterisk-ipt — це при­ду­ма­на нами ж назва. Потім у /etc/fail2ban/filter.d/asterisk-ipt.conf пише­мо ота­ке:

# Fail2Ban configuration file
#
# Author: Oleksandr Natalenko
#
# $Revision$
#

[Definition]

# 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[\w\-.^_]+)
# Values: TEXT
#
failregex = IN=.* OUT=.* MAC=.* SRC= DST=.* LEN=.* TOS=.* PREC=.* TTL=.* ID=.* PROTO=UDP SPT=.* DPT=5060 LEN=.*$

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

Цією регу­ляр­кою ми з логів види­ра­є­мо ту саму адре­су хацке­ра, щоб на годи­ну її заба­ни­ти. А нічо­го гово­ри­ти за чужий раху­нок.

Зві­сно, фаєр­во­лом можна про­сто тихень­ко дро­па­ти весь лівий тра­фік, і це також пра­виль­но, але осо­би­сто мені про­сто ціка­во зібра­ти ста­ти­сти­ку банів бру­тфор­се­рів, щоб можна було потім відзві­ту­ва­ти началь­ству, що за ніч було від­би­то 100500 атак, а також пока­за­ти від­по­від­ні логи.

Мітки: , ,

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.