Đề tài Nghiên cứu và phát triển các dịch vụ bảo mật trên linux

Tài liệu Đề tài Nghiên cứu và phát triển các dịch vụ bảo mật trên linux: BỘ GIÁO DỤC ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH KHOA CễNG NGHỆ THễNG TIN --------—&–-------- ĐỒ ÁN TỐT NGHIỆP NGHIấN CỨU VÀ PHÁT TRIỂN CÁC DỊCH VỤ BẢO MẬT TRấN LINUX Giảng viờn hướng dẫn: Thạc Sỹ VŨ CHÍ CƯỜNG Sinh viờn thực hiện: ĐẶNG PHÚC VIỆT Lớp: 46K3.CNTT Thành Phố Vinh, Thỏng 4 Năm 2010 Lời Mở Đầu Chúng ta đang được sống trong một thời đại tri thức, thời đại của sự biến đổi và phát triến không ngừng của công nghệ. Công nghệ tạo nên cuộc sống và làm thay đổi cuộc sống của chúng ta. Công nghệ thông tin là những nền tảng để tạo nên công nghệ làm thay đổi cuộc sống. Như chúng ta đã biết công nghệ thông tin làm thay đổi cuộc sống của chúng ta rất nhiều, nó tác động và làm thay đổi về tất cả mọi mặt của đời sống chúng ta như quản lý, điều khiển công việc, phục vụ công việc, giải trí, viển thông, trao đổi… Đó là những gì mà công nghệ thông tin đã mang lại cho chúng ta. Và con nhiều hơn nữa nền công nghệ đó đang ngày càng phát triển và hoàn thiện hơn. Nhưng bên cạnh những lợi ích mà...

