banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Iptables cho mạng LAN  XML
  [Question]   Iptables cho mạng LAN 15/07/2014 15:21:04 (+0700) | #1 | 281027
Voyage146
Member

[Minus]    0    [Plus]
Joined: 25/04/2014 21:55:03
Messages: 5
Offline
[Profile] [PM]
Tôi mới tìm hiểu về iptables và đang làm lab nhưng không thành công, mong được mọi người chỉ bảo, xin cảm ơn rất nhiều.
Hiện tại bài lab thực hiện trên 1 server có 2 NIC: eth0 là EXTINF (10.2.24.12) và eth1 là INTINF (172.16.1.1). Tôi có cắm 1 laptop vào eth1 và lấy ip là 172.16.1.2. Khi không cấu hình iptables, hoặc làm theo kiểu "cho phép tất cả trước, chặn cụ thể sau" thì laptop có thể sử dụng đựoc tất cả các dịch vụ nội bộ. Nhưng nếu muốn "chặn tất cả trước, cho phép cụ thể sau" thì không được (kiểu này sau khi đọc bài trong HVA thấy hay nên rất muốn thử smilie). Đây là cấu hình tôi sử dụng:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 172.20.1.2 -i eth1 -o eth0 -p tcp --dport 0:65535 -j ACCEPT
iptables -A FORWARD -s 172.20.1.2 -i eth1 -o eth0 -p udp --dport 0:65535 -j ACCEPT
iptables -A FORWARD -s 172.20.1.2 -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Sau khi sử dụng cấu hình này thì lap của tôi không thể sử dụng bất kì dịch vụ nội bộ nào cả.
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 16/07/2014 08:32:46 (+0700) | #2 | 281028
[Avatar]
invalid-password
Member

[Minus]    0    [Plus]
Joined: 09/03/2010 21:22:46
Messages: 161
Offline
[Profile] [PM]
Bạn hiểu chưa đúng rồi, firewall nó sẽ xem xét các rule theo thứ tự từ trên xuống dưới, khi gặp rule đầu tiên khớp thì nó sẽ hành động theo rule đó rồi ngưng xét các rule tiếp theo.

Voyage146 wrote:
Đây là cấu hình tôi sử dụng:
iptables -P INPUT DROP
...
Sau khi sử dụng cấu hình này thì lap của tôi không thể sử dụng bất kì dịch vụ nội bộ nào cả.
 

Dòng rule đầu tiên sẽ khớp tất cả gói tin đi vào nên phía ngoài không thể kết nối.


Giả sử trong mạng chỉ có 3 máy PC1, PC2, PC3. Bạn muốn cho PC1 và PC2 kết nối, nhưng chặn PC3, thì có 2 cách cấu hình như sau:

1. Kiểu "cho phép tất cả trước, chặn cụ thể sau":
    DROP PC3
    ACCEPT ALL
Đầu tiên viết dòng rule cho phép tất cả, sau đó cái nào cần chặn thì chỉ ra, và tất nhiên phải đặt nó lên trên dòng ACCEPT ALL.

2. Kiểu "chặn tất cả trước, cho phép cụ thể sau":
    ACCEPT PC1
    ACCEPT PC2
    DROP ALL
Đầu tiên viết dòng rule chặn tất cả, sau đó cái nào cần cho phép thì chỉ ra, và tất nhiên phải đặt nó lên trên dòng DROP ALL.

Kiểu thứ 2 là kiểu nên dùng !
Spam thêm một bài là góp một viên gạch xây diễn đàn lớn mạnh
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 16/07/2014 13:07:48 (+0700) | #3 | 281030
robinhood_10889
Member

[Minus]    0    [Plus]
Joined: 17/11/2010 03:28:11
Messages: 1
Offline
[Profile] [PM]
1. iptables -P INPUT DROP
2. ptables -P OUTPUT DROP
3. iptables -P FORWARD DROP
4. iptables -A INPUT -i eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
5 iptables -A OUTPUT -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
6 iptables -A FORWARD -s 172.20.1.2 -i eth1 -o eth0 -p tcp --dport 0:65535 -j ACCEPT
7 iptables -A FORWARD -s 172.20.1.2 -i eth1 -o eth0 -p udp --dport 0:65535 -j ACCEPT
8 iptables -A FORWARD -s 172.20.1.2 -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Mục đích bạn dựng iptables để làm gì ? Nêu rõ mục đích mới cấu hình iptables được chứ .
Chữa cháy cho đoạn cấu hình trên ( sử dụng được dịch vụ trong mạng) thì như sau:

