무단 연결로부터 별표를 보호합니다. 별표를 보호하기 위해 Fail2ban을 설정합니다. 보안을 강화하는 간단한 단계

오늘 기사에서는 무단 액세스로부터 IP PBX를 보호하는 방법에 대해 설명하고 전화 교환의 보안을 크게 향상시킬 수 있는 몇 가지 간단한 팁을 제공합니다. 본 글에서 소개할 예시는 Asterisk 기반 IP-PBX에 관한 것이지만, 대부분은 예외 없이 모든 VoIP-PBX에 적용된다.

먼저 공격자가 IP PBX에 액세스할 경우 어떤 보안 허점이 위협이 되고 기업이 직면하게 되는 결과는 무엇인지 알아봅시다.

해킹 위협

개인용 컴퓨터나 메일을 해킹하는 것과 달리 PBX를 해킹한다는 것은 해커에게 무료 통화를 의미하며 PBX 소유자가 비용을 지불해야 합니다. 해커들이 해킹된 PBX에 몇 시간만 투자한 후 막대한 돈을 지출한 경우가 많습니다.

일반적으로 공격자의 대상은 공용 네트워크에서 액세스할 수 있는 IP PBX입니다. 다양한 SIP 스캐너를 사용하고 시스템 취약점을 검사하여 공격할 장소를 선택합니다. 기본 비밀번호, 열린 SIP 포트, 부적절하게 관리되는 방화벽 또는 방화벽 부재 등으로 인해 무단 액세스가 발생할 수 있습니다.

다행히도 이러한 모든 취약점은 완전히 무료로 수정될 수 있습니다.

보안을 강화하는 간단한 단계

보시다시피, 제안된 팁을 따르면 외부 침입으로부터 IP-PBX를 보호하는 것은 그리 어렵지 않으며 시스템의 보안과 안정성을 크게 높일 수 있습니다.

요즘 우리는 다양한 유형의 공격을 처리해야 하는 경우가 많습니다. 별표그리고 유사품. 잘못된 구성과 간단한 규칙의 무시는 이를 사용하는 기업에 금전적 손실을 수반합니다. PBX 별표.

이 기사에서는 초기 보안 메커니즘을 살펴보겠습니다. 별표 13설치 후 Linux 보안 메커니즘을 고려하지 않습니다. 아래에서는 시스템 보안에 도움이 되는 여러 가지 규칙을 설명합니다.

1. 모든 네트워크 장치(별표, IP 전화, VoIP 게이트웨이)에 대한 해킹 방지 비밀번호 및 로그인.

SIP 계정, 관리자, 별표 관리자 및 네트워크 장치의 비밀번호는 최소 13자(문자, 숫자, 특수 문자, 대소문자 변경)로 구성되어야 합니다. 다음과 같은 시스템에서 로그인을 사용하지 마십시오. 관리자, 관리자, 관리자등.

2. Asterisk - sip.conf에서 SIP 구성을 수정합니다.

