#

Iptables là gì? Đặc điểm và tính năng của Iptables

Iptables là một tiện ích tường lửa linh hoạt dành cho Linux với những công dụng ưu việt nhất hiện nay. Các loại chuỗi phổ biến của iptables là gì và chúng có những tính năng như thế nào? Hay các kết nối của iptables có những quy tắc gì? Hãy cùng BKHOST tìm hiểu ngay trong bài viết dưới đây.

Iptables là gì?

Iptables la gi

Iptables là một tiện ích tường lửa dành cho hệ điều hành Linux, có khả năng tự thiết lập các quy tắc kết nối trên hệ thống hỗ trợ kiểm soát truy cập.

Đăng ký tên miền tại BKHOST

BKHOST đang có chương trình khuyến mại cực shock dành cho khách hàng đăng ký mới tên miền.

  • Giảm giá lên đến 70%.
  • Bắt đầu chỉ từ 59k/năm đầu.

Rất nhiều tên miền đẹp đang chờ bạn. Nhanh tay sở hữu ngay hôm nay trước khi đối thủ của bạn nhắm tới.

tên miền website

Sử dụng cách truy xuất gói sau để cài đặt và cập nhật iptables trên Linux:

$ sudo apt-get install iptables

Firestarter có thể được sử dụng thay thế GUI với các dòng lệnh khá đơn giản. Tuy nhiên, có một số lưu ý khi định cấu hình các quy tắc iptables cần chú ý. Chẳng hạn như hãy khóa máy chủ SSH nếu đang mở cổng. Ví dụ về một trường hợp lỗi đó là nếu SSH vào một máy chủ bằng một lệnh sai thì hệ thống sẽ bị khóa vĩnh viễn cho đến khi nó được sửa đổi và khắc phục hoàn toàn.

Các loại chuỗi Iptables

Iptables gồm có ba chuỗi chính đó là input, forward, và output.

  • Input là chuỗi đầu vào có khả năng kiểm soát các hành vi của kết nối đến. Chẳng hạn như nếu phát hiện có một SSH đang cố gắng kết nối với PC hay máy chủ thì iptables sẽ tiến hành tìm kiếm một quy tắc trong chuỗi đầu vào để khớp với địa chỉ IP và cổng đó.
  • Forward là chuỗi chuyển tiếp hỗ trợ các kết nối đến không khả thi trong hệ thống cục bộ. Trong bộ định tuyến có các dữ liệu luôn được gửi đến để chuyển tiếp cho các mục tiêu khác. Trong khi các dữ liệu này không được sử dụng cho bộ định tuyến, NATing hoặc các bộ phận khác của hệ thống.

Để kiểm tra hệ thống có đang sử dụng hay yêu cầu chuỗi chuyển tiếp hay không hãy sử dụng lệnh:

iptables -L -v

Chuoi Iptables

Trên đây là hình ảnh của một máy chủ đang hoạt động không hạn chế với các kết nối đến và đi. Trong đó, Input đã xử lý 11GB gói, Output đã xử lý 17GB gói và Forward không thực hiện bất kỳ công việc xử lý gói nào. Điều này là do máy chủ không thực hiện bất kỳ loại chuyển tiếp hoặc đang được sử dụng giống như một thiết bị truyền qua.

  • Output là chuỗi đầu ra dành cho các kết nối đi. Chẳng hạn như iptables sẽ kiểm tra chuỗi đầu ra của một ping howtogeek.com để xem xét các quy tắc liên quan trước khi thực hiện thao tác cho phép hoặc từ chối nỗ lực kết nối đó.

Lưu ý: Khi ping một máy chủ bên ngoài không chỉ sử dụng đến Input mà còn cần đến Output để trả về các dữ liệu cần thiết. Hoặc nếu sử dụng iptables để khoá hệ thống máy chủ cần chú ý tới các giao thức hoạt động hai chiều liên quan tới I / O như SSH.

Chế độ mặc định của chuỗi chính sách

Trước khi đi vào và định cấu hình các quy tắc cụ thể, bạn sẽ muốn quyết định hành vi mặc định của ba chuỗi là gì. Nói cách khác, bạn muốn iptables làm gì nếu kết nối không khớp với bất kỳ quy tắc hiện có nào.

Để kiểm tra các chuỗi chính sách có đang được định cấu hình khớp với lưu lượng truy cập hay không hãy chạy lệnh:

iptables -L

Che do mac dinh cua chuoi chinh sach iptables

Sử dụng lệnh grep để cung cấp một Output sạch hơn và các chuỗi này đều chấp nhận lưu lượng truy cập trên hệ thống. Nếu muốn hệ thống chấp nhận các kết nối mặc định hãy sử dụng các lệnh sau:

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT

Sau khi đã chấp nhận các quy tắc mặc định hãy sử dụng iptables để từ chối các địa chỉ IP hoặc một số cổng để nhận các lệnh mới.

Nếu chỉ cho phép các kết nối mong muốn hãy thay đổi chính sách mặc định của chuỗi để bỏ qua các thao tác không cần thiết. Tuy nhiên, hành động này chỉ dành cho các máy chủ có chứa các thông tin quan trọng và sử dụng một địa chỉ IP duy nhất:

iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

Phản hồi Connection-specific

