Linux có thể nổi tiếng về an ninh, nhưng nó không hoàn hảo. Nhiều bản phân phối cũng không có mặc định bảo mật tốt nhất, vì vậy tốt nhất là nên triển khai một số phương pháp hay nhất để bảo mật. Một ví dụ như vậy là sử dụng tường lửa.

Có một vài tùy chọn cho tường lửa trong Linux, nhưng hầu hết chỉ là các trình bao bọc xung quanh iptables. Đối với hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cách làm việc trực tiếp với iptables.

Iptables là gì?

Iptables là tường lửa hạt nhân Linux. Nó đi kèm với mọi bản phân phối Linux và đó là cách trực tiếp nhất để kiểm soát lưu lượng truy cập vào và ra khỏi máy tính của bạn.

Iptables có tiếng là phức tạp và có thể. Bạn không cần phải biết mọi thứ về iptables để sử dụng nó một cách hiệu quả trên máy tính của bạn. Bạn chỉ cần một số kiến ​​thức cơ bản về cách nó hoạt động và các quy tắc của nó được cấu trúc như thế nào.

Liên quan : Làm thế nào để xử lý và cấu hình tường lửa trong Linux

Cấu trúc lệnh

Tất cả các quy tắc iptables đều theo cùng một cấu trúc cơ bản. Mỗi quy tắc là một dòng lệnh cho iptables cho biết cách xử lý lưu lượng trên một cổng cụ thể. Hãy xem ví dụ dưới đây:

 -A INPUT -i eth0 -p tcp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - nhập 80 -j ACCEPT 

Điều đó có thể trông giống như rất nhiều, nhưng nó thực sự đơn giản khi bạn phá vỡ nó xuống. Đầu tiên, quy tắc này bắt đầu bằng -A vì nó sẽ gắn thêm vào các quy tắc iptables của bạn.

Tiếp theo, cờ -i chỉ định giao diện cho quy tắc. Trong trường hợp này, đó là eth0 . Khi bạn viết các quy tắc của riêng mình, hãy đảm bảo rằng bạn biết bạn đang kết nối giao diện nào với mạng của mình.

Cờ sau, -p, đặt tên cho giao thức. Quy tắc này dành cho tcp, đó là lưu lượng truy cập web.

Cờ -m là một chút khác nhau. Nó được sử dụng để khẳng định rằng có một điều kiện phải được đáp ứng để lưu lượng truy cập không bị từ chối. Điều kiện trong quy tắc này là trạng thái.

Nhà nước thực sự là lá cờ tiếp theo. Bạn cần đưa ra - liệt kê danh sách các trạng thái có thể chấp nhận được viết bằng tất cả các chữ cái và được phân tách bằng dấu phẩy. Quy tắc này chấp nhận cả kết nối mới và được thiết lập.

Thứ hai để lá cờ cuối cùng ở đây là --sport . Nó là viết tắt của “cổng nguồn” và nó cho iptables biết lưu lượng truy cập đến từ đâu. Ngoài ra còn có một cờ --dport là viết tắt của “cổng đích”. Nó được sử dụng cho các quy tắc OUTPUT để xử lý lưu lượng cổng đến từ đó.

Cuối cùng, có cờ -j . Nó cho iptable biết hành động nào để "nhảy" tới. Trong trường hợp này, nó nên ACCEPT lưu lượng truy cập đáp ứng các điều kiện trước đó.

Sử dụng Tệp

Bạn có thể nhập các quy tắc của bạn vào iptables theo cách thủ công từng cái một. Đó là vô cùng tẻ nhạt, và nó rất dễ dàng để mất theo dõi bạn đang ở đâu và những gì bạn đang làm. Tốt hơn hết là tạo tệp quy tắc mà bạn có thể nhập vào iptables cùng một lúc.

Không quan trọng bạn tạo tệp ở đâu. Mọi người thậm chí làm cho họ trong /tmp bởi vì iptables lưu trữ kết quả sau khi nó được nhập khẩu.

Tạo tệp của bạn. Hướng dẫn này sẽ sử dụng /tmp/iptables-ip4 . Trong tệp thêm hai dòng sau. Tất cả các quy tắc của bạn sẽ đi giữa chúng.

 * lọc # Quy tắc của bạn Ở đây COMMIT 

Tạo quy tắc của bạn

Bạn có thể bắt đầu thiết lập các quy tắc của mình. Đây chỉ là những gợi ý. Rõ ràng, nếu bạn đang chạy các dịch vụ khác hoặc cần các cổng khác mở, bạn chắc chắn có thể tinh chỉnh một số thứ hoặc thêm các quy tắc của riêng bạn.

Vòng lặp

Giao diện loopback là một giao diện nội bộ mà Linux sử dụng.

 -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT 

Ping

Đây là vấn đề ưu tiên. Nhiều người không thích cho phép ping ở tất cả trên máy tính để bàn của họ. Nó có thể hữu ích để có nó, tuy nhiên, để kiểm tra các kết nối. Nếu bạn muốn cho phép ping, hãy thêm các quy tắc dưới đây. Nếu không, hãy loại trừ chúng.

 -A INPUT -i eth0 -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -i eth0 -p icmp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN -j CHẤP NHẬN -A OUTPUT - o eth0 -p icmp -j ACCEPT 

Trang web

Bạn rõ ràng muốn có thể kết nối với Web. Mặt khác, bạn không muốn cho phép các kết nối có nguồn gốc từ Internet.

 -A INPUT -i eth0 -p tcp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - mục 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - nhập 443 -j ACCEPT -Một OUTPUT -o eth0 -p tcp -m tcp --dịch chuyển 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --danh mục 443 -j ACCEPT 