doc66 trang | Chia sẻ: hunglv | Lượt xem: 1437 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Nghiên cứu và phát triển các dịch vụ bảo mật trên linux, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH KHOA CễNG NGHỆ THễNG TIN --------—&–-------- ĐỒ ÁN TỐT NGHIỆP NGHIấN CỨU VÀ PHÁT TRIỂN CÁC DỊCH VỤ BẢO MẬT TRấN LINUX Giảng viờn hướng dẫn: Thạc Sỹ VŨ CHÍ CƯỜNG Sinh viờn thực hiện: ĐẶNG PHÚC VIỆT Lớp: 46K3.CNTT Thành Phố Vinh, Thỏng 4 Năm 2010 Lời Mở Đầu Chúng ta đang được sống trong một thời đại tri thức, thời đại của sự biến đổi và phát triến không ngừng của công nghệ. Công nghệ tạo nên cuộc sống và làm thay đổi cuộc sống của chúng ta. Công nghệ thông tin là những nền tảng để tạo nên công nghệ làm thay đổi cuộc sống. Như chúng ta đã biết công nghệ thông tin làm thay đổi cuộc sống của chúng ta rất nhiều, nó tác động và làm thay đổi về tất cả mọi mặt của đời sống chúng ta như quản lý, điều khiển công việc, phục vụ công việc, giải trí, viển thông, trao đổi… Đó là những gì mà công nghệ thông tin đã mang lại cho chúng ta. Và con nhiều hơn nữa nền công nghệ đó đang ngày càng phát triển và hoàn thiện hơn. Nhưng bên cạnh những lợi ích mà nó mang lại thì cũng có những khó khăn được đặt ra đó chính là phải có những con người vận hành nền công nghệ đó, các thiết bị chuyên dụng hiện đại, chi phí đầu tư cho công nghệ… Tất cả những điều đó đã làm cho việc hoạch toán chi phí ứng dụng công nghệ vào sản xuất được khai thác và tận dụng triệt để. Như chúng ta đã biết bên cạnh những lợi ích mà các thiết bị và phần mềm công nghệ mang lại phục vụ cho sản xuất thì nó có giá thành và chi phí rất cao. Vì vậy đòi hỏi người dùng cũng như các doanh nghiệp cần có một chính sách hợp lý để sử dụng được công nghệ. Điều đó đã tạo nên sự phát triển của cộng đồng mã nguồn mỡ để cho con người tiếp cận công nghệ một cách thuận lợi nhất mà không cần phải chi phí nhiều cho đầu tư công nghệ. Linux là một phần mềm hệ điều hành mã nguồn mở được cộng đồng IT thế giới phát triển liên tục và không ngừng trên internet, xét một cách toàn bộ thì Linux hơn hẳn các sản phẩm trên thị trường hiện nay, bởi tính miển phí và tính có rất nhiều ứng dụng phục vụ cho công việc, mổi ứng dụng lại có rất nhiều người viết nên dó đó hiệu năng ứng dụng và sự lựa chọn cho người dùng rất lớn. Trong đề tài này tôi sẽ tập trung giới thiệu một cách tổng quát về Linux và một số ứng dụng bảo mật của Linux giựa trên hệ điều hành Linux CentOS 5.4 phát triển trên kernel 2.6.18-164.e15. Lời Cảm Ơn Trong quá trình làm đề tài em xin chân thành cảm ơn thầy Vũ Chí Cường đã tận tình hướng dẫn, giúp đỡ em trong suốt thời gian thực hiện để ngày càng hoàn thiện để tài : “Nghiên cứu và phát triển các dịch vụ bảo mật trên Linux”. Thông qua đề tài cho em xin cảm ơn quý thầy cô giáo trong khoa công nghệ thông tin trường Đại học Vinh đã truyền đạt và giảng dảy cho em những kiến thức hết sức quý báu để em có thể hoàn thành đề tài này. Cuối cùng cho em xin cảm ơn toàn bộ cán bộ và nhân viên trong tòa soạn báo công an Nghệ An đã tạo điều kiện cho em thực tập và nghiên cứu để thực hiện đề tài này. Mặc dù em đã cố gắng hoàn thành đề tài rất nhiều trong phạm vi kiến thức cho phép, nhưng chắc chắn sẽ không tránh khỏi những thiếu sót kính mong quý thầy cô và các bạn bổ sung để đề tài được hoàn thiện hơn. Vinh, ngày 07/05/2010 Sinh viên thực hiện Đặng Phúc Việt Nhận Xét (Của giảng viên hướng dẫn) ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… Nhận Xét (Của giảng viên phản biện) ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………… Mục Lục Chương 1. Giới Thiệu về Linux Và Hệ Điều Hành Máy Chủ Centos 1.1. Vài dòng về lịch sữ phát triển Linux. - Năm 1991, Linus Torvalds, sinh viên của Đại học Tổng hợp Helsinki Phần Lan bắt đầu xem xét Minix là một phiên bản của Unix với mục đích là tạo ra một hệ điều hành Unix chạy trên PC với bộ xử lý Intel 80386. - Ngày 25/8/1991, Linus cho ra đời Verision 0.01 và thông báo trên comp.os.minix về dự định của mình về Linux. - Tháng 1/1992, Linus cho ra đời phiên bản version 0.02 với shell và trình biên dịch C. Linux không cần Minix nữa để biên dịch lại hệ điều hành của mình. Linus đặt tên hệ điều hành của mình là Linux. - Năm 1994 phiên bản chính thức 1.0 được phát hành. - Linux là một hệ điều hành dạng UNIX (Unix-like Operating System) chạy trên máy PC với bộ điều khiển trung tâm CPU Intel 80386 trở lên, hay các bộ xử lý trung tâm tương thích AMD, Cyrix. Linux ngày nay còn có thể chạy trên các máy Macintosh hoặc SUN Space. - Linux được viết lại từ đầu, tức là không sử dụng một lệnh nào của Unix để tránh về vấn đề bản quyền. Tuy nhiên hoạt động của Linux lại hoàn toàn dựa trên nguyên tắc hoạt động của Unix. Vì vậy nếu một người nắm vững được Linux thì sẽ nắm vững được Unix. - Linux là một hệ điều hành miễn phí, được cộng đồng IT phát triển trên mạng internet, nó được sử dụng trên máy tính cá nhân. Linux phát triển nhanh chóng và đã trở nên phổ biến trong một thời gian ngắn. Nó nhanh chóng được nhiều người sử dụng bởi vì tính miển phí, hổ trợ nhiều chức năng cũng như công cụ do được phát triển rộng rãi trên internet. Nó là một hệ điều hành có hiệu năng cao, nó chạy được trên cả máy cấu hình cao cũng như cấu hình thấp. Hệ điều hành này hỗ trợ các máy tính tính sử dụng 32 cũng như 64 bits và rất nhiều phần mềm khác nhau. Quá trình phát triển của Linux được tăng tốc bởi sự trợ giúp của GNU là chương trình hổ trợ phát triển Unix chạy trên nhiều nền tảng khác nhau. Phiên bản mới nhất của Linux Kernel là 2.6.11.3 ra đời vào năm 2001 có khả năng điều khiển các máy đa bộ xữ lý và nhiều tính năng khác nhau. 1.2. Ưu và nhược điểm của hệ điêu hành Linux 1.2.1. Ưu điểm của hệ điều hành Linux - Là hệ điều hành miển phí và được rất nhiều người phát triển nên có nhiều tính năng ứng dụng hay, cũng như nhiều người dùng. - Là hệ điều hành đa nhiệm và đa người dùng, tận dụng được sức mạnh xử lý của máy 386 và đời cao hơn. Chạy được trên nhiều loại máy khác nhau. - Có sẵn bộ giao thức TCP/IP giúp cho người dùng dễ dàng kết nối internet. - Khả năng tương thích với các hệ thống mở có nghĩa chúng ta có thể chuyển nó từ hệ điều hành này sang hệ điều hành khác mà vẫn hoạt động tốt. - Hổ trợ người dùng. Hiện nay linux có hàng ngàn ứng dụng, bao gồm các chương trình báo biểu, cơ sở dữ liệu, giải trí, đa phương tiện và rất nhiều ứng dụng khác. - Lợi ích cho giới chuyên nghiệp điện toán, đến với linux giới điện toán sẽ có hàng ngàn công cụ phát triển chương trình, báo gồm các bộ biên dịch cho nhiều ngôn ngữ lập trình hàng đầu hiện nay, chẳng hạn như C, C++… 1.2.2. Một số khuyết điểm của Linux. - Mặc dù có rất nhiều ưu điểm nhưng Linux không phải không có khuyết điểm đồng thời những khuyết điểm đó ít có khã năng giải quyết vì những ưu điểm đó. - Khuyết điểm về hổ trợ kỹ thuật tức là Linux không có một công ty nào đứng ra chịu trách nhiệm phát triển hệ điều hành này. Nếu gặp trục trặc thì không có ai có thể giải quyêt miển phí cho bạn. - Khuyết điểm về phần cứng đó chính là Linux không dễ dàng cài đặt và hổ trợ nhiều thiết bị phần cứng. Các phiên bản phần cứng của Linux đều hổ trợ theo nguyên tắc phần cứng của nhà phát triển Linux. - Quá trình sử dụng với người dùng tương đối khó khăn bởi vì Linux hổ trợ việc giao tiếp bằng đồ họa ít nên chủ yếu phải dùng bằng lệnh nên dẫn đến làm cho người dùng cảm thấy kho khăn khi sử dụng. 1.3. Kiến trúc của hệ điều hành Linux - Shell: Cung cấp các tập lệnh cho người dùng thao tác với kernel để thực hiện công việc. Shell đọc các lệnh từ người dùng và xử lý. Ngoài ra shell còn cung cấp một số đặc tính khác như chuyển hướng xuất nhập, ngôn ngữ lệnh để tạo các tập tin tương tự như bat trong DOS. Có nhiều Shell được sử dụng trong Linux. Mổi shell có các bộ lệnh khác nhau. - Các tiện ích: Các tiện ích được người dùng sử dung thường xuyên. Nó dùng cho nhiều thứ như thao tác tập tin, đĩa, nén, sao lưu tập tin… Hầu hết các tiện ích sử dụng trong Linux đều là sản phẩm của GNU. Linux có nhiều tiện ích như là biên dịch, gở lổi, soạn văn bản… - Chương trình ứng dụng: Khác với các tiện ích thì các ứng dụng có độ phức tạp rất lớn được các nhà sản xuất viết ra như word, quản trị cơ sở dữ liệu… - Kernel ( hạt nhân): Là trung tâm điều khiển của hệ điều hành Linux, chứa các mã nguồn điều khiển hoạt động của toàn bộ hệ thống. Hạt nhân được phát triển không ngừng, thường có hai phiên bản đồng thời là phiên bản mới nhất và phiên bản chạy ổn định nhất. Kernel được thiết kế theo dạng modul, do vậy kích thước thật sự của kernel là rất nhỏ. Chúng chỉ tải các bộ phận cần thiết lên bộ nhớ và không lảng phí bộ nhớ. Nó được xem như trái tim của Linux, kernel của Linux có thể truy xuất tới toàn bộ tính năng của phần cứng của máy. 1.4. Cấu trúc và thao tác tập tin trên Linux 1.4.1. Cấu trúc tập tin - Mổi hệ điều hành có cách tổ chức lưu trử dữ liệu riêng. ở mức vật lý, đĩa được định dạng từ các thành phần sector, track, cylinder. ở mức logic, mỗi hệ thống sử dụng cấu truc riêng, có thể dùng chỉ mục hay phân cấp có thể xác định được dữ liệu từ mức logic tới mức vật lý. Cách tổ chức đó gọi là tổ chức hệ thống tập tin. - Hệ thống tập tin Linux bao gồm đĩa mềm, cd-rom, những partition của đĩa cứng. Những hệ thống tập tin này được tạo trong quá trình cài đặt hệ điều hành. - Linux hổ trợ nhiều loại hệ thống tập tin như ext2, ext3, MS-DOS, proc. Hệ thống tập tin cơ bản của linux là ext2 và ext3. Hệ thống tập tin náy cho phép đặt tên tập tin tối đa 256 ký tự và kích thước tối đa là 4terabytes. Bên cạnh đó Linux còn hổ trợ vfat cho phép đặt tên tập tin dài đối với tập tin MS-DOS và những partition FAT32. Proc là hệ thống tập tin ảo nghĩa là không dùng dung lượng đĩa cứng phân phối cho nó. - Các thành phần của hệ thống tập tin: Super Block: Là một cấu trúc được tạo tại vị trí bắt đầu hệ thống tập tin. Nó lưu trử thông tin về hệ thống tập tin như block-size, free block… Inode(256 byte): Lưu nhưng thông tin về tập tin và thư mục được tạo ra trong hệ thống tập tin. Các thông tin bao gồm: Loại tập tin và quyền hạn sữ dụng tập tin Người sở hữu tập tin Kích thước của tập tin và số hard link đến tập tin Ngày và thời gian chinh sữa tập tin cuối cùng Vị trí nội dung tập tin trong hệ thống tập tin Storageblock: Là vùng lưu dữ liệu thực sự của tập tin và thư mục. Nó chia thành những Data Block. Dữ liệu lưu trử đĩa cứng trong các data block. Mổi block thường là 1024 byte. Ngay khi tập tin chỉ có 1 ký tự thì cũng phải cấp phát một block để lưu trử nó. Data Block của tập tin thông thường lưu inode của tập tin và nội dung tập tin Data Block thư mục lưu danh sách những entry bao gồm inode number, tên của tập tin và những thư mục con. 1.4.2. Thao tác trên tập tin Linux 1.4.2.1. Loại tập tin - Trong linux tập tin dùng cho việc lưu trử dữ liệu. Nó bao gồm cả thư mục và thiết bị lưu trử. Ngay cả bộ nhớ chính cũng được coi là một tập tin, trong linux các tập tin được chia làm ba loại chính như sau: Tập tin dữ liệu: Đây là tập tin theo định nghĩa truyền thống. Chúng ta có thể lưu trử bất cứ loại dữ liệu nào lên đây. Tập tin thư mục: Thư mục không chứa dữ liệu mà chỉ chứa các thông tin về các tập tin lưu trong nó. Thư mục chứa hai trường của một tập tin là tên tập tin và inode number. Tập tin thiết bị: Hệ thống Linux xem các thiết bị như các tập tin. Ra vào dữ liệu cho các tập tin trên tập tin này chính là ra vào dữ liệu cho thiết bị. 1.4.2.2. Liên kết các tập tin - Liên kết tập tin được hiểu như việc tạo ra một tên tập tin thứ hai cho một tập tin. Cú pháp tạo tập tin liên kết như sau: $ln Nguyên nhân tạo tập tin là muốn nhân tập tin lên nhiều lần thuận lợi cho việc sao lưu. - Liên kết phần cứng là một liên kết trong cùng hệ thống tập tin với hai inode entry tương ứng cùng một nội dung vật lý. 1.4.2.3. Cấu trúc cây thư mục - Trong Linux không có khái niệm ổ đĩa như trong Windows, tất cả các tập tin và thư mục được bắt đầu từ thư mục gốc (/). Linux sử dụng dấu “.” Để chỉ thư mục hiện hành và sử dụng dấu “..” để chỉ định thư mục cha hiện hành. 1.4.2.4. Một số thao tác trên tập tin - Để mount một hệ thống tập tin vào để đọc trên linux ta dùng lệnh sau: #mount Ví dụ: mount /dev/cdrom /media/cdom - Để umount một hệ thống tập tin không sử dụng nữa ta dùng lệnh sau #umount 1.4.2.5. Thao tác trên thư mục - Đường dẫn tuyệt đối, đường dẫn tương đối: đường dẫn tuyệt đối là đường dẫn mô tả cả thư mục cha của thư mục đang hiện hành như /etc/passwd, /root/desktop/bai1.txt… Đường dẫn tương đối chính là khi ta đang ở thư mục hiện hành mà truy cập thư mục hoặc tập tin con trong đó như ở ví dụng trên khi ta đang thao tác trên /etc khi đó muốn truy cập tới /passwd ta chỉ đánh lệnh passwd… - Lệnh pwd: Cho phép xác định thư mục hiện hành. - Lệnh cd : Dùng để chuyển đến thư mục $cd - Lệnh ls: Liệt kê danh sách thư mục con và tập tin có trong thư mục hiện hành $ls Ví dụ: $ls –a/-l/-x /etc Với -a : hiện thì toàn bộ tất cả các tập tin kể cả tập tin ẩn -l : Hiển thị chi tiết thông tin về tập tin -x : hiển thị trên nhiều cột - Lệnh mkdir: tạo thư mục $mkdir - Lệnh rmdir: xóa thư mục rổng $rmdir - Lệnh cat :dùng để hiển thị nội dung tập tin $cat $cat >: xóa tập tin và tạo mới $cat >>: thêm dữ liệu vào tập tin đã tạo - Lệnh more: cho phép xem nội dung tập tin theo trang màn hình $more - Lệnh mv: cho phép thay đổi tên tập tin và di chuyển tập tin $mv - Lệnh rm: cho phép xóa tập tin, thư mục $rm Tùy chọn: -r: xóa thư mục và tập tin con trong đó -l: xác nhận lại trước khi xóa - Lệnh find: tìm kiếm tập tin thỏa mản $find Tùy chọn: -name: tìm theo tên -size: tìm theo kích thước tập tin - Lệnh grep: Lệnh grep cho phép tìm kiếm chuổi trong tập tin $grep - Lệnh touch: tạo và thay đổi nội dung tập tin $touch - Lệnh gzip/gunzip: Cho phép nén và giải nén các tập theo dạng nén với đuôi mở rộng là .gzip $gzip $gunzip Ví dụ: $gzip /etc/passwd $gunzip /etc/passwd.gzip - Lệnh tar :dùng để gom và bung các file có đuôi mở rộng là .tar $tar Tùy chọn: -cvf: gom tập tin/thư mục -xvf: bung tập tin/thư mục Ví dụ: $tar –cvf phucviet.tar /root/desktop/phucviet $tar –xvf phucviet.tar 1.4.2.6. Quyền trên hạn của người dùng với tập tin - Chúng ta đã biết Linux là một hệ điều hành đa người dùng vì vậy quá trình quy định quyền hạn trên các tập tin đòi hỏi phải chặt chẽ và linh hoạt. Linux xác định ba quyền trên các tập tin là read (đọc), write (viết), execute (thực thi) đối với ba đối tượng là người sở hữu (the owner), nhóm sở hữu (the group owner), người khác (other users). Linux quy định quyền read cho phép chúng ta đọc nội dung tâp tin với thư mục cho ta xem các tập tin con trong đó. Quyền write bao gồm các quyền viết lên tập tin, tạo tập tin trong thư mục, xóa hay thay đổi tập tin. Quyền excute cho phép chúng ta gọi chương trình lên bộ nhớ để thực thi và chạy chương trình. Trên đây là hình vẽ mô tả quyền và ký hiệu trên tập tin Ký tự: Cho phép xác định loại tập tin. Nếu “-“ là tập tin bình thường. Nếu c” là tập tin bàn phím, “b” tập tin block.. Owner: Là 3bit cho phép xác định chủ sở hữu của tập tin. Thường là người tạo ra tập tin cũng bao gồm ba quyền. Group owner: Là quyền cho phép nhóm nào được quản lý tập tin với 3 quyền đọc, ghi, thực thi. Other users: Là quyền cho phép nhưng người dùng khác với tập tin. Ví dụ: Một tập tin có quyền như sau -rw-r—r— Ta thấy quyền trên file như sau: Đây là tập tin bình thường vì “-‘ Quyền Owner là read và write vậy ta có 0*2#####0 + 1*21+1*22=6 Quyền group Owner là read : 0*2#####0 + 0*21+1*22=4 Quyền trên other users là read: 0*2#####0 + 0*21+1*22=4 Như vậy ta sẽ thấy rằng quyền trên file đó sẽ có giá trị như sau: 644 1.4.2.7. Lệnh chmod - Lệnh này dùng để cấp phép quyền hạn truy cập của tập tin hay thư mục $chmod Ta có : Nhóm người dùng u-user, g-group, o-other, a-all Thao tác: +: thêm quyền, -: bớt quyền, =:gán ngang quyền Quyền hạn: r- read, w- write, x- excute Ví dụ: $chmod ug+x /xkvn $chmod 522 /xkvn 1.4.2.9. Lệnh chown - Dùng để xác định người sở hữu của tập tin $chown 1.4.2.10. Lệnh chgrp - Dùng để thay đổi nhóm sở hữu 1.5. Cài đặt phần mềm trên Linux 1.5.1. Sử dụng lệnh rpm - RedHat Package Manager (RPM) là hệ thống quản lý package được linux hổ trợ cho người dùng. Nó cung cấp cho người dùng nhiều tính năng để duy trì hệ thống của mình. Người dùng có thể cài đặt, nâng cấp, và xóa bỏ phần mềm bằng lệnh RPM trực tiếp trên hệ thống. Nó cài đặt các phần mềm có đuôi mở rông là “.rpm”. - Chúng ta phải có quyền root khi đó mới sử dụng được rpm. RPM có 5 chế độ thực hiện là cài đặt (installing), xóa (uninstalling), nâng cấp (upgrading), truy vấn (querying) và thẩm tra (verifying). - Lệnh cài đặt phần mềm bằng RPM như sau: #rpm –ivh Ngoài ra chúng có một số tùy chọn sau: replapkgs dùng cài lại, replacefiles bỏ qua xung đột file - Lệnh gở bỏ phần mềm #rpm –e - Update phần mềm #rpm –Uvh - Truy vấn thông tin về gói phần mềm đã cài #rpm –qa 1.5.2. Cài đặt phần mềm với đuôi phần mềm mở rộng .tar, .tgz - Ngoài các phần mềm đóng gói dạng nhị phân “.rpm” còn có các phần mềm được cung cấp dạng file source code như *.tar hoặc *.tgz. Thông thường để cài đặt phần mềm này ta cần phải giựa vào file trợ giúp trong gói phần mềm như READ hoặc INSTALL… nó nằm trong gói phần mềm khi ta giải nén ra. Quá trình cài đặt được diển ra như sau: Bước 1: Chúng ta tiến hành giải nén gói phần mềm #tar –xvzf Bước 2: Chuyển tới thư mục chứa phần mềm vừa giải nén #cd Bước 3: Liệt kê danh sách tập tin trong gói phần mềm #ls –al Bước 4: Thực hiện quá trình cài đặt theo hướng dẫn của READ/INSTALL trong đó #cat READ/INSTALL Quá trình cài đặt thường diển ra một số bước như sau: - Chạy script cài đặt bằng lệnh #./configure - Xây dựng gói phần mềm bằng lệnh sau #make Hoặc #make install 1.5.3. Sử dụng lệnh yum để cài đặt - Ngoài cách cài đặt như trên ta con có thể cài đặt phần mềm bằng lệnh #yum Lệnh này cho phép chúng ta cài đặt phần mềm mà không cần nguồn của gói cài đặt. Có nghĩa rằng lệnh này sẽ tải gói cài đặt từ mang internet về cài đặt cho chúng ta. Đây là một điểm rất thuận lợi vì quá trình cài đặt được thực hiện tự động, người dùng không cần phải thao tác cài đặt phức tạp, không cần phải download gói phần mềm về vì với linux có rất nhiều phiên bản và bộ cài cho một phần mềm vì vậy nó gây khó khăn cho người dùng lựa chọn phần mềm cài đặt. Thông qua lệnh này thì gói phần mềm mới nhất sẽ được cài đặt và sẽ không bị xung đột với hệ thống như trường hợp ta cài đặt bàng tay. 1.6. Quản trị người dùng và nhóm - Linux quản lý và phân quyền cho mổi người dùng, nhóm người dùng bằng cách giựa và chỉ số UserID và GroupID của mổi người dùng. Cũng giống như Windows một user sẽ được thừa hường quyền và chịu sự quản lý từ nhóm (group). Trong linux tài khoản có quyền cao nhất đối với hệ thống là root có UserID=0,Group=0… tương tự như tài khoản adminstrator trong Windows. Tài khoản root có tất cả các quyền mà hệ thống có nó có khả năng quản lý, tạo ra các tài khoàn khác kể cả tài khoàn có quyền tương đương với tài khoản root. - Chúng ta cần phân biệt người dùng hệ thống và root từ dấu nhắc hệ thống như sau: [root@centos /root]# : Chúng ta đang thao tác trên tài khoảnquyền root: Với tên tài khoàn là root, máy tính có tên centos, thư mục cá nhân là /root. Chúng ta thấy dấu nhắc với tài khoản root là “#” khác với người dùng bình thường. [phucviet@centos /phucviet]$ : Chúng ta đang thao tác trên tài khoàn có quyền user hệ thống. Với tên tài khoản là phucviet, máy tính thao tác là centos, thư mục cá nhân là /phucviet. Dấu nhắc trên hệ thống là “$”. Đây là đặc điểm dễ dàng phân biệt giữa người dùng hệ thống và root. 1.6.1. Thông tin về user - Một người dùng muốn đăng nhập hệ thống phải yêu cầu có một tài khoản để đăng nhập bao gồm user và password. Tài khoản này do người quản trị root tạo ra. Khi tài khoản được tạo ra thì linux sẽ có một tập tin sẽ chuyên lưu thông tin về user hệ thống đó là tập tin /etc/passwd 1.6.1.1. Tập tin /etc/passwd - Tập tin này đóng vai trò sống còn của hệ thống linux. Mọi người có thể đọc tập tin nhưng chỉ có root mới thay đổi được nó. Tập tin được lưu dưới dạng text có nội dung như sau: - Mổi tài khoản được lưu trong 7 cột gồm các thông tin như sau 1.6.1.2. Username và UserID - Username là tên của một người dùng để đăng nhập hệ thống. Tên đó có duy nhất trên hệ thống. Linux phân biệt chữ hoa và chữ thường. - Thông thường để quản lý người dùng linux đưa ra một khái niệm nữa là UserID có nghĩa là định danh người dùng. Mổi người dùng có một UserID riêng. - Linux sử dụng định danh để kiểm soát hoạt động của người dùng hệ thống. Theo quy định thì UserID=0 là tài khoản root. Các định danh 1-99 sử dụng cho các tài khoản hệ thống. Người dùng bình thường thường có định danh từ 100 trở lên. 1.6.1.3. Tập tin /etc/shadow - Tập tin này mô tả thông tin password của người dùng trong hệ thống. 1.6.1.4. Group ID - Linux đưa ra định danh GroupID nhằm mục đích xác định người dùng đang ở nhóm nào để dễ dàng quản lý. Với group quản trị hệ thống có GroupID=0, root thuộc nhóm này. Các user thuộc nhóm có GroupID từ 500 trở lên. 1.6.2. Quản lý người dùng 1.6.2.1. Tạo tài khoản người dùng - Ta sử dụng lệnh sau để tạo tài khoản người dùng #useradd [-c mô-tả-user] [-d thư-mục-cá-nhân] [-g nhóm-của-người-dùng] [tên-tài-khoản] ở đây nếu chúng ta không sử dụng tham số “-d” thì mặc định linux sẽ tạo thư mục cá nhân trên linux bình thường. Ví dụ: #useradd –c “Dang Phuc Viet” –g quan_tri phucviet Nếu ta sử dụng: #useradd phucviet ; thì hệ thống sẽ tạo ra nhóm người dùng mới tương đương với người dùng là phucviet - Tạo password cho user ta sử dụng lệnh sau: #passwd Ví dụ: - Để thay đổi password ta cũng dùng lệnh trên. 1.6.2.2. Thay đổi thông tin tài khoản - Để thay đổi thông tin tài khoản ta có thể thay đổi trực tiếp trong file /etc/passwd hoặc dùng bằng lệnh usermod như sau: #usermod [-c mô-tả-người-dùng] [-d thư-mục-cá-nhân] [-g nhóm] 1.6.2.3. Một số lệnh thao tác với tài khoản người dùng - Khóa tài người dùng #passwd –l - Mở tài khoản người dùng #passwd –u - Hủy tài khoản người dùng #userdel –r 1.6.3. Quản lý nhóm người dùng - Một nhóm người dùng bao gồm nhiều người dùng có cùng một chức năng trong hệ thống hoặc có quyền giống nhau trên hệ thống. Một nhóm người dùng được linux quản lý bao gồm tên nhóm và GroupID. Một nhóm có thế có nhiều thành viên và là thành viên của nhóm khác… - Thông tin về nhóm được lưu trử trong tập tin /etc/group gồm các thông tin như sau: - Tạo nhóm ta sử dụng lệnh #groupadd - Thêm user vào nhóm #usermod –g - Hủy nhóm #groupdel 1.7. Giới thiệu về hệ điều hành máy chủ Linux CentOS 5.4 - Như chúng ta đã biết sau khi linux ra đời và phát triển thì nó có nhiều phiên bản phát triển khác nhau nhưng đều giựa trên hạt nhân (kernel) của linux. Hiện nay trên thị trường và trên internet có rất nhiều bản cho người dùng. Bản thương mại cũng có, bản miển phí cũng có. Có một số bản như sau: Ubuntu, fedora, redhat enterpri, CentOS… Mổi bản đều có một số tính năng riêng phù hợp với người dùng. Trong quá trình phát triển nó cũng tách ra làm hai dòng chính đó là bản phục vụ cho cá nhân với nhiều ứng dụng cá nhân và hổ trợ người dùng. Xu hướng phát triển thứ hai của Linux đó chính là phục vụ cho máy chủ với nhiều trính năng ứng dụng mang tầm rộng hơn và hổ trợ người dùng không lơn như các bản cá nhân khác. - CentOS (tên viết tắt của Community ENTerprise Operating System) là một bản phân phối Linux tập trung vào lớp doanh nghiệp xây dựng máy chủ, nó được xây dựng từ nhiều nguồn miễn phí ( theo GPL và một số bản quyền tương tự) của RedHat. Hiện tại CentOS có phiên bản mới nhất là 5.4 dựa trên nền tẳng Red Hat Enterprise Linux 5, hổ trợ dòng x86 (i386 và i686), dòng x86_64( AMD64 va Intel EMT64) các cấu trúc IA64, Alpha, S390 và S390x. Và có kernel 2.6 của Linux. Nó là bản miển phí và được phát triển mạnh mẽ của cộng đồng IT trên mạng internet. - CentOS 5.4 hổ trợ và được cài đặt trên cả client và server đồng thời sử dụng các phiên bản phần mềm mới nhất. Ngoài những chức năng của một máy chủ chuyên biệt, CentOS còn hổ trợ rất nhiều tình năng và ứng dụng cho người dùng cá nhân. - Bộ cài CentOS chúng ta có thể download từ internet tại trang web Nó có hai bộ cài, bộ cài thứ nhất gồm một đĩa CD, bộ cài này chỉ hổ trợ các tính năng cơ bản của máy chủ ngoài trừ GUI (giao diện đồ họa người dùng) phù hợp với nhưng ai muốn cái đặt nhanh chóng. Bộ cài thứ hai đó chính là bộ cài đầy đủ với dung lượng 3.8GB, bộ cài này hổ trợ tất cả các tính năng và ứng dụng của một server cũng như người dùng cá nhân. Chương 2: PROXY SERVER 2.1. Giới thiệu về Proxy Server - Internet là một hệ thống mở, đó là điểm mạnh đồng thời cũng là điểm yếu của nó. Chính điểm yếu này làm khả năng bảo mật thông tin nội bộ của hệ thống. Nếu chỉ là mạng LAN thì không có vấn đề gì, nhưng khi đã kết nối internet thì phát sinh nhiều vấn đề hết sức quan trọng trong việc quản lý tài nguyên quý giá vì thế việc xây dựng và bảo vệ các thông tin quý giá đó là hết sức quan trọng. Bằng cách quản lý việc truy nhập và truy xuất vào ra của hệ thống. Một proxy server, giống như firewall được thiết kế để bảo vệ tài nguyên trong các mạng cục bộ khi nối kết các mạng khác như internet. Chúng ta khó phân biệt khác nhau giữa proxy server và firewall. Chúng ta có thể nghĩ rằng proxy là dịch vụ chạy trên firewall, nơi mà firewall là một server vật lý nằm giữa internet và mạng cục bộ. Tổng quát, firewall cung cấp điều khiển mở rộng để lọc và giám sát thông tin ra vào mạng. Ví dụ, firewall có thể thực thi dịch vụ lọc gói dữ liệu ở tầng mạng đế đóng gói dữ liệu mà có địa chỉ nguồn riêng biệt hay dành cho một dịch vụ nào đó. Dịch vụ proxy là dịch vụ một chiều ngăn cản người dùng internet cố tình truy cập mạng cục bộ. Các dịch vụ này được thiết kế cho người dùng dịch vụ mạng cục bộ. Chỉ có những gói dữ liệu được yêu cầu của người dùng mạng cục bộ mới được truyền qua firewall. Vì lý do an toàn, các gói dữ liệu đi vào sẽ được kiểm tra vius hay khả năng thay đổi dữ liệ bởi những kẽ phá hoại bên ngoài. Proxy server có thể tạo một bộ mã hóa trên web server ngăn cản sự phá hoại các tài nguyên hữu dụng. Proxy server cũng có chức năng bộ đệm quan trọng. Vì nó là vị trí trung tâm để người dùng mạng cục bộ có thể truy cập internet, một proxy server có thể lưu trử các tài liệu được truy cập thường xuyên trên internet và cho phép người dùng mạng cục bộ truy cập mạng khi cần thiết. Để giảm bớt thời gian người dùng mạng cục bộ. 2.2. Tìm hiểu về dịch vụ Squid Proxy 2.2.1. Giới thiệu về Squid Proxy - Squid là một chương trình internet proxy-caching có vai trò tiếp nhận các yêu cầu từ các client và chuyển cho internet server thích hợp. Đồng thời, nó sẽ lưu lên đĩa những dữ liệu được trả về từ internet server- gọi caching. Chương trình này dùng để cấu hình proxy server. Vì vậy ưu điểm của squid là khi một dữ liệu mà được yêu cầu nhiều lần thì proxy server sẽ lấy thông tin từ cache trả về cho client. Điều này làm cho tốc độ truy xuất internet nhanh hơn và tiết kiệm băng thông. Squid dựa trên những đặc tả của giao thức HTTP nên nó chỉ là một HTTP proxy. Do đó squid chỉ có thể là một proxy cho những chương trình mà chúng dùng giao thức này để truy cập internet. 2.2.2. Những giao thức hỗ trợ trên Squid Proxy -Squid proxy hỗ trợ những giao thức sau: Proxying and cachinh ò HTTP, FTP, and other URLs. Proxying for SSL. Cachinh hierarchies. ICP, HTTP, CARP, Cache Digests. Transparent caching. WCCP- Web Cache Communication Protocol Extensive access controls HTTP server acceleration SNMP Caching of DNS lookups. 2.2.3. Quá trình trao đổi cache trên Squid Proxy - Squid có khả năng chia sẽ dữ liệu giữa những cache với nhau. Việc chia sẽ này mang lại những lợi ích như: User Base: Nếu số lượng client truy cập internet thông qua proxy càng nhiều thì khả năng một đối tượng nào đó được yêu cầu 2 lần sẽ cao hơn. Giảm tải truy xuất cho đường truyền. Disk space: nếu bạn chuyển cân bằng giữa các cache với nhau sẽ tránh được việc sao lại dữ liệu đã lưu. Dó đó dung lượng đĩa cứng dành cho việc lưu trử cache sẽ giảm. 2.2.4. Thư mục cài đặt và các gói cài đặt cho Squid Proxy - Squid có thể được cài đặt bằng souce hoặc rpm từ đĩa nguồn cài đặt. 2.2.4.1. Các thư mục mặc định của Squid - /usr/local/squid: thư mục cài đặt squid - /usr/local/squid/bin: thư mục lưu binary squid và những tool được hỗ trợ. - /usr/local/squid/cache: thư mục lưu những dữ liệu được cache. Đây là thư mục mặc định, bạn có thể thay đổi vị trí thư mục này. - /usr/local/squid/etc: những tập tin cấu hình squid nằm trong thư mục này. - /usr/local/squid/src: thư mục lưu source code squid được download từ net. 2.2.4.2. Cài đặt squid từ package rpm - Chúng ta cài đặt gói package như sau: #rpm –ivh squid-version.i386.rpm - Khi cài đặt squid trong hệ điều hành linux, vị trí các thư mục mặc định có những điểm khác sau: /usr/sbin: Lưu những thư viện của squid. /etc/squid: Lưu các tập tin cấu hình chính squid. /var/log/squid: Lưu các tập tin log của squid. 2.3. Cấu hình Squid Proxy 2.3.1. Tập tin cấu hình - Tất cả các tập tin cấu hình chính của Squid được lưu trử trong thư mục /etc/squid. Một tập tin cấu hình quan trong quyết định sự hoạt động của Squid là squid.conf. Trong tập tin cấu hình này có 125 tag tùy chọn, những chỉ có một số tùy chọn được cấu hình, và những dòng chú thích bắt đầu bằng “#”. Chúng ta chỉ cần thay đổi 8 tùy chọn cơ bản là squid hoạt động được. 2.3.2. Những tùy chọn cơ bản - Chúng ta cần phải thay đổi một số tùy chọn cơ bản để squid hoạt động. Mặc định squid cấm tất cả các browser truy cập. Sau đây là những miêu tả về tùy chọn này: http_port: Cấu hình cổng HTTP mà squid sẽ lắng nghe những yêu cầu được gửi đến. Cú pháp: http_port Mặc định: http_port 3128. Ta thường thay đổi cổng này là 8080 và được khai báo như sau: http_port 8080 icp_port: Cấu hình cổng để gửi và nhận ICP queries. Cache_mem: Chỉ định bộ nhớ thích hợp cho các đối tượng. Cache_dir: Cấu hình thư mục lưu trử dữ liệu được cache, thư mục này có kích thước mặc định là 100MB. Cache_dir ufs /usr/local/squid/cache 100 18 256 Level: 16, level 2:256 Cache_access_log: chỉ ra tập tin nơi lưu trử log. Dead_peer_timeout 10 seconds: thời gian lắng nghe kết nối. Cache_effective_user, cache_effective_group: người dùng và nhóm có thể thay đổi squid. Cache_swap_low: Chỉ định kích thước thấp nhất của cache object khi thay thế (được tính bằng % với vùng nhớ cache) Cache_swap_high: Chỉ định kích thước cao nhất của cache object khi thay thế (được tính bằng % với vùng nhớ cache) Cache_access_log: Lưu trử các activity request của client yêu cầu đến proxy server để truy xuất Web. Cache_store_log: Lưu trử các thông tin vầ đối tượng được cache trên proxy, thời gian lưu trử. Cache_peer: Nếu proxy không kết nối trục tiếp đến internet hoặc proxy nằm sau một firewall thì ta phải cấu hình proxy này truy vấn đến proxy khác bằng tham số. Cú pháp: Cache_peer host/IP type http_port icp_port Type= parent: truy vấn đến proxy khác (cha) Sibling: chia sẽ cache giữa các proxy (ngang hàng). Ví dụ: Cache_peer 192.168.11.1 parent 8080 8082 Cache_peer 192.168.11.10 sibling 8080 8082 Cache_peer vinhuni.edu.vn parent 8080 8082 Các thành viên của trường Đại học Vinh phải khai báo như trên khi kết nối tới. Cache_effective_user, cache_effevtive_group: người dùng và nhóm có thể đổi squid. Ví dụ: Cache_effecvive_user squid Cache_effective_group squid - Access Control list và Access control Operator: Chúng ta có thể dùng Access Control List và Access Control Operators để ngăn chặn, giới hạn việc truy xuất dựa vào tên miền, địa chỉ IP đích (IP của máy hoặc mạng). Mặc định, squid từ chối phục vụ tất cả. Vì vậy, bạn phải cấu hình lại tham số này. Cú pháp định nghĩa Access List dùng tag acl. Acl aclname acltype string1… Acl aclname acltyoe “file”… - Định nghĩa alc: acl aclname acltype string1 hoặc “file” Aclname: Tên của acl Acltype: src IP address/netsmask Srcdomain domain dst IP address/netmask dstdomain domain alc aclname time [day of week] [h1:m1-h2:m2] acl aclname port 80 70 21… acl aclname proto HTTP FTP… acl aclname method GET POST… - Sử dụng access list vào các tag điều khiển truy cập: http_access allow/deny aclname Ví dụ: Một số mẫu về acl - Cho phép mạng 172.16.1.0/24 được dùng proxy server bằng từ khóa src trong acl Acl MyNetwork src 172.16.1.0/255.255.255.0 http_access allow MyNetwork http_acceess deny all - Cấm truy cập đến site yahoo.com Acl baddomain dstdomain yahoo.com http_access deny baddomain - Giới hạn thời gian truy xuất: Ta dùng acl type kiểu là time, trong đó MTWHF tương ứng là thư hai, thư ba, thứ tư, thư 5, thứ 6. Acl business_hours time MTWHF 9:00-17:00 http_access allow business_hours - Chỉ định hostname cho server: Visible_hostname để chỉ định hostname cho squid proxy. Ví dụ: Cấu hình các tham số chính Visible_hostname server10 http_port 8080 icp_port 8082 cache_peer 192.168.10.210 parent 8080 8082 dead_peer_timeout 10 seconds cache_dir ufs /var/spool/squid 100 16 256 cache_access_log /var/log/squid/access.log 2.3.3. Khởi động Squid - Sau khi cài đặt và cấu hình squid, chúng ta phải tạo thư mục cache trước lúc khới động bằng lệnh squid –z. Nếu trong quá trình tạo tập tin cache bị lổi, chúng ta cần chú ý đến các quyền truy xuất thư mục cache được khai báo trong tham số cache_dir. Có thể thư mục đó không có quyền được phép ghi. Khi đó, chúng ta cần dùng lệnh sau: Chown squid:squid /var/spool/squid Chmod 770 /var/spool/squid Sau khi tạo xong thư mục cache, khởi động squid bằng lệnh: /usr/local/squid/squid –D& Đối với môi trường linux ta cần khai báo #chkconfig squid on #service squid start/restart/stop 2.4. Cài đặt và cấu hình dịch vụ Squid Proxy cho hệ thống mạng nội bộ. 2.4.1. Cài đặt Squid. Squid là một chương trình internet proxy có vai trò tiếp nhận các yêu cầu từ các client và chuyển cho internet server thích hợp. Đồng thời, nó cũng lưu lại trên đĩa cứng những dữ liêu được trả về từ internet server gọi là caching. Những giao thức hổ trợ trên squid: HTTP, FTP, SSL,.. Mô hình proxy server - Kiểm tra Squid đã cài đặt trên hệ thống hay chưa: - Cài đặt squid thừ đĩa nguồn: 2.4.2. Cấu hình squid - Truy cập vào /etc/squid/squid.conf ta đi cấu hình các tham số như sau: http_port cache_mem cache_dir acl our_networks http_access - Cấu hình http_port - Cấu hình cache_mem - Cache_dir - acl our_networks - visible_hostname là centos: - Cho phép squid khởi động cùng hệ thống và khởi động lại các thông số vừa cấu hình ta dùng các lệnh sau: - Tạo thư mục swap cho squid: 2.4.3. Cấu hình web server Apche để test - Cài đặt apache - Tạo thư mục gốc cho website - Tạo trang html như sau: - Sữa file cấu hình httpd.conf như sau: 2.4.4. Cấu hình client truy cập internet thông qua proxy server - Cấu hình client để truy cập internet thông qua proxy server - Thực hiện truy cập vào website thông qua proxy server ta được như sau: 2.4.5. Access List Control điều khiển truy cập internet người dùng 2.4.5.1 Cấm các máy client truy cập một số trang website không cho phép: - Tạo file /etc/squid/webdeny chứa các website cấm không cho client truy cập - Truy cập vào /etc/squid/squid.conf tạo acl và rule cho yêu cầu - Thực hiện restart lại dịch vụ bằng lệnh #service squid restart và kiểm tra. 2.4.5.2. Cấm máy client không truy cập ra internet - Cấu hình trong file /etc/squid/squid.conf như sau - Thực hiện khởi động dịch vụ squid ta sử dụng máy client có địa chỉ là 192.168.10.20/24 ta sẽ có được kết quả như yêu cầu. 2.4.5.3. Cho phép người dùng trong hệ thống chỉ được truy cập internet ngoài giờ hành chính - Ta thực hiện đi cấu hình như sau: - Giả sử giờ làm việc hành chình là 8:00- 17:00 ta tiến hành vào file /etc/squid/squid.conf ta tạo thêm một luật ACL như sau: - Khởi động lại dịch vụ và đặt lai ngày giờ trên máy proxy server ta được yêu cầu của công việc. 2.4.6. Dùng NCSA kiểm định Password cho quá trình truy cập internet - Là một chương trình chứng thực user được dùng trong squid tức là hạn chế user truy cập website bằng quyền đã cho trước. - Tạo một user hệ thống dùng để test như sau - Tạo file squid_password bằng công cụ htpasswd và tạo passwd chứng thực squid cho user testcnsa. - Thực hiện cấu hình ACL chứng thực trong /etc/squid/squid.conf như sau: - Khởi động lại dịch vụ squid để cập nhật các thông tin thay đổi bằng lệnh - Kiểm tra truy cập: từ máy client ta truy cập ra internet thì hệ thống proxy sẽ yêu cầu user và passwd để chứng thực squid như sau: - Login bằng user testcnsa và pass ta được như sau: 2.4.7. Giới hạn nội dung Download - Giã sử ta giới hạn một số file anh khi người dùng tải về - Ta đi tạo file /etc/squid/acc_lock.acl chứa các file hạn chế khi người dùng download về như sau - Cấu hình file /etc/squid/squid.conf với ACL như sau: - Khởi động lại squid ta cập nhật lại thông tin đã thay đổi - Từ client ta truy cập ra internet ta có kết quả như sau: - Ta nhận thấy website không có các hình ảnh và một số tính năng, do chúng ta đã cấu hình hạn chế download một số nội dung 2.4.8. Một số giới hạn cấu hình trên Squid proxy 2.4.8.1. Giới hạn truy cập theo IP - Vào file /etc/squid/squid.conf cấu hình các thông tin như sau: - Khởi động lại dịch vụ squid và sử dụng máy client có địa chỉ 192.168.10.20. 2.4.8.2. Giới hạn truy cập theo giao thức - Giả sử ta cấu hình người dùng hệ thống không được truy cập ra internet với giao thức FTP HTTP - Vào file /etc/squid/squid.conf cấu hình các thông tin như sau: 2.4.8.3. Giới hạn truy cập theo cổng Chương 3: Firewall Server 3.1. Giới thiệu về Firewall - Thuật ngữ Firewall có nguồn gốc từ một kỹ thuật thiết kế trong xây dựng để ngăn chặn, hạn chế hỏa hoạn. Trong công nghệ thông tin, Firewall là một kỹ thuật được tích hợp vào hệ thống mạng để chống lại việc truy cập trái phép, bảo vệ các nguồn tài nguyên cũng như hạn chế sự xâm nhập vào hệ thống của một số thông tin khác không mong muốn. Cụ thể hơn, có thể hiểu Firewall là một cơ chế bảo vệ giữa mạng tin tưởng (trusted network), ví dụ mạng intranet nội bộ, với các mạng không tin tưởng mà thông thường là internet. Về mặt vật lý, firewall bao gồm một hoặc nhiều hệ thống máy chủ kết nối với bộ định tuyến(router) hoặc có chức năng router. Về mặt chức năng, firewall có nhiệm vu như sau: Tất cả các trao đổi dữ liệu từ trong ra ngoài và ngược lại đều phải thực hiện thông qua firewall. Chỉ có những trao đổi được cho phép bởi hệ thống mạng nội bộ (trused network) mới được quyền lưu thông qua firewall. Các phần mềm quản lý an ninh chạy trên hệ thống máy chủ bao gồm: - Quản lý xác thực (Authentication): Có chức năng ngăn cản truy cập trái phép vào hệ thống mạng nội bộ. Mỗi người sử dụng muốn truy cập hợp lệ phải có một tài khoản (account) bao gồm một tên người dùng (username) và mật khẩu (password). - Quản lý cấp quyền (Authorization): cho phép các định quyền sử dụng tài nguyên cũng như các nguồn thông tin trên mạng theo từng người, từng nhóm sử dung. - Quản lý kế toán (Accounting Management): Cho phép ghi nhận tất cả các sự kiện xẩy ra liên quan đến việc truy cập và sử dụng nguồn tài nguyên trên mạng theo từng thời điểm (ngày/giờ) và thời gian truy cập đối với vùng tài nguyên nào đã được sử dụng hoặc thay đổi bổ sung. 3.2. Những chính sách yêu cầu khi thiết lập Firewall - Bước đầu tiên trong việc cấu hình Firewall là thiết lập các chính sách: Những dịch vụ nào cần ngăn chặn. Những host nào cần phục vụ. Mổi nhóm cần truy xuất những dịch vụ nào. Mổi dịch vụ sẽ được bảo về như thế nào. 3.3. Các loại Firewall và cách hoạt động 3.3.1. Packet filtering (Bộ lộc gói tin) - Loại Firewall này thực hiện việc kiểm tra số nhận dạng địa chỉ của các packet để từ đó cấp phep cho chúng lưu thông hay ngăn chặn. Các thông số có thể lọc được của một packet như: Địa chỉ IP nơi xuất phát (source IP address) Địa chỉ IP nơi nhận ( destination IP address) Cổng TCP nơi xuất phát (source TCP port) Cổng TCP nơi nhận (destination TCP port) Những thủ thục truyền tin (TCP, UDP,ICMP, IP tunnel) Giao diện packet đến Giao diện packet đi - Loại Firewall này cho phép kiểm soát được kết nối vào máy chủ, khóa việc truy cập vào hệ thống mạng nội bộ từ những địa chỉ không được phép. Ngoài ra, nó còn kiểm soát hiệu suất sử dụng những dịch vụ đang hoạt động trên hệ thống mạng nội bộ thông qua các cổng TCP tương ứng. 3.3.2. Application gateway - Đây là loại firewall được thiết kế để tăng cường chức năng kiểm soát các loại dịch vụ dựa trên những giao thức được cho phép truy cập vào hệ thống mạng. Cơ chế hoạt động của nó dựa trên mô hình proxy service. Trong mô hình này phải tồn tại một hay nhiều máy tính đóng vai trò proxy server. Một ứng dụng trong mạng nội bộ yêu cầu một đối tượng nào đó trên internet, proxy server sẽ nhận yêu cầu này và chuyển đến các server trên internet. Khi server trên internet trả lời, proxy server sẽ nhận và chuyển ngược lại cho ứng dụng đã gửi yêu cầu. Cơ chế lọc packet filtering kết hợp với cơ chế “đại diện” của application gateway cung cấp khả năng an toàn và uyển chuyển hơn, đặc biệt khi kiểm soát mạng bên ngoài. 3.4. Một số Log File chứa các thông tin về việc logon, logout của người dùng hệ thống. - Một số file log chính trong hệ thống File /var/log/messages: chứa các thông tin log của hệ thống được daemon syslogd ghi nhận. File /var/log/secure: chứa các thông tin về login fail, add user,.. File /var/log/wtmp: Lưu các log về logon/reboot thành công vào hệ thống. File /var/run/utmp: lưu các session hiện tại đang logon vào hệ thống File /proc/sys/net/ipv4: Thư mục chứa các tập tin cho việc bảo mật trên linux như login, ip_forwarder… 3.5. Thiết lập firewall linux với Iptables 3.5.1. Giới thiệu về Iptables - Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, miển phí và có sẵn trên linux. Iptables gồm hai phần là netfilter ở trong nhân linux và Iptables nằm ngoài nhân linux. Iptables chịu trách nhiệm giao tiếp giữa người dùng và Netfilter để đẩy các luật của người dùng vào Netfilter xử lý. Netfilter tiến hành lọc các gói dữ liệu ở mức IP. Netfilter làm việc trực tiếp trong nhân, nhanh và không làm giảm tốc độ của hệ thống. Mô hình Iptables trên linux - Iptables do Netfilter organization viết ra để tăng tính bảo mật trên hệ thống Linux. Iptables cung cấp các tính năng sau: Tích hợp tốt với nhân kernel của Linux Có khả năng phân tích package hiệu quả. Lọc package dựa vào MAC và một số cờ hiệu trong TCP Header. Cung cấp chi tiết các tùy chọn để ghi nhận sụ kiện hệ thống. Cung cấp kỹ thuật NAT Có khả năng ngăn chặn một số cơ chế tấn công theo kiểu từ chối dịch vụ 3.5.2. Cơ chế xử lý package trong iptables - Iptables sẽ kiểm tra tất cả các package khi nó đi qua iptables host, quá trình kiểm tra này được thực hiện tuần tự từ entries đầu tiên đến entries cuối cùng. - Iptables tổ chưc phân loại dựa theo cách thức xử lý gói tin. Các gói tin này được xử lý qua các bảng, trong mổi bảng có phân biệt gói tin đi vào (INPUT), đi ra (OUTPUT) hoặc chuyển tiếp (FORWARD). Hay một số cách thức biến đổi địa chỉ nguồn, đích gọi là NAT bao gồm việc biến đổi địa chỉ nguồn thành đích gọi là PREROUTING, và đích thành nguồn gọi là POSTROUTING người ta gọi đó là các chain. Trong mổi chain sẽ có những luật để quyết định xử lý gói tin như thế nào: cho phép (accept), từ chối (reject), bỏ đi (drop). Trong thực thế người ta chủ yếu dùng cơ chế là Filter và NAT. Filter: Lọc gói tin vào ra trên server( đóng vai trò một firewall) NAT: Cho phép ánh xạ một địa chỉ IP thành nhiều địa chỉ MANGLE: Biến đổi type of service bits trên header của gói tin TCP. Mô hình hoạt động của Iptables 3.5.3. Cú pháp Iptables - Cú pháp của Iptables có dạng như sau: iptable –t table –A chain [match][target] Ví dụ: Cho phép tất cả các gói tin tcp đi vào cổng 22 #iptables –A INPUT –p tcp –dport 22 –j ACCEPT Firewall chấp nhận cho bất kỳ gói tin TCP đi vào từ intafece eth0 đến địa chỉ 192.168.1.1 #iptables –A INPUT –s 0/0 –i eth0 –d 192.168.1.1 –p TCP –j ACCEPT Cấm máy tính có địa chỉ ip 192.168.1.2 ping tới server # A RH-Firewall-1-INPUT –s 192.168.1.2 –p icmp – icmp-type any –j REJECT - Giải thích các thành phần trong cú pháp iptables Table: filter, NAT, Mangle (mặc định là filter) - A chain: thêm luật mới - D chain: xóa một luật - I chain number: chèn một luật mới vào - L chain: xem các luật đã tạo - F chain: xóa mọi luật hiện có target: ACCEPT: chấp nhận gói tin đi qua DROP: Không cho phép gói tin đi qua không có thông báo trả lại host nguồn. REJECT: Không cho phép gói tin đi qua những có thông báo trả lại cho host nguồn. QUEUE: chuyển gói tin vào hàng đợi queue. RETURN: Trả về chain cấp trên hoặc default policy DNAT: Dùng để viết lại địa chỉ đích khi gói tin đi qua, nó được dùng với PREROUTING đi kèm với –to –source ip_source có dạng như sau: -j DNAT -- to 192.168.1.2 SNAT: Dùng để viết lại địa chỉ nguồn khi gói tin đi qua, nó được dùng với POSTROUTING đi kèm với –to –destination ip_destination có dạng như sau: -j DNAT --to 192.168.1.2 MASQUERADE: Dùng để thực hiện chuyển gói tin trên một máy khác, có dạng như sau: -j REDIRECT –to –ports 80 match: - p :Chọn những giao thức packet dựa trên protocol - s : Chọn những packet giựa trên địa chỉ nguồn - d : Chọn những packet giựa trên địa chỉ đích - i : Chọn packet được nhận từ interface (input) - o : Chọn packet được nhận từ interface (output). -- sport [port][:port] : Chọn những packet có port nguồn xác định -- dport [port][:port] : Chọn những packet có port đích xác định Mở rộng cho gói TCP: -p tcp --sport [port][port-port]: gói tin TCP kèm theo địa chỉ nguồn -p tcp --dport [port][port-port]: gói tin TCP kèm theo địa chỉ đích -p tcp --syn : Nhận diện TCP kết nối mới -p udp --sport [port][port-port]: gói tin UDP kèm theo địa chỉ nguồn -p udp --ort [port][port-port]: gói tin UDP kèm theo địa chỉ đích -p icmp -- icmp-type echo-request -p icmp – icmp-type echo-reply 3.5.4. Lưu giữ Iptables và thực thi Iptales - Ta dùng lệnh sau để lưu iptable #service iptables save - Câu lệnh thực thi iptables sẽ được lưu tại file /etc/sysconfig/iptables - Cấu trúc file /etc/sysconfig/iptables - Ta dùng lệnh #service iptable restart để thực thi câu lệnh iptable vừa thực hiện - Phục hồi lại iptables trong trường hợp bị lổi như sau #iptables-save > firewall-config 3.5.5. Một số mẫu scripts phân tích, mô tả cho cú pháp Iptables - Iptables chấp nhận tất cả các gói tín đi vào từ cổng 80 trên card eth0 #iptables - A INPUT –i eth0 -- dport 80 –j ACCEPT - Iptables xóa tất cả các gói tin đến cổng 23 có giao thức TCP trên card mạng eth0 #iptables - A INPUT –i eth0 –p tcp -- dport 23 –j DROP - Iptables được cấu hình cho phép firewall chấp nhận các gói tin TCP có địa chỉ nguồn là bất kỳ và địa chỉ đích là 192.168.1.1 và có hướng đi vào là cổng interface eth0: #iptables –A INPUT –s 0/0 –i eth0 –d 192.168.1.1 –p tcp –j ACCEPT - Chấp nhận các gói tin TCP cho việc forward khi các gói tin có địa chỉ nguồn là bất kì đến từ interface eth0, source port nằm trong dãy 1024-65535 và có địa chỉ đích là 192.168.1.58, ngõ ra là interface eth1 với destination port 80 #iptables –A FORWARD –s 0/0 –i eth0 –d 192.168.1.158 –o eth1 –p tcp –sport 1024:65553 –dport 80 –j ACCEPT - Chấp nhận cho firewall send ICMP và nhận ICMP #iptables – A OUTPUT –p icmp --icmp-type echo-request –j ACCEPT #iptables – A INPUT -p icmp –icmp-type echo-reply –j ACCEPT - Firewall chấp nhận các gói tin TCP sẽ được route khi chúng đi vào interface eth0 với địa chỉ nguồn là bất kỳ và có chiều đi ra là interface eth1 với địa chỉ đích là 192.168.1.58. Source post là dãy 1024-65535 có destination port là 80 và 443 #iptables –A FORWARD –s 0/0 -i eth0 –d 192.168.1.58 –o eth0 –p tcp –sport 1024:65553 –m multiport –dport 80,443 – j ACCEPT - Iptables đổi IP nguồn cho các gói tin ra card mạng eth0 là 210.40.2.71. Khi nhận được gói tin vào từ internet, iptables sẽ tự động đổi IP đích 210.40.2.71 thành IP đích tương ứng của máy tính trong mạng LAN là 192,168.0.0/24 #Iptables – t nat –A POSTROUTING –o eth0 –j SNAT --to-source 210.40.2.71 3.6. Triển khai hệ thống Firewall cho hệ thống mạng nội bộ Mô hình firewall cho hệ thống mạng 3.6.1. Cài đặt và cấu hình Iptables 3.6.1.1. Cài đặt Iptables - Trên linux ta kiểm tra gói Iptables đã cài đặt chưa. Thông thường Iptables được cài đặt mặc định trên hệ thống. - Nếu chưa cài đặt ta thự hiện việc cài đặt như sau: - Khởi động và cấu hình firewall khởi động cùng hệ thống - Xem các luật đã được cấu hình 3.6.1.2. Cấu hình iptables: - Có hai cách cấu hình iptables là dùng lệnh và sữa file /etc/sysconfig/iptables. Nếu cấu hình iptable bằng cách dùng lệnh sẽ không lưu lại sau khi khởi động iptables. - Nếu cấu hình bằng giao diện ta thực hiện như sau, trên terminal của linux ta gõ lệnh setup sau đó ta chọn firewall configuaration thực hiện chọn Enabled - Chọn customize ta có như sau: Trusted Devices: Là các interface cho phép các packet giao tiếp MASQUERADE: thực hiện việc cho phép NAT Allow incoming: Chi tiết các kiểu gói tin cho phép đi qua - Nếu cấu hình bằng lệnh ta thực hiện lệnh vi truy cập vào file /etc/sysconfig/iptables 3.6.1.3. Cấu hình một số luật cho iptables 3.6.1.3.1. Cấm truy cập telnet tới server firewall - Thực hiện kiểm tra truy cập telnet trên cổng 22 ta thực hiện đứng trên máy client windows xp ta dùng lệnh: telnet 192.168.10.2 22 - Để thực hiện cấm truy cập telnet trên firewall ta thực hiện cấu hình như sau: Vào file /etc/sysconfig/iptables thực hiện bằng cách thêm dâu “#” vào trước câu lệnh trong file iptables. - Thực hiện khởi động lại iptables, sau đó dùng client truy cập telnet ta được. 3.6.1.3.2. Cấm các máy ping tới firewall - Để thực hiện điều này ta cũng thực hiện như việc cấm telnet ở trên bằng cách ta đi cấu hình file /etc/sysconfig/iptable như sau: 3.6.1.3.3. Cấu hình Iptables để cho phép NAT out cho các máy trong mạng nội bộ truy cập ra internet - Từ mô hình mạng đã cho ta đi cấu hình chia sẽ để các máy client truy cập internet được thông qua cơ chế firewall. Cơ chế chia sẽ truy cập internet này so với proxy nó không mạnh và nhiều tình năng như proxy. Trong phần sau chúng ta sẽ thực hiện kết hợp giữa proxy và firewall trên máy tình proxy. Khi thực hiên cấu hình NAT tất cả các máy nội bộ đi ra internet sẽ dùng địa chỉ của máy firewall eth1 là 192.168.1.21/24 để làm thực hiện quá trình xử lý ngoài internet. - Để cấu hình NAT ta cần bật chế độ cho phép các packet đi qua hai interface của máy firewall là eth0 và eth1 như sau: - Ta đi thực hiện thay đổi giá tri forward bằng “1” tức là cho phép các interface giao tiếp với nhau bằng cách thực hiện như sau vào file /etc/sysctl.conf cấu hình các thông số sau: - Bật tính năng forwarding trên iptables cho phép chuyển các packet giữa các interface trên firewall và kiểm tra lại các cấu hình đã thực hiện: - Thực hiện lệnh iptable cho phép thực hiện NAT trên interface eth1 nhằm mục đích chia sẽ internet giữa client và firewall như sau: - Kiểm tra cấu hình trên máy client ta có kết quả như sau: 3.6.1.3.4. Cấu hình NAT tỉnh cho hệ thống cho phép public máy tính nội bộ ra internet - Thông qua việc cấu hình này chúng ta sẽ cho phép một số máy nội bộ trong hệ thống public lên mạng như web server, ftp server, mail server…để cho người dùng mạng internet có thể truy cập tới. Thông qua firewall sẽ cho phép thực hiện việc public các máy client trong mạng nội bộ ra internet. Việc cấu hình để mạng bên ngoài có thể truy cập được các server từ một mang LAN nội bộ. Đây cũng là mô hình rất phổ biến. Nó có thể làm công việc cân bằng tái vừa tạo tính an toàn cho mạng nội bộ. Phương pháp này có nghĩa là người dùng internet muốn truy cập đến một trang web nào đó thì trên URL họ chĩ gõ địa chỉ server ảo. Server ảo này chính là firewall server luôn. Lúc đó quá trình NAT được thực hiện sẽ chuyển tới server nội bộ cần truy cập. Trong bài này chúng ta di cấu hình public máy có địa chỉ 192.168.10.20/24 ra ngoài mạng. Để những người dùng thông qua máy 192.168.1.10 (đóng vai trò là máy ở internet) truy cập vào: - Quá trình thực hiện được cấu hình như sau: Chương 4. Kết Hợp Giữa FIREWALL Và PROXY 4.1. Tại sao chúng ta cần kết hợp giữa Firewall và Proxy - Như các chương trước chúng ta đã biết Proxy được cấu hình cho phép các client truy cập internet nhanh hơn nhờ tính năng lưu trử “cache” của proxy, đồng thời nó cũng quản lý việc truy cập internet của client như việc quản lý thời gian truy cập, quản lý việc truy cập theo user, hạn chế những chức năng không cần thiết, cấm máy, người dùng truy cập… đó là những điểm mạnh và tính năng của proxy mạng lại cho chúng ta khi triển khai nó. Còn với Firewall cũng có tính năng cho phép các client hệ thống truy cập internet, cơ chế NAT out và NAT input, cho phép hệ thống hạn chế được những gói tin, loại tin không được phép… nhưng đồng thời nó không có chức năng tăng tốc truy cập, không có tính năng cho phép tạo các rule để nhằm đạt được những yêu cầu của hệ thống. Đây cũng là những điểm yếu của firewall bị hạn chế so với proxy. Vì vậy người ta thường kết hợp giữa firewall và proxy tức là kết hợp về mặt an ninh của hệ thống và tăng tốc truy cập internet, quản lý người dùng hệ thống. Chúng ta sẽ tiến hành thực hiện kết hợp giữa proxy và firewall để tạo được thực hiện các giải pháp bảo mật cho hệ thống được tốt hơn. 4.2. Thực hiện kết hợp giữa Proxy và Firewall trên cùng một hệ thống - Chúng ta đã biết khi người dùng thông qua proxy để truy cập internet thì họ cần phải cấu hình cho việc cập thông qua proxy là địa chỉ proxy và cổng ra trên proxy. Điều đó làm cho người dùng cảm thấy bắt tiện và không được thuận lợi. Chính điều đó là hạn chế của proxy. Để khắc phục điều đó chúng ta cho phép người dùng truy cập internet thông qua proxy nhưng không cần phải cấu hình địa chỉ và cổng proxy nữa. Bởi vì chúng ta sẽ cấu hình kết hượp giữa proxy và firewall cho phép chuyển port của các gói packet thông qua proxy nhưng được chạy trên firewall. - Để cấu hình được proxy và firewall ta cấn tích hợp và cài đặt chúng trên cùng một hệ thống. - Như các bước đã làm ở các chương trước chúng ta khởi động lại các dịch vụ firewall và squid trên hệ thống. - Quá trình cấu hình được thực hiện như sau: 4.2.1. Cấu hình chế độ transparent hổ trợ tính năng trong suốt với người dùng - Ta thêm tính năng transparent sau tính năng cấu hình cổng cho proxy như sau: - Thực hiện khởi động lại dịch vụ squid 4.2.2. Cấu hình chuyển đổi port đích trên firewall sang squid trên proxy bằng lệnh sau - Lưu lại cấu hình iptables và khởi động lại dịch vụ iptables như sau: 4.2.3. Thực hiện quá trình kiểm tra việc truy cập qua proxy mà người dùng không phải cấu hình thông tin proxy như sau: - Trên client chúng ta truy cập vào internet chúng ta có như sau - Từ trên ta thấy người dùng không phải cấu hình thông tin proxy mà vẫn truy cập được internet. Sỡ dĩ ta khảng định điều đó là vì khi ta tắt đi dịch vụ proxy squid khi đó trên client ta sẽ không thực hiện được việc truy cập internet. - Thực hiện việc tắt dịch vụ squid trên server để chứng tỏ việc truy cập internet của client thông qua squid ta thấy: Chương 5: Xây Dựng IDS Bằng Snort 5.1. Hệ thống phát hiện xâm nhập (Intrucsion Detection System- IDS) 5.1.1. Giới thiệu - Hệ thống phát hiện xâm nhập (IDS) là hệ thống phần cứng hoặc phần mềm có chức năng tự động theo dõi các sự kiện xẩy ra trên hệ thống máy tính hay hệ thống mạng máy tính, phân tích để phát triển ra các vấn đề liên quan đến an ninh, bảo mật. Khi một vụ tấn công, đột nhập vào các hệ thống máy tính hay một quá trình thâm nhập trái phép vào hệ thống… thì sẽ được hệ thống IDS ghi lại giữa trên các luật đã cấu hình trên IDS. 5.1.2. Tổng quan về IDS Khái niệm “Phát hiện xâm nhập” - Phát hiện xâm nhập là tiến trình theo dõi các sự kiện xẩy ra trên một hệ thống máy tính hay hệ thống mạng, phân tích chúng để tìm các dấu hiệu “ xâm nhập bất hợp pháp”. Xâm nhập bất hợp pháp là hành động được định nghĩa nhằm xâm hại, phá vỡ tính toàn vẹn của hệ thống. Việc xâm nhập bất hợp pháp được xuất phát từ một kẽ nào đó trên mạng internet nhằm dành quyền truy cập hệ thống, kiểm soát hệ thống. Network IDS - Là các hệ thống phát hiện tấn công, nó có thể bắt giữ các gói tin được truyền trên các thiết bị mạng và so sánh chúng với cơ sở dữ liệu các tín hiệu Host IDS - Được cài đặt như là một tác nhân trên máy chủ. Những hệ thống phát hiện xâm nhập nhày có thể xem được những tập tin log của các trình ứng dụng hoặc của hệ thống để phát hiện những hành động xâm nhập. Signature - Là những phần mà ta có thể thấy được trong một gói dữ liệu. Nó được sữ dụng để phát hiện ra một hoặc nhiều kiểu tấn công. Nó có thể có trong các thành phần khác nhau của một gói dữ liệu. Alert - Là những lời thông báo ngắn về những hành động xâm nhập bất hợp pháp. Khi IDS phát hiện ra kẽ xâm nhập, nó sẽ thông báo cho người quản trị bảo mật bằng alert. Log - Thông thường, những thông tin mà IDS thu được sẽ lưu lai trong file. Các file đó có dạng text hoặc dạng nhị phân. Các file này chính là các file log. False Alarm - Là những thông báo đúng về một dấu hiệu giống dấu hiệu nhập những hành động. Sensor - Là những thiết bị mà hệ thống phát hiện xâm nhập chạy trên nó bởi vì nó được sử dụng như các giác quan trên mạng. 5.1.3. Nhiệm vụ của hệ thống phát hiện xâm nhập - Nhiệm vụ của hệ thống phát hiện xâm nhập là phòng chống cho một hệ thống máy tính bằng cách phát hiện các dấu hiệu tấn công và có thể đẩy lùi nó. 5.1.4. Các kỹ thuật xữ lý dữ liệu Hệ thống Expert - Hệ thống náy làm việc giựa trên các nguyên tắc đã được đĩnh nghĩa trên hệ thông từ trước. Phát hiện xâm nhập giựa trên luật - Giống với hệ thống Expert nhưng nó dựa trên những hiểu biết về tấn công để mô tả luật Phân biệt ý định người dùng - Kỹ thuật này mô hình hóa các hành động của người dùng thường làm để tạo ra các kỹ thuật phát hiện sụ xâm nhập nếu có các hành động thường khác. Phân tích trạng thái phiên - Các phiên sẽ được định nghĩa và mức độ ảnh hưởng của phiên đễ xác định phiên người dùng của hệ thống. Phân tích thống kê - Là việc mô tả hành vi của người dùng hay hệ thống được tính theo một số biến theo thời gian. 5.2. Các kiểu tấn công vào hệ thống - Tấc cả các loại những loại tấn công sau có thể làm ảnh hưởng tới hệ thống: Những sniffer packet- Tấn công nghẽn mạng bằng nhiều gói tín Điểm yếu của IP- Ip weakness Tấn công vào password- Password attack DoS- Từ chối dịch vụ Những tấn công trung gian- Man-in-the-middle attack Tấn công vào lớp ứng dụng- application layer attack Khai thác sự tín nhiệm- trust exploitation Sự tái điều khiển cổng- Port redirection Virus Con ngựa thành Troa- Trojan horse Virus Lỗi hệ điều hành- Operator Error Sự chảy tràn bảng CAM- CAM table flooding Sự nhiểm độc- poisoning Sự giả mạo ARP- ARP spoofing… 5.3. Phần mềm IDS- Snort 5.3.1. Giới thiệu về Snort - Snort là hệ thống phát hiện xâm nhập mạng (NIDS) mã nguồn mở miển phí. Dùng để quét dữ liệu đi trên mạng và phát hiện xâm nhập vào hệ thống mạng hoặc host-based bằng cách cài snort lên nó hoặc cài lên một máy tính chuyên dùng cho việc bảo mật. - Dữ liệu thu thập và phân tích bởi snort, sau đó dữ liệu được lưu trong cơ sở dữ liệu MySQL bằng cách dùng plug-in. Web server Apache với ACID, PHP, thư viện GD và PHPLOT sẽ biểu diễn dữ liệu náy trên trình trình duyệt khi một người dùng kết nối tới server. - Snort chủ yếu là một IDS dựa trên luật, tuy nhiên các input plug-in cũng tồn tại để phát hiện sự bất thường trong các header của giao thức. Các luật được nhóm lại thành kiểu và được lưu trử theo tệp dạng text riêng. Snort sẽ đọc các file lúc khởi động và dựa vào đó để bắt gói tin. Ngoài những kiểu luật tự xây dứng snort còn có một bộ luật tạo sẵn cho người quản trị được cộng đồng mạng phát triển cho người dùng hệ thống để áp dụng vào Snort. Chúng ta có thể sữa xóa các luật đó. 5.3.2. Các thành phần của Snort - Snort được chia làm nhiều thành phần, những thành phần này làm việc với nhau để cùng phát hiện ra các dấu hiệu xâm nhập. Một IDS dựa trên snort có các thành phần sau: Packet Decoder (Bộ phận giải mã gói): Lấy các gói từ các giao diện mạng khác nhau và chuẩn bị cho việc xử lý hoặc gửi cho bộ phận phát hiện. Preprocessor (Bộ phận xử lý trước): Là những thành phần được sử dụng với Snort để sắp xếp hoặc chỉnh sữa trước khi bộ phận phát hiện xử lý. Bộ phận xử lý có thể tái hợp các gói tin, giải mã các gói tin.. Dectetion Engine ( Bộ phận phát hiện): Đây là bộ phận quan trọng nhất của Snort. Trách nhiệm của nó là phát hiện có sự thâm nhập tồn tại trong gói tin hay không. Bộ phận phát hiện sử dụng các luật của Snort cho mục đích này. Bất kỳ gói tin nào có các thành phần giống với các luật đã được định nghĩa thì sẽ được phát hiện và xử lý. Việc xử lý chính xác hay độ tin cậy dựa vào số lượng của các tập luật của Snort, bộ xử lý máy tính, lưu lượng mạng, tốc độ bus sử dụng. Logginf và Alerting System ( Hệ thống ghi và cảnh báo): Phú thuộc vào cái mà bộ phận phát hiện tim thấy trong gói tin, gói tin có thể được sử dụng để ghi lại các hành vi hoặc tạo ra một cảnh báo. Out Modules ( Bộ phận đầu ra): Modules đầu ra hoặc plug-in có thể hoạt động theo nhiều cách phụ thuộc vào việc bạn muốn lưu các output được tạo ta bằng hệ thống ghi và cảnh báo thế nào. 5.3.3. Tìm hiểu file cấu hình của Snort - Cấu hình chính của Snort được lưu trử trong file snort.conf. File này điều khiển mọi thứ về chức năng của snort, cách thức hoạt động, luật, các hoạt động ở tương lai của Snort. File snort.conf được tổ chức thành nhiều phần khác nhau bao gồm: Các biến cấu hình: Phần đầu của file ghi lại một vài thông tin cấu hình. Hầu hết các biến được sử dụng bởi các luật Snort để xác định chức năng của một vài hiển thị và vị trí của các thành phần khác. Chúng ta cần quan tâm tới các biến sau: - var HOME_NET [ip]: Dùng để xác định, khai báo địa chỉ ip của hệ thống. Có thể gồm một hay nhiều dãy IP có dạng như sau: -var HOME_NET 192.168.10.3 -var HOME_NET [10.10.10.1,192.168.1.10,172.16.30.2] -var HOME_NET 192.168.1.0/24 - var EXTERNAL_NET !$HOME_NET: Dùng để gán cổng cho một số giá trị biến yêu cầu. var ORACLE_PORTS 1521 var ORACLE_PORTS 8000:8080 var ORACLE_PORTS :8080 - Các biến được định nghĩa để sử dụng dịch vụ server khi không có DNS trong mạng DNS_SERVERS SMTP_SERVERS HTTP_SERVERS TELNET_SERVERS SQL_SERVERS Cấu hình bộ giải mã và bộ phận phát hiện của Snort: Bộ giải mã Snort giám sát cấu trúc gói tin để đảm bảo chúng được xây dựng theo qui định. Nếu một gói tin có kích thước lạ, một tập hợp tùy chọn lạ, hoặc các thiết lập không phổ biến thì Snort sẽ tạo ra các cảnh báo. Chúng ta có thể thêm nhiều tùy chọn hoặc bỏ đi bằng cách thêm dâu “#” phía trước. # config disable_decode_alerts # config disable_tcpopt_experimental_alerts # config disable_tcpopt_obsolete_alerts # config disable_tcpopt_ttcp_alerts # config disable_tcpopt_alerts # config disable_ipopt_alerts Cấu hình tiền xử lý: Các bộ xử lý phục vụ một ít mục đích. Chúng chuẩn hóa lưu lượng cho nhiều loại dữ liệu, để đảm bảo rằng dữ liệu trong các gói tin sẽ được giám sát có một định dạng nhất định. Cấu hình xuất kết quả: Một trong những sức mạnh thật sự của Snort là cấu hình để xuất ra các cảnh báo phát hiện xâm nhập. Các dạng này được xuất ra các dạng cụ thể như là text, trong cơ sở dữ liệu MySQL… Cơ sở dữ liệu: Plug-in cơ sở dữ liệu cho phép bạn viết nhiều cơ sở dữ liệu liên quan với nhau trên cùng một hệ thống đang chạy Snort hoặc trên một host khác. Cơ sở dữ liệu được ghi lại gồm nhiều thông tin khác nhay như là cảnh báo, gói tin tin cậy, host… Cơ sơ dữ liệu Plug-in out có định dạng như sau: output database:, - Log: Gửi thông tin đến cơ sở dữ liệu và alert gửi các cảnh báo. Trong đó log gửi cả cảnh báo và thông tin về gói tin tạo ra vào cơ sở dữ liệu. Nếu muốn gửi cả hai chúng ta sử dụng 2 dòng output cơ sở dữ liệu. - database type :Xác định cơ sở dữ liệu khi chúng ta ghi log vào. Snort hổ trợ các kiểu sau: mysql, oracle, odbc,postgresql, mssql. - Chúng ta cần thiết lập các số sau: host port dbname= user password sensor_name Encoding detail. 5.3.4. Các luật của Snort - Cấu trúc của một luật: Tất cả các luật của Snort đều có hai thành phần chính là header và option. - Header: Chứa các thông tin về hành động mà luật sẽ thực hiện bao gồm nhiều phần như sau: Header=Action Protocol Addess Port Direction Action: Xác định kiểu hành động được thực hiện Protocol: Giao thức sử dụng để áp dụng luật cho gói tin Address: Xác định địa chỉ nguồn và địa chỉ đích. Nó bao gồm hai giá trị nguồn và đích. Nó có thể là địa chỉ host/ip/net Port: Được áp dụng trong trường hợp TCP hay UDP. Xác định cổng nguồn và cổng đích cho gói tin. Với các giao thức khác thì không cần. Direction: Xác định địa chỉ và cổng nào được sử dụng như nguồn hay đích. Ví dụ: alert icmp any any-> any any (msg: “Ping with TTL=100”; \ttl: 100) - Giải thích luật: Action: là alert tức là tạo ra một cảnh báo khi có gói tin xuất hiện trùng với một dấu hiệu của luật. Protocol: đây là giao thức ICMP, luật này chỉ áp dụng trên giao thức ICMP. Địa chỉ nguồn và cổng nguồn: Trong ví dụ này cả hai đều là “any”. Có nghĩa luật được áp dụng cho tất cả các gói tin đến từ một nguồn bất kỳ. - Direction: Trong trường hợp này được thiết lập từ trái qua phải sử dụng “->” điều này chỉ ra rằng địa chỉ và cổng ở bên trái là nguồn còn địa chỉ và công bên phải là cổng đích. Nếu chúng ta dùng thì “” Địa chỉ đích và cổng đích: Trong ví dụ này cả hai đều là “any” nghĩa là luật này áp dụng cho đích bất kỳ. - Option: Theo sau header và được đóng gói trong dấu ngoặc đơn. Có thể có một hoặc nhiều option được cách nhau bởi dấu phẩy. Nhiều option sẽ hình thành phép logic AND. Thông thường một option được chia là hai phần là từ khóa và đối số. Và được phân biệt với nhau bằng dấu hai chấm. Ví dụ: msg: “Ping with TTL=100”; Trong option này thì msg là từ khóa còn “Ping with TTL=100” là đối số bằng từ khóa. Phần tiếp theo là các từ khóa được sử dụng trong option. Snort gồm rất nhiều từ khóa phục vụ cho việc viết luật. Sau đây là tứ khóa cho việc viết luật:ack, name, classtype, description, priority, content, offset, depth, nocase, content-list, dsize, flags,fragbits,icmp_id, icmp_seq, itype, icode, id, ipopts, ip_proto, logto, msg, priority, react, reference, resp, rev, rps, sameip, seq, flow, sission, sid, tag, tos, ttl, uricontent. Một số từ khóa hay dùng: Msg: Hiển thị một thông báo alert hoặc packet log file Ttl: Dùng để so sánh các giá trị Time To Live của IP header Id: Dùng để so sánh một giá trị của IP header fragment Flags: Dùng để so sánh tcp flags với các giá trị được định nghĩa. Ack: So sánh các tcp ack cho một giá trị được định nghĩa Content: So sánh nội dung packet với các giá trị được định nghĩa 5.3.5. Các chế độ hoạt động của Snort - Snort có 4 chế độ hoạt động khác nhau. Sniffer mode: ở chế độ này snort sẽ lăng nghe và đọc gói tin trên mạng sau đó sẽ trình bày kết quả trên giao diện hiển thị. Packet Logger mode: Lưu trử các gói tin trong các tập tin log Network instruction detect system (NIDS): Đây là chế độ hoạt động mạnh mẽ và được áp dụng nhiều nhất. Khi hoạt động ở chế độ này snort sẽ phân tích các gói tin trên mạng và so sánh các thông tin được định nghĩa của người dùng để từ đó có hành động tương ứng. Inline mode:Chúng ta có thể triển khai iptables thay thế libcap cho hệ thống. 5.4. Xây dựng mô hình hệ thống giám sát IDS sử dụng Snort, Apache, MySQL, PHP và ACID. 5.4.1. Mô hình cho hệ thống xây dựng IDS-Snort Mô hình IDS- Snort - Trên đây là mô hình cho hệ thống giám sát phát hiện xâm nhập hệ thống Snort. Với máy chủ IDS-Snort được cài đặt và cấu hình dịch vụ Snort để phát hiện và kiểm tra các gói tin. - Một máy client đóng vai trò như một máy tấn công vào hệ thống đi qua sự giám sát của Snort đã được cài như trên. 5.4.2. Cài đặt và cấu hình Snort 5.4.2.1. Cài đặt các gói yêu cầu phụ thuộc và hổ trợ Snort - Thực hiện update system bằng lệnh Rpm –import - Thực hiện cài đặt các gói bổ sung bằng lệnh như sau: - Thực hiện bật các dịch vụ khởi động cùng hệ thống ta có như sau: 5.4.2.2. Cài đặt Snort - Thực hiện tải file snort-2.8.5.3.tar.gz về để cài đặt như sau: - Tạo thư mục để tải về - Copy snort vào file bocaisnort - Thực hiện giải nén để cài đặt - Thực hiện cài đặt bằng lệnh sau: - Tiếp theo ta dùng - Tiếp theo sử dụng lệnh 5.4.2.3. Cấu hình Snort - Tạo các thư mục hoạt động cho Snort - Chép các file cấu hình vào thư mục snort vừa tạo - Tạo nhóm, người sử dụng cho snort và set quyền cho file /var/log/snort 5.4.2.4. Cài đặt tập luật cho Snort - Tải bộ luật Snort cho snort từ trang - Thực hiện giải nén và copy váo thư mục snort/rules bằng lệnh như sau: #tar –xvzf snortrules-snapshot-2.8.tar.gz #cd rules #cp * /etc/snort/rules 5.4.2.5. Cấu hình Snort - Vào file /etc/snort/snort.conf để thực hiện sữa như sau: - Sửa dòng 26 như sau: var HOME_NET 192.168.10.0/24 - Sửa dòng 53 như sau: var EXTERNAL_NET !$HOME_NET - Sữa dòng 696 như sau: out put database: log, mysql, user=snort password=123456 dbname=snort host=localhost 5.4.2.6. Thiết lập Snort khởi động cùng hệ thống - Tạo một liên kết mềm của file snort binary đến /usr/sbin/snort bằng lệnh sau #li –s /usr/local/bin/snort /usr/sbin/snort - Tạo các file để khởi động cùng snort - Đặt lại quyền và khởi động cùng hệ thống #chmod 755 /etc/init.d/snortd #service snortd on #chkconfig --add /etc/init.d/snortd #service snortd restart 5.4.2.7. Tạo cơ sở dữ liệu Snort với Mysql - Ta set lại password cho tài khoản root trong mysql - Tạo passwd cho tài khoản snort - Tạo cơ sở dữ liệu snort - Cấp quyền cho tài khoản Snort trên cơ sở dữ liệu vừa tạo - Thực hiện tạo các bảng vào thư mục /snort-2.8.5.3/schemas đã giải nén - Xem các thông tin bảng đã tạo 5.4.2.8. Cài đặt BASE và ADODB - Cài đặt gói Image_Color cho php bằng lệnh pear - Cài đặt ADODB: ta thực hiện tải gói phần mềm ADODB về từ trang web: sau đó thực hiện giải nén vào /var/www/html và cài đặt gói phần mềm như sau: - Cài đặt BASE: Ta tiến hành download bộ cài BASE từ trang web và giải nén vào /var/www/html và tiến hành cài đặt như sau: - Thực hiện quá trình kiểm tra BASE ta có như sau: 5.4.2.9. Tiến hành sử dụng phần mềm Nmap để quét cổng máy cài đặt Snort để kiểm tra - Ta thấy Snort đã bắt được các gói tin do máy client test thực hiện bằng Nmap như đã tiến hành. 5.4.3. Một số chế độ hoạt động của Snort 5.4.3.1. Sniffer Mode - Tại chế độ hoạt động của Snort này chúng ta sử dụng dòng lệnh để nhận được hiển thị và giao tiếp của các gói tin. - Chúng ta sẽ tạo ra một luật dùng để kiểm tra máy đang Ping đến để kiểm tra chế độ hoạt động của Sniffer. - Tạo ra một luật có tên là test.rule: - Thực hiển kiểm tra snort bằng lệnh sau: snort –v ta có - Cũng tương tự chúng ta có một số lệnh để kiểm tra hoạt động của snort ở chế độ sniffer mode như snort –vd, snort –dve… 5.4.3.2. Chế độ Packet Logger Mode - Khi snort hoạt động ở chế độ này nó làm nhiệm vụ chủ yếu là lưu lại các thông tin hay hoạt động của các gói tin giao tiếp trên mạng. Ta dùng một số lệnh sau để cho phép Snort lưu và đọc các log - Lưu thông tin xuống file bằng lệnh: #snort –dev –l - Đọc thông tin từ các file đã lưu #snort –dvr Ví dụ: #snort –dev –l /etc/snort #snort –dvr /etc/snort/snort.log.nhãn_thời_gian 5.4.3.3. Chế độ hoạt động NIDS - Tất cả những hành động của Snort IDS đều hoạt động thông qua các rule, vì vậy chúng ta cần phải chỉnh sữa hoặc tạo ra các luật để thực hiện được mục đích của snort cho hệ thống của chúng ta. - Chúng ta có thể tạo ra một số luật sau đó lưu chúng vào /etc/snort/rules/tên_luật.rule - Một số luật sẽ được tạo như sau: Log tất cả các luật kết nối đến cổng 23 của dịch vụ telnet ta dùng lệnh Log tcp any any -> 192.168.10.3/32 23 Cho phép tất cả các trình duyệt Web mà không cần ghi log Pass tcp any 80 -> 192.168.10.0/24 any Tạo một cảnh báo vơi thông điệp kèm theo Alert tcp any any -> any 23 (msg: “co nguoi dang telnet den he thong”;) Dò tìm các tình huống quét mạng với SYN/FIN Alert tcp any any -> 192.168.10.0/24 any (msg: “SYN-FIN scan detected’; flags: SF;) Dò tìm các tiến trình quét mạng TCP NULL Alert tcp any any -> 192.168.10.0/24 any (msg: “Null scan”; flags: 0;) - Sau khi tạo ra các luật chúng ta thực hiện lệnh sau để thực thi: #snort –c /etc/snort/snort.conf –l /etc/snort - Để xem các cảnh báo chúng ta xem các log trong thư mục /var/log/snort - Chúng ta thực hiện để kiểm tra bằng cách sau: Thực hiện tạo ra các luật có tên /etc/snort/rules/test2.rule như sau: Thực hiện chạy các lệnh sau để ghi lại các sự kiện của hệ thống váo Snort như sau: #snort –c /etc/snort/rules/test2.rule –l /var/log/snort Thực hiện ping để kiểm tra các cảnh báo bằng cách từ máy client ta ping tới máy snort như sau: #ping 192.168.10.3 -t Thực hiện kiểm tra các kết quả mà snortd băt được bằng cách ta dừng chương trình snort trên máy snort bằng cách nhấn tổ hợp phím ctrl+c ta được các cảnh báo trên trên màn hình và trong các file log như sau: Trên teminal Trên file /var/log/snort/alert như sau Trên file cảnh báo /var/log/snort/snort.log. 1272322281 ta cũng có như sau: Chương 6. Tổng Kết Và Phát Triển Đề Tài Mặc dù đã cố gắng rất nhiều nhưng nhìn chung so với thực tế thì đề tài đang phát triển trong một phạm vi nhỏ. Cụ thể hơn đề tài mới chỉ triển khai được phần bảo mật giựa trên các tài nguyên có sẳn của Linux. Bước đầu đã tạo làm cho người dùng hiểu và biết được hệ thống Linux và một số dịch vụ bảo mật của Linux. Xây dựng được một hệ thống Linux chạy các chương trình, phần mềm bảo mật của Linux. Bên cạnh những công việc đã làm được thì còn có một số hạn chế như đề tài đang triển khai một cách khái quát, chưa đi vào cụ thể, chưa có tài liệu chi tiết cho người dùng hệ thống, việc triển khai các dịch vụ chưa được logic… Sau khi nhìn nhận các vấn đề còn tồn tại của đề tài, thì hướng phát triển của đề tài sẽ bao gồm: Tiến hành đưa đề tài vào triển khai thực tế. Xây dựng được một hệ thống hoàn chỉnh bao gồm tất cả các dịch của máy chủ server phục vụ cho quản trị mạng của doanh nghiệp. Cung cấp cho người dùng đầy đủ các chi tiết, tài liệu kỹ thuật về hệ thống. Nghiên cứu, phát triển và triển khai thêm nhiều dịch vụ bảo mật trên hệ thống để hệ thống hoàn thiện và ổn định hơn. Tài Liệu Tham Khảo Các cuốn sách tham khảo: [1] Tiêu Đồng Nhơn, Giáo Trình Dịch Vụ Mạng Linux, NXB ĐH QG TP.HCM [2] Nguyễn Thanh Tùng, Bảo Mật Và Tối Ưu Hóa Trong Red Hat Linux, NXB Lao Động Xã Hội [3] Rafeeq Ur Rehmam, Intrucsion Detection Systems with Snort [4] Steve Suehring and Robert Ziegler, Linux Firewalls, third Edition Các trang website tham khảo

Các file đính kèm theo tài liệu này:

  • doc111.doc
Tài liệu liên quan