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

Bài đăng này cố gắng làm rõ một chút về cách mạng hoạt động và cách biến thiết bị Linux của chúng tôi thành một Bộ định tuyến đảm bảo mạng của chúng tôi nhiều hơn một chút, cho dù ở nhà hay thậm chí là doanh nghiệp. Vì vậy, chúng ta hãy bắt đầu kinh doanh:

Nội dung này dựa trên cuốn sách "Linux - Quản trị Hệ thống và Vận hành Dịch vụ Mạng" - Sébastien BOBILLIER

Định tuyến và lọc

Để nói và hiểu về định tuyến trước tiên chúng ta có thể định nghĩa chức năng của bộ định tuyến là gì? Đối với điều này, chúng ta có thể nói rằng một bộ định tuyến, ngoài việc tạo mạng và cho phép kết nối với thiết bị khác (biết rằng chúng ta có thể làm điều này với AP, Switch, Hub hoặc các thiết bị khác) còn có khả năng kết nối hai mạng khác nhau với nhau.

Router

Như chúng ta có thể thấy trong hình, có một mạng cục bộ "10.0.1.0" được tạo bởi bộ định tuyến và đến một trong hai giao diện của nó. Sau đó, bộ định tuyến trên giao diện khác của nó, có một mạng khác, với IP công cộng của nó mà nó có thể kết nối với Internet. Chức năng định tuyến về cơ bản là đóng vai trò trung gian giữa hai mạng này để chúng có thể giao tiếp.

Linux như một bộ định tuyến.

Đương nhiên, Linux Kernel đã có khả năng thực hiện "chuyển tiếp", nhưng theo mặc định, nó bị vô hiệu hóa, vì vậy nếu chúng ta muốn Linux của chúng ta thực hiện công việc này, chúng ta phải truy cập tệp.

/proc/sys/net/ipv4/ip_forward

Ở đó, chúng ta sẽ thấy rằng nó là một tệp chỉ chứa một số 0 "1", những gì chúng ta phải làm là thay đổi nó thành một "XNUMX" để kích hoạt hành vi này. Rất tiếc, điều này sẽ bị xóa khi chúng ta khởi động lại máy tính, để kích hoạt nó theo mặc định, chúng ta phải sử dụng lệnh:

sysctl net.ipv4.ip_forward=1

Hoặc chỉnh sửa trực tiếp trong tệp /etc/sysctl.conf. Tùy thuộc vào phân phối, cấu hình này cũng có thể nằm trong một tệp trong  /etc/sysctl.d/.

Theo mặc định, Linux của chúng tôi phải có bảng định tuyến, đây thường là cấu hình của mạng lan và kết nối với bộ định tuyến. Nếu chúng ta muốn xem định tuyến này, chúng ta có thể sử dụng hai lệnh:

route -n

o

netstat -nr

Cả hai lệnh phải trả về giống nhau.

Ảnh chụp màn hình từ 2014-09-30 18:23:06

Nói chung, cấu hình này đủ để Linux của bạn hoạt động như một Cổng và các máy tính khác có thể điều hướng qua máy tính của chúng tôi. Bây giờ, nếu chúng ta muốn Linux của mình kết nối hai hoặc nhiều mạng, chẳng hạn như mạng cục bộ hay không, chúng ta có thể sử dụng các tuyến tĩnh.

Giả sử rằng Linux của tôi có hai giao diện mạng, giao diện thứ nhất có kết nối Internet có mạng là 172.26.0.0 và giao diện thứ hai (10.0.0.0) có một số máy tính từ mạng cục bộ khác. Nếu chúng ta muốn định tuyến các gói đến mạng khác, chúng ta có thể sử dụng:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

Nói chung nó là:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

nếu chúng tôi cho route -n bất kể mạng này tồn tại hay không, định tuyến này sẽ được cố định trong bảng của chúng tôi.

Ảnh chụp màn hình từ 2014-09-30 18:31:35

Nếu chúng ta muốn loại bỏ định tuyến đã nói, chúng ta có thể sử dụng

route del -net 10.0.0.0 netmask 255.0.0.0

iptables.

