• Không có kết quả nào được tìm thấy

Cấu hình firewall IPtable trên Linux

III. INFRASTRUCTURE SECURITY (AN NINH HẠ TẦNG)

6. Cấu hình firewall IPtable trên Linux

Page | 64 Copyright by Tocbatdat

Page | 65 Copyright by Tocbatdat

- Bất cứ Packet nào mà PC của bạn muốn gửi đi một Destination khác đều phải đi qua Forward Chain

Tất cả những điều đã nêu trên đều được giám sát bởi Iptables...Và tất nhiên là Iptables đã phải được cài đặt và thiết lập :-) Việc thiết lập cấu hình cho Input Chain, Output Chain và Forward gọi là thiết lập nội quy (rules) cho Firewall. Hầu hết Iptables đã được cài đặt trong nhân của một số Version Linux thông dụng hiện nay: Redhat, Mandrake, SuSe..

Nếu không bạn có thể tìm thấy Iptables ở:

http://www.linuxapps.com/

http://www.linuxapps.com/

http://www.freshmeat.net/

Một số cấu hình đơn giản

Một số Port và Service thong dụng trên một hệ thống Unix/Linux:

Port Protocol Service

21 TCP FTP

22 TCP SSH

23 TCP TELNET

25 TCP SMTP

53 TCP NAME (DNS)

79 TCP FINGER

80 TCP HTTP

110 TCP POP3

111 TCP SUNRPC

443 TCP HTTPS

901 TCP SAMBA-SWAT

1024 TCP KDM

3306 TCP MYSQL

6000 TCP X11

Bây giờ chúng ta bắt đầu tìm hiểu những chức năng và cách cấu hình cơ bản của Iptables.

Ví dụ: Khi PC của bạn send một Packet đến http://www.yahoo.com/ để yêu cầu hồi đáp trang HTML. Thì trước hết nó phải được chuyển qua Output Chain. Lúc này các nội quy (rule) sẽ hoạt động, nó sẽ kiểm tra yêu cầu Send Packet. Nếu yêu cầu đó hợp lệ thì Packet đó sẽ được đi.

Page | 66 Copyright by Tocbatdat

Tiếp đó khi Yahoo Reply Packet về máy bạn thì nó cũng sẽ phải đi qua Input Chain. Đương nhiên là nó phải phù hợp được với các Rule thì mới được vào máy của bạn. Rắc rối và phức tạp cứ y như hải quan ở Nội Bài Air Port phải không ?

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

-s là tuỳ chọn để ngăn chặn một địa chỉ IP hay DNS nguồn. Tương tự ta có dòng lệnh:

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. Thì tuỳ chọn -j sẽ giúp bạn thực hiện điều đó như: ACCEPT, DENY hay DROP (sử dụng kết hợp với tuỳ chọn -s nhé)...Chắc tôi không cần phải đưa ra nghĩa tiếng việt của 3 từ ACCEPT, DENY, DROP nữa nhỉ. 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

DENY hay ACCEPT cũng tương tự nhé ;-p Lệnh đơn trên sẽ bỏ qua mọi thứ đến từ 192.78.4.0

Chúng ta còn có thể bỏ qua một PC nhất định trên một mạng. Nếu bạn không muốn những PC trong mạng liên lạc và nói chuyện với PC đó hay liên lạc ra ngoài. Bạn chỉ cần thay đổi tham số Input, Output và thay đổi tuỳ chọn -s, -d

Nếu chúng ta muốn bỏ qua yêu cầu phản hồi Telnet từ máy PC này. Trong trường hợp này có ít nhất 3 giao thức có thể được chỉ rõ: TCP, UDP và ICMP.

Tuỳ chọn -p được sử dụng để chỉ rõ chi tiết giao thức cần xử lý. Telnet là một giao thức hoạt động trên Port 23/TCP lên chúng ta sẽ có 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 (Multi IP) thì sẽ có chút thay đổi nhỏ 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

Page | 67 Copyright by Tocbatdat

- 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 Cấu hình phức hợp lên một chút (một chút thôi nha)

Bạn có một mạng LAN và có một kết nối Internet. Chúng ta sẽ nhất trí 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 ở ngoài Internet (vì những lý do an toàn). Đừng lo Iptables sẽ lo cho bạn điều này. Bạn có thể sử dụng tuỳ chọn -i và -o. Cách ngăn chặn trên Output Chain tỏ ra hợp lý hơn là cách ngăn chặn ở Input Chain. Bạn có thể sử dụng thêm tuỳ chọn -i

iptables -A INPUT -p tcp --destination-port telnet -i ppp0 -j DROP

Command 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.

Nếu bạn biết được các Packet sử dụng những Protocol nhất định, nếu nó là TCP thì bạn cũng có thể dễ dàng biết được Port mà nó sử dụng. Khi hai PC kết nối với nhau qua giao thức TCP.

Thì trước tiên kết nối đó phải được khởi tạo trước. Đây là công việc của một gói SYN. Một SYN Packet sẽ làm nhiệm vụ nói với một PC khác rằng nó đã sẵng sàng để kết nối. Bây giờ chỉ một PC đòi hỏi gửi một SYN Packet. Nếu bạn ngăn chặn những gói SYN vào. Nó sẽ Stop các PC khác từ những Service đang được Open. Điều đó có nghĩa là nó sẽ ngăn chặn được các PC trong LAN của bạn với các PC ở ngoài Internet:

iptables -A INPUT -i ppp0 -p tcp --syn -j DROP

Nếu bạn vẫn muốn duy trì một Service nhưng lại không muốn các PC ở ngoài Internet truyền thông với nó. Chỉ cho các PC trong LAN truyền thông với nóThì bạn có thể ngăn chặn tất các SYN Packet trên Port của Service đó:

iptables -A INPUT -i ppp0 -p tcp --syn --destination-port ! 80 -j DROP

Theo mặc định thì Input Chain và Output Chain luôn được cấu hình ở chế độ Accept. Còn Forward luôn được thiết lập ở chế độ Deny. Nếu bạn muốn sử dung Server và Firewall như một Router. Bạn phải cấu hình cho Forward ở chế độ Accept

Page | 68 Copyright by Tocbatdat

Hiện trên Internet có rất nhiều Script cấu hình Rules cho Iptables rất tuyệt. Bạn có thể Down chúng về áp dụng ngay trên hệ thống của mình luôn. Cũng có một số công cụ cấu hình Iptables trên X đó.

Lời kết

Bảo mật luôn là một vấn đề phức tạp tốn nhiều giấy mực. Hy vọng qua bài viết này bạn sẽ hiểu và nắm được cách sử dụng Iptables. Mọi thứ đều chỉ mang tính chất tương đối. Vì vậy nếu muốn giữu cho hệ thống của mình an toàn. Bạn luôn phải xem xét kiểm tra Firewall, các Bug...Và luôn ở trạng thái trực chiến ở mức cao nhất...

7. Cài đặt và cấu hình SQUID làm Proxy Server