Bạn cũng sẽ cần phải cho phép các kết nối DNS để máy tính của bạn có thể sử dụng URL thay vì chỉ địa chỉ IP bởi vì điều đó sẽ không được thuận tiện. Thay thế địa chỉ IP của bộ định tuyến của bạn cho địa chỉ được sử dụng tại đây.

 -Một INPUT -i ens3-192.168.1.1 -p udp --sport 53 -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN -j CHẤP NHẬN -A OUTPUT -o ens3-192.168.1.1 -p udp --dport 53 -m udp -j ACCEPT 

Thời gian

Hầu hết các máy tính để bàn Linux đều sử dụng NTP để thiết lập và duy trì thời gian hệ thống từ Internet. Bạn cần cho phép máy tính kết nối với máy chủ NTP để nhận thời gian.

 -A INPUT -i eth0 -p udp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - nhập 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --sắp 123 -j ACCEPT 

In

Trừ khi bạn đang sử dụng máy in USB hoặc máy chủ in ngoài, bạn cần bật kết nối đến CUPS.

 -A INPUT -p udp -m udp --dịch chuyển 631 -j CHẤP NHẬN-INPUT -p tcp -m tcp --dịch vụ 631 -j CHẤP NHẬN -A OUTPUT -p udp -m udp --sport 631 -j ACCEPT -A ĐẦU RA -p tcp -m tcp --sport 631 -j ACCEPT 

E-mail

Có thể bạn cũng muốn có thể gửi và nhận email. Email có thể phức tạp. Các cổng được cho phép ở đây là các cổng email SSL. Nếu bạn cần sử dụng email không an toàn, hãy thay thế các cổng đó.

 # IMAP -A INPUT -i eth0 -p tcp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - nhập 993 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dịch chuyển 993 -j ACCEPT # POP3 -A INPUT -i eth0 -p tcp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - mục 995 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 995 -j CHẤP NHẬN # SMTP -A INPUT -i eth0 -p tcp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - mục 465 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 465 -j ACCEPT 

SSH

Để sử dụng đầy đủ các kết nối SSH, bạn cần cho phép cả đầu vào và đầu ra qua SSH.

 # Input -A INPUT -i ens3 -p tcp -m state --state MỚI, được thành lập - xuất 22 -j ACCEPT -A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT # Output -A OUTPUT -o ens3 -p tcp -m state --state MỚI, ĐƯỢC THÀNH LẬP - nhập 22 -j ACCEPT -A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT 

DHCP

Hầu hết các máy tính để bàn Linux đều sử dụng DHCP để tự động nhận địa chỉ IP từ bộ định tuyến. DHCP sử dụng các cổng riêng của mình, vì vậy chúng cũng cần được truy cập. Nếu bạn đang sử dụng IP tĩnh, bạn không cần các quy tắc này.

 -A INPUT -i eth0 -p udp -m state --state ĐƯỢC THÀNH LẬP, LIÊN QUAN - mục 67:68 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --dịch 67:68 -j ACCEPT 

Từ chối mọi thứ khác

Cuối cùng, bạn sẽ nói với iptables để từ chối hoàn toàn tất cả mọi thứ mà bạn đã không cho phép rõ ràng trong các quy tắc trên.

 -A INPUT -j REJECT -A FORWARD -j REJECT -A DỰ ÁN -J DỰ ÁN 

Sau khi tất cả mọi thứ, quy tắc của bạn sẽ trông giống như thế này.

Nhập quy tắc của bạn

Bây giờ bạn có danh sách quy tắc iptables đầy đủ chức năng. Bạn chỉ cần chuyển nó sang iptables để sử dụng.

Trong trường hợp một số quy tắc đã được thêm vào theo thời gian, hãy xóa chúng đi. Sau các lệnh này, bạn sẽ thấy các giá trị mặc định cho phép mọi thứ.

 sudo iptables -F && sudo iptables -X 

Với những người đi, bạn có thể khôi phục lại những cái mới từ tập tin mà bạn tạo ra.

 sudo iptables-restore </ tmp / itpables-ip4 

Máy tính của bạn hiện đang sử dụng các quy tắc iptables mới. Bạn có thể kiểm tra xem chúng.

 sudo iptables -S 

Tuy nhiên, chúng không phải là vĩnh viễn. Nếu bạn khởi động lại máy tính của bạn bây giờ, bạn sẽ có một thời gian thực sự xấu.

Đặt chúng vĩnh viễn

Có một số cách để thực hiện các quy tắc vĩnh viễn. Chúng khác nhau cho mỗi phân phối. Hướng dẫn này sẽ tập trung vào các hệ thống dựa trên Debian và Ubuntu, vì chúng là phổ biến nhất.

Có một gói có sẵn, được gọi là iptables-persistant, xử lý việc lưu và khôi phục iptables. Tất cả những gì bạn phải làm là cài đặt nó.

 sudo apt install iptables-persistent 

Trong khi cài đặt, gói sẽ hỏi bạn có muốn lưu cấu hình của bạn không. Chọn “Có”.

Trong tương lai, nếu bạn muốn thêm quy tắc, bạn có thể lưu lại bằng cách chạy lệnh sau.

 dịch vụ sudo netfilter-lưu liên tục 

Bạn hiện đang kiểm soát lưu lượng truy cập chảy qua máy tính của mình. Chắc chắn bạn có thể làm nhiều hơn với iptables, nhưng bạn nên cảm thấy tự tin với những điều cơ bản trước tiên.