스캐너로부터 보호하려면 표준 SIP 포트를 변경하고 게스트 호출 및 등록, 중복 다이얼링, 채널 상태 정보 구독 등을 금지해야 합니다. 매개변수에 대한 전체 설명 일반 sip.conf기사에 설명되어 있습니다. 다음은 주석과 함께 Asterisk 서버에 대해 구성한 sip.conf입니다.
context=default ;기본적으로 발신 호출에 사용되지 않은 컨텍스트 할당allowguest=no ;게스트(인증 없이) 연결 금지 match_auth_username=no ;"from" 대신 "username" 필드 사용 금지allowoverlap=no ;한 자리 숫자 금지 다이얼링;allowtransfer= no ;전달 사용을 금지합니다 영역=CUCM11.5(1)SU3 ;서버 도메인 이름을 사용합니다(별표를 숨깁니다) ;domainsasrealm=no ;recordonfeature=automixmon 바인딩 포트=9050 ;SIP 신호 변경 port udpbindaddr=0.0.0.0 ;UDP 주소 -기본값 tcpenable=yes ;TCP 지원 활성화(Avaya가 있는 경우) tcpbindaddr=0.0.0.0 ;기본 TCP 주소;tlsenable=no ;tlsbindaddr=0.0.0.0 ;tcpauthtimeout = 30 ; tcpauthlimit = 100 ;websocket_enabled = true ; websocket_write_timeout = 100 Transport=udp ;기본 전송 srvlookup=yes ;DNS 이름에 대한 호출 허용;pedantic=yes ;tos_sip=cs3 ;tos_audio=ef ;tos_video=af41 ;tos_text=af41 ;cos_sip=3 ;cos_audio=5 ;cos_video=4 ;cos_text=3 ;maxexpiry=3600 ;minexpiry=60 ;defaultexpiry=120 ;submaxexpiry=3600 ;subminexpiry=60 ;mwiexpiry=3600 ;maxforwards=70 verifyfreq=60 ;호스트 가용성 확인을 다음으로 설정 60초;qualifygap= 100 ;qualifypeers=1 ;keepalive=60 ;notifymimetype=text/plain ;buggymwi=no ;mwi_from=asterisk ;vmexten=voicemail ;preferred_codec_only=yes disallow=all ;모든 코덱 허용 안 함 허용=alaw ;Alaw 허용 허용 =ulaw ;Ulaw 허용 ;autoframing=yes ;mohinterpret=default ;mohsuggest=default ;parkinglot=plaza 언어=ru ;러시아어를 시스템의 기본 언어로 설정tonezone=ru ;Ru에서 전역 톤존 결정 Relaxdtmf=yes ;인식 활성화 제대로 인식되지 않은 DTMF 신호;trustrpid = no ;sendrpid = yes rpid_update=yes ;회선 상태 변경에 대해 다가오는 서버에 즉시 알림;trust_id_outbound = no ;prematuremedia=no ;progressinband=no callerid=CUCM11.5(1)SU3 ; CallerID가 어딘가에 설치되어 있지 않으면 기호로 useragent=Cisco-SIPGateway/IOS-12.x를 설치하고 PBX로는 Cisco-SIPGateway를 사용합니다. promiscredir = no ;usereqphone = no dtmfmode=rfc2833 ;톤 설정 compactheaders = yes videosupport=yes ; 영상 통화 지원을 활성화합니다. textsupport=no maxcallbitrate=2048 ;비디오 통신의 최대 비트 전송률 authfailureevents=yes ;로그인할 수 없는 경우 피어 상태 설정=거부됨 Alwaysauthreject=yes ;인증 요청이 거부된 경우 응답은 사용자가 잘못 입력했다는 메시지를 표시하지 않습니다. 사용자 이름 검색 보호 auth_options_requests=yes ;OPTION 및 INVITE를 보낼 때 인증 필요 ;accept_outofcall_message = no ;outofcall_message_context = 메시지 auth_message_requests=yes ;인증 활성화 메시지 요청 ;g726nonstandard = yes ;outboundproxy=proxy.provider.domain:8080 ;supportpath =yes ;rtsavepath=yes ;matchexternaddrlocally = yes ;dynamic_exclude_static = yes ;contactdeny=0. 0.0.0/0.0.0.0 ;contactpermit=172.16.0.0/255.255.0.0 ;contactacl=named_acl_example ;rtp_engine=asterisk ;regcontext=sipregistrations regextenonqualify=yes ;피어에 대해 품질이 활성화되어 있고 실패하면 *는 이 확장을 다음에서 종료합니다. regcontext ; Legacy_useroption_parsing=yes ;send_diversion=no ;shrinkcallerid=yes ;use_q850_reason = no ;refer_addheaders=yes autocreatepeer=no ;인증 없이 UAC 등록을 비활성화합니다. t1min=200 ;호스트로 전달된 메시지에 대한 최소 지연;timert1=500 ; 타이머b=32000 rtptimeout= 600 ;600초 후에 RTP 미디어 스트림의 활동이 없으면 통화를 중단합니다. rtpholdtimeout=300 ;300초 후에 보류 모드에서 RTP 미디어 스트림의 활동이 없으면 통화를 중단합니다.rtpkeepalive= ;session- 타이머=originate ;session-expires=600 ;session-minse=90 ;session-refresher=uac ;sipdebug = yes ;recordhistory=yes ;dumphistory=yes ;allowsubscribe=no ;subscribecontext = 기본값 ;notifyringing = no ;notifyhold = yes ; informcid = yes callcounter=yes ;통화 카운터 활성화 t38pt_udptl=yes ;FEC 오류 수정으로 T.38 지원 활성화 Asterisk가 이를 수신한 포트이며 SDP에서 수신한 포트가 아님 ;media_address = 172.16.42.1 ;subscribe_network_change_event = yes ;icesupport = yes directmedia=no ; Asterisk를 우회하여 피어 간에 RTP 트래픽을 직접 라우팅 ;directrtpsetup=yes ;directmediadeny=0.0 .0.0/0 ;directmediapermit=172.16.0.0/16 ;directmediaacl=acl_example ;ignoresdpversion=yes sdpsession=SIP Call ;SDP 세션 이름 변경 sdpowner=CiscoSystemsSIP-GW-UserAgent ;SDP 소유자 문자열의 사용자 필드 변경 ;암호화 =no ;encryption_taglen=80 ;avpf=yes ;force_avp=yes ;rtcachefriends=yes ;rtsavesysname=yes ;rtupdate =yes ;rtautoclear=yes ;ignoreregexpire=yes ;domain=customer.com,customer-context ;allowexternaldomains=no ;allowexternaldomains =no ;fromdomain=mydomain.tld ;snom_aoc_enabled = yes jbenable=yes ;지연을 보상하기 위해 RTP 버퍼 사용을 활성화합니다. jbforce = no jbmaxsize=200 ;최대 RTP 버퍼 크기를 200ms로 설정합니다.jbresyncthreshold = 1000 ;jbimpl = 수정됨 ;jbtargetextra = 40 ;jblog = 아니요

3. 비표준 IAX 포트를 사용합니다.

파일에서 이 작업을 수행하려면 /etc/asterisk/iax.conf섹션에서 매개변수를 변경해 보세요 바인드포트=4569매개변수당 바인드포트=9069

4. Asterisk는 루트가 아닌 다른 사용자로 시작해야 합니다. 이를 수행하는 방법은 기사에 기록되어 있습니다.

5. SIP 확장에 허용되는 IP 주소 또는 네트워크를 설정합니다.

거부=0.0.0.0/0.0.0.0 ;모든 것을 거부 허가=10.0.0.0/255.0.0.0 ;알려진 허가를 허용=172.20.0.0/255.255.0.0 ;알려진 허가를 허용=192.168.0.0/16 ;알려진 허가를 허용

6. 동시 통화 제한을 설정하세요.

call-limit=2 ;사용자가 전송할 수 있도록 값을 2로 설정합니다.

7. 각 사용자에 대해 서로 다른 발신 라우팅 규칙을 설정합니다.

모든 기본 경로를 제거하고 컨텍스트에 따라 고유한 경로를 할당해야 합니다.

  • 로컬 세트
  • 시내전화
  • 구역 통화
  • 장거리 전화
  • 국제전화
ABC, DEF 코드의 전체 목록은 공식 Rossvyaz 리소스에서 확인할 수 있습니다.
기본 경로의 경우 다음을 수행하십시오. 확장 => _X.,1,Hangup()

8. IPtables 사용

9. Fail2Ban을 사용하세요

10. 모든 전화 장치를 별도의 음성 VLAN에 연결합니다. 여기서 우리는 네트워크 담당자들에게 부담을 줄 필요가 있습니다.

11. 우리는 국제방향 8-10에 특별한 관심을 기울인다.

조직에서 사용하는 방향만을 설정하고 필요에 따라 추가(확장)합니다. 또한 사용자나 공격자가 알 수 없는 국제 목적지를 사용한 경우 이메일 알림을 보내고 각 연결 및 동시 통화 수에 제한을 설정합니다. 8-10 방향을 보호하기 위한 기성 솔루션이 기사에 설명되어 있습니다.

12. 사용하지 않는 채널과 서비스를 비활성화합니다.

예를 들어, 프로토콜을 사용하지 않는 경우 MGCP또는 마른, 파일에서 이러한 모듈을 비활성화합니다. /etc/asterisk/modules.conf:
noload => pbx_gtkconsole.so noload => chan_alsa.so noload => chan_console.so noload => res_ari.so noload => chan_dahdi.so noload => codec_dahdi.so noload => res_ari_device_states.so noload => res_ari_applications.so noload = > res_ari_channels.so noload => res_ari_events.so noload => res_ari_playbacks.so noload => res_ari_endpoints.so noload => res_ari_recordings.so noload => res_ari_bridges.so noload => res_ari_asterisk.so noload => res_ari_sounds.so noload => res_pjsip .so noload => cdr_mysql.so noload => res_phoneprov.so noload => cdr_odbc.so noload => cdr_pgsql.so ;======================= ===== ; PBX -- 로드 없음 => pbx_ael.so ; 채널 -- noload => chan_mgcp.so noload => chan_skinny.so noload => chan_unistim.so noload => chan_pjsip.so noload => chan_modem.so noload => chan_modem_aopen.so noload => chan_modem_bestdata.so noload => chan_modem_i4l. 그래서 noload => chan_alsa.so noload => chan_oss.so ; 코덱 -- noload => codec_lpc10.so ; 형식 -- noload => format_au.so noload => format_gsm.so noload => format_h263.so noload => format_ilbc.so noload => format_jpeg.so ; 애플리케이션 -- noload => app_image.so noload => app_zapateller.so noload => app_zapbarge.so noload => app_zapscan.so noload => res_config_ldap.so

13. 방화벽을 사용하여 IP-PBX에 대한 원격 액세스를 제한합니다.

승인된 직원에게 원격 액세스를 제공하려는 경우 VPN 서버(예: Open VPN)를 사용하여 구성하는 것이 가장 좋습니다.

전화요금이 저렴할 수 있다
기능적!

IT KUB 회사는 IP 텔레포니의 설치, 통합 및 구성에 대한 광범위한 서비스를 제공합니다.

IT 서비스는 고품질이 될 수 있습니다!

chmod 755 install_apf_bfd.sh

./install_apf_bfd.sh

APF 구성은 /etc/apf/conf.apf에 있습니다.

파일 편집을 시작하려면 다음 명령을 사용하십시오.

나노 /etc/apf/conf.ap에프

인터넷에 연결되는 네트워크 인터페이스에 대해 IFACE_IN 및 IFACE_OUT을 설정합니다. 로컬 네트워크에 연결되는 네트워크 인터페이스의 경우 IFACE_TRUSTED를 설정합니다.

SET_TRIM="0"

APF에는 QoS를 지원하는 기능이 있습니다. SIP 및 IAX의 경우 다음을 설치해야 합니다.

T.O.S. _8="21,20,80,4569,5060,10000_20000"

SSH 포트를 변경한 경우 해당 새 포트와 일치하도록 conf.apf 파일을 편집해야 합니다.

HELPER_SSH_PORT="2222"

2222를 SSH를 실행하기로 선택한 올바른 포트 번호로 바꾸십시오.

인바운드 필터링은 액세스를 위해 포트를 여는 데 사용됩니다. TCP와 UDP에는 별도의 설정이 있습니다. Asterisk(Trixbox)의 경우 다음 포트가 열려 있어야 합니다. TCP와 UDP가 모두 나열됩니다. TFTP를 사용하지 않는 경우 포트 69를 열지 마십시오. SSH 포트를 변경하는 것을 잊지 마십시오. 그렇지 않으면 액세스할 수 없습니다. 여기서는 마지막 예의 포트 2222를 사용하고 있습니다. 이 설치에는 IAX 포트가 포함되지 않았습니다. 특정 호스트만 IAX를 사용할 수 있도록 하는 쉬운 방법이 있으며 이에 대해서는 나중에 다루겠습니다. IAX를 사용하여 외부 세계에 보이지 않는 간선 트렁크를 설치하는 경우 편리합니다.

IG_TCP_CPORTS="2222,69,80,5060,6600,10000_20000"
IG_UDP_CPORTS="69,5060,10000_20000"

저는 아웃바운드 필터링을 사용하지 않으므로 이 글에서는 다루지 않습니다. EGF="0"으로 설정되어 있으며 기본적으로 비활성화되어 있습니다.

명령줄 옵션 목록을 보려면 플래그 없이 apf를 실행하세요.

#apf
apf(3402): (glob) 상태 로그를 찾을 수 없음, 생성됨
APF 버전 9.6< This email address is being protected from spambots. You need JavaScript enabled to view it. >
저작권 (C) 1999-2007, R-fx 네트워크< This email address is being protected from spambots. You need JavaScript enabled to view it. >
저작권 (C) 2007, 라이언 맥도날드< This email address is being protected from spambots. You need JavaScript enabled to view it. >
이 프로그램은 GNU GPL의 조건에 따라 자유롭게 재배포될 수 있습니다.
사용법 /usr/local/sbin/apf
-s|--start ..........................모든 방화벽 규칙 로드
-r|--restart ......................방화벽 규칙 중지(플러시) 및 다시 로드
-f|--stop...................... 모든 방화벽 규칙을 중지(플러시)합니다.
-l|--list ..........................모든 방화벽 규칙 나열
-t|--status ..................... 방화벽 상태 로그 출력
-e|--refresh ...........................신뢰할 수 있는 DNS 이름 새로 고침 및 확인
규칙
-a HOST CMT|--HOST COMMENT 허용 ... 호스트(IP/FQDN) 추가
allowed_hosts.rules를 실행하고 새 규칙을 방화벽에 즉시 로드합니다.
-d HOST CMT|--호스트 설명 거부 .... 호스트(IP/FQDN) 추가
deny_hosts.rules를 실행하고 새 규칙을 방화벽에 즉시 로드합니다.
-u|--remove HOST .........에서 호스트 제거
*_hosts.rules 및 방화벽에서 규칙을 즉시 제거
-o|--ovars ..........................모든 구성 옵션을 출력합니다.

APF를 시작하려면 다음 명령을 사용합니다.

#apf -s
apf(3445): (glob) 방화벽 활성화
apf(3489): (glob) 결정됨 (IFACE_IN) eth0의 주소는 192.168.1.31입니다.
apf(3489): (glob) 결정됨 (IFACE_OUT) eth0의 주소는 192.168.1.31입니다.
apf(3489): (glob) preroute.rules 로드 http://r-fx.ca/downloads/reserved http://feeds.dshield.org/top10-2.txt
http://www.spamhaus.org/drop/drop.lasso
apf(3489): (sdrop) drop.lasso를 /etc/apf/sdrop_hosts.rules로 구문 분석합니다.
apf(3489): (sdrop) sdrop_hosts.rules 로드 중
apf(3489): (glob) 공통 드롭 포트 로드
..........이 문서에 맞게 다듬어졌습니다.........
apf(3489): (glob) 기본(수신) 입력 삭제
apf(3445): (glob) 방화벽이 초기화되었습니다.
apf(3445): (glob) !!개발 모드 활성화!! - 방화벽이 플러시됩니다.
5분마다.

APF가 시작되어 dshield.org 및 spamhaus.org에서 여러 규칙을 다운로드한 것을 확인할 수 있습니다. 이제 SSH를 통해 Asterisk(Trixbox) 서버에 로그인하여 모든 것이 올바르게 구성되었는지 테스트해 보겠습니다. 연결할 수 없는 경우 5분 정도 기다려야 APF가 블록을 제거합니다. SSH를 통해 로그인할 수 있다고 확신하면 conf.apf DEVEL_MODE = "1"을 DEVEL_MODE = "0"으로 변경하고 APF를 다시 시작할 수 있습니다. APF는 시작되지만 DEVELOPMETN_MODE에 있다는 경고를 발행하지 않습니다.

APF: 추가 튜닝

IAX를 통해 Asterisk(Trixbox) 서버를 연결하려는 경우 설정은 여기서 끝나지 않습니다. 이렇게 하려면 conf.apf에 IAX 포트를 추가해야 합니다. 이 옵션은 고정 IP 주소 또는 DynDNS에서 작동합니다. apf -a 명령은 특정 IP 주소에 대한 액세스를 허용합니다. 이렇게 하면 호스트가 방화벽 규칙을 우회하여 Asterisk(Trixbox)에 전역적으로 연결할 수 있습니다.

apf -a 192.168.1.216

이렇게 하면 시스템 192.168.1.216이 방화벽이 있는 서버의 모든 포트에 연결할 수 있으므로 방화벽 규칙을 우회할 수 있습니다. Asterisk(Trixbox) 모두에서 APF를 실행하는 경우 올바른 IP 주소를 사용하여 다른 호스트에서도 동일한 작업을 수행해야 합니다.

APF를 사용하면 시스템 관리자가 호스트 또는 전체 서브넷을 차단할 수도 있습니다. 이는 누군가가 FTP, Telnet, SSH 등을 통해 귀하의 컴퓨터에 연결을 시도하는 것을 볼 때 편리합니다. 특정 호스트를 차단하려면 다음을 사용하십시오. 차단하려는 IP 주소를 사용하십시오.

apf -d 192.168.1.216

전체 서브넷(CIDR)을 차단하려면:

apf -d 202.86.128.0/24

APF는 UDP 패킷에 대한 QoS를 지원하지 않습니다. TCP 전용. 이 문제를 해결하는 쉬운 방법이 있습니다. /etc/apf/internals에 function.apf 파일이 있습니다. 이 파일을 수동으로 편집해야 합니다. 한 줄을 추가해야 하는 곳이 여러 군데 있습니다. function.apf 파일에서 TOS_ 섹션을 찾고 있습니다. 다음과 같이 보일 것입니다:

만약에 [! "$TOS_0" == "" ]; 그 다음에
나는 `echo $TOS_0 | tr "," " "`; 하다
i=`에코 $i | tr "_" ":"`
$IPT -t mangle -A 사전 설정 -p tcp --sport $i -j TOS --set-tos 0
$IPT -t mangle -A PREROUTING -p udp --sport $i -j TOS --set-tos 0
완료
fi

이 추가 라인은 사용하는 모든 TOS 비트에 대해 작성되어야 합니다.

BFD

무차별 대입(사전 공격) 탐지는 무단 로그인 시도를 탐지하는 데 사용됩니다.

BFD의 구성 파일은 /usr/local/bfd에 있으며 이름은 conf.bfd입니다. 이 파일에는 APF 파일과 마찬가지로 많은 주석이 포함되어 있습니다. 몇 가지 설정만 살펴보겠습니다.

우리가 살펴볼 첫 번째 구성 변수는 TRIG입니다. 공격자가 차단되기 전까지의 시도 실패 횟수입니다. 기본값은 15입니다. 이는 하나의 계정이 아닌 하나의 IP 주소에서 시도한 횟수라는 점에 유의하세요. 따라서 다른 계정을 사용하여 하나의 IP 주소에서 15번의 로그인 시도에 실패하면 여전히 차단됩니다.

BFD에는 멋진 기능이 있습니다. 무차별 공격이 감지되면 이메일을 보냅니다. 이 옵션을 활성화하려면 EMAIL_ALERTS를 1로 설정하십시오. 알림을 받고 싶은 주소(EMAIL_ADRESS)를 지정하는 것을 잊지 마세요.

BFD는 3분마다 cron에 의해 시작되며 /etc/cron.d에 있습니다.

다음 명령을 사용하여 금지된 IP 주소 목록을 얻을 수 있습니다.

BFD를 시작하려면 다음 명령을 사용하십시오.

bfd -s

요약

이것으로 Asterisk(Trixbox) 보안에 대한 검토가 완료되었습니다.

