Tài liệu firewall trên linux

  • 8 trang
  • file: .pdf

đang tải dữ liệu....

Tài liệu bị giới hạn, để xem hết nội dung vui lòng tải về máy tính.

Tải xuống - 8 trang

Nội dung text: Tài liệu firewall trên linux

Hệ Thống Firewall Trên Linux Kernel 2.4 & Netfiter
Iptables
Nâng cấp từ kernel 2.2, kernel 2.4 đưa ra rất nhiều tính năng mới
giúp Linux hoạt động tin cậy hơn và hỗ trợ cho nhiều thiết bị. Một
trong những tính năng mới của nó đó là hỗ trợ Netfilter Iptables
ngay trong kernel, giúp thao tác trên packet hiệu quả hơn so với
các đàn anh trước đó như Ipfwadm trong kernel 2.0 và Ipchains
trong kernel 2.2, tuy vẫn hỗ trợ cho các bộ lệnh cũ.Thiết lập
firewall theo kiểu lọc packet (packet filtering – lọc gói thông tin)
với Ipfwadm hoặc Ipchains có nhiều hạn chế : thiếu các tích hợp
cần thiết để mở rộng tính năng, khi sử dụng lọc packet cho các
giao thức thông thường và chuyển đổi địa chỉ mạng (Network
Address Translation - NAT) thì thực hiện hoàn toàn tách biệt mà
không có được tính kết hợp. Netfilter và Iptables trên kernel 2.4
giải quyết tốt các hạn chế trên, uyển chuyển hơn và có thêm
nhiều tính năng khác mà Ipfwadm và Ipchains không có.
Nguyên Tắc Làm Việc Của NETFITER Và IPTABLES
Netfilter là thành phần cơ bản API (Application Program
Interface) cho phép giao diện ở các lớp trên như Iptables có thể
dùng nó để thao tác trên các mang gói. Hiện nay Netfilter đưa ra
bốn module cho các lớp trên sử dụng đó là Ipfwadm + ipchains,
Iptables, Connection tracking và Nat. Trong Iptables định nghĩa
sẵn các bảng sau:
1. Filter: Dùng để thao tác trên các packet
2. Nat: Sử dựng để thực hiên NAT, ví dụ như dùng để che các
đia chỉ xuất phát từ trong mạng LAN khi chúng đi ra ngoài
Internet mà ngày nay hầu hết các mang đều sử dụng.
3. Mangle: Thường dùng để đánh dấu các packet dùng cho
nhưng mục đích như QoS hoặc chuyển hướng packet.
STATELESS PACKET FLLTERLNG
Dang bộ lọc không biết được quan hệ của những packet vào với
packet đi trước nó hoặc đi sau nó, gọi là cơ chế lọc không phân
biệt được trạng thực hiện được đến mức độ này. Với các firewall
không phân biệt được quan hệ của các packet với nhau, chúng
ta gọi là firewall chặn thụ động (stateless firewalling) . Loại
firewall này khó có thể bảo vệ được mạng bên trong trước các
kiểu tẩn công phá hoại như DOS, SYN flooding, SYN cookie,
ping of death, packet fragmentation… hay các hacker chỉ cần
dùng công cụ dò mạng như nmap chăng han là có thể biết được
các trạng thái của các hosts nằm sau firewall. Điều này không
xảy ra với firewall tích cực (stateful firewall).
STATEFUL PACKET FLLTERING
Với mọi packet đi vào mà bô lọc có thể biết được quan hệ của
chúng như thế nào đối với packet đi trước hoặc đi sau nó, ví dụ
như các trang thái bắt tay ba lần trước khi thức hiện một kết nối
trong giao thức TCP/IP (SYN, SYN/ACK, ACK), gọi là firewall có
thể phân biệt được trang thái của các packet hay nôm na là
firewall tích cực (stateful firewalling) . Với loại firewall này, chúng
ta có thể xây dựng các quy tắc lọc để có thể ngăn chặn được
ngay cả các kiểu tấn công phá hoại như SYN flooding hay Xmas
treo. . . Hơn thế nữa Iptables còn hỗ trợ khả năng giới han tốc
độ kết nối đối với các kiểu kết nối khác nhau từ bên ngoài, cực kỳ
hữu hiệu để ngăn chặn các kiểu tấn công tư chối phục vu (DOS)
mà hiện nay vẫn là mối đe doạ hàng đầu đối với các website trên
thế giới. Một đặc điểm nổi bật nữa của Iptables là nó hỗ trợ chức
năng dò tìm chuỗi tương ứng (string pat-tern matching) , chức
năng cho phép phát triển firewall lên một mức cao hơn, có thể
đưa ra quyết đinh loại bỏ hay chấp nhận packet dưa trên việc
giám sát nội dung của nó. Chức năng này có thể được xem như
là can thiệp được đến mức ứng dụng như HTTP, TELNET,
FTP… mặc dù thực sự Netfilter Iptables vẫn chỉ hoat động ở
mức mạng (lớp 3 theo mô hình OSI 7 lớp).
THỰC HIỆN
Chi tiết về mô tà các bảng và các tham số trong iptables các bạn
có thể tham khảo tại địa chỉ
http://www.unixcircle.com/iptables/1ptables-tutorial/1ptable s-
tutorial.html. Sau đây tôi sẽ trình bày cách thực hiện cụ thể trên
hệ điều hành Redhat Linux. Redhat 7.1 đươc đóng gói với kernel
2.4.2 và đã được biên dich để hỗ trợ cho Netfilter và Iptables, tuy
nhiên muốn sử dụng đầy đủ các tính năng của Iptables nói trên
thì cần phải nâng cấp Iptables lên phiên bản mới nhất 1.2.4
(http://netfilter.samba.org/iptables1.2.4.tar.bz2) và biên dịch lại
nhận Linux với phiên bản 2.4.16
(http://wwwkernel.org/pub/linux/kernel/v2.4/linux-2.4.16.tar .gz,
hiện đă có phiên bản 2.4.17).
Khi sử dụng Linux Redhat 7.1 làm chức năng firewall, chúng ta
nên cài đăt chế độ server với chế độ văn bản và loại bỏ tất cả các
chức năng (daemon) không cần thiết như sendmail, ftpd, httpd,
telnetd,sshd, lpd v.v. . . chỉ nên login ngay tại máy để thao tác.
Loại bỏ phiên bản củ của iptables trên máy nếu nó đã được đưa
vào trong quá trình cài đăt bằng lệnh rpm -eiptables.
Giải nén kernel 2.4.16 vào thư mục /usr/src, chúng ta được
source của kernel trong /usr/src/linux.
Vídụ : tar zxvf linux-2.4.16.tar.gz
Giải nén iptables-l.2.4 vào thư mục usr/local/src chúng ta được
/usr/local/src/iptables-1.2.4
Trong thư mực iptables-1.2.4, chúng ta thực hiện các bước sau
để gắn các chức năng của iptables-1.2.4 vào kernel.
make pending-patches KERNEL-DIR= /usr/src/linux
Sau khi gắn xong vào kernel, chúng ta tiếp tuc thêm vào những
chức năng mới nhất vừa được phát triển để đưa vào kernel, sử
dụng lênh sau:
make patch-o-maltic KERNEL-DIR= /usr/src/linux
Khi thực hiện các lệnh để gắn vào kernel như trên, chúng ta nên
chú ý đến dòng trang thái mô tả chức năng của gói thêm vào ,
nếu hàng trạng thái chỉ ra là gói này tốt (working) hay ổn định
(stable) như là vẫn còn đang thử nghiệm, bạn cũng có thể dùng
những tính năng này nếu thích.
Chú ý đê có thể sử dụng được chức năng “trong pattern
matching” bạn phải nhớ thêm vào chức năng CONFIG_IP NF
MATCH-STRING trong khi thực hiên patch-o-matic. Qua kiểm
nghiệm nếu các gói trong patch-o-matic hoạt động tốt thì chúng
sê được đưa thẳng vào trong kernel ở các phiên bản kế tiếp.
Tiếp tuc tiến hành biên dịch Iptables,vẫn ở trong
/usr/local/src/iptables-1.2.4
Make KERNEL-DIR=/usr/src/linux make install KERNEL-
DIR=/usr/src/linux
Lúc này iptables đã được cài đặt trong /usr/local/sbin và
/usr/local/lib
Tiến hành biên dịch kernel 2.4.16:
Sau khi các gói cần thiết của Netfilter đã được đưa vào kernel
xong, chúng ta bắt đầu biên dịch lại kemel và các module của
nó.Chuyển vào thư mục /usr/src/linux và đánh lệnh: make
menuconfig
Trên giao diện cấu hình này, để tối ưu kernel chúng ta chỉ nên
đưa vào những thiết bị nào cần thiết cho hệ điều hành và nên
chọn chức nàng làm “router”. Mục đích chính của chúng ta là sử
dụng Netfilter/iptables nên trong phần net’work Options ->
Netfilter Configuration chúng ta nên chọn tất cả các chức năng
trong đó . Sau khi chon xong thoát ra khỏi menu và dùng các lệnh
sau để biên dịch:
make dep; make clean; make bzImage, make modules;
makeltlodules_install
Quá trình biên dịch nhanh hay châm tuỳ thuộc vào cấu hình máy,
sau khi quá trình biên dịch kết thúc bạn cần phải làm thêm một số
thủ tục sau đây để hệ điều hành có thể chạy được kernel mới
vừa biên dịch. Chuyển tập tin /usr/src/linux/arch/
i386/boot/bzimage vào thư muc /boot.
ví dụ: mv /usr/src/linux/arch/1386/boot/bzImage /boot/bzImage.fw
Chuyển tập tin /usr/src/linux/System.map vào thư mục /boot.
ví dụ: mv /usr/src/linux/system.map /boot/system.map.fw
Tạo liên kết mới : ln -fs /boot/System.map.fw /boot/system.map
Để đề phòng bất trắc đối với kernel mới, bạn nên tạo thêm cho
quá trình khởi động máy một menu để chọn nạp kernel bằng
cách hiệu chỉnh tâp tin /etc/lilo.conf
Ví dụ:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=30
message=/boot/message
linear
default=origin
image=/boot/vmlinuz-2.4.2-2
label=ongin
read-only
root=/dev/hda8
Image=/boot/bzImage.fw
label=firewall
read-only
root=/dev/hda8
Công việc cuối cùng là nhớ đánh lệnh /sbin/lilo để nạp lai cấu
hình trong tập tin /etc/lilo.conf và reboot lại máy.
Sau đây là một số ví dụ minh họa để thiết lập một firewall trên
Linux
Giả sử local network là 10.0.0.0/8 và firewall sử dụng hai card
mạng, kết nối với internet bằng card mạng ethO và với local
network là eth1
Chống Syn Flooding:
Iptables -A FORWARD -p tcp -syn -m hmit -limit 1/s -j ACCEPT
Chống Scan Port:
Iptables -A FORWARD -P tcp tcp- flags SYN/ACK,FIN/RST RST
-mlimit-limit1/s -j ACCEPT
Chống Ping of Death:
Iptables -A FORWARD -P icmp -icmp-type echo-request -m limit
-limit 1/s -j ACCEPT
Cho các packet đã thiết lập kết nối tiếp tục đi qua firewall:
Iptables -A FORWARD -m state state ESTABLISHBD,RELATED
– j ACCEPT