Thứ Ba, 17 tháng 8, 2010

Iptables

Lưu ý: Bài viết này chỉ mang tính chất học hỏi và trao đổi kinh nghiệm…Các bạn có thể tự do sử dụng nó, nhưng mong các bạn tôn trọng Copright một chút. Khi cần trích dẫn ở trỗ nào trong tài liệu. Vui long ghi rõ nguồn và tên người viết…Rất cảm ơn bạn đã quan tâm đến bài viết của tôi.

Nguồn:

http://www.linuxdoc.org/
http://www.linux.org/

1) Vài điều căn bản.

Trong hệ thống Unix/Linux có rất nhiều Firewall...Trong số đó có một Firewall được cấu hình và hoạt động trên nền Console rất nhỏ và tiện dụng = = > Đó là Iptables. Bài viết này không có ý định trình bày chi tiết về cách sử dụng Iptables. Nhưng tôi hy vọng là qua nó bạn có thể phần nào hiểu và cấu hình được Iptables ở mức cơ bản...

Trước hết bạn cần phải hiểu Firewall Iptables sẽ xử lý như thế nào đối với những packets leaving, entering hay passing đi vào hay đi ra từ PC.

- 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 ngoài Network đều phải đi qua Output Chain.
- 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/

2) 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. 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
- 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

3) 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

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 đó.

5) 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...

Chúc bạn thành công

Sưu tầm
(E-mail: binhnx2000@yahoo.com | Home: http://binhnx.hypermart.net)

Không có nhận xét nào:

Đăng nhận xét