Bạn quên không xử lý khi Forward từ eth0->eth1, (-i eth0 -o eth1 ): Khi một gói tin forward từ eth0 sang eth1 , nó không match với bất cứ rule nào trong FORWARD CHAIN , và sẽ bị rule 3 xử lý Drop theo chính sách mặc định. Có nghĩa là bạn có thể request đến các dịch vụ trong LAN nhưng các respond bị iptable drop và nó không bao giờ đến được laptop của bạn.
bổ sung thêm các rule sau:

9. iptables -A FORWARD -d 172.20.1.2 -i eth0 -o eth1 -p tcp --sport 0:65535 -j ACCEPT
10. iptables -A FORWARD -d 172.20.1.2 -i eth0 -o eth1 -p udp --sport 0:65535 -j ACCEPT
11. iptables -A FORWARD -d 172.20.1.2 -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 17/07/2014 11:47:01 (+0700) | #4 | 281035
Voyage146
Member

[Minus]    0    [Plus]
Joined: 25/04/2014 21:55:03
Messages: 5
Offline
[Profile] [PM]
Cảm ơn các bạn đã reply rất nhiều smilie.
@invalid_password: bạn nên đọc lại các case có trong diễn đàn. Policy này sẽ thực hiện tất cả các rule mình đã đưa vào trước, cuối cùng mới là drop all.
@robinhood_10889: cảm ơn bạn rất nhiều nhé, trước mình có hiểu nhầm một chút nên cấu hình không thành công chứ không phải quên đâu smilie . Nhờ bạn mà mình đã hiểu ra nhiều thứ rồi.
P/s: có bạn nào có quyển sách nào hay và đầy đủ về iptables thì giới thiệu cho mình vs nhé, tiếng anh cũng được , mình xin cảm ơn rất nhiều.
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 17/07/2014 12:31:34 (+0700) | #5 | 281037
[Avatar]
invalid-password
Member

[Minus]    0    [Plus]
Joined: 09/03/2010 21:22:46
Messages: 161
Offline
[Profile] [PM]

Voyage146 wrote:
@invalid_password: bạn nên đọc lại các case có trong diễn đàn. Policy này sẽ thực hiện tất cả các rule mình đã đưa vào trước, cuối cùng mới là drop all. 

Mình thì lại tưởng nhầm đây là thứ tự trong file cấu hình mà không coi kỹ nó là command gõ vào smilie
Spam thêm một bài là góp một viên gạch xây diễn đàn lớn mạnh
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 21/07/2014 23:45:09 (+0700) | #6 | 281061
[Avatar]
qwerty13
Member

[Minus]    0    [Plus]
Joined: 30/01/2013 06:37:58
Messages: 52
Offline
[Profile] [PM]
@invalid-password: file cấu hình hay command gõ vào thì cũng thế vì đó là -P: Policy mà. Tất cả những gì không match với rules trong chain thì sẽ theo policy của chain đó.
Once Amser, forever Amser smilie
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 23/07/2014 15:09:36 (+0700) | #7 | 281069
[Avatar]
flygon
Member

[Minus]    0    [Plus]
Joined: 20/03/2013 11:16:50
Messages: 17
Offline
[Profile] [PM]
Sau vài tuần tự tìm hiểu thì mình cũng rút ra được một mẹo nhỏ là mỗi khi có một vấn đề gì về các policy gì thì mình toàn dò lỗi thiếu trong từng chain bằng cách
ví dụ:
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
(và một đống luật INPUT, OUTPUT, FORWARD, POSTROUTING, PREROUTING... đằng sau đó)
=> kết quả không ping được internet chả hạn. Mình liền thử ACCEPT cho 1 trong 3 chain trên. nếu chain nào bật ACCEPT mà ping được kết nối mạng => mình thiếu luật chain đó => khắc phục

smilie mình hay dùng cách này cho firewall iptables mình làm lab ở nhà.
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 25/07/2014 14:38:57 (+0700) | #8 | 281080
Voyage146
Member

