Hướng dẫn cho người mới bắt đầu về iptables, Tường lửa Linux

Mục lục:

Hướng dẫn cho người mới bắt đầu về iptables, Tường lửa Linux
Hướng dẫn cho người mới bắt đầu về iptables, Tường lửa Linux

Video: Hướng dẫn cho người mới bắt đầu về iptables, Tường lửa Linux

Video: Hướng dẫn cho người mới bắt đầu về iptables, Tường lửa Linux
Video: Cách sửa lỗi mất kết nối internet trên máy tính windows 7, 8 , 10 một cách dễ dàng - YouTube 2024, Có thể
Anonim
Iptables là một tiện ích tường lửa cực kỳ linh hoạt được xây dựng cho các hệ điều hành Linux. Cho dù bạn là người mới sử dụng Linux hay một quản trị viên hệ thống, có thể có một số cách mà iptables có thể là một cách sử dụng tuyệt vời cho bạn. Đọc tiếp khi chúng tôi chỉ cho bạn cách cấu hình tường lửa Linux linh hoạt nhất.
Iptables là một tiện ích tường lửa cực kỳ linh hoạt được xây dựng cho các hệ điều hành Linux. Cho dù bạn là người mới sử dụng Linux hay một quản trị viên hệ thống, có thể có một số cách mà iptables có thể là một cách sử dụng tuyệt vời cho bạn. Đọc tiếp khi chúng tôi chỉ cho bạn cách cấu hình tường lửa Linux linh hoạt nhất.

ảnh chụp bởi ezioman.

Về iptables

iptables là một tiện ích tường lửa dòng lệnh sử dụng các chuỗi chính sách để cho phép hoặc chặn lưu lượng truy cập. Khi một kết nối cố gắng thiết lập chính nó trên hệ thống của bạn, iptables tìm kiếm một quy tắc trong danh sách của nó để phù hợp với nó. Nếu nó không tìm thấy, nó sẽ chuyển sang hành động mặc định.

iptables hầu như luôn được cài đặt sẵn trên bất kỳ bản phân phối Linux nào. Để cập nhật / cài đặt nó, chỉ cần lấy gói iptables:

sudo apt-get install iptables

Có các lựa chọn thay thế GUI cho iptables như Firestarter, nhưng iptables không thực sự khó khi bạn có một vài lệnh. Bạn muốn cực kỳ cẩn thận khi định cấu hình các quy tắc iptables, đặc biệt nếu bạn đang SSH vào máy chủ, bởi vì một lệnh sai có thể khóa vĩnh viễn bạn cho đến khi được khắc phục thủ công tại máy vật lý.

Các loại dây chuyền

iptables sử dụng ba chuỗi khác nhau: đầu vào, chuyển tiếp và đầu ra.

Đầu vào - Chuỗi này được sử dụng để kiểm soát hành vi cho các kết nối đến. Ví dụ: nếu người dùng cố gắng SSH vào máy tính / máy chủ của bạn, iptables sẽ cố gắng khớp địa chỉ IP và cổng với quy tắc trong chuỗi đầu vào.

Phía trước - Chuỗi này được sử dụng cho các kết nối đến không thực sự được phân phối cục bộ. Hãy nghĩ về một bộ định tuyến - dữ liệu luôn được gửi đến nó nhưng hiếm khi thực sự được định sẵn cho chính bộ định tuyến; dữ liệu chỉ được chuyển tiếp đến mục tiêu của nó. Trừ khi bạn đang thực hiện một số loại định tuyến, NATing hoặc một cái gì đó khác trên hệ thống yêu cầu chuyển tiếp, bạn thậm chí sẽ không sử dụng chuỗi này.

Có một cách chắc chắn để kiểm tra xem hệ thống của bạn có sử dụng / cần chuỗi chuyển tiếp hay không.

iptables -L -v

Ảnh chụp màn hình ở trên là một máy chủ đang chạy trong vài tuần và không có giới hạn về kết nối đến hoặc đi. Như bạn có thể thấy, chuỗi đầu vào đã xử lý 11GB gói và chuỗi đầu ra đã xử lý 17GB. Chuỗi phía trước, mặt khác, không cần thiết để xử lý một gói đơn lẻ. Điều này là do máy chủ không thực hiện bất kỳ loại chuyển tiếp nào hoặc đang được sử dụng làm thiết bị chuyển tiếp.
Ảnh chụp màn hình ở trên là một máy chủ đang chạy trong vài tuần và không có giới hạn về kết nối đến hoặc đi. Như bạn có thể thấy, chuỗi đầu vào đã xử lý 11GB gói và chuỗi đầu ra đã xử lý 17GB. Chuỗi phía trước, mặt khác, không cần thiết để xử lý một gói đơn lẻ. Điều này là do máy chủ không thực hiện bất kỳ loại chuyển tiếp nào hoặc đang được sử dụng làm thiết bị chuyển tiếp.