이 문서에서는 Asterisk(Trixbox) 보호의 기본 원칙에 대해서만 설명합니다. 당연히 보안 VoIP 시스템 구축은 이에 국한되지 않습니다.

기사 원문은 링크에서 읽어보실 수 있습니다

아시다시피 별표는 IP 텔레포니용 애플리케이션(서버)입니다. 즉, 연결된 클라이언트가 전화선을 사용하여 서로 및 외부 세계에 전화를 걸 수 있습니다. 이로 인해 다음과 같은 위험이 발생합니다.

  1. 클라이언트는 로그인/비밀번호로 식별되며 일반적으로 IP 주소로도 식별됩니다. 동시에 비밀번호를 선택할 수 있으며(복잡도에 따라 조만간 가능하지만 어떤 경우에도 가능함) IP 주소에 대한 제한이 우리가 원하는 만큼 엄격하지 않은 경우가 많습니다. 이상적으로는 각 클라이언트마다 고유한 IP 주소가 있어야 합니다.)
  2. 인터넷에서 들어오는 호출(예: 다른 별표 서버에서) 이러한 연결을 사용하면 별표(기본 구성에서)가 연결이 이루어진 IP 주소 표시를 제공하지 않기 때문에 모든 것이 더 복잡해집니다.

방화벽(예: iptables) 및 적절하게 구성된 별표(클라이언트 및 기타 서버의 IP 주소를 포함하여 로그에 전체 정보 표시)와 함께 fall2ban 프로그램을 사용하면 연결 시도 및 비밀번호 추측을 효과적으로 차단할 수 있습니다.

설정을 시작하기 전에 iptables와 fall2ban을 설치해야 합니다. 또한, fall2ban을 구성하기 전에 iptables가 이미 구성되어 있어야 하며 별표로 연결을 허용해야 합니다! 여기에서 iptables를 구성하는 방법을 읽을 수 있습니다: 별표에 대한 iptables 설정. 별표 자체를 설치하기 전에 fall2ban을 설치할 수도 있습니다. 이 경우 (적어도 이론상으로는) 설치 과정에서 별표의 최신 버전은 실패2ban이 설치되어 있음을 감지하고 자동으로 구성합니다. 하지만:

  1. 별표를 설치하기 전에 IP 전화 통신 보안 문제가 항상 고려되는 것은 아닙니다. 즉, 별표가 이미 설치(및 구성)된 시스템에 fall2ban을 설치하려고 할 가능성이 높습니다.
  2. 모든 경우에 자동 구성이 전혀 작동하는 것은 아니며 올바르게 작동하는 것은 물론입니다(별표에 대한 모든 공격을 차단하기 시작합니다).

별표 로깅 설정

우선, 정보가 필요한 형식과 형태로 즉시 수집되기 시작하도록 별표 로깅을 설정하는 것이 합리적입니다. 이렇게 하려면 별표 구성 디렉터리(기본적으로 /etc/asterisk)에서 logger.conf 파일을 찾아 다음과 같이 변경합니다. 주석 처리를 해제합니다(줄 시작 부분의 세미콜론 제거).

날짜 형식=%F %T ; ISO 8601 날짜 형식

이는 별표가 로그에 날짜를 올바른 형식으로 기록하는 데 필요합니다.
년-월-일 시:분:초

별표 버전 10부터 별표 보안 프레임워크를 활성화할 수 있습니다. 이렇게 하려면 logger.conf 파일에서 다음 행을 찾아서 주석 처리를 제거(또는 추가)하십시오.

보안 => 보안

화살표 왼쪽에 있는 이 줄은 이벤트가 저장될 파일 이름을 지정하고 오른쪽에는 저장될 레벨(이벤트 유형)을 지정합니다. 이 예에서는 보안 수준과 관련된 이벤트(및 해당 이벤트만)가 별표 로그 폴더의 security라는 파일에 저장됩니다.
물론 변경 후 별표는 구성을 다시 읽어야 합니다. 이렇게 하려면 별표 서비스를 다시 로드하거나 로그 구성만 다시 로드하면 됩니다(별표 CLI에서 로거 다시 로드).

그런 다음 security라는 파일이 별표 로그 폴더(기본적으로 /var/log/asterisk)에 나타납니다. 이 파일에 대한 로그 회전을 설정하는 것을 잊지 마세요(다른 별표 로그와 동일)!

필터링 규칙 설정

이제 일반 별표 메시지 흐름(잘못된 로그인/비밀번호, 승인되지 않은 IP 주소에서의 로그인 시도 등)에서 잠재적으로 위험한 이벤트를 추출하는 필터를 만들어야 합니다. 동시에 우리는 잠재적으로 위험한 이벤트를 감지할 뿐만 아니라 해당 작업이 수행된 IP 주소를 거기에서 격리해야 합니다. 즉, 별표 이벤트 파일에서 특정 행만 찾는 것이 아니라 필터링 규칙을 설정합니다.
필터링 규칙은 /etc/fail2ban/filter.d/asterisk.conf 파일에 작성할 수 있습니다. 다음은 이 파일 내용의 샘플입니다.