[Minus]    0    [Plus]
Joined: 25/04/2014 21:55:03
Messages: 5
Offline
[Profile] [PM]
Hôm đó nhờ có bạn robinhood_10889, mà mình đã cấu hình thành công. Sau đó mình có cấu hình openvpn trên Server B và áp dụng điều học được từ bài lab trước khi cấu hình iptables cho server B:
Code:
:INPUT DROP [0:0]
:FORWARD DROP [18:1604]
:OUTPUT ACCEPT [629:608994]
-A INPUT -s 10.2.32.189/32 -i eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.2.32.189/32 -i eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 1024:65535 --dport 1194 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

-A FORWARD -s 192.168.1.0/24 -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 172.16.1.0/24 -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 172.16.1.0/24 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.1.0/24 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

-A OUTPUT -o eth0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --sport 1024:65535 --dport 1194 -j ACCEPT
-A OUTPUT -d 10.2.32.189/32 -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 10.2.32.153/32 -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


Theo mình nghĩ thì khi host đi từ bên A qua vpn để sử dụng các dịch vụ ở sau server B (do các server sau B cung cấp) thì chỉ luật trong FORWARD điều khiển các luồng traffic này thôi chứ nhỉ? Vậy tại sao khi mình chuyển OUTPUT từ ACCEPT sang DROP thì kết nối lại mất từ cả 2 bên??? Rất mong ae giúp mình lần nữa, mình xin cảm ơn nhiều smilie
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 27/07/2014 16:36:23 (+0700) | #9 | 281097
[Avatar]
flygon
Member

[Minus]    0    [Plus]
Joined: 20/03/2013 11:16:50
Messages: 17
Offline
[Profile] [PM]

Voyage146 wrote:

Theo mình nghĩ thì khi host đi từ bên A qua vpn để sử dụng các dịch vụ ở sau server B (do các server sau B cung cấp) thì chỉ luật trong FORWARD điều khiển các luồng traffic này thôi chứ nhỉ? Vậy tại sao khi mình chuyển OUTPUT từ ACCEPT sang DROP thì kết nối lại mất từ cả 2 bên??? Rất mong ae giúp mình lần nữa, mình xin cảm ơn nhiều smilie
 


Mình cũng vừa tự nghịch cái lab như bạn. Tạm hiểu B như là một con firewall và đóng vai trò như một router cho "dải mạng sau B". Khi bạn cài openvpn trên B, thì sẽ có một NIC tun0 được tạo trên B

Bên A sử dụng VPN sẽ được VPN cấp dải mạng 10.8.0.x (mặc định và bạn có thể thay đổi trong cấu hình openvpn) để truyền gói tin vào tun0 của B. Vì thế bạn cần phải viết luật INPUT và OUTPUT các packet vào NIC này + FORWARD từ tun0 vào đến dải mạng "đằng sau B" nếu cần.

Ví dụ:

Code:
iptables -A INPUT -i $EXTIF -s $EXTNET -p udp --dport 1723 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $EXTIF -d $EXTNET -p udp --sport 1723 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -s $VPNNET -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o tun0 -d $VPNNET -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -s $VPNNET -o $INTIF -d $INTNET -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INTIF -s $INTNET -o tun0 -d $VPNNET -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


trong đó:
$VPNNET Dải mạng mà VPN server của B cung cấp cho bên A
$EXTIF Interface ra internet của B
$EXTNET Dải mạng bên ngoài local network
$INTIF Interface của B đi vào mạng bên trong
tun0 Interface được tạo bởi openvpn

Dòng lệnh 1,2 là mở port cho VPN
Dòng lệnh 3,4 là cho phép mọi gọi tin đi từ VPNNET đi vào,ra Card mạng tun0 đều được chấp nhận
Dòng lệnh 5,6 Forward gói tin từ VPNNET đi vào "dải mạng sau B" và ngược lại (trường hợp dải mạng B và dải mạng sau B khác nhau. Nếu cùng dải mạng thì không cần)

Giải thích: Các gói tin tại A sẽ đi trong tunnel giữa được tạo ra bới VPN clients và tun0. Nếu bạn không thiết lập INPUT và OUTPUT chain cho tun0 thì mặc định nó sẽ chặn hết smilie
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 01/08/2014 14:20:08 (+0700) | #10 | 281156
Voyage146
Member

