• Thứ Hai, 06/06/2005 08:58 (GMT+7)

    Firewall trên đĩa mềm

    Việc phòng vệ trên mạng là vấn đề được quan tâm hàng đầu hiện nay và cũng là vấn đề 'đau đầu' đối với người dùng cá nhân cũng như nhà quản trị mạng. Tuy vậy, vấn đề này không hẳn quá phức tạp như bạn nghĩ. Bài viết này giới thiệu một giải pháp tường lửa (firewall) đơn giản chỉ cần 1 PC (không yêu cầu cấu hình cao) và... 1 đĩa mềm (FD 1,4MB)!

    Firewall này khởi động từ đĩa mềm, chạy hoàn toàn trên RAM, và sử dụng ipchains cho các qui tắc lọc gói tin. Nó cũng sử dụng kỹ thuật che mặt nạ IP (IP masquerading) chuyển tiếp cổng (port forwarding), và có thể ghi lại sự kiện (log) lên một máy trạm từ xa (remote host) thông qua syslog. Tất cả công việc này chỉ yêu cầu bộ nhớ RAM 8 MB và không cần đĩa cứng, bàn phím cũng như màn hình.

    Phần mềm được sử dụng ở đây có tên floppyfw. Tác giả Thomas Lundquist mô tả phần mềm này như là 'firewall có tính năng định tuyến (screening router)'. Floppyfw khởi động nhân Linux cơ bản cùng với bộ công cụ ít nhất đủ để hoàn tất vai trò nói trên. Điều này có ý nghĩa quan trọng, vì nếu trong trường hợp một kẻ xấu dùng cách nào đó xâm nhập được hệ thống firewall này thì sẽ không có nhiều công cụ để phá hoại. Do hệ thống chạy hoàn toàn trên RAM, một động tác khởi động lại đơn giản sẽ khôi phục hệ thống về trạng thái ban đầu.

    Như với nhiều dự án khác trên Linux, floppyfw có khả năng tuỳ biến cao. Bài viết giới thiệu sẵn một loạt các qui tắc lọc để giúp bạn có thể nhanh chóng thiết lập firewall cho riêng mình.

    Phần cứng

    Bạn chỉ cần một PC 386 với cấu hình tối thiểu sau (nếu có cấu hình cao hơn thì càng tốt):

    •    Tối thiểu 8-MB RAM
    •    Một ổ đĩa mềm 3,5'
    •    Hai card mạng
    •    Card màn hình
    •    Bàn phím
    •    Màn hình

    Lưu ý, màn hình và bàn phím chỉ cần khi thiết lập và thử nghiệm hệ thống.

    Card mạng có thể thuộc những loại dưới đây:
    •    3Com 3c509
    •    NE2000 hoặc loại tương thích
    •    Intel EtherExpress PCI

    Ở đây tôi sử dụng 2 card  3Com 3c509. Lưu ý, nhớ đảm bảo mỗi card mạng được thiết lập địa chỉ bộ nhớ và IRQ khác biệt. Bạn có thể sử dụng trình tiện ích đi theo card mạng để thiết lập địa chỉ bộ nhớ và IRQ, sẽ đơn giản hơn nếu card mạng có jumper.

    Phần mềm

    Việc tạo đĩa mềm khởi động firewall rất đơn giản. Tải file ảnh đĩa floppyfw có phiên bản (version) mới nhất và ổn định nhất ở địa chỉ http://www.zelow.no/floppyfw/download/. (Bài viết này sử dụng phiên bản 2.9.6). Sau đó ghi ảnh đĩa này ra đĩa mềm. Bạn có thể dùng tiện ích RawWrite for Windows (http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm) hay dùng dòng lệnh trong linux:

    # dd if=floppyfw-1.0.5.img of=/dev/fd0 bs=72k

    Cấu hình Firewall

    Đĩa mềm floppyfw có định dạng FAT (DOS). Trước khi có thể sử dụng, bạn cần phải soạn thảo các tập tin cấu hình. Trong Linux, bạn có thể thực hiện theo các bước sau:

    $ cd /tmp

    $ mcopy a:config

    $ vi config

    $ mcopy config a:

    Nếu dùng Windows, bạn có thể sử dụng NotePad để soạn thảo các tập tin cấu hình. 

    Có tất cả năm tập tin cấu hình cho floppyfw:

    • config (tập tin cấu hình chính)

    • firewall.ini (chứa các qui tắc lọc)

    • modules.lst (khai báo các mô-đun ip_masq thêm vào)

    • syslinux.cfg (chứa các thông số khởi động nhân hệ thống)

    • syslog.cfg (thiết lập cho syslog, tương tự như /etc/syslog.conf)

    Nói chung, có thể bạn sẽ không cần phải đụng vào các tập tin syslinux.cfg hoặc modules.lst. Ở đây chúng ta sẽ đề cập đến tập tin chính, config. Hầu hết các giá trị đều khá rõ nghĩa, ngoại trừ các khoá gần cuối tập tin:

    • OPEN_SHELL - kiểm soát việc truy nhập vào shell (/bin/ash) tại màn hình điều khiển.

    • ONLY_8M - xác lập việc sử dụng bộ nhớ cho floppyfw. Nếu máy tính của bạn có ít hơn. 12MB RAM - hãy đặt giá trị ONLY_8M thành 'y'.

    • USE_SYSLOG - kiểm tra syslogd có đang chạy hay không.

    • SYSLOG_FLAGS - là các cờ được chuyển cho syslogd khi nó khởi động.

    Ví dụ: nội dung tập tin config.

    #

    # config for floppyfw

    #

    #OUTSIDE_IP=DHCP

    OUTSIDE_IP=24.3.123.157

    OUTSIDE_DEV=eth0

    OUTSIDE_NETMASK=255.255.255.0

    OUTSIDE_BROADCAST=24.3.123.255

    #

    INSIDE_IP=192.168.1.1

    INSIDE_DEV=eth1

    INSIDE_NETMASK=255.255.255.0

    INSIDE_BROADCAST=192.168.1.255

    #

    DEFAULT_GATEWAY=24.3.123.1

    NAME_SERVER_IP1=24.3.128.34

    NAME_SERVER_IP2=24.3.128.33

    DOMAIN=home.com

    HOSTNAME=cc1234576-a

    #

    # (y)es or (n)o

    #

    OPEN_SHELL=y

    ONLY_8M=n

     

    USE_SYSLOG=y

    #SYSLOG_FLAGS='-m 360'

    # get rid of annoying --MARK--' messages

    SYSLOG_FLAGS='-m 0'

    Các qui tắc lọc

    Bây giờ chúng ta sẽ xem xét tập tin firewall.ini. Tập tin nguyên thủy có sẵn của floppyfw chỉ thiết lập masquerading cơ bản và từ chối một ít cổng. Chúng ta cần hiệu chỉnh tập tin này. Tuy nhiên, việc tạo một tập hợp các qui tắc lọc hoàn hảo hơn có thể đòi hỏi nhiều thời gian hơn. Về lý thuyết, chúng ta có thể khóa tất cả các cổng và chỉ để mở các dịch vụ chúng ta muốn sử dụng. Bạn có thể tham khảo tài liệu của Robert L. Ziegler tại địa chỉ http://www.linux-firewall-tools.com/linux/faq/index.html. Ziegler cũng chính là tác giả của cuốn Linux Firewalls (nhà xuất bản New Riders). Tác giả giải thích rất kỹ từng qui tắc, đây quả là nguồn thông tin đáng giá.

    Các qui tắc mẫu cho ipchains có thể tìm thấy ở website http://www.linux-firewall-tools.com/ftp/firewall/rc.firewall.ipchains.

    Bạn nên đọc qua toàn bộ tập tin trước và không nhất thiết sử dụng nó ở dạng gốc. Do dung lượng đĩa mềm hạn chế, bạn nên xóa các phần cấu hình mà bạn cho là sẽ không bao giờ sử dụng. Tất nhiên, bạn có thể lưu trữ lại một bản gốc để dự phòng.

     

     IPTABLES

     

     

    Trong hệ thống Unix/Linux có rất nhiều công cụ firewall (tường lửa), trong số đó có một công cụ firewall rất nhỏ và tiện dụng, được cấu hình và hoạt động trên nền console, đó là Iptables.
    Iptables xử lý những gói tin (packet) đi ra (leaving), đi vào (entering) hay chuyển đi (passing) PC như sau:
    • Bất kỳ packet nào muốn đi vào PC của bạn đều phải đi qua Input Chain. 
    • Bất cứ packet nào từ PC của bạn muốn đi ra mạng ngoài đều phải đi qua Output Chain.
    • Bất cứ packet nào mà PC của bạn muốn chuyển đi đến một máy đều phải đi qua Forward Chain.
    Tất cả những 'quy định' trên được giám sát bởi Iptables. Tất nhiên Iptables phải được cài đặt và thiết lập. Việc thiết lập cho Input Chain, Output Chain và Forward Chain được gọi là quy tắc (rule) cho Firewall. Hầu hết Iptables đã được cài đặt sẵn trong của các bản Linux thông dụng hiện nay như Redhat, Mandrake, SuSe...
    Nếu không, bạn có thể tìm thấy Iptables ở các website: www.linuxapps.com, www.freshmeat.net.
    Thiết lập rule
    Bây giờ chúng ta tìm hiểu những chức năng và cách cấu hình cơ bản của Iptables. Trước hết chúng ta bắt đầu thao tác với những địa chỉ IP nhất định. Chẳng hạn như bạn muốn ngăn chặn tất cả các packet đến từ 192.78.4.0, bạn có thể dùng tuỳ chọn '-s' như sau:
    iptables -s 192.78.4.0
    Nếu bạn muốn xử lý các packet một cách chi tiết hơn, tuỳ chọn '-j' (sử dụng kết hợp với tuỳ chọn '-s') sẽ giúp bạn thực hiện điều đó với các tính năng: ACCEPT (chấp nhận), DENY (từ chối) hay DROP (bỏ qua)... Nếu bạn muốn DROP các packet từ địa chỉ 192.78.4.0:
    iptables -s 192.78.4.0 -j DROP

     

    Lệnh đơn trên sẽ bỏ qua mọi thứ đến từ 192.78.4.0
    Tuỳ chọn '-p' được sử dụng để xác định giao thức cần xử lý.  Nếu bạn muốn bỏ qua yêu cầu phản hồi Telnet từ máy PC này, chúng ta sẽ dùng dòng lệnh:
    iptables -A INPUT -s 192.78.4.0 -p tcp --80 telnet -j DROP
    Các Command trên là thao tác cho 1 địa chỉ IP (Single IP). Nếu bạn muốn thao tác với nhiều địa chỉ IP cùng một lúc thì sẽ có chút thay đổi như sau:
    - 192.78.4.0/84 : Tất các các IP từ 192.78.4.0 cho đến 192.78.4.84
    - 192.78.4.* : Tất cả các IP thuộc lớp mạng D, từ 192.78.4.0 cho đến 192.78.4.255
    Bây giờ xét trường hợp mạng LAN có kết nối Internet. Chúng ta sẽ coi LAN là eth0 còn kết nối Internet là ppp0. Bạn muốn cho phép dịch vụ Telnet chạy trên các PC trong mạng LAN nhưng không muốn cho nó hoạt động ra ngoài Internet (vì lý do an toàn). Bạn có thể sử dụng tuỳ chọn '-i' như sau:
    iptables -A INPUT -p tcp --destination-port telnet -i ppp0 -j DROP
    Lệnh trên sẽ ngăn chặn tất cả các yêu cầu, nguy cơ tấn công bằng Telnet từ bên ngoài vào hệ thống LAN của bạn.
    Trên Internet có rất nhiều script cấu hình rule cho Iptables rất tuyệt, bạn có thể tải về để áp dụng trên hệ thống của mình. Cũng có một số công cụ cấu hình Iptables trên X Window.
    Bảo mật luôn là vấn đề phức tạp. Hy vọng qua bài viết này bạn sẽ có được những thông tin cơ sở để thiếp lập firewall hữu hiệu cho hệ thống của mình. 
    Chúc bạn thành công
    Tham khảo: www.linux.doc.org
    Nguyễn Xuân Bình
    binhnx2000@yahoo.com

     

    Ghi nhận dữ kiện

    Nếu bạn sử dụng tập tin syslog.cfg mặc định, floppyfw sẽ ghi nhận (log) mọi thứ và đưa ra màn hình điều khiển. Nếu bạn muốn phân tích tập tin log để biết được những gì đang xảy ra với firewall của mình, bạn cần thiết lập một trong những máy tính Linux trong mạng nội bộ của mình để làm nhiệm vụ ghi nhận dữ kiện cho firewall. Để làm điều đó, bảo đảm rằng máy ghi nhận dữ kiện khởi động syslogd với tham số -r để cho phép nó nhận các thông điệp chuyển qua mạng. (Ví dụ, trên hệ thống Red Hat, bạn sẽ phải hiệu chỉnh tập tin /etc/rc.d/init.d/syslog). Sau đó, khai báo địa chỉ của máy ghi nhận dữ kiện trong tập tin syslog.cfg.

    Khi đã thiết lập xong các tập tin cấu hình và ghi lại vào đĩa mềm, bạn có thể khởi động đĩa mềm firewall và tiến hành kiểm tra xem có thể truy cập đến từng dịch vụ bên ngoài mà bạn đã mở cổng cho nó. Hãy để mắt đến màn hình điều khiển (console) của máy tính firewall hay tập tin /var/log/messages nếu bạn thực hiện ghi sự kiện lên máy ở xa, bạn sẽ biết được tình trạng hoạt động của firewall. Có thể bạn cần phải tinh chỉnh các qui tắc của tường lửa một ít. Đảm bảo ghi nhận các thay đổi lên đĩa mềm.

    Hãy để mắt đến tập tin log. Khi đưa firewall vào hoạt động, chắc hẳn bạn sẽ ngạc nhiên khi thấy có nhiều người đang thực hiện quét cổng (tìm kẽ hở để đột nhập) và những việc lạ lùng khác. Quả là thú vị khi có firewall!

    Tham khảo:
    - Floppyfw, tác giả Thomas Lundquist (www.zelow.no/floppyfw/)
    - Linux Firewalls, tác giả Robert L. Ziegler (linux-firewall-tools.com/linux/faq/).ÿ

    Mai Thanh Liêm
    mai.t.liem@vn.pwc.com

    Từ khóa: Firewall, security
    ID: A0405_110