# Fail2Ban 구성 파일 # # # $Revision: 250 $ # # 공통 접두사를 읽습니다. 사용자 정의가 가능한 경우 -- # common.local #before = common.conf #_daemon = 별표에서 읽어보세요 # 옵션: 실패regex # 참고: 로그 파일의 비밀번호 실패 메시지와 일치하는 regex. # 호스트는 "host"라는 그룹과 일치해야 합니다. " " 태그는 # 표준 IP/호스트 이름 일치에 사용할 수 있으며 # (?:::f(4,6):)?(?P \S+)의 별칭일 뿐입니다. # 값: TEXT # # 별표 1.8에서는 # 사용합니다 여기에 반영된 호스트:포트 형식 failureregex = NOTICE.* .*: ":.*"에 대한 ".*" 등록 실패 - 잘못된 비밀번호 알림.* .*: ":.*에 대한 ".*" 등록 실패 " - 일치하는 피어를 찾을 수 없습니다. 참고.* .*: " :.*"에 대해 ".*"에서 등록에 실패했습니다. - 사용자 이름/인증 이름이 일치하지 않습니다. 참고.* .*: " :.*"에 대해 ".*"에서 등록에 실패했습니다. - 장치가 ACL과 일치하지 않습니다. 알림.* .*: " :.*"에 대해 ".*"에서 등록 실패 - 로컬 도메인이 아님 알림.* .*: " :.*"에 대해 ".*"에서 등록 실패 - 피어는 등록할 수 없습니다. 알림.* .*: " :.*"에 대한 ".*" 등록 실패 - ACL 오류(허용/거부) 알림.* .*: " "에 대한 ".*" 등록 실패 - 잘못된 비밀번호 알림.* .*: " "에 대한 ".*" 등록 실패 - 일치하는 피어를 찾을 수 없음 알림.* .*: " "에 대한 ".*" 등록 실패 - 사용자 이름/인증 이름 불일치 알림.* .* : " "에 대한 ".*" 등록 실패 - 장치가 ACL과 일치하지 않음 알림.* .*: " "에 대한 ".*" 등록 실패 - 로컬 도메인 아님 알림.* .*: ".*"에서 등록 " "에 대해 실패했습니다. 알림.* .*: ""에 대해 ".*"에서 등록이 실패했습니다. - ACL 오류(허용/거부) 알림.* .*: "\".*\"에서 등록 " :.*"에 대해 .*" 실패 - 일치하는 피어를 찾을 수 없음 알림.* .*: "\".*\".*"에서 등록이 " :.*"에 대해 실패함 알림.* .*: 아니요 피어 ".*" \(from \) 등록에 대한 알림.* .*: 호스트가 ".*"(.*)에 대한 MD5 인증에 실패함 알림.* .*: 사용자 인증에 실패함 .*@ .* NOTICE.* 실패 ".*"$으로 인증하려면 주의사항.* .*: 장치에 대한 가짜 인증 거부를 보냅니다.*\<.>

초기 버전은 aviabove 라인과 같은 라인을 사용합니다. 왜냐하면 버전부터 위 버전에 없는 포트 번호에 대한 로그 정보가 이전 버전과 새 버전과 동일하게 고려되므로 아무것도 변경할 필요가 없기 때문입니다. 그것

버전 이상의 경우 로깅을 활성화한 경우 해당 로그에 대한 필터링 규칙을 지정하는 것을 잊지 마십시오.

필터링 규칙은 파일에 작성할 수 있습니다. 다음은 이 파일 내용의 샘플입니다.

절연체 설정

이제 필터를 연결하여 이러한 줄을 검색해야 하는 파일과 수행할 작업을 설명할 수 있도록 소위 격리자에 대한 설명을 만들어야 합니다.

이렇게 하려면 파일을 엽니다.

  1. 이와 관련된 다른 규칙이 없는지 확인하고 따옴표 없이 이름으로 파일을 검색하고 각각에 대해 그러한 규칙이 있는 경우 속성이 설정되었는지 확인하세요.
  2. 버전이 더 작거나 로그를 사용하고 싶지 않은 경우 로그 사용은 권장되지 않습니다. 규칙을 하나만 생성하면 됩니다. 그렇지 않으면 규칙을 생성해야 합니다.

규칙번호

이 규칙은 모든 버전에 대해 생성되어야 합니다. 새 규칙을 생성하거나 기존 규칙을 수정할 수 있지만 이 예에서는 와 함께 사용되므로 새 규칙은 다음의 파일에 적용됩니다. 모든 주요 유형의 이벤트가 저장됩니다. 별표 기본적으로 이 기본 로그 파일이 호출되지만 예를 들어 파일 VassmsettingsasteriskinfileItaksarule이라는 파일이 됩니다.

규칙의 기본 이벤트에 대한 격리 장치 구성이 활성화되었습니다. 사용될 필터는 필터 이름입니다. 이는 잠재적으로 위험한 이벤트를 검색하기 위해 필터를 적용할 로그 마스터 파일이 있는 디렉터리의 파일 이름입니다. 필터가 작업을 트리거하기 위해 발견한 잠재적으로 위험한 이벤트 수 잠재적으로 위험한 이벤트를 검색하기 위해 작업을 적용할 시간(초) 필터가 공격을 탐지한 경우 수행할 작업 로그에서 탐지된 기간(초) 하나의 주소에서 발생하는 잠재적으로 위험한 활동에 대해 모든 포트를 차단하고 잠재적으로 위험한 모든 이벤트가 무시되는 서브넷 주소 목록에 대한 편지를 보냅니다.

규칙번호

이 규칙은 버전이 최신이고 위에서 로깅이 활성화된 경우에만 작동합니다. 새 규칙을 생성하거나 기존 규칙을 수정할 수도 있지만 비활성화되어 있으므로 새 규칙이 호출됩니다. 이 규칙은 로그 디렉터리의 파일을 분석하는 데 사용됩니다.

보안 이벤트에 대한 격리기 구성 규칙 활성화 사용할 필터는 필터 이름입니다. 디렉토리의 파일 이름 로그 마스터 파일 잠재적으로 위험한 이벤트를 검색하기 위해 필터를 적용할 필터가 트리거하기 위해 발견한 잠재적으로 위험한 이벤트 수 작업을 초 단위로 적용합니다. 잠재적으로 위험한 이벤트를 검색하기 위해 초 단위로 작업을 적용합니다. 필터가 공격을 감지한 경우 수행할 작업 기간 초 로그에서 한 주소에서 잠재적으로 위험한 작업을 감지했습니다. 모든 포트를 차단합니다. 이를 위해 잠재적으로 위험한 모든 이벤트가 무시되는 서브넷 주소 목록에 대한 편지를 보내십시오.

시작하다

이제 시작하거나 다시 시작해야 하며 필요한 경우 예를 들어 아직 시작되지 않았습니다.

실행하려면 먼저 실행해야 합니다. 다음 명령을 실행하세요.

다시 시작하려면 다음 명령을 실행하십시오.

성공적으로 시작되었고 규칙이 로드되었는지 확인하려면 다음 명령을 실행하십시오.

