1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp công nghệ thông tin xây dựng firewall cho hệ thống mạng lan bằng giải pháp mã nguồn mở

88 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

TRƯỜNG ĐẠI HỌC VÕ TRƯỜNG TOẢN KHOA CƠNG NGHỆ THƠNG TIN  KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG FIREWALL CHO HỆ THỐNG MẠNG LAN BẰNG GIẢI PHÁP MÃ NGUỒN MỞ Giáo viên hướng dẫn: Sinh viên thực hiện: ThS NGUYỄN HỮU LỘC NGƠ THANH TỒN MSSV: 0951190716 Lớp: ĐH CNTT Khóa: Hậu Giang 2013 LỜI CAM ĐOAN  Tơi xin cam đoan luận văn hoàn thành kết nghiên cứu hướng dẫn, hỗ trợ thầy hướng dẫn Thạc sĩ Nguyễn Hữu Lộc Sinh viên thực Ngơ Thanh Tồn i LỜI CẢM TẠ  Em xin chân thành gửi lời cảm ơn đến thầy, Thạc sĩ Nguyễn Hữu Lộc tận tình hướng dẫn, giúp đỡ em suốt trình làm đề tài luận văn tốt nghiệp giúp cho đề tài em hoàn thành Em xin gửi lời cảm ơn đến thầy cô thuộc khoa công nghệ thông tin, trường Đại học Võ Trường Toản Đã tạo điều kiện cho em trình hồn thành luận văn tốt nghiệp Trong q trình làm luận văn em cịn nhận giúp đỡ trao đổi bạn, em xin chân thành cảm ơn giúp đỡ chia sẻ Em chúc thầy sức khỏe cơng tác tốt Chúc bạn báo cáo luận văn thành cơng Sinh viên thực Ngơ Thanh Tồn ii BẢN NHẬN XÉT LUẬN VĂN TỐT NGHIỆP   Họ tên người hướng dẫn: Nguyễn Hữu Lộc  Học vị: Thạc sĩ  Chuyên ngành: Công Nghệ Thông Tin  Cơ quan công tác: Khoa Công Nghệ Thông Tin, Đại học Võ Trường Toản  Họ tên : Ngô Thanh Toàn  Mã số sinh viên : 0951190716  Chuyên ngành : Công Nghệ Thông Tin  Tên đề tài : Xây dựng Firewall cho hệ thống mạng LAN giải pháp mã nguồn mở NỘI DUNG NHẬN XÉT Tính phù hợp đề tài với chuyên ngành đào tạo: Về hình thức: Ý nghĩa khoa học, thực tiễn tính cấp thiết đề tài: Độ tin cậy số liệu tính đại luận văn: Nội dung kết đạt được: iii Các nhận xét khác: Kết luận: Hậu Giang, ngày…… tháng …… năm… Người nhận xét (Ký ghi rõ họ tên) iv NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN  Hậu Giang, ngày … tháng … năm … Giáo viên phản biện (Ký ghi rõ họ tên) v MỤC LỤC LỜI CAM ĐOAN .i LỜI CẢM TẠ ii BẢN NHẬN XÉT LUẬN VĂN TỐT NGHIỆP iii NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN v DANH MỤC HÌNH ẢNH viii DANH MỤC BIỂU BẢNG ix TỪ VIẾT TẮT VÀ CÁC THUẬT NGỮ x TÓM TẮT .xi ABSTRACT xii CHƯƠNG TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 1.3 PHẠM VI ĐỀ TÀI 1.4 PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 TỔNG QUAN AN NINH MẠNG 2.1.1 Tình hình thực tế 2.1.2 Các dạng công 2.1.3 Một số kỹ thuật công .7 2.2 TỔNG QUAN HỆ ĐIỀU HÀNH LINUX 2.2.1 Linux ? 2.2.2 Lợi Linux 2.2.3 Ưu điểm khuyết điểm Linux 10 2.2.4 Kiến trúc hệ điều hành Linux 11 2.2.5 Quản trị người dùng nhóm Linux 12 2.2.6 Quản lý tập tin Linux 19 2.2.7 Kết nối mạng Linux 22 2.3 TỔNG QUAN VỀ FIREWALL 25 2.3.1 Khái niệm 25 2.3.2 Phân loại, chức năng, cấu trúc Firewall .25 vi 2.3.3 Các thành phần Firewall 28 2.3.4 Ưu, nhược điểm Firewall 33 2.3.5 Kiến trúc Firewall 34 2.4 NỘI DUNG NGHIÊN CỨU IPTABLES 40 2.4.1 Iptables 40 2.4.2 Cài đặt trọn gói Iptables 41 2.4.3 Cơ chế xử lý package Iptables 41 2.4.4 Target Jump 45 2.4.5 Tùy chọn –limit, limit-burst 48 2.4.6 Redirect cổng .50 2.4.7 Cách đổi địa IP động ( dynamic NAT) 50 2.4.8 Cách đóng giả địa IP (masquerade) .51 2.4.9 Q trình chuyển gói liệu qua Netfilter 52 2.4.10 Các tham số dòng lệnh thường gặp Iptables 52 CHƯƠNG NỘI DUNG VÀ KẾT QUẢ THỰC NGHIỆM 59 3.1 PHƯƠNG PHÁP THỰC NGHIỆM 59 3.2 CÔNG CỤ MÔ PHỎNG TẤN CÔNG MẠNG (HPING3) 60 3.2.1 Khái niệm 60 3.2.2 Cài đặt cấu trúc .60 3.2.3 Thực nghiệm cấu hình Firewall với Iptables kết 61 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .73 4.1 KẾT LUẬN 73 4.2 HƯỚNG PHÁT TRIỂN 74 DANH MỤC TÀI LIỆU THAM KHẢO 75 vii DANH MỤC HÌNH ẢNH Hình 1: Tấn cơng kiểu DoS Hình 2: Tấn cơng kiểu DDoS Hình 3: Tấn công kiểu DRDoS Hình : Thiết lập kết nối TCP client server Hình : Kiến trúc hệ điều hành Linux 11 Hình 6: Sơ đồ Netfilter hook .24 Hình : Mơ hình Firewall 25 Hình : Mơ hình Firewall cứng 26 Hình : Mơ hình Firewall mềm 26 Hình 10 : Các thành phần Firewall .28 Hình 11 : Bộ lọc Packet 29 Hình 12 : Kết nối cổng vòng Firewall 32 Hình 13: Sơ đồ kiến trúc Dual-home Host 35 Hình 14: Sơ đồ kiến trúc Sceen Host 37 Hình 15 : Kiến trúc Screen subnet 38 Hình 16 : Bảng NAT Tables .40 Hình 17 : Sơ đồ đường package Iptables 44 Hình 18 : Cách đơỉ địa Ip động 50 Hình 19 : Cách đóng giả địa IP 51 Hình 20 : Mơ hình mạng thực nghiệm 59 Hình 21: Lệnh kiểm thử chặn ngập lụt PING 63 Hình 22: Kết chống ngập lụt PING từ client .63 Hình 23: Lệnh kiểm thử chặn ngâp lụt SYN 66 Hình 24: Kết kiểm thử chống ngập lụt SYN 66 Hình 25: Kiểm thử SSH 67 Hình 26: Kết giới hạn truy nhập SSH cho admin .68 Hình 27: Kiểm thử giới hạn FTP cho webmaster .69 Hình 28: Kết kiểm thử giới hạn truy nhập FTP cho webmaster 70 Hình 29: Kiểm thử chặn ngập lục UDP 71 Hình 30: Kết chặn ngập lục UDP .72 viii DANH MỤC BIỂU BẢNG Bảng Các loại queues chain chức 42 Bảng Miêu tả target mà iptables thường dùng 46 Bảng Các tham số chuyển mạch (switching) quan trọng Iptables 53 Bảng Các điều kiện TCP UDP thông dụng .54 Bảng Điều kiện ICMP 55 Bảng Các điều kiện mở rộng thông dụng 55 Bảng Danh sách lệnh (Queues) .57 ix  -V: chi tiết đầu  flood: chọn gửi gói tin với tốc độ cực nhanh (tương đương tùy chọn –i u0)  -p: thiết lập cổng đích, mặc định khơng chọn cổng  -S: chọn cờ SYN  Ngồi tham khảo thêm số option Hping3 tại: http://linux.die.net/man/8/hping3 3.2.3 Thực nghiệm cấu hình Firewall với Iptables kết 3.2.3.1 Thiết lập tham số cho nhân echo > /proc/sys/net/ipv4/tcp_syncookies echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time echo > /proc/sys/net/ipv4/tcp_window_scaling echo > /proc/sys/net/ipv4/tcp_sack echo > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo > /proc/sys/net/ipv4/conf/eth0/accept_source_route o tcp_syncookies = bật chức chống DoS SYN qua syncookie Linux o tcp_fin_timeout = 10 đặt thời gian timout cho trình đóng kết nối TCP 10 giây o tcp_keepaline_time = 1800 đặt thời gian giữ kết nối TCP 1800 giây 3.2.3.2 Nạp module cần thiết cho Iptables Để sử dụng Iptables, cần phải nạp trước Module cần thiết Ví dụ muốn dùng chức LOG Iptables, phải nạp Module ipt_LOG vào trước lệnh : # modprobe ipt_LOG  Tương tự cho module khác mà ta muốn nạp vào Ví dụ như: # modprobe ip_tables 61 #modprobe iptable_filter 3.2.3.3 Nguyên tắc đặt luật “DROP trước, ACCEPT sau” Đây nguyên tắc mà bạn nên tuân theo Đầu tiên đóng hết cổng, sau mở dần cách cổng cần thiết Cách tránh cho bạn gặp sai sót đặt luật cho Iptables #iptables -P INPUT DROP thả packet trước #iptables -A INPUT ESTABLISHED,RELATED -j ACCEPT -m state state giữ kết nối chấp nhận kết nối có liên quan #iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT chấp nhận gói vào looback từ IP 127.0.0.1 #iptables ACCEPT -A INPUT -i lo -s 127.0.0.2 -j 127.0.0.2 BANNED_IP="10.0.0.0/8 192.168.0.0/16 172.16.0.0/12 224.0.0.0/4 240.0.0.0/5" for i in $BANNED_IP; iptables -A INPUT -i eth0 -s $i -j DROP thả gói liệu đến từ IP nằm danh sách cấm BANNER_IP done 3.2.3.4 Lọc ICMP vào chặn ngập lục PING LOG Iptables ghi file /var/log/kern.log Đối với gói ICMP đến, đẩy qua chain CHECK_PINGFLOOD để kiểm tra xem bị ngập lụt PING hay không, sau cho phép gói vào Nếu bị ngập lụt PING, môđun LOG tiến hành ghi nhật kí mức giới hạn -limit $LOG_LIMIT limit-burst $LOG_LIMIT_BURST, gói PING ngập lụt bị thả hết LOG_LEVEL="debug" 62 LOG_LIMIT=3/s LOG_LIMIT_BURST=1 PING_LIMIT=10/s PING_LIMIT_BURST=5 #iptables -A CHECK_PINGFLOOD -m limit limit $PING_LIMIT limit-burst $PING_LIMIT_BURST -j RETURN #iptables -A CHECK_PINGFLOOD -m limit limit $LOG_LIMIT limit-burst $LOG_LIMIT_BURST -j LOG -log-level $LOG_LEVEL log-prefix "fp=PINGFLOOD:warning a=DROP " #iptables -A CHECK_PINGFLOOD -j DROP #iptables -A INPUT -i eth0 -p icmp icmp-type -p icmp icmp-type echo-request -j CHECK_PINGFLOOD #iptables -A INPUT -i eth0 echo-request -j ACCEPT Ta kiểm thử script sau : Client dùng câu lệnh : # hping3 192.168.99.1 -1 –d 6500 –i u1 –V –n Hình 21: Lệnh kiểm thử chặn ngập lụt PING Kiểm tra kết bên máy server cách mở file kern.log để xem nhật ký log hệ thống lệnh: # nano /var/log/kern.log 63 Hình 22: Kết chống ngập lụt PING từ client 3.2.3.5 Reject quét cổng TCP UDP Ở tạo sẵn chain reject quét cổng, đẩy vào chain INPUT sau Đối với gói TCP, reject gói TCP với cờ SYN=1 cịn gói UDP, reject gói ICMP “port-unreachable” LOG_LEVEL="debug" LOG_LIMIT=3/s LOG_LIMIT_BURST=1 #iptables-N REJECT_PORTSCAN #iptables-A REJECT_PORTSCAN -p tcp -m limit limit $LOG_LIMIT limit-burst $LOG_LIMIT_BURST -j LOG -log-level $LOG_LEVEL log-prefix "fp=PORTSCAN:tcp a=REJECT " #iptables-A REJECT_PORTSCAN -p udp -m limit limit $LOG_LIMIT limit-burst $LOG_LIMIT_BURST -j LOG -log-level $LOG_LEVEL log-prefix a=REJECT " 64 "fp=PORTSCAN:udp #iptables-A REJECT_PORTSCAN -p tcp -j REJECT -p udp -j REJECT reject-with tcp-reset #iptables-A REJECT_PORTSCAN reject-with icmp-port-unreachable 3.2.3.6 Chặn ngập lục SYN Gói mở TCP với cờ SYN set hợp lệ không ngoại trừ khả gói SYN dùng để ngập lụt Vì vậy, dây bạn đẩy gói SYN cịn lại qua chain CHECK_SYNFLOOD để kiểm tra ngập lụt SYN sau: LOG_LEVEL="debug" LOG_LIMIT=5/m LOG_LIMIT_BURST=1 SYN-LIMIT=10/s SYN_LIMIT-BURST=5 #iptables-N CHECK_SYNFLOOD #iptables-A CHECK_SYNFLOOD -m limit limit $SYN_LIMIT limit-burst $SYN_LIMIT_BURST -j RETURN #iptables-A CHECK_SYNFLOOD -m limit limit $LOG_LIMIT limit-burst $LOG_LIMIT_BURST -j LOG -log-level $LOG_LEVEL log-prefix "fp=SYNFLOOD:warning a=DROP " #iptables-A CHECK_SYNFLOOD -j DROP #iptables-A INPUT -i eth0 -p tcp syn -j CHECK_SYNFLOOD Ta kiểm thử script sau : Máy client dùng câu lệnh : #hping3 –-flood –S –p 80 192.168.99.1 65 Hình 23: Lệnh kiểm thử chặn ngâp lụt SYN Kiểm tra kết bên máy server cách mở file kern.log để xem nhật ký log hệ thống lệnh: # nano /var/log/kern.log Hình 24: Kết kiểm thử chống ngập lụt SYN 3.2.3.7 Giới hạn truy cập SSH cho admin LOG_LEVEL="debug" LOG_LIMIT=3/s LOG_LIMIT_BURST=1 SSH_IP="192.168.99.1" #iptables -N SSH_ACCEPT 66 #iptables -A SSH_ACCEPT -m state state NEW -j LOG -log-level $LOG_LEVEL log-prefix "fp=SSH:admin a=ACCEPT " #iptables -A SSH_ACCEPT -j ACCEPT #iptables -N SSH_DENIED #iptables -A SSH_DENIED -m limit limit $LOG_LIMIT -limit-burst $LOG_LIMIT_BURST -j LOG log-level $LOG_LEVEL log-prefix "fp=SSH:attempt a=REJECT " #iptables -A SSH_DENIED -p tcp -j REJECT rejectwith tcp-reset for i in $SSH_IP; #iptables -A INPUT -i eth0 -p tcp -s $i dport 22 -j SSH_ACCEPT done #iptables -A INPUT -i eth0 -p tcp dport 22 -m state state NEW -j SSH_DENIED Ta kiểm thử script sau : Máy client dùng câu lệnh: #ssh 192.168.99.1 H ì n h Hình 25: Kiểm thử SSH 67 Kiểm tra kết bên máy server cách mở file kern.log để xem nhật ký log hệ thống lệnh: # nano /var/log/kern.log Hình 26: Kết giới hạn truy nhập SSH cho admin 3.2.3.8 Giới hạn truy cập FTP cho webmaster LOG_LEVEL="debug" LOG_LIMIT=5/m LOG_LIMIT_BURST=1 FTP_IP="192.168.99.1" #iptables -N FTP_ACCEPT #Iptables -A FTP_ACCEPT -m state state NEW -j LOG -log-level $LOG_LEVEL log-prefix "fp=FTP:webmaster a=ACCEPT " #iptables -A FTP_ACCEPT -j ACCEPT #iptables -N FTP_DENIED #iptables -A FTP_DENIED -m limit limit $LOG_LIMIT -limit-burst $LOG_LIMIT_BURST -j LOG log-level $LOG_LEVEL log-prefix "fp=FTP:attempt a=REJECT " 68 #iptables -A FTP_DENIED -p tcp -j REJECT rejectwith tcp-reset for i in $FTP_IP; #iptables -A INPUT -i eth0 -p tcp -s $i dport 21 -j FTP_ACCEPT done #iptables -A INPUT -i eth0 -p tcp dport 21 -m state state NEW -j FTP_DENIED Ta kiểm thử script sau: Máy client dùng câu lệnh: #ftp 192.168.99.1 Hình 27: Kiểm thử giới hạn FTP cho webmaster Kiểm tra kết bên máy server cách mở file kern.log để xem nhật ký log hệ thống lệnh: # nano /var/log/kern.log 69 Hình 28: Kết kiểm thử giới hạn truy nhập FTP cho webmaster 3.2.3.9 Lọc TCP vào #iptables -N TCP_INCOMING #iptables -A TCP_INCOMING -p tcp dport 80 -j ACCEPT #iptables -A TCP_INCOMING -p tcp -j REJECT_PORTSCAN #iptables -A INPUT -i eth0 -p tcp -j TCP_INCOMING 3.2.3.10 Lọc UDP vào #iptables -N UDP_INCOMING #iptables -A UDP_INCOMING -p udp dport 53 -j ACCEPT #iptables -A UDP_INCOMING -p udp -j REJECT_PORTSCAN #iptables -A INPUT -i eth0 -p udp -j UDP_INCOMING 3.2.3.11 Chặn ngập lục UDP LOG_LEVEL="debug" LOG_LIMIT=5/m 70 LOG_LIMIT_BURST=1 UDP_LIMIT = 10/s UDP_LIMIT_BURST = #iptables -N CHECK_UDPFLOOD #iptables -A CHECK_UDPFLOOD -m limit limit $UDP_LIMIT limit-burst $UDP_LIMIT_BURST -j RETURN #iptables -A CHECK_UDPFLOOD -m limit limit $LOG_LIMIT limit-burst $LOG_LIMIT_BURST -j LOG loglevel $LOG_LEVEL log-prefix "fp=UDPFLOOD:warning a=DROP " #iptables -A CHECK_UDPFLOOD -j DROP #iptables -A INPUT -i eth0 -p udp -j CHECK_UDPFLOOD Ta kiểm thử script sau: Máy client dùng câu lệnh: #hping3 udp –p 53 192.168.99.1 Hình 29: Kiểm thử chặn ngập lục UDP Kiểm tra kết bên máy server cách mở file kern.log để xem nhật ký log hệ thống lệnh: # nano /var/log/kern.log 71 Hình 30: Kết kiểm thử chặn ngập lụt UDP 72 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 KẾT LUẬN Luận văn đề cập đến vấn đề chung bảo mật thông tin, an ninh mạng nói chung, nghiên cứu lý thuyết hệ điều hành Linux sâu nghiên cứu lý thuyết Firewall công cụ để xây dựng Firewall hồn chỉnh Luận văn giúp cho người đọc có nhìn khái quát chức năng, phương thức hoạt động IPTABLEs LINUX Bao gồm cách cài đặt Iptables, chế xử lý package Iptables, Target Jumps, tham số dòng lệnh Iptables Đề xuất xây dựng Firewall với Iptables thiết lập Iptables cho máy chủ phục vụ Web  Luận văn đạt kết sau:  Tìm hiểu tổng quan an ninh mạng dạng cơng  Tìm hiểu tổng quan hệ điều hành Linux  Đi sâu nghiên cứu lý thuyết Firewall công cụ liên quan nhằm mục đích xây dựng Firewall hệ điều hành mã nguồn mở  Nghiên cứu phân tích kiến trúc, làm chủ gói phần mêm Iptables hệ điều hành mã nguồn mở (Ubuntu server 12.04)  Tích hợp thành phần mã nguồn mở, xây dựng thành công hệ thống Firewall với Iptables  Triển khai thử nghiệm kiểm tra kết  Bên cạnh luận văn cịn số hạn chế thiếu sót :  Chính sách ngăn chặn phải người quản trị thiết lập Chưa xây dựng khả tổ chức luật người quản trị đưa vào nhằm tối ưu hóa luật  Chỉ mức thử nghiệm cài đặt kiểm thử  Hiệu Firewall xây dựng mức giả lập đơn lẻ, chưa thử nghiệm độ tối ưu Firewall với số lượng mạng LAN lớn thực tế 73 4.2 HƯỚNG PHÁT TRIỂN Trong tương lai để phát triển Firewall với Iptables thành sản phẩm hữu ích, ứng dụng rộng rãi cần phải hồn thiện thiếu sót sau:  Tối ưu hóa cấu hình thành phần mã nguồn mở sử dụng để tăng hiệu độ tin cậy  Tiếp tục phát triển hệ thống điều khiển, tận dụng hết khả tùy biến hệ thống tương tác thân thiện  Nghiên cứu phát triển, tối ưu chức quản lý luật người quản trị đưa vào hiệu  Cài đặt kiểm thử với mạng LAN thực tế 74 DANH MỤC TÀI LIỆU THAM KHẢO Tiếng việt Nguyễn Thị Điệp Tiêu Đơng Nhơn (12/2005) Giáo trình dịch vụ mạng Linux, Đại học Quốc gia Thành phố Hồ Chí Minh Nguyễn Tấn Khơi (2004) Giáo trình Hệ thống mạng Linux, Đại học Bách Khoa Đà Nẵng Nguyễn Hồng Thái (12/2006) Cài đặt cấu hình Iptables, Đại học Cơng nghệ Thành phố Hồ Chí Minh Hà Quang Thụy Nguyễn Chí Thành (2004) Giáo trình giới thiệu Hệ điều hành Unix-Linux, Đại học Quốc gia Hà Nội Tiếng anh D.Brent Chapman, Simon Cooper, Elizabeth D Zwicky (2000) Building Internet Firewall, 2nd Edition Ronald Beekelaar, Brian Komar, PhD – Wiley Publishing, Joern Wettern (2003) Firewall for Dummies – 2nd Editon Các trang web http://vi.wikipedia.org/wiki/Linux http://vi.wikipedia.org/wiki/Firewall http://vi.wikipedia.org/wiki/Iptables 10 Các lệnh iptables http://congdonglinux.vn/forum/showthread.php?128C%C3%A1c-l%E1%BB%87nh-c%C4%83n-b%E1%BA%A3n-iptables 11 Iptables-tutorial: http://iptables–tutorial.frozentux.net/iptables–tutorial.html 12 Tổng quan Firewall: http://archive.saga.vn/dfincor.aspx?id=1538 13 Tìm hiểu Firewall: http://www.quantrimang.com.vn/tim-hieu-ve-firewall14320 75

Ngày đăng: 12/06/2023, 18:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w