Bảo mật mạng của bạn với Iptables - Proxy - NAT - IDS: PHẦN 2

Trong Previous post Chúng tôi đã thấy cấu hình của IPTables để hoạt động như một Tường lửa. Bây giờ chúng ta có thể xem cách tạo các tập lệnh đó để các quy tắc được thực thi tự động khi hệ thống khởi động và cũng là cách chúng tôi có thể loại bỏ hoặc dừng các quy tắc đó trong giây lát.

Trước khi thực hiện kịch bản và cho bạn thấy nó trông như thế nào, hãy nói một chút về NAT và khái niệm về những gì chúng ta muốn làm với thiết bị này.

NAT và Ngữ cảnh của ví dụ.

Khi nói về NAT, chúng ta có thể nhầm lẫn điều này với định tuyến, vì cả hai đều chịu trách nhiệm kết nối hai mạng khác nhau với nhau. Sự khác biệt thực sự là việc định tuyến được áp dụng để đi từ mạng cục bộ này sang mạng cục bộ khác và mạng khác này có thể kết nối với một bộ định tuyến và ra ngoài Internet.

Trong khi, khi chúng ta nói về NAT, chúng ta nói về việc định tuyến các gói từ mạng cục bộ hoặc mạng riêng đến mạng công cộng hoặc Internet. Nó thực hiện điều này bằng cách che các gói tin bằng cách đưa IP công cộng mà nó đi Internet. Có nghĩa là, chúng ta không cần bộ định tuyến, vì IP công cộng thuộc sở hữu trực tiếp của máy tính GNU / Linux.

giáng sinh

Chúng tôi sẽ làm việc này với khẩu hiệu rằng chúng tôi đang sử dụng Linux làm bộ định tuyến / tường lửa để truy cập Internet từ mạng cục bộ. Nhưng ở đây có thể xuất hiện hai kịch bản.

  • Rằng Linux của chúng tôi nằm giữa bộ định tuyến của nhà cung cấp dịch vụ và mạng cục bộ.

Trong trường hợp này, giữa bộ định tuyến và Linux của chúng ta sẽ có một mạng và giữa Linux và mạng cục bộ sẽ có một mạng khác. Điều này có nghĩa là bộ định tuyến của chúng tôi sẽ không phải thực hiện NAT như vậy, với một định tuyến lưu lượng đơn giản như được giải thích trong Previous post Nó sẽ tốt.

  • Rằng Linux của chúng tôi có một giao diện được kết nối với mạng cục bộ và thông qua giao diện khác, nó nhận trực tiếp một IP công cộng mà nó điều hướng.

Điều này có nghĩa là Linux của chúng ta phải thực hiện NAT để các gói có thể truy cập Internet.

Vì mục đích của phòng thí nghiệm nhỏ này, chúng tôi sẽ nói rằng Linux của chúng tôi nhận trực tiếp một IP công cộng và do đó có thể kiểm tra các tác động của NAT.

Để thực hiện NAT, chúng ta sử dụng cú pháp

 iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE

Trong đó eth1 là giao diện nơi chúng ta nhận IP công cộng, tức là nơi chúng ta truy cập Internet.

MASQUERADE được sử dụng khi ip công khai nhưng nó có thể thay đổi theo thời gian (động). Nếu không, chúng ta có thể sử dụng SNAT –to-source ip

Tạo tập lệnh iptables

Giả sử khi đó: 172.26.0.0 là mạng cục bộ của chúng ta và 81.2.3.4 là IP công cộng mà chúng ta truy cập Internet. (nó là một ip tĩnh). Tôi có các giao diện eth0 (Mạng cục bộ)

eth1 (Mạng công cộng).

Về cơ bản, nó bao gồm việc tạo một tập lệnh có thể được gọi từ /etc/init.d/firestop (ví dụ). và từ tập lệnh này, chúng tôi có thể bắt đầu, dừng hoặc kiểm tra trạng thái cấu hình của chúng tôi, như chúng tôi làm với bất kỳ daemon hệ thống nào.

Giả sử các quy tắc IPTABLES của tôi LÀ:

#! / bin / bash # Tường lửa của nhà tôi. # Tên tệp / etc / firewall_on # Bởi Jlcmux Twitter: @Jlcmux # # Chính sách cơ bản. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT để chia sẻ Internet từ eth0 đến eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4
# # Cho phép các kết nối đến do iptables của tôi khởi tạo -Một trạng thái FORWARD -m - trạng thái ĐÃ ĐƯỢC THIẾT LẬP, CÓ LIÊN QUAN -j CHẤP NHẬN # # Lưu lượng đi được cấp phép iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j CHẤP NHẬN iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j CHẤP NHẬN
Đừng quên cấp quyền thực thi

Giải trình:

Về cơ bản script thực hiện những việc sau:

  1. Đầu tiên hạn chế tất cả điều hướng, kết nối và lưu lượng truy cập. (Chính sách tường lửa cơ bản)
  2. Sau đó tạo NAT với đích eth1. chỉ ra rằng chúng tôi có một ip công cộng tĩnh «81.2.3.4»
  3. Nó mở các cổng cần thiết để nhận các gói kết nối do tôi khởi tạo.
  4. Chấp nhận lưu lượng HTTP, HTTPS và DNS gửi đi.
Các quy tắc dành cho lưu lượng FORWARD vì chúng tôi đang sử dụng Linux làm Bộ định tuyến, vì vậy các chính sách được sử dụng cho lưu lượng PASSES thông qua Linux, tức là nó hoạt động như một trung gian. Điều này có nghĩa là Linux của chúng tôi thực sự không thể điều hướng hoặc nhận bất kỳ dữ liệu nào trực tiếp. Nó chỉ áp dụng cho các máy tính được kết nối với nó, nhưng không áp dụng cho chính nó

Nếu chúng ta muốn sử dụng thiết bị của mình để điều hướng, chúng ta nên lặp lại các dòng và thay đổi FORWARD thành INPUT hoặc OUTPUT nếu thích hợp.

Hủy tập lệnh.

Bây giờ chúng ta sẽ tạo một tập lệnh ghi đè tất cả những điều trên và giúp máy tính sạch sẽ tất cả những điều này. (Với mục đích thử nghiệm hoặc chúng tôi chỉ muốn tắt tường lửa).

#! / bin / bash # Tường lửa của nhà tôi. # Tên tệp / etc / firewall_off # By Jlcmux Twitter: @Jlcmux # # Xóa quy tắc iptables -F # # Áp dụng các chính sách mặc định (chấp nhận tất cả lưu lượng) iptables -P ĐẦU VÀO CHẤP NHẬN iptables -P OUTPUT CHẤP NHẬN iptables -P FORWARD CHẤP NHẬN

Tự động hóa.

Bây giờ chúng ta phải tạo tập lệnh bên trong /etc/init.d/ và dịch vụ bắt đầu tự động và chúng tôi có thể quản lý dịch vụ theo cách thoải mái hơn.

#! / bin / bash # Tường lửa của nhà tôi. # Tên tệp /etc/init.d/ tường lửa # Bởi Jlcmux Twitter: @Jlcmux case $ 1 khi bắt đầu) / etc / firewall_on ;; dừng) / etc / firewall_off ;; trạng thái) iptables -L ;; *) echo "Sai cú pháp. Valid = /etc/init.d/ firewall start | stop | status ;; esac

Giải trình:

Tập lệnh cuối cùng này chúng tôi đưa vào /etc/init.d/ với tên tường lửa. Vì vậy, nếu chúng ta muốn quản lý tường lửa, chúng ta có thể sử dụng lệnh /etc/init.d/ khởi động tường lửa. Theo cách tương tự, chúng ta có thể dừng nó lại hoặc xem trạng thái.

Bây giờ chúng ta sẽ chỉnh sửa tệp /etc/rc.local và chúng tôi đặt một cái gì đó như: /etc/init.d/ bắt đầu tường lửa để nó bắt đầu với hệ thống.

Cũng. Đây là phần thứ hai. Tôi hy vọng nó mang lại điều gì đó cho tất cả các bạn. Trong phần tiếp theo, chúng ta sẽ thấy Proxy và IDS.