그리고 두 번째 규칙이 있다면

규칙 목록을 표시하려면 다음 명령을 실행하십시오.

방금 설치한 경우 시스템을 부팅할 때 자동으로 시작되도록 구성되어 있는지 확인하는 것을 잊지 마십시오.

작업 확인 중

확인 과정에서 가장 중요한 것은 다른 컴퓨터나 서버에 대한 로컬 액세스 권한을 확보하여 주소가 차단된 경우 연결하여 이 차단을 제거할 수 있도록 하는 것입니다.

모든 것을 올바르게 구성하거나 복사했더라도 여러 가지 이벤트 조합으로 인해 설정한 잠금이 작동하지 않을 수 있으므로 링크의 작동을 확인해야 합니다.

링크 작동을 확인하는 작업 순서

  1. 컴퓨터가 시작 시 시작되도록 설정되어 있는지 확인하십시오.
  2. 규칙을 구성한 경우 각 규칙의 작동을 별도로 확인하는 것이 좋습니다. 예를 들어 규칙 중 하나를 비활성화하십시오.
  3. 컴퓨터를 다시 시작해 보세요.
    1. 서비스가 실행 중입니다
    2. 한 규칙은 켜져 있고 다른 규칙은 꺼져 있습니다.

      이 경우 비활성화된 규칙에 대한 메시지가 나타납니다.

      그리고 양식에 포함된 메시지에 대해

  4. 반드시 다른 컴퓨터의 서버에서 클라이언트를 시작하고 인증을 위한 잘못된 데이터를 지정하십시오. 연결 주소는 서버 주소로 한 번 로그인을 시도해야 합니다. 그렇지 않으면 주소가 차단되는 최대 인증 횟수가 지정됩니다. 테스트 클라이언트로서 명령줄에서 실행되는 프로그램을 사용할 수 있습니다.
  5. 서버에 연결한 동일한 컴퓨터에서 클라이언트를 시작했고 설정이 올바르게 구성되어 있으면 주소가 현재 차단되어 이 컴퓨터의 서버에 연결할 수 없는 경우 이 확인란을 선택하고 다른 컴퓨터에 연결하거나 로컬로 연결하고 계속하세요. 명령 실행
  6. 다음과 같은 명령을 실행하십시오.

    활성화된 규칙에 대해 클라이언트가 연결된 주소가 차단 목록에 있는지 확인하세요.

  7. 이제 단락의 작업과 유사하게 예를 들어 두 번째 규칙을 잠금 해제하고 첫 번째 규칙을 차단합니다.
  8. 컴퓨터를 재부팅하는 대신 단락의 단계만 따르세요. 간단히 서비스를 재부팅해도 됩니다. 그런 다음 시작한 컴퓨터의 주소에서 즉시 클라이언트의 잠금이 해제되고 서비스가 다시 시작됩니다.
  9. 두 규칙의 작동을 개별적으로 확인한 후 매개변수에 대해 모두 활성화하는 것을 잊지 마십시오. 그 후에는 서비스를 다시 시작하는 것을 잊지 마십시오.
  10. 마지막 요점은 이전 요점을 몇 분 안에 충분히 빨리 완료했다면 두 규칙을 모두 켠 후 후속 재부팅으로 인해 클라이언트를 시작한 주소에서 다시 차단될 수 있다는 것입니다.
    조심하세요

규칙 관리

일시적으로 주소 차단 비활성화

이렇게 하려면 먼저 서비스를 사용해야 합니다. 먼저 콘솔에 규칙 목록을 표시한 다음 금지에서 제거하는 데 필요한 규칙을 선택합니다.

규칙 목록을 보려면 다음 명령을 입력하십시오.

다음과 같은 메시지가 표시됩니다.

우리는 Dial a command라는 규칙 체인에 있는 주소를 금지에서 제거하는 데 관심이 있습니다.

명령이 성공적으로 실행되면 메시지가 나타나지 않으며 이제 명령을 다시 실행하면

그런 다음 주소가 차단에서 사라진 것을 확인하지만 동시에 서버에 다시 연결할 수 있습니다.

주소 차단을 영구적으로 비활성화합니다.

특정 주소 또는 여러 주소를 차단하지 않으려면 비밀번호 추측 시도 실패 횟수 및 기타 불법 행위 수행 여부에 관계없이 파일에 추가 설정을 지정해야 합니다.

각 파일 규칙에는 이 규칙에 대한 화이트리스트에 포함된 주소 목록을 지정하는 매개변수가 포함될 수 있습니다. 두 가지 규칙이 있을 수 있으므로 두 규칙 모두에서 지정해야 합니다.

매개변수의 형식은 다음과 같습니다.

즉, 이 경우 개별 주소를 서브넷으로 등록하여 화이트리스트에 들어갈 수 있습니다.

테스트가 수행된 주소 차단 해제

설정의 정확성을 확인하는 동안 클라이언트를 반복적으로 실행하여 인터넷에 대한 향후 공격을 차단하는 작업을 테스트하고 후속 작업 과정에서 때때로 그 결과에 대한 조치를 수행해야 할 수도 있습니다. 적어도 하루는 적어도 1년은 외부에서 차단이 있을 수 있습니다.

이 문제를 해결하는 방법이 있습니다

  1. 목록의 규칙에 주소를 추가하지만 때로는 작업에 대한 정기적인 테스트를 수행하는 것이 바람직하지 않을 수도 있습니다.
  2. 일반적으로 이 시간은 비밀번호 추측 공격 이벤트가 한 번 반복되어야 하는 간격(초)입니다. 그 후에는 차단이 차단된 주소가 차단 목록에서 제거된 후 차단 시간(초)보다 훨씬 짧은 시간 동안 적용됩니다. 해당 주소를 차단한 후 서비스를 재부팅하면 모든 차단이 해제됩니다. 단, 이후 로드 시 연결 시도 실패 시 로그가 다시 분석됩니다. 시작하다

구성 테스트

이 사람이나 그 사람에게 필터가 어떻게 적용되는지 확인할 수 있습니다. 이를 위해 명령을 실행할 수 있습니다.