[Minus]    0    [Plus]
Joined: 25/04/2014 21:55:03
Messages: 5
Offline
[Profile] [PM]
Xin lỗi vì trả lời muộn, mình hơi bận trong thời gian rồi.
2 command đầu mình không nói, vì nó cần thiết để tạo kết nối VPN giữa 2 site. Còn lúc đầu khi mới cấu hình mình cũng dùng các command dưới này để cấu hình cho kết nối VPN:
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Nhưng khi thay bằng các command như post trước của mình thì mọi thứ vẫn hoạt động bình thường mặc dù là INPUT DROP (k permit tun+) ?
Mình cũng đang làm về OpenVPN, ae có vấn đề j thì post trong đây luôn nhé.
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 03/08/2014 18:20:25 (+0700) | #11 | 281180
[Avatar]
flygon
Member

[Minus]    0    [Plus]
Joined: 20/03/2013 11:16:50
Messages: 17
Offline
[Profile] [PM]

Voyage146 wrote:
Xin lỗi vì trả lời muộn, mình hơi bận trong thời gian rồi.
2 command đầu mình không nói, vì nó cần thiết để tạo kết nối VPN giữa 2 site. Còn lúc đầu khi mới cấu hình mình cũng dùng các command dưới này để cấu hình cho kết nối VPN:
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Nhưng khi thay bằng các command như post trước của mình thì mọi thứ vẫn hoạt động bình thường mặc dù là INPUT DROP (k permit tun+) ?
Mình cũng đang làm về OpenVPN, ae có vấn đề j thì post trong đây luôn nhé. 


- Đúng vậy, có lẽ mình hơi hiểu nhầm chút, mình đã thử lại là INPUT -i eth0 cũng như là INPUT -i tun0, không khác nhau. Vì openvpn kết nối với bên ngoài bằng eth0 mà => các gói tin đi vào eth0 smilie
=> không có vấn đề gì ở INPUT

- Quay lại vấn đề với OUTPUT của bạn, Hình như câu lệnh này có vấn đề:
-A OUTPUT -o eth0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --sport 1024:65535 --dport 1194 -j ACCEPT

Mình nghĩ --sport phải là 1194 chứ nhỉ. Openvpn lắng nghe và trả lời trên port 1194.
Bạn thử bỏ phần --sport 1024:65535 đi, sau đó --dport 1194 xem sao
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 03/08/2014 18:25:23 (+0700) | #12 | 281181
[Avatar]
flygon
Member

[Minus]    0    [Plus]
Joined: 20/03/2013 11:16:50
Messages: 17
Offline
[Profile] [PM]
EDIT!
sr mod, mình lỡ double post
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 11/08/2014 18:12:20 (+0700) | #13 | 281269
Voyage146
Member

[Minus]    0    [Plus]
Joined: 25/04/2014 21:55:03
Messages: 5
Offline
[Profile] [PM]
Rules đó không có vấn đề gì b nhé. Vẫn rule đó nhưng VPN mình cũng hoạt động thành công rồi smilie. Cảm ơn mọi người đã giúp mình hiểu được những điều cơ bản nhất về iptables, đặc biệt là bạn flygon smilie.
Khi có thời gian mình sẽ cố tìm hiểu sâu hơn và lúc đó mong được thảo luận nhiều hơn với mọi người.
[Up] [Print Copy]
  [Question]   Iptables cho mạng LAN 13/08/2014 22:10:41 (+0700) | #14 | 281290
[Avatar]
flygon
Member

[Minus]    0    [Plus]
Joined: 20/03/2013 11:16:50
Messages: 17
Offline
[Profile] [PM]
Cái rule đó vẫn đúng vì 1194 nằm trong dải port 1024:65535 nhưng nếu giả dụ có dịch vụ nào chạy port không nằm trong dải 1024:65535 thì sẽ không đúng -> bị block smilie

Hix mình có giúp được gì đâu, toàn nhầm nhọt linh tinh smilie. Bạn add fb mình để tiện liên lạc trao đổi sau này nhé
https://www.facebook.com/tuhoanganh11
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|