intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Build từ source kernel CentOS 5.2 và iptables để sử dụng những tính năng của iptables

Chia sẻ: Abcdef_43 Abcdef_43 | Ngày: | Loại File: PDF | Số trang:7

115
lượt xem
16
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Netfilter/ipbtales là software NAT/firewall được cài đặt sẵn và phổ biến trên các hệ thống Linux. Cent0S là một distro Linux được viết ra dựa trên Redhat chủ yếu dành cho máy chủ, mặc định distro này không được xây dựng kèm theo module connlimit vốn rất cần thiết cho các quản trị viên dùng để cản lọc các gói tin không hợp lệ, nhất là trong trường hợp bị tấn công từ chối dịch vụ.

Chủ đề:
Lưu

Nội dung Text: Build từ source kernel CentOS 5.2 và iptables để sử dụng những tính năng của iptables

  1. Build từ source kernel CentOS 5.2 và iptables để sử dụng những tính năng của iptables Netfilter/ipbtales là software NAT/firewall được cài đặt sẵn và phổ biến trên các hệ thống Linux. Cent0S là một distro Linux được viết ra dựa trên Redhat chủ yếu dành cho máy chủ, mặc định distro này không được xây dựng kèm theo module connlimit vốn rất cần thiết cho các quản trị viên dùng để cản lọc các gói tin không hợp lệ, nhất là trong trường hợp bị tấn công từ chối dịch vụ. Bài viết này đưa ra cách tích h ợp module này vào CentOS bằng cách build từ source của Kernel và Netfilter/iptables. Để hiểu được kiến thức đưa ra trong bài này, bạn cần có thời gian tìm hiểu và nắm rõ được phần nào cơ bản về biên dịch kernel, c ài đặt các phần mềm từ mã nguồn, cũng như môi trường cần thiết để một user bình thường có thể "build" một phần mềm từ mã nguồn có sẵn, hệ thống file, các câu lệnh nâng ca o... Chúng ta không đi sâu vào khái ni ệm Netfilter/iptables là gì? Động cơ dẫn đến bài viết là trong một trường hợp nào đó cần tới những modules không đ ược tích hợp sẵn vào nhân hệ điều hành CentOS mà bạn đang sử dụng, bạn tìm cách để tích hợp những modules đó vào, một cách nhanh nhất có thể, mà không làm hư tổn, hoặc gây ra lỗi trầm trọng đối với hệ thống đang hoạt động ổn định. 1.Phần đầu tiên: kiểm tra và tạo môi trường "build" cho user: Để thực hiện được bài viết này, hệ thống của bạn phải được cài đặt sẵn gói rpm-build, Để kiểm tra xem rpm -build đã được cài đặt chưa bạn dùng câu lệnh
  2. sau: Nếu kết quả là: [whatvn@localhost ~]$ rpm -q rpm-build rpm-build-4.4.2.3-2.fc9.i386 thì hệ thống đã cài sẵn rpm-build, ta tiếp tục bước tiếp theo còn nếu kết quả như bên dưới: [whatvn@localhost ~]$ rpm -q rpm-buid package rpm -buid is not installed thì bạn cài đặt rpm-build bằng cách: [whatvn@localhost ~]$ sudo yum install rpm-build Vì môi trường cũng như target của các bản cài đặt ta đều chỉ định ở Home directory của user, nên để dễ dàng, bạn nên đứng ở thư mục ~ của user, làm tất cả các tác vụ về sau. Ta download các gói cần thiết về (cần chú ý b ài viết này đang đề cập đến centOS 5.2, nếu bạn sử dụng các phi ên bản centOS cũ hơn thì không download các packet d ưới đây) Kernel Source [whatvn@localhost ~]$ wget http://mirror.centos.org/centos/5/os/SRPMS/kernel -2.6.18-92.el5.src.rpm iptables source [whatvn@localhost ~]$ wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.0.tar.bz2 patch-o-matic-ng
  3. [whatvn@localhost ~]$ wget http://ftp.netfilter.org/pub/patch -o-matic- ng/snapshot/patch-o-matic-ng-20081130.tar.bz2 Tạo môi trường "buid" cho user: [whatvn@localhost ~]$ mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} Lệnh trên thực hiện tạo thư mục rpmbuild trong thư m ục home của user, và các thư mục con tương ứng BUILD,RPMS,SOURCES,SPECS,SRPMS. [whatvn@localhost ~]$ echo '%_topdir %(echo $HOME)/rpmbuild'> .rpmmacros Lệnh thực hiện tạo ra script .rpmmacros với nội dung nh ư trong cặp dấu ngoặc đơn ' ', bạn chú ý là dùng dấu ngoặc đơn, không phải ngoặc kép. Một vài hươngs dẫn dùng câu lệnh với dấu ngoặc " ", sẽ báo lỗi t ương tự: [whatvn@localhost ~]$ echo “%_topdir %(echo $HOME)/rpmbuild” bash: syntax error near unexpected token `(' 2. Thực hiện: Cài đặt kernel source: [whatvn@localhost ~]$ rpm -i kernel-2.6.18-92.el5.src.rpm Sau đó: [whatvn@localhost ~]$ rpmbuild -bp --target=`uname -m` kernel-2.6.spec
  4. Bước này nếu hệ thống báo lỗi thiếu gói unifdef thì cài đặt bằng yum [whatvn@localhost ~]$ yum install unifdef rồi chạy lại lệnh phía trên Qúa trình cài đặt có thể hơi lâu một chút, sau khi hoàn tất trở về thư mục Home và giải nén source iptables v à gói patch-o-matic-ng đã down về trước đó. [whatvn@localhost ~]$ tar xvjf iptables-1.4.0.tar.bz 2 [whatvn@localhost ~]$ tar xvfj patch -o-matic-ng-20081130.tar.bz2 Chuyển vào thư mục patch-o-matic-ng-20081130 vừa giải nén [whatvn@localhost ~]$ cd patch -o-matic-ng-20081130 chạy lệnh sau [whatvn@localhost ~/patch-o-matic-ng-20081130]$ ./runme --download Chú ý sau runme là 2 dấu gạch giữa, không phải 1 gạch ngang, lệnh tr ên sẽ tìm kiếm và download những modules cần thiết về, trong quá trình chạy hệ thống sẽ hỏi bạn kernel source dir và iptables source dir. Kernel source dir là thư m ục ~/rpmbuild/BUIL D/kernel-2.6.18 (chú ý thay ~ là tên home c ủa bạn, ví dụ của tôi là whatvn). iptables source dir là thư m ục iptables mà bạn vừa giải nén. Chạy tiếp: [whatvn@localhost ~/patch-o-matic-ng-20081130]$ ./runme connlimit
  5. Trong bài viết này tôi sử ví dụ module connlimit, nếu các bạn muốn thêm module nào thì có thể tự thêm vào ở lệnh trên. Lệnh này cũng hỏi kernel source dir và iptables source dir, ban copy và dán vào như trên kia là đư ợc. Chuyển đến thư mục ~/rpmbuild/BUILD/kernel-2.6.18 và chạy lần lượt các lệnh bên dưới: [whatvn@localhost ~/rpmbuild/BUILD/kernel -2.6.18]$ make oldconfig [whatvn@localhost ~/rpmbuild/BUILD/kernel -2.6.18]$ make prepare [whatvn@localhost ~/rpmbuild/BUILD/kernel -2.6.18]$ make modules_prepare Lệnh đầu tiên biên dịch kernel mới (không cài đặt) với cấu hình hiện tại của kernel hệ thống. Lệnh thứ 2 tạo ra các file cần thiết để biên dịch các module với cấu hình trên Lệnh thứ 3 xây dựng các modules t ương ứng. Tiếp tục vào chuyển directory: [whatvn@localhost ~/rpmbuild/BUILD/kernel -2.6.18]$ cd ~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/net/ipv4/netfilter
  6. Chạy lệnh [whatvn@localhost ~/rpmbuild/BUILD/kernel -2.6.18/linux- 2.6.18.x86_64/net/ipv4/netfilter]$ make -C ~/rpmbuild/BUILD/kernel- 2.6.18/linux-2.6.18.x86_64 M=$PWD modules Chép modulle m ới xây dựng vào thư mục updates của kernel hiện tại và active để sử dụng [whatvn@localhost ~/rpmbuild/BUILD/kernel -2.6.18/linux- 2.6.18.x86_64/net/ipv4/netfilter]$ cp ipt_connlimit.ko /lib/modules/2.6.18 - 92.el5/updates $ depmod 2.6.18-92.el5 $ modprobe ipt_connlimit 3. Thử nghiệm: copy và chạy lệnh này trên console, nếu không báo lỗi thì bạn đã thành công iptables -A INPUT -p tcp -d $IP --dport 80 -m state --state ESTABLISHED -m connlimit --connlimit-above 4 -j DROP $IP là ip của bạn
  7. Vài điểm lưu ý: kernel của bạn hoàn toàn có thể khác của tôi, bạn d ùng uname -a để xem kernel hiện tại của mình là gì.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2