Sau khi đã định cấu hình xong các chính sách chuỗi mặc định trên hệ thống có thể thêm các quy tắc vào iptables. Điều này cho phép xác định nhiệm vụ của các kết nối từ hoặc đến một địa IP/cổng cụ thể. Dưới đây là ba phản hồi cơ bản và phổ biến nhất hiện nay:

  • Accept là chấp nhận các kết nối.
  • Drop ngắt các kết nối hoặc không có kết nối phản hồi lại.
  • Reject không cho phép kết nối nhưng cho phép phản hồi lại các kết nối khác.

Để phân biệt 3 quy tắc này hãy sử dụng PC để ping một máy chủ Linux thông qua iptables đã được cấu hình sẵn.
Accept:

Phan hoi cho ket noi-Accept

Drop:

Phan hoi cho ket noi-Drop

Reject:

Phan hoi cho ket noi-Reject

Allowing hoặc Blocking các kết nối

Sau khi chuỗi chính sách đã được định cấu hình thành công. Tiếp theo có thể định cấu hình iptables nhằm kiểm soát các kết nối như cho phép, chặn địa chỉ, dải địa chỉ và cổng cụ thể.

Tùy vào nhu cầu và cách định cấu hình chuỗi chính sách mà các kết nối được đặt là DROP và có thể chuyển thành ACCEPT hoặc REJECT
Có thể sử dụng iptables -A để xâu chuỗi các quy tắc lại với nhau và sử dụng một danh sách hiện tại để kiểm tra và tìm ra quy tắc phù hợp nhất. Để chèn một quy tắc bất kỳ hãy sử dụng lệnh iptables -I [chain] [number] để chỉ định số mà nó phải có trong danh sách.

Kết nối từ một địa chỉ IP duy nhất

Để chặn tất cả các kết nối từ địa chỉ IP 10.10.10.10 hãy chạy lệnh:

iptables -A INPUT -s 10.10.10.10 -j DROP

Kết nối từ nhiều địa chỉ IP

Để chặn tất cả các địa chỉ IP trong phạm vi mạng 10.10.10.0/24 hãy sử dụng netmask hoặc ký hiệu gạch chéo tiêu chuẩn để chỉ định dải địa chỉ IP.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

hoặc
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Kết nối với một cổng cụ thể

Để chặn kết nối SSH từ 10.10.10.10 hãy sử dụng lệnh:

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Có thể thay thế SSH bằng các giao thức hoặc cổng bất kỳ khác. Phần -p tcp của mã cho iptables biết loại kết nối mà giao thức đang sử dụng. Chẳng hạn như nếu chặn một giao thức sử dụng UDP thay vì TCP thì -p udp sẽ được sử dụng để thay thế cần thiết.

Để chặn kết nối SSH từ các địa chỉ IP sử dụng mã lệnh:

iptables -A INPUT -p tcp --dport ssh -j DROP

Connection States

Hầu hết các giao thức sẽ yêu cầu giao tiếp hai chiều, chẳng hạn như muốn cho phép kết nối SSH trên hệ thống sẽ yêu cầu tới các quy tắc của Input và Output. Với trường hợp SSH chỉ được cho phép kết nối vào hệ thống cụ thể thì chúng cung cấp khả năng cho phép giao tiếp hai chiều. Tuy nhiên, chúng chỉ có thể được thiết lập kết nối một chiều.

Chẳng hạn như với vị trí cho phép kết nối SSH từ 10.10.10.10 sẽ không cho phép kết nối với TO 10.10.10.10. Đồng thời, hệ thống sẽ gửi lại thông tin qua SSH đã được thiết lập trước đó hỗ trợ cho việc giao tiếp giữa hai máy chủ được khả thi hơn.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Saving Changes

Các thay đổi được thực hiện với các quy tắc iptables sẽ bị loại bỏ trong lần khởi động dịch vụ tiếp theo. Nếu muốn lưu lại các thay đổi này hãy thực hiện các lệnh với các bản phân phối như:

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:
/sbin/service iptables save

Hoặc:
/etc/init.d/iptables save

Các tùy chọn lệnh khác

Liệt kê các quy tắc iptables hiện đang được cấu hình bằng lệnh:

iptables -L

Bằng cách thêm – hostnames, giao thức hay mạng để thực hiện các tác vụ cần thiết. Chẳng hạn như thêm tuỳ chọn -v để cung cấp các thông tin về gói và byte hoặc thêm -n để liệt kê các thông tin ở dạng số.

Để xóa tất cả các quy tắc hiện được định cấu hình, sử dụng lệnh:

iptables -F

Tổng kết về Iptables

Trên đây là những thông tin về Iptables và các chuỗi chính sách phổ biến nhất của iptables mà chúng tôi muốn chia sẻ tới bạn.

Nếu bạn bất cứ câu hỏi nào liên quan đến iptables, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Đăng ký tên miền .VN tại BKHOST

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký tên miền .VN:

  • Giảm ngay 140k.
  • Miễn phí 100% dịch vụ khởi tạo tên miền .VN

Còn rất nhiều tên miền .VN đẹp đang chờ bạn. Nhanh tay sở hữu ngay hôm nay trước khi đối thủ của bạn nhắm tới.

kiểm tra tên miền .vn

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger