Cài đặt và cấu hình IPtables cho Ubuntu

Bài viết này mình và thằng bạn thực hiện trên ubuntu 13.04 vốn là đề tại tiểu luận nên làm xong tiện thể post lên đây luôn, có gì các thím nhẹ tay nhé!

Trước hêt cần nói qua về IPtables:
1. Giới thiệu về iptables
-IPtables là một chương trình chạy ở không gian người dùng, cho phép người quản trị hệ thống có thể cấu hình các bảng của tường lửa trong nhân Linux (được cài đặt trong các Module Netfilter khác nhau) và lưu trữ các chuỗi, luật. Các Module nhân và chương trình khác nhau được áp dụng cho từng giao thức; iptables cho IPv4, ip6tables cho IPv6, arptables cho ARP, và ebtables cho Ethernet frames.
-Iptables do Netfilter Organiztion viết ra để tăng tính năng 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 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 DoS
2. Cài đặt iptables
-Iptables được cài đặt mặc định trong hệ thống Linux, package của iptables là iptablesversion.
rpm hoặc iptables-version.tgz …, ta có thể dùng lệnh để cài đặt package này:
$ rpm –ivh iptables-version.rpm đối Red Hat
$ apt-get install iptables đối với Debian
- Khởi động iptables: service iptables start
- Tắt iptables: service iptables stop
- Tái khởi động iptables: service iptables restart
- Xác định trạng thái iptables: service iptables status
3, Cấu hình: các bước thực hiện:
Bước 1: mở terminal lên gõ lệnh: iptables –L


Bước 2: gõ lệnh như hình vẽ để tiến hành tạo file iptables.test.rules trong
/etc
Bước 3:  thêm vào file vừa tạo đoạn code rồi lưu lại:
*filter
#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i lo -d 127.0.0.0/8 -j REJECT
#  Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
#  Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT




Bước 4: Nạp cấu hình cho bộ nhớ

Bước 5: Sau khi thực hiện các bước trên gõ lệnh: iptables –L  ta sẽ có được cấu hình như hình vẽ:

Bước 6: Lưu file với tên:  iptables.up.rules

xem hình:

Bước 7: Bây giờ chúng ta cần phải đảm bảo là cấu hình sẽ được lưu lại mỗi khi ta khởi động máy, mở tệp tin:  /etc/network/interfaces

thêm vào dòng: ”pre-up intables-restore < /etc/iptables.up.rules” ngay sau dòng “iface lo inet loopback”

 Bước 8: restart the network card để hoàn tất, máy sẽ khởi động lại.
Dùng lệnh: /etc/init.d/networking restart

để hiểu được đoạn code trên bạn cần hiểu các thuật ngữ và các lệnh sau:

1, Các thuật ngữ cần hiểu:
* Jump là cơ chế chuyển một packet đến một target nào đó để xử lý thêm một số thao tác khác.
* Target là cơ chế hoạt động trong iptables, dùng để nhận diện và kiểm tra packet. Các target được xây dựng sẵn trong iptables như:
- ACCEPT: iptables chấp nhận chuyển data đến đích.
- DROP: iptables khóa những packet.
- LOG: thông tin của packet sẽ gởi vào syslog daemon iptables tiếp tục xử lý luật tiếp theo trong bảng mô tả luật. Nếu luật cuối cùng không match thì sẽ drop packet. Với tùy chọn thông dụng là --log-prefix=”string”, tức iptables sẽ ghi nhận lại những message bắt đầu bằng chuỗi “string”.
- REJECT: ngăn chặn packet và gởi thông báo cho sender. Với tùy chọn thông dụng là -- reject-with qualifier, tức qualifier chỉ định loại reject message sẽ được gởi lại cho người gởi. Các loại qualifer sau: icmp-port-unreachable (default), icmp-net-unreachable, icmp-host-unreachable, icmp-proto-unreachable, …
- DNAT: thay đổi địa chỉ đích của packet. Tùy chọn là --to-destination ipaddress.
- SNAT: thay đổi địa chỉ nguồn của packet. Tùy chọn là --to-source[- address][:-]
- MASQUERADING: được sử dụng để thực hiện kỹ thuật NAT (giả mạo địa chỉ nguồn với địa chỉ của interface của firewall). Tùy chọn là [--to-ports [-]], chỉ định dãy port nguồn sẽ ánh xạ với dãy port ban đầu
                                          
2. Các lệnh trong iptables


-t :Chỉ định bảng cho iptables bao gồm:filter,nat,mangle tables.
-j : Nhảy đến một target chain khi packet thỏa luật hiện tại.
-A:Thêm luật vào cuối iptables chain.
-F: Xóa tất cả các luật trong bảng lựa chọn.
-p : Mô tả các giao thức bao gồm: icmp, tcp, udp và all
-s : Chỉ định địa chỉ nguồn
-d : Chỉ định địa chỉ đích
-i : Chỉ định “input” interface nhận packet
-o : Chỉ định “output” interface chuyển packet ra ngoài

Tác giả: phúc ceh + feddxii
SHARE

The Blues

Wellcome to my blog

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

3 nhận xét:

  1. bạn ơi thế bạn có thể cho mình xin bài tiểu luận này của bạn đc ko? mình cũng đang làm về đề tài này nè hic hic

    ReplyDelete
  2. chào bạn, rất cảm ơn khi bạn post lên tài liệu này, mình thấy rất hay, mình cũng đang tìm hiểu về phần này nhưng cảm thấy mơ hồ quá, bạn có thể post tiếp tài liệu được không? mình rất cảm ơn bạn...

    ReplyDelete
  3. Anh chị ơi!.có thể cho em biết ở bước 3 .mình lưu cách nào vậy.giúp em với.
    thank cả nhà!

    ReplyDelete