Về cơ bản, iptables được sử dụng để lọc các gói, gửi đi, đến hoặc các gói khác, điều này làm cho nó trở thành một công cụ tuyệt vời để quản lý lưu lượng mạng của chúng tôi. Vâng, iptables, cũng như nó cho phép chúng ta lọc lưu lượng truy cập từ cùng một máy tính, nó cũng cho phép chúng ta lọc lưu lượng truy cập đi qua nó. (Chuyển tiếp). Iptables có thể được chia thành bảng, chuỗi và hành động.

  • Ban:  về cơ bản có thể có hai bảng, bộ lọc, để lọc các gói và  giáng sinh để dịch các địa chỉ, nghĩa là, để di chuyển từ mạng này sang mạng khác.
  • Chuỗi: Chuỗi đề cập đến loại lưu lượng truy cập mà chúng ta muốn lọc hoặc bơi, tức là chúng ta sẽ áp dụng các bảng vào lưu lượng truy cập nào? và chúng có thể là:  ĐẦU VÀO: Giao thông đang đến, ĐẦU RA: lưu lượng đi hoặc Ở ĐẰNG TRƯỚC: Lưu lượng đi qua nó, nhưng nó không phải là kết nối của chính nó.
  • Nó cũng có thể xuất hiện POST-ROUTING, được sử dụng để xử lý gói tin theo một cách nhất định sau khi nó đã được định tuyến.
  • Tác vụ: Các hành động về cơ bản là hành động được thực hiện với chuỗi. Hành động này có thể được RƠI VÃI, điều đó chỉ phá hủy lưu lượng truy cập đó hoặc CHẤP NHẬN. cho phép lưu lượng truy cập thực hiện hành động đó.

Các quy tắc IPTABLES được lưu và thực thi theo thứ tự mà chúng đã được tạo và nếu một quy tắc xóa một quy tắc trước đó, thì quy tắc cuối cùng trong thứ tự sẽ luôn được áp dụng.

Chính sách về tường lửa.

Nói chung, tường lửa hoạt động tự nhiên theo hai cách:

  1. Cho phép tất cả lưu lượng truy cập ngoại trừ hoặc
  2. Không cho phép bất kỳ lưu lượng truy cập nào ngoại trừ ...

Để áp dụng các chính sách, hãy sử dụng IPTABLES - CHUỖI HÀNH ĐỘNG P

Trong đó chuỗi đại diện cho loại lưu lượng (INPUT, OUTPUT, FORWARD, POSTROUTING ...) và hành động là DROP HOẶC CHẤP NHẬN.

Hãy xem một ví dụ.

Ảnh chụp màn hình từ 2014-09-30 18:53:23

 

Ở đây chúng ta thấy rằng lúc đầu tôi có thể ping, sau đó tôi nói với IPTABLES rằng tất cả lưu lượng OUTPUT đều DROP hoặc không được phép. Sau đó, tôi bảo IPTABLES chấp nhận nó.

Nếu chúng ta định xây tường lửa từ đầu, chúng ta phải luôn áp dụng các quy tắc của (Không cho phép bất kỳ lưu lượng nào ngoại trừ ... Đối với điều này thì chúng ta áp dụng các quy tắc

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Nếu các chính sách này được áp dụng, chúng sẽ không có bất kỳ loại kết nối nào
.

Để trả lại, chúng tôi viết tương tự và thay thế DROP bằng ACCEPT.

Tại thời điểm này, vì tất cả lưu lượng truy cập đều bị từ chối, chúng tôi bắt đầu cho IPTABLES của mình biết lưu lượng truy cập mà nó có thể có.

Cú pháp là:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Trường hợp:

Chuỗi = INPUT, OUTPUT hoặc FORWARD

origin_ip = Nguồn gốc của các gói, đây có thể là một IP hoặc một mạng và trong trường hợp này chúng ta phải chỉ định mặt nạ).

Desti_ip = nơi các gói đang đi. đây có thể là một IP hoặc một mạng và trong trường hợp này chúng ta phải chỉ định mặt nạ).

giao thức = cho biết giao thức được sử dụng bởi các gói (icmp, tcp, udp ...)

cổng = cổng đích của giao thông.

hành động = DROP hoặc CHẤP NHẬN.

Ví dụ:

 

Ảnh chụp màn hình từ 2014-09-30 19:26:41

TẤT CẢ các chính sách hạn chế đều được áp dụng.

Ảnh chụp màn hình từ 2014-09-30 19:27:42

Sau đó, chúng tôi thêm các quy tắc để có thể có lưu lượng truy cập qua cổng 80 HTTP và 443 HTTPS, với giao thức TCP. Sau đó, cổng 53 Nó được áp dụng cho máy khách DNS để phân giải các miền, nếu không bạn sẽ không điều hướng được. Điều này hoạt động với giao thức udp.

Dòng:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Đó là vì những điều sau: Ví dụ: khi bạn thực hiện một yêu cầu HTTP, bạn kết nối với cổng 80 của máy chủ, nhưng máy chủ để trả về thông tin cần kết nối với bạn thông qua bất kỳ cổng nào. (Nói chung là lớn hơn 1024).

Vì tất cả các cổng của chúng tôi bị đóng, điều này sẽ không đạt được trừ khi chúng tôi mở tất cả các cổng cao hơn 1024 (Ý tưởng tồi). Điều này nói lên rằng tất cả lưu lượng truy cập đến từ một kết nối mà tôi tự thiết lập đều được chấp nhận. Ý tôi là, một kết nối mà về nguyên tắc tôi đã bắt đầu.

Khi đưa OUTPUT vào các quy tắc, điều này chỉ áp dụng cho thiết bị được đề cập, nếu chúng tôi đang sử dụng thiết bị của mình làm bộ định tuyến để cho phép các kết nối này, chúng tôi phải thay đổi OUTPUT thành FORWARD. Vì lưu lượng truy cập đi qua máy tính nhưng không được khởi động bởi nó
Tất cả các quy tắc này sẽ bị xóa sau khi khởi động lại, vì vậy bạn phải tạo các tập lệnh để chúng bắt đầu theo mặc định. Nhưng chúng ta sẽ thấy điều này trong phần tiếp theo

Tôi hy vọng bạn thích thông tin này. Trong phần tiếp theo, tôi sẽ nói về NAT, Proxy và các tập lệnh cho Firewal.


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.

12 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.   Rogelio pinto dijo

    Đây là cơ sở mà nhiều doanh nhân sử dụng để sản xuất tường lửa của riêng họ, đó là lý do tại sao có rất nhiều thương hiệu tường lửa với Linux nhúng trên thị trường, một số tốt và một số khác không nhiều.

  2.   Heber dijo

    Bài báo xuất sắc. Tôi mong chờ phần thứ hai.

  3.   Milton dijo

    Lời giải thích rất hay, nó đã giúp tôi hiểu được công việc của mình. Cảm ơn bạn

  4.   faustod dijo

    Xin chào Jlcmux,

    Tuyệt vời, tôi thực sự thích nó, khi nào sẽ có bên kia?

    Xin chào và cảm ơn vì đã chia sẻ

    1.    @Jlcmux dijo

      Cảm ơn đã nhận xét.

      Tôi đã gửi phần kia vào ngày hôm qua, trong ngày hôm đó tôi nghĩ họ sẽ xuất bản nó.

      Chúc mừng.

  5.   Israel dijo

    Bạn @ Jlcmux có bài viết rất hay, tôi thực sự học được với anh ấy vì anh ấy đã làm sáng tỏ một số nghi ngờ mà tôi đã có một thời gian, nhân tiện bạn sẽ không phiền khi chia sẻ cuốn sách nguồn của bài báo, cuốn sách của Sébastien BOBILLIER, cũng giết2s và bây giờ để xem phần 2, salu2s.

    1.    @Jlcmux dijo

      Xin chào Cảm ơn đã bình luận Israel.

      Hóa ra là tôi có cuốn sách ở dạng vật lý. Nhưng tôi tìm thấy liên kết này trên Google Sách. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Tôi nghĩ nó đã hoàn thành.

  6.   Ariel dijo

    Bài viết rất hay, tôi thêm một câu hỏi: Lợi thế của việc sử dụng linux làm bộ định tuyến, nếu có, đối với phần cứng dành riêng cho nó là gì? Hay nó chỉ để tập thể dục? Tôi biết có những bản phân phối chuyên dụng nhưng tôi không biết liệu chúng có phải là để cứu vãn những chiếc PC cũ hay cung cấp sự linh hoạt hơn trong cấu hình.

    1.    @Jlcmux dijo

      Tôi nghĩ những thuận lợi và khó khăn phụ thuộc vào kịch bản mà bạn sẽ thực hiện điều này. Tại sao chắc chắn bạn không mua một chiếc UTM hoặc thứ gì đó tương tự cho ngôi nhà của mình? Và có thể đối với một doanh nghiệp nhỏ không đủ khả năng. Nó cũng tốt như một bài tập, vì nó giúp bạn hiểu tất cả logic của điều này và bạn có thể cấu hình tốt hơn một FWall chuyên dụng. Ngoài ra, hầu hết tất cả các thiết bị này thực sự những gì chúng có là Embedded Linux.

      Chúc mừng.

  7.   Ariel dijo

    Xin chào, một câu hỏi, bạn có thể tạo giao diện "nhân tạo" trong linux để định tuyến tương tự giữa các mạng không? (kiểu theo dõi gói) để làm việc với máy ảo? Ví dụ: nếu tôi có eth0 (tất nhiên là vì tôi có một thẻ duy nhất) tôi có thể tạo eth1 để tạo mạng khác không? Gia sư rất tốt!

    1.    elav dijo

      Tất nhiên, trong Linux, bạn có thể tạo các giao diện ảo. Nếu bạn có eth0, bạn có thể có eth0: 0, eth0: 1, eth0: 2 ... vv

  8.   chinoloco dijo

    Thật tốt, cảm ơn vì đã chia sẻ