Nội dung bài viết tuân thủ các nguyên tắc của chúng tôi về đạo đức biên tập. Để báo lỗi, hãy nhấp vào đây.

7 bình luận, để lại của bạn

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố.

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   thợ săn dijo

    Nếu bạn đang sử dụng Debian, có một gói trong repo (iptables-dai dẳng) thực hiện chính xác điều đó, gói này kết xuất các quy tắc hiện tại trong /etc/iptables/rules.v4 hoặc v6 tùy thuộc vào những gì bạn sử dụng và sau đó áp dụng chúng cho bạn. khi bạn nâng hệ thống.

  2.   OCZ dijo

    Trong thực tế, để làm sạch cấu hình của tường lửa iptables thông thường (và sử dụng NAT sẽ không như vậy theo quan điểm của tôi), trong hầu hết các trường hợp, một quy tắc xóa và đặt lại các chính sách mặc định thành CHẤP NHẬN là đủ.
    Nhưng về lý thuyết, và theo như tôi biết, ngoài điều này, bạn cũng cần xóa các chuỗi không mặc định và đặt lại bộ đếm. Các hành động cần thực hiện lưu ý rằng ngoài "bộ lọc" còn có các bảng khác, (bắt buộc phải đọc tệp "/ proc / net / ip_tables_names" cho việc này).

    Nhân tiện, chính thống nói rằng tường lửa phải được thiết lập trước khi có mạng. Tôi không biết nó đạt được như thế nào trong các hệ thống Linux khác, nhưng trong loại Debian, tập lệnh có thể được điều chỉnh và đặt trong thư mục "/etc/network/if-pre-up.d/".

    Tường lửa tốt cho mọi người. 😉

  3.   NauTiluS dijo

    Xin chào, bài viết rất hay. Tôi đã đọc toàn bộ 2 tập.

    Chờ đợi tiếp theo 🙂

  4.   vô danh dijo

    Một câu hỏi do sự thiếu hiểu biết của tôi, chúng tôi tiếp tục với iptables, nhưng đối với một số phiên bản kernel, chúng tôi có nftables, tôi đang thử nghiệm, các câu hỏi đặt ra là, nftables có phải là bản beta đối với iptables không? Liệu iptables có tiếp tục được sử dụng lâu hơn nữa không?

    Cảm ơn bạn.

    1.    yukiteru dijo

      nftables bao gồm tất cả các chức năng của iptables, ip6tables, arptables và ebtables, tất cả đều sử dụng cơ sở hạ tầng mới trong cả kernelspace và userspace, đảm bảo hiệu suất tốt hơn và chức năng được cải thiện. nftables sẽ thay thế iptables và tất cả các công cụ khác được đề cập nhưng không phải trong lúc này, ít nhất là không cho đến khi có việc sử dụng rộng rãi hơn các nftables như vậy.

  5.   Alexander dijo

    bài viết rất hay, tôi muốn đọc thêm vì nó được giải thích rất tốt .. lời chào cảm ơn sự đóng góp tuyệt vời

  6.   Avrah dijo

    Xin chào! Rất tốt cả hai bài.
    Như một đóng góp, bạn có thể thêm vào cuối phần này:

    "Bây giờ chúng ta sẽ chỉnh sửa tệp /etc/rc.local và đặt một cái gì đó như: /etc/init.d/firestop start để nó khởi động cùng hệ thống."

    Thêm điều này vào rc.local.

    if [-x /etc/init.d/ tường lửa]; sau đó
    /etc/init.d/ bắt đầu tường lửa
    fi

    Có nghĩa là nếu "tường lửa" có quyền thực thi, hãy thực thi nó, nếu không.
    Nếu bạn muốn "tường lửa" không khởi động, bạn chỉ cần xóa các quyền.

    Ví dụ: tường lửa chmod + x /etc/init.d/
    để làm cho nó chạy trên mọi lần khởi động hoặc ...
    tường lửa chmod -x /etc/init.d/
    để vô hiệu hóa hoàn toàn nó.

    Chúc mừng!