필터링될 로그와 공격자 주소를 금지하기 위해 로그에 있어야 하는 오류 메시지 조각이 포함된 필터 자체가 포함된 이 예제 경로 파일은 어디에 있습니까?

마지막으로 재부팅하는 대신 다음 명령을 실행할 수 있습니다.

소스 링크

특히 정규 표현식의 공식 웹사이트에서 가져온 자료와 섹션에서 가져온 별표 규칙

날짜: 2018년 7월 28일 09:56

별표 해킹과 그에 따른 운영자의 처벌에 대한 이야기가 인터넷에 많이 있습니다. 어딘가에서 호주의 한 소규모 회사가 15,000~20,000달러의 손실을 입었다는 이야기가 있었습니다. 이런 상황에 처하고 싶은 사람은 아무도 없을 것 같아요. 문제를 기다리지 않고 해킹 옵션 수를 크게 줄이고 위험을 최소화하는 특정 조치를 수행하는 것이 훨씬 좋습니다.

5060 대신 비표준 포트

기술적으로 가능하다면 항상 표준 포트 5060을 다른 포트로 변경하세요. 표준과 다를수록 좋습니다. 공격자는 다양한 주소를 사용하여 포트를 스캔하기만 하면 별표를 매우 빠르게 찾을 수 있습니다. 이것은 매우 빠르게 일어날 것입니다. 내 비밀번호를 추측하려는 첫 번째 시도는 별표가 인터넷에 시작된 후 3일 이내에 감지되었습니다.
포트는 다음 섹션의 sip.conf 파일에서 구성됩니다.

바인드포트=5060 => 바인드포트=5172

이러한 조치를 취한 후에는 선택자의 수가 거의 0으로 감소합니다.

방화벽 설정

외부에서 Asterisk 포트에 연결하는 것을 금지합니다. 이렇게 하면 비밀번호를 추측하는 기능이 비활성화됩니다. 그러나 일부 SIP 전화 통신 제공업체는 포트 5060에 직접 연결할 수 없는 경우 작동하지 않습니다. 이 경우 이 제공업체의 서버에서 이 포트에 대한 액세스를 허용해야 합니다. 그래서 어느 날 Beeline과 연결이 없는 이유를 며칠 동안 생각한 후 내 포트 5060에 대한 IP 액세스를 열었고 연결이 나타났습니다.

손님 통화 비활성화

등록하지 않고 전화를 받을 필요가 없으면 sip.conf에서 다음 옵션을 비활성화해야 합니다.
허용게스트=예 => 허용게스트=아니요; 손님 호출 허용 또는 거부(기본값은 예)

잘못된 비밀번호에 대한 알림 비활성화

거의 모든 사람이 100, 200, 700 등의 별표 계정을 가지고 있습니다. 기본적으로 Asterisk는 기존 계정의 잘못된 비밀번호에 대한 오류와 존재하지 않는 계정에 대한 오류를 생성합니다. 특별한 도움으로 비밀번호 추측 소프트웨어를 사용하면 공격자는 모든 짧은 숫자를 빠르게 시도하고 "잘못된 비밀번호"라고 응답한 기존 계정에 대해서만 비밀번호를 추측할 수 있습니다. 이를 방지하려면 sip.conf에서 옵션을 변경하십시오.
Alwaysauthreject = 아니요 => Alwaysauthreject = 예
이 구성 후에 Asterisk는 잘못된 인증에 대해 동일한 응답을 제공합니다.

우리는 계정에 복잡한 비밀번호를 사용합니다

모든 비밀번호는 추측할 수 있으며 유일한 질문은 시간입니다. SIP 장치 설정은 한 번만 수행하면 오랜 시간 동안 완료되므로 복잡한 비밀번호를 인색하지 마십시오. 내 경우에는 다음과 같이 대소문자 + 숫자를 조합한 긴 비밀번호를 사용합니다.

로그인과 일치하는 모든 비밀번호를 제거하십시오. 비밀번호에 사용되는 첫 번째 비밀번호입니다.

우리는 계정에 대해 거부/허용을 사용합니다.

필수! 인터넷 연결이 필요하지 않은 모든 계정에 대해 다음 줄을 표시합니다.

거부=0.0.0.0/0.0.0.0 허가=10.1.1.1/24 허가=10.1.2.1/24

여기서 10.1.1.1,10.1.2.1은 연결이 이루어질 로컬 주소 범위입니다. 별표는 다른 주소로부터의 연결을 허용하지 않습니다.

통화 한도 설정

통화 제한=1

불필요하게 기본 확장자를 사용하지 않습니다

기본값으로 설정되어야 하는 모든 항목은 필요하지 않습니다.

확장자 => _X.,1,Hangup

우리는 모든 통화에 대해 하나의 보편적인 규칙을 만들지 않습니다.

다음과 같은 규칙을 거부해 봅시다:

내선 => _X.,1,Dial(SIP/$(EXTEN)@operator)

우리는 운영자에게 전송되는 필요한 모든 숫자 조합을 명확하게 기록합니다. 국제 커뮤니케이션을 사용할 필요가 없다면 그에 대한 규칙을 전혀 설명하지 마십시오. 해킹의 거의 모든 사례는 해외 통화에 사용됩니다.

;긴급 서비스 내선 => _0X,1, Dial(SIP/$(EXTEN)@operator) exten => _0X,n, Hangup ;모스크바 내선 => _8495XXXXXXX,1, Dial(SIP/$(EXTEN)@operator) exten => _8495XXXXXXX,n, 끊기 내선 => _8499XXXXXXX,1, 다이얼(SIP/$(EXTEN)@operator) 내선 => _8499XXXXXXX,n, 끊기 내선 => _XXXXXXX,1, 다이얼(SIP/$(EXTEN)@operator ) exten => _XXXXXXXXX,n, 끊기 ;Intercity Russia/Mobile exten => _8XXXXXXXXXX,1, Dial(SIP/$(EXTEN)@operator) exten => _8XXXXXXXXXX,n, 끊기



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: