Bảo mật hệ thống dùng Fail2ban kết hợp Iptables

Một phần của tài liệu bảo mật hệ thống call center (Trang 142)

2

5.3.2 Bảo mật hệ thống dùng Fail2ban kết hợp Iptables

5.3.2.1 Cài đặt Fail2ban

Fail2ban được tích hợp sẵn trong Ubuntu 11.04

Để bắt đầu cấu hình trước tiên phải cài đặt Fail2ban bằng câu lệnh:

# apt-get install fail2ban

5.3.2.2 Cấu hình

Cấu hình file asterisk.conf

Sau khi cài đặt fail2ban, tạo một tập tin có tên asterisk.conf trong thư mục fail2ban filters bằng lệnh:

# /etc/fail2ban/filter.d/asterisk.conf

Bây giờ thêm những phần sau đây vào tập tin vừa tạo: # Fail2Ban configuration file

CHƯƠNG 5: DEMO BẢO MẬT HỆ THỐNG

#

# $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 logfilẹ The # host must be matched by a group named "host". The tag "<HOST>" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6}:)?(?P<host>\S+)

# Values: TEXT #

failregex = NOTICẸ*.*: Registration from '.*' failed for '<HOST>' - Wrong password

NOTICẸ*.*: Registration from '.*' failed for '<HOST>' - No matching peer found NOTICẸ*.*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch

NOTICẸ*.*: Registration from '.*' failed for '<HOST>' - Device does not match ACL

NOTICẸ* <HOST> failed to authenticate as '.*'$

NOTICẸ*.*: No registration for peer '.*' \(from <HOST>\)

NOTICẸ*.*: Host <HOST> failed MD5 authentication for '.*' (.*) NOTICẸ*.*: Failed to authenticate user.*@<HOST>.*

# Option: ignoreregex

# Notes.: regex to ignorẹ If this regex matches, the line is ignored. # Values: TEXT

#

ignoreregex =

Trong dòng trên bạn có thể thấy rằng fail2ban sẽ tìm cụm từ: “Wrong password”, “No matching peer found”, “Username/auth name mismatch” and “Device does not match ACL”

CHƯƠNG 5: DEMO BẢO MẬT HỆ THỐNG

Hình 5. 34: Cấu hình asterisk.conf

Cấu hình file jail.conf

Tiếp theo thêm những dòng sau trong

# / etc/fail2ban/jail.conf

[asterisk-iptables] enabled = true filter = asterisk

action = iptables-allports[name=ASTERISK, port=all, protocol=all]

sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@examplẹorg] logpath = /var/log/asterisk/messages ignoreip = 192.168.1.(máy chủ) 192.168.1.39 maxretry = 3 bantime = 18000 [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3

CHƯƠNG 5: DEMO BẢO MẬT HỆ THỐNG [ssh-đos] enabled = true port = ssh filter = sshd-đos logpath = /var/log/auth.log maxretry = 3

Hình 5. 35: Cấu hình file jail.conf

Cấu hình file logger.conf để Asterisk ngày đăng nhập và định dạng thời gian

Dùng lệnh

# /etc/asterisk/logger.conf

Và thêm phần sau đây trước phần [logfiles]. Điều này làm cho ngày và thời gian

được định dạng Năm-tháng-ngày giờ:phút [general]

dateformat=%F %T

Sau đó tải lại các mô-đun logger cho Asterisk, tại dòng lệnh nhập vào lệnh sau đây:

asterisk -rx "logger reload"

Bật và kiểm tra Fail2ban, Iptables

Bật Iptables

# /etc/init.d/iptables start

Bật Fail2ban

# /etc/init.d/fail2ban start

CHƯƠNG 5: DEMO BẢO MẬT HỆ THỐNG

# iptables -L -v

You should see something like the following for the INPUT chain (you will see more if you have other Fail2Ban filters enabled):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

2104K 414M fail2ban-ASTERISK all — any any anywhere anywhere

If you do not seem something similar to that then you have some troubleshooting to, check out /var/log/fail2ban.log

Bật lên

# update-rc.d iptables defaults # update-rc.d fail2ban defaults

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG

CHƯƠNG 6: KT QU DEMO BO MT H THNG

6.1 Kết quả bảo mật nghe lén bằng TLS và SRTP 6.1.1 Kết quả bảo mật cuộc gọi bằng TLS 6.1.1 Kết quả bảo mật cuộc gọi bằng TLS

Sau khi tạo khóa cho cảServer và Client đồng nhất, tiến hành thực hiện cuộc gọi giữa tls1 và tls2.

Hình 6. 1: Cuộc gọi 2 extensions tls1 và tls2 Trong quá trình đàm thoại Wireshark vẫn bắt được các gói tin

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG

Các gói tin trong quá trình đàm thoại đã được TLS mã hóa thông tin nên khi Wireshark bắt được vẫn không nghe được cuộc gọị

Hình 6. 3: Cuộc gọi nghe lén bị mã hóa

6.1.2 Kết quả bảo mật cuộc gọi bằng SRTP

- Nghe lén bằng Wireshark:

Vì các bản tin báo hiệu không được mã hóa nên Wireshark nhận biết được có cuộc gọi vừa được tiến hành. Cuộc gọi SRTP không truyền trực tiếp giữa 2 Softphone mà gián tiếp qua server Asterisk, vậy nên Wireshark nhận dạng được 2 cuộc gọi:

192.168.1.34 <=> 192.168.1.43 và 192.168.1.43<=> 192.168.1.37

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG

Tuy nhiên khi nghe lại cuộc gọi này trên Wireshark thì ta chỉ nhận được các âm thanh nhiễu vô nghĩa, nguyên nhân là do các bản tin RTP đã được mã hóa, và

Wireshark đã không giải mã được các bản tin nàỵ

Hình 6. 5: Nghe lén cuộc gọi SRTP bằng Wireshark.

Như vậy SRTP bảo vệđược cuộc gọi khỏi tấn công nghe trộm, tuy nhiên các thông tin quan trọng trong các bản tip SIP vẫn có thể bị mất, tạo điều kiện cho các loại tấn công khác.

- Nghe lén cuộc gọi bằng Cain & Able

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG

Giống như Wireshark, Cain & Able cũng nhận dạng được 2 cuộc gọi vừa diễn ra, nhưng khi nghe lại 2 cuộc gọi này đều chỉ nhận được các âm thanh nhiễu vô nghĩạ

Cain & Able cũng không giải mã được các gói tin SRTP.

Như vậy SRTP đã bảo vệ được các cuộc gọi khỏi tấn công nghe trộm, tuy nhiên, các thông tin quan trọng về người sử dụng không được bảo mật, và có thể bị khai thác cho một số loại tấn công khác như tấn công vào cước phí chẳng hạn

6.2 Kết quả bảo mật hệ thống bằng Iptables và Fail2 Ban 6.2.1 Kết quả Demo khi test Script Iptables 6.2.1 Kết quả Demo khi test Script Iptables

6.2.1.1 Dùng cửa sổ lệnh cmd thử ping vào hệ thống:

Bất kì địa chỉ IP nào khi Ping tới hệ thống đề sẽ thấy hiện tượng gói ICMP bị hạn chế. Đó là do iptables đã hạn chế tốc độ và sốlượng gói ICMP tới hệ thống.

Hình 6. 7: Kết quả gởi gói tin Ping

Nhận xét:

Hệ thống đã có thể hạn chế số lượng và tốc độ các gói tin Ping chứng tỏ hệ

thống đã có thể chống lại ICMP Flood Attack

6.2.1.2 Dùng Putty register SSH vào hệ thống

Địa chỉ IP 192.168.1.35 đăng nhập thành công vào hệ thống SSH vì đã được iptables chấp nhận

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG Hình 6. 8: Đăng nhập putty

Hình 6. 9: Đăng nhập thành công

Địa chỉ IP 192.168.1.42 vẫn đăng nhập SSH đúng với IP của máy chủvà đúng port

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG Hình 6. 10: Đăng nhập IP 192.168.1.42

Hình 6. 11: Đăng nhập thất bại

Ngoài ra nên chỉnh sửa cấu hình trong fie sshd_config để hệ thống được bảo mật

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG

Chỉnh sửa trong file /etc/ssh/sshd_config

# only allow SSHv2 Protocol 2

# specify the keys for SSHv2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # disallow root to login via SSH PermitRootLogin yes

#disconnect after 3 tries MaxAuthTries 3

#do strict checking on users homedir permissions StrictModes yes

# enable Authentication via RSA keys RSAAuthentication yes

PubkeyAuthentication yes

# specify the file with the public key for ourusers AuthorizedKaysFilẹssh/authorized_keys

# disable various “bad” options RhostsRSAAuthentication no HostbasedAuthentication no IgnoreUserKnownHosts yes IgnoreRhosts yes PasswordAuthentication no PermitEmptyPasswords no X11Forwarding no

# disable PAM anthentification (as we only use keys now) UsePAM no

# only allow login, if user is in group ‘ssh’ AllowGroups ssh

Nhận xét:

SSH là lĩnh vực cực kì quan trọng cần được bảo mật vì khi kẻ tấn công

register ssh vào được sẽ tìm cách chiếm quyền kiểm soát hệ thống. Nhờ cấu hình iptables cấm IP bất hợp pháp register hệ thống nên server luôn đứng vững bất chấp mọi cố gắng từ bất kì địa chỉ IP nàọ

6.2.1.3 Dùng Tool ĐoS SynFlood - Good Bye vs5.2 tấn công hệ thống vào port 2200 2200

Lúc đầu thực hiện ĐoS Syn Flood vào server tại địa chỉ 192.168.1.47 tại port 2200 khi chưa cấu hình iptables cho server sẽ thấy hiện tượng trong 20s gói tin SYN gửi liên tục, với tốc độ nhanh và sốlượng quá nhiểu chỉ trong thời gian ngắn sẽlàm tràn băng thông, hết tài nguyên và tê liệt hoàn toàn.

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG

Hình 6. 12: Lượng gói tin đến server trong 20s (chưa cấu hình Iptables)

Sau khi đã cấu hình iptables thì sau khi nhấn Start thì server chỉ nhận một gói SYN duy nhất và DROP tất cả

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG

Sau 1 phút server bắt đầu nhận gói tin SYN tiếp theo và với tốc độ được hạn chế, vì thếđảm bảo an toàn được cho server

Hình 6. 14: Bắt đầu nhận gói SYN sau 1 phút Sau đó vẫn tiếp tục nhận gói tin với tốc độ bị hạn chế rất nhiều

CHƯƠNG 6: KẾT QUẢ DEMO BẢO MẬT HỆ THỐNG Nhận xét:

Dù đây là tool ĐoS SYN FLood mạnh và nguy hiểm, mặc dù không thể

chặn hoàn toàn vì tính chất nguy hiểm của ĐoS nhưng hệ thống đã hạn chế tầm

ảnh hưởng của nó bằng cách giảm tốc độ truyển và hạn chế số lượng gói tin. Điều này chứng tỏ hệ thống đã Anti SYN Flood

6.2.2 Fail2 Ban

Sau khi cấu hình xong restart lại hệ thống. Dùng softphone 3CX register vào hệ thống

Cốý đăng nhập sai mật khẫu 4 lần và xem hiện tượng

Hình 6. 16: Đăng nhập sai pass và ban IP

Và đến lần thứ 5 không register được nữa vì IP đã bị ban và phải chờ hết thời gian bantime mới register lại được.

CHƯƠNG 7: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI

CHƯƠNG 7: KT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI

7.1 Kết luận

Dưới sựhướng dẫn tận tình của giáo viên hướng dẫn cùng với sựgiúp đỡ nhiệt tình của các giáo viên trong bộ môn ĐTVT đã tạo điều kiện về cơ sở vật chất để

nhóm thực hiện đề tài có thể hoàn thành đề tài “Bảo mật hệ thống Call Center”

đúng thời hạn đề rạ

Dưới đây là những gì mà nhóm thực hiện đềtài đã làm được trong thời gian quạ

7.1.1 Phần lý thuyết

 Nghiên cứu tổng quan vềAsterisk như các chức năng, các mô hình ứng dụng, cú pháp câu lệnh,….

 Tìm hiểu về cách cấu hình hệ thống Callcenter dựa trên các module sẵn có, ngoài ra còn ứng dụng PHP và MySQL vào đểtăng khả năng tùy biến và tính linh hoạt của Asterisk.

 Hiểu được các giao thức báo hiệu trong VoIP như SIP.

 Nắm được cách thức truyền thoại qua mạng IP.

 Nghiên cứu vềMySQL & PHPMyadmin để xuất ra tập tin CDR cung cấp chi tiết cuộc gọi để tiện cho việc quản lý.

 Tìm hiểu về các chức năng cần có của một hệ thống IP Call Center như khả năng phân phối cuộc gọi, tương tác phím nhấn, khả năng giám sát, ghi âm

cuộc gọi, nghe xen để theo dõi quá trình làm việc của agent…

 Cấu hình được tổng đài nội bộ PBX với các chức năng cơ bản như: hiển thị số

thuê bao chủ gọi, nhấc máy từ xa của một thuê bao khác đang rung chuông,

call transfer, call parking, call forwarding, chống cuộc gọi quấy rối(DND), conference, voicemail.

 Tình hiểu về các lổ hỏng và các hướng tấn công vào hệ thống. Từ đó nghiên

cứu và đề ra các giải pháp bảo mật cho hệ thống.

 Tìm hiểu lý thuyết về các Tool tấn công và hiểu được cô chế tấn công của mỗi Tool

 Nghiên cứu về TLS, SRTP, IPTABLES, FAIL2BAN áp dụng cho việc bảo mật cho hệ thống.

CHƯƠNG 7: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 7.1.2 Phần thực hành

Phương thức bảo mật gồm 2 phần: Anti Nghe Lén và Anti Đos

Chống Nghe Lén

 Sử dụng WireShark và Cain bắt được gói tin, phân tích gói tin và nghe lén

được cuộc gọị

 Cấu hình được TLS, SRTP chống nghe lén thành công.

Anti ĐoS

 Test các Tool hack vào một máy ảo và ĐoS thành công  Cấu hình được FAIL2BAN, IPTABLES Anti ĐoS

7.2 Hướng phát triển đề tài

Do thời gian có hạn nên nội dung luận văn chỉ mới đề cập đến một vài giải pháp bảo mật cho hệ thống cơ bản nhất là IP Call Center. Nếu có thêm thời gian nghiên cứu thì nhóm thực hiện đề tài sẽ phát triển thêm:

 Đểđề tài có thểứng dụng trong thực tiễn nhiều hơn thì nhóm thực hiện đề tài mở rộng thêm nhiều chức năng hơn nữa để từđó xây dựng nên một hệ thống Contactcenter. Bởi vì nếu Callcenter là hình thức giao tiếp qua điện thoại là chủ yếu thì Contactcenter là sự kết hợp thống nhất giữa các phương thức

tương tác với khách hàng, từ điện thoại, email, website, fax cho đến hình thức chat(đối thoại trực tiếp) hay gửi tin nhắn tức thời(instant messaging).  Ưu điểm vượt trội của Contactcenter so với Callcenter là cho phép kiểm soát

tương tác giữa khách hàng với doanh nghiệp một cách toàn diện, chẳng hạn

như công nghệ tại một Contactcenter giúp kiểm soát quá trình khách hàng truy cập website, tìm kiếm thông tin, từ đó có những giải pháp cải thiện, nâng cao chất lượng phục vụ khách hàng.

 Nghiên cứu về Kỹ thuật leo thang đặc quyền dựa vào lỗi nhân hệđiều hành (Linux Kernel Exploit)

 Đề tài chỉ mới đưa ra giải pháp bảo mật theo hướng tấn công từ mạng LAN vào hệ thống. Hướng phát triển là sẽ bảo mật cho hệ thống trước khả năng

tấn công từ mạng WAN. Đồng thời đưa ra giải pháp bảo mật chặn những kỹ

PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO

PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO

PH LỤC B: CODE CHƯƠNG TRÌNH

Khai báo kênh SIP

Trong file /etc/asterisk/sip.conf cấu hình như sau:

[testcarrier] disallow=all allow=ulaw type=friend username=testcarrier secret=test host=dynamic dtmfmode=rfc2833 context=trunkinbound [2222] username = Binh secret = 2222 accountcode=2222 context = group1 type = friend host = dynamic mailbox=2222@default [3333] username = Phuong secret = 3333 context = group1 accountcode=3333 type = friend host = dynamic mailbox=3333@default [200] type=friend username=BMDTVT host=dynamic secret=12345 qualify=yes disallow=all allow=gsm allow=ulaw allow=alaw context=group1 mailbox=200@hopthu

PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO [201] type=friend username=BMDTCN host=dynamic secret=12345 disallow=all allow=gsm allow=ulaw allow=alaw context=group1 mailbox=201@hopthu qualify=yes [202] type=friend username=BMCSKTDT host=dynamic secret=12345 call-limit=1 disallow=all allow=gsm allow=ulaw allow=alaw context=group1 mailbox=202@hopthu qualify=yes

PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO Trong extensions.conf: [trunkinbound] exten => _X.,1,Answer() exten => _X.,2,Set(COUNT=0) exten => _X.,3(ct1),Background(welcome)

exten => _X.,4,Set(COUNT=$[${COUNT}+1]); tang bo dem

exten => _X.,5,GotoIf($[${COUNT}=3]?ct:ct1); phat du 3 lan chua exten => _X.,6(ct),playback(goodbye)

exten => #,1,Playback(invalid); "Thanks for trying the demo" exten => #,2,Hangup; Hang them up.

exten => t,1,Goto(#,1); If they take too long, give up

exten => i,1,Playback(invalid); "That's not valid, try again"

;NHAY DEN CAC NGU CANH TUONG UNG exten => 1,1,Goto(tuition,s,1)

exten => 2,1,Goto(average_score,s,1) exten => 3,1,Goto(learning_schedual,s,1) exten => 4,1,Goto(consulted,s,1)

;TRA CUU HOC PHI [tuition]

exten => s,1,AGI(hoc_phi_1.php) exten => s,2,Hangup()

;TRA CUA DIEM TRUNG BINH [average_score]

;exten => s,1,AGI(welcome_averagẹphp) exten => s,1,AGI(average_mark.php) exten => s,2,Hangup()

; XEM VA XAC NHAN LICH HOC [learning_schedual]

exten => s,1,Answer()

exten => s,2,AGI(learning_schedual.php) exten => s,3,Hangup()

PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO

;GAP NHAN VIEN TU VAN [consulted] exten => s,1,Answer() ;exten => s,2,AGI(tuvan.php) exten => s,n,SetMusicOnHold(default) ;exten => s,n,Macro(recording) exten => s,n,MixMonitor(${STRFTIME(${EPOCH},,%d-%m- %Y_%H:%M:%S)}-${EPOCH}.wav) exten => s,n,Queue(tuvan|tT|||60) exten => s,n,Voicemail(u2222) include=>parkedcalls include=>DND include=>Parked include=>Meetme include=>meetme-all include=>pickup include=>mailbox include=>F_INM include=>F_BSY include=>F_NSWR include=>trunkinbound include=>local_analog include=>local_IAX include=>local_SIP include=>agent include=>chanspy

PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO

Ngữ cảnh cho các extension nội bộ trong Asterisk PBX Trong Agent.conf agent => 3333,3333,Phuong agent => 2222,2222,Binh Trong musiconhold.conf [default] mode = files directory = /var/lib/asterisk/default random = yes Trong queuẹconf [tuvan] music = default strategy = ringall timeout = 15 retry = 2 maxlen = 0 wrapuptime=10 ;announce-frequency = 10 ;announce-holdtime=yes ;joinempty=yes member => Agent/2222,1 member => Agent/3333,2

PHỤ LỤC VÀ TÀI LIỆU THAM KHẢO Code PHP Hoc_phịphp #!/usr/bin/php -q <?php require 'phpagịphp'; $agi= new AGI(); $agi->answer(); mysql_connect("localhost","root","thaiphi"); mysql_select_db("asterisk"); $i=0; $keys = null; while($i<3){

$agi->text2wav("Please enter your I D and then press the pound key when you have done");

$result = $agi->get_datắbeep', 3000, 20); $keys = $result['result']; $i++; if($keys){ break; } }

if($i==3 and $keys== null){

$agi->text2wav(" Time is over! Goodbye and see you later!"); $agi->hangup();

}

$row=mysql_query("select mssv, ho_ten, tong_hoc_phi, hp_da_nop, hp_con_no from sinhvien where mssv='$keys'");

$rows = mysql_fetch_array($row); $agi->text2wav("you entered $keys"); if($keys == $rows['mssv']){

$agi->text2wav("Hello {$rows['ho_ten']}");

$agi->text2wav("Your total tuition is {$rows['tong_hoc_phí]}"); $agi->text2wav("You have paid {$rows['hp_da_nop']}");

$agi->text2wav("And the remain tuition you have not paid, is {$rows['hp_con_nó]}");

Một phần của tài liệu bảo mật hệ thống call center (Trang 142)

Tải bản đầy đủ (PDF)

(177 trang)