Đầu ra - Chuỗi này được sử dụng cho các kết nối gửi đi. Ví dụ, nếu bạn cố gắng ping howtogeek.com, iptables sẽ kiểm tra chuỗi đầu ra của nó để xem các quy tắc liên quan đến ping và howtogeek.com trước khi đưa ra quyết định cho phép hoặc từ chối nỗ lực kết nối.

Báo trước

Mặc dù ping một máy chủ bên ngoài có vẻ như một cái gì đó mà sẽ chỉ cần đi qua chuỗi đầu ra, hãy nhớ rằng để trả về dữ liệu, chuỗi đầu vào cũng sẽ được sử dụng. Khi sử dụng iptables để khóa hệ thống của bạn, hãy nhớ rằng rất nhiều giao thức sẽ yêu cầu giao tiếp hai chiều, vì vậy cả chuỗi đầu vào và đầu ra sẽ cần được cấu hình đúng cách. SSH là một giao thức phổ biến mà mọi người quên cho phép trên cả hai chuỗi.

Chuỗi hành vi chính sách mặc định

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 xem bạn muốn 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 tại nào?

Để xem chuỗi chính sách của bạn hiện được cấu hình để thực hiện với lưu lượng truy cập chưa từng có, hãy chạy

iptables -L

chỉ huy.

Như bạn có thể thấy, chúng tôi cũng sử dụng lệnh grep để cung cấp cho chúng tôi đầu ra sạch hơn. Trong ảnh chụp màn hình đó, chuỗi của chúng tôi hiện đang được xác định để chấp nhận lưu lượng truy cập.
Như bạn có thể thấy, chúng tôi cũng sử dụng lệnh grep để cung cấp cho chúng tôi đầu ra sạch hơn. Trong ảnh chụp màn hình đó, chuỗi của chúng tôi hiện đang được xác định để chấp nhận lưu lượng truy cập.

Nhiều lần không, bạn sẽ muốn hệ thống của mình chấp nhận kết nối theo mặc định. Trừ khi bạn đã thay đổi các quy tắc về chuỗi chính sách trước đây, cài đặt này phải được định cấu hình. Dù bằng cách nào, đây là lệnh chấp nhận kết nối theo mặc định:

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

Theo mặc định cho quy tắc chấp nhận, bạn có thể sử dụng iptables để từ chối các địa chỉ IP cụ thể hoặc số cổng, trong khi tiếp tục chấp nhận tất cả các kết nối khác. Chúng ta sẽ đến các lệnh đó sau một phút.

Nếu bạn muốn từ chối tất cả các kết nối và tự xác định những kết nối nào bạn muốn cho phép kết nối, bạn nên thay đổi chính sách mặc định của các chuỗi của bạn để thả. Việc làm này có thể chỉ hữu ích cho các máy chủ chứa thông tin nhạy cảm và chỉ có cùng địa chỉ IP kết nối với chúng.

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Phản hồi theo kết nối cụ thể

Với các chính sách chuỗi mặc định của bạn được cấu hình, bạn có thể bắt đầu thêm các quy tắc vào iptables để nó biết phải làm gì khi nó gặp một kết nối từ hoặc đến một địa chỉ IP hoặc cổng cụ thể. Trong hướng dẫn này, chúng ta sẽ đi qua ba câu trả lời cơ bản và thường được sử dụng nhất.

Chấp nhận - Cho phép kết nối.

Rơi vãi - Thả kết nối, hành động như nó chưa bao giờ xảy ra. Điều này là tốt nhất nếu bạn không muốn nguồn để nhận ra hệ thống của bạn tồn tại.

Từ chối - Không cho phép kết nối nhưng gửi lại lỗi. Điều này là tốt nhất nếu bạn không muốn một nguồn cụ thể kết nối với hệ thống của mình, nhưng bạn muốn họ biết rằng tường lửa của bạn đã chặn chúng.

Cách tốt nhất để hiển thị sự khác biệt giữa ba quy tắc này là để hiển thị những gì nó trông giống như khi một máy tính cố gắng ping một máy Linux với iptables cấu hình cho mỗi một trong các thiết lập này.

Cho phép kết nối:

Từ chối kết nối:
Từ chối kết nối:
Image
Image

Cho phép hoặc chặn các kết nối cụ thể

Với chuỗi chính sách được định cấu hình, giờ đây bạn có thể định cấu hình iptables để cho phép hoặc chặn địa chỉ, dải địa chỉ và cổng cụ thể. Trong các ví dụ này, chúng tôi sẽ đặt các kết nối thành

DROP

nhưng bạn có thể chuyển đổi chúng thành

ACCEPT

hoặc là

REJECT

tùy thuộc vào nhu cầu của bạn và cách bạn định cấu hình chuỗi chính sách của mình.

Lưu ý: Trong các ví dụ này, chúng ta sẽ sử dụng

iptables -A

để thêm các quy tắc vào chuỗi hiện có. iptables bắt đầu ở đầu danh sách của nó và đi qua từng quy tắc cho đến khi nó tìm thấy một quy tắc phù hợp. Nếu bạn cần phải chèn một quy tắc trên một quy tắc khác, bạn có thể sử dụng

iptables -I [chain] [number]

để chỉ định số cần có trong danh sách.

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

Ví dụ này cho thấy làm thế nào để chặn tất cả các kết nối từ địa chỉ IP 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Kết nối từ một dải địa chỉ IP

Ví dụ này cho thấy làm thế nào để chặn tất cả các địa chỉ IP trong phạm vi mạng 10.10.10.0/24. Bạn có thể sử dụng một netmask hoặc ký hiệu cắt giảm tiêu chuẩn để xác định phạm vi địa chỉ IP.

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

hoặc là

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ể

Ví dụ này cho thấy làm thế nào để chặn các kết nối SSH từ 10.10.10.10.

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

Bạn có thể thay thế "ssh" bằng bất kỳ giao thức hoặc số cổng nào. Các

-p tcp

một phần của mã cho iptables loại kết nối mà giao thức sử dụng. Nếu bạn đang chặn giao thức sử dụng UDP thay vì TCP, thì

-p udp

sẽ là cần thiết để thay thế.

Ví dụ này cho thấy làm thế nào để chặn các kết nối SSH từ bất kỳ địa chỉ IP nào.

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

Trạng thái kết nối

Như chúng tôi đã đề cập trước đó, rất nhiều giao thức sẽ yêu cầu giao tiếp hai chiều. Ví dụ, nếu bạn muốn cho phép các kết nối SSH vào hệ thống của bạn, các chuỗi đầu vào và đầu ra sẽ cần một quy tắc được thêm vào chúng. Nhưng, nếu bạn chỉ muốn SSH vào hệ thống của bạn để được phép? Việc không thêm quy tắc vào chuỗi đầu ra cũng cho phép các lần gửi SSH đi?

Đó là nơi các trạng thái kết nối đến, cung cấp cho bạn khả năng bạn cần để cho phép liên lạc hai chiều nhưng chỉ cho phép thiết lập các kết nối một chiều. Hãy xem ví dụ này, nơi các kết nối SSH từ 10.10.10.10 được cho phép, nhưng các kết nối SSH đến 10.10.10.10 thì không. Tuy nhiên, hệ thống được phép gửi lại thông tin qua SSH miễn là phiên đã được thiết lập, điều này làm cho giao tiếp SSH có thể giữa hai máy chủ này.

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

Lưu thay đổi

Những thay đổi mà bạn thực hiện đối với các quy tắc iptables của bạn sẽ bị loại bỏ trong lần tiếp theo dịch vụ iptables được khởi động lại trừ khi bạn thực hiện lệnh để lưu các thay đổi. Lệnh này có thể khác nhau tùy thuộc vào phân phối của bạn:

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:

/sbin/service iptables save

Hoặc là

/etc/init.d/iptables save

Các lệnh khác

Liệt kê các quy tắc iptables hiện được định cấu hình:

iptables -L

Thêm

-v

tùy chọn sẽ cung cấp cho bạn thông tin gói và byte và thêm

-n

sẽ liệt kê mọi thứ bằng số. Nói cách khác - tên máy chủ, giao thức và mạng được liệt kê dưới dạng số.

Để xóa tất cả các quy tắc được cấu hình hiện tại, bạn có thể đưa ra lệnh tuôn ra.

iptables -F

Đề xuất: