聯成電腦技術論壇

 找回密碼
 註冊
搜索
查看: 1294|回復: 8

簡易 NAT 與 Firewall 設定

[複製鏈接]
頭像被屏蔽
發表於 2006-8-24 13:08:50 | 顯示全部樓層 |閱讀模式

  1. #!/bin/bash

  2. # ============================================================================

  3. # network interface define

  4. INTERNET_NIC=eth0     # to internet, eg eth0 or ppp+
  5. INSIDE_NIC=eth1     # lan

  6. INSIDE_NET=192.168.1.0/24   # internal network area

  7. # ============================================================================

  8. # firewall module

  9. modprobe ip_tables
  10. modprobe ip_conntrack
  11. modprobe ip_conntrack_ftp
  12. modprobe ip_conntrack_irc

  13. modprobe ip_nat_ftp
  14. modprobe ip_nat_irc

  15. # ============================================================================

  16. # reset main firewall policy

  17. iptables -P INPUT DROP
  18. iptables -P OUTPUT ACCEPT
  19. iptables -P FORWARD DROP

  20. iptables -t nat -P PREROUTING ACCEPT
  21. iptables -t nat -P POSTROUTING ACCEPT
  22. iptables -t nat -P OUTPUT ACCEPT

  23. iptables -t mangle -P INPUT ACCEPT
  24. iptables -t mangle -P OUTPUT ACCEPT
  25. iptables -t mangle -P FORWARD ACCEPT
  26. iptables -t mangle -P PREROUTING ACCEPT
  27. iptables -t mangle -P POSTROUTING ACCEPT
  28. iptables -t mangle -P OUTPUT ACCEPT

  29. # ============================================================================

  30. # reset main firewall rule

  31. iptables -F -t filter
  32. iptables -F -t nat
  33. iptables -F -t mangle

  34. iptables -X -t filter
  35. iptables -X -t nat
  36. iptables -X -t mangle

  37. # ============================================================================

  38. # allow ESTABLISHED,RELATED packet and lo loopback

  39. iptables -A INPUT -i lo -j ACCEPT
  40. iptables -A INPUT -i $INSIDE_NIC -j ACCEPT
  41. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  42. # ============================================================================

  43. # drop port scan ...

  44. # NMAP FIN/URG/PSH
  45. iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

  46. # Xmas Tree
  47. iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

  48. # Another Xmas Tree
  49. iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

  50. # Null Scan(possibly)
  51. iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

  52. # SYN/RST
  53. iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

  54. # SYN/FIN -- Scan(possibly)

  55. iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

  56. # ============================================================================

  57. # main firewall rule, open ports...

  58. iptables -A INPUT -i $INTERNET_NIC -p tcp --dport 22 -m state --state NEW -j ACCEPT

  59. iptables -A INPUT -i $INTERNET_NIC -p tcp --dport 80 -m state --state NEW -j ACCEPT

  60. # ============================================================================

  61. # nat

  62. # forward rule

  63. echo "1" > /proc/sys/net/ipv4/ip_forward

  64. iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  65. iptables -A FORWARD -s $INSIDE_NET -j ACCEPT

  66. iptables -A POSTROUTING -t nat -o $INTERNET_NIC -j MASQUERADE

  67. # ============================================================================
複製代碼
頭像被屏蔽
發表於 2006-11-15 15:30:14 | 顯示全部樓層

簡易 NAT 與 Firewall 設定

我參考老師這個範例,架個nat,不過我的 policy 除了INPUT 是DROP 以外,其他都是 ACCEPT 的。
在實做時,內部 client 可以順利出去 internet,於是我做個實驗,把以下這行註解掉:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
發覺 CLIENT 不能連上internet 上的網站了。
我百思不解,因為依我目前的認知,client 會先透過dns (我 nat 本身也擔任dhcp 及dns)查出網站的 ip 位址,
假設是1.2.3.4,然後直接透過nat 把封包送出去,此過程應會經過
PREROUTING->FORWARD->OSTROUTING 對嗎?
也就是沒經過 INPUT chain,而回應封包也是先 PREROUTING->FORWARD->OSTROUTING,
應該也沒經過INPUT chain,那為何會不能連線呢?
不是應該有牽扯到INPUT chain 時,上面那條我註解起來的規則才
會派上用場嗎?
頭像被屏蔽
 樓主| 發表於 2006-11-15 17:32:38 | 顯示全部樓層

簡易 NAT 與 Firewall 設定


你的問題在我個人版置頂裡面有寫,請參考:

"Linux iptables firewall 設定常見 FAQ 整理"

--
頭像被屏蔽
發表於 2006-11-16 00:19:42 | 顯示全部樓層

簡易 NAT 與 Firewall 設定

這個我看過了,不過好像都是針對本機存取外部、本機存取自己、外部存取本機在做探討。
而我的問題是內部經過本機出去,再回應回來,也就是我一開始寫的
PREROUTING->FORWARD->OSTROUTING 出去
PREROUTING->FORWARD->OSTROUTING 回應封包
我絕得從頭到尾都跟 INPUT chain 沒關啊,還是我觀念有錯呢?
頭像被屏蔽
 樓主| 發表於 2006-11-16 00:40:31 | 顯示全部樓層

簡易 NAT 與 Firewall 設定

你說你有加上 dns 服務,然後 client 端是是使用你架設的 dns 服務來查詢資料,所以您大概會是這樣設定:


  1. iptables -P INPUT DROP
  2. iptables -A INPUT -p udp --dport 53 -j ACCEPT
  3. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
複製代碼


上面這是允許外面可以連到該主機存取 dns 服務。

然後你得注意的是,你拿掉了 -m state 那行變成:


  1. iptables -P INPUT DROP
  2. iptables -A INPUT -p udp --dport 53 -j ACCEPT
複製代碼


你的 client 端當然是可以連到該 linux 主機使用 dns 服務這是確認的,但是 linux 主機本身卻連不到外面,所以 named 根本就無法對外查詢到所需要的資料。linux 連不到外面原因?因為根本沒考慮 tcp/ip 是雙向的 (詳見於 iptables faq)

結論就是你可以 ping 168.95.1.1,但是你無法 ping dns.hinet.net,因為你使用的 linux 主機本身根本無法對外查詢資料,所以你的 client 端當然無法使用你的 dns 服務查資料

--
頭像被屏蔽
發表於 2006-11-16 09:30:24 | 顯示全部樓層

簡易 NAT 與 Firewall 設定

唉啊,對噢,當初就是一直光想著查到ip 後的ip 偽裝流程,卻沒
注意到一開始的dns 的問題,所以才一直想不通,真是太感謝了。
頭像被屏蔽
發表於 2006-11-16 12:00:56 | 顯示全部樓層

簡易 NAT 與 Firewall 設定

看到這篇文章,我也很感興趣,所以也照做了一遍,我的環境如下:
client (192.168.1.100)----|---NAT(DNS)---internet

NAT 對內eth1(192.168.1.254),對外eth0(61.231.53.33)
NAT 設定如下:
# 清除規則
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# 政策
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# 偽裝
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

這樣 client 存取外面網頁或收發mail 都ok,現在我也把ESTABLISHED,RELATED 那條規則拿掉,結果對外存取網頁的確是看不到了,但我發現收信時居然不會有錯誤訊息(但也收不到信),正常來說收信時,不是會先查詢outlook 裡所設定的pop3 server的hostname 對應的ip,查到後才有辦法收信?所以應該在dns 做名稱解析時,回應封包就被拒絕了,但卻沒看到啥錯誤訊息,這是什麼原因呢?
頭像被屏蔽
發表於 2006-11-16 16:56:42 | 顯示全部樓層

簡易 NAT 與 Firewall 設定

解決了,我把所有主機reboot 後在測試就ok了,可能是cache 的問題吧。
頭像被屏蔽
發表於 2007-3-26 13:02:50 | 顯示全部樓層

簡易 NAT 與 Firewall 設定

老師請問
如果我公司網路環境只是要內部對外部全開放
擋掉外部對內部的存取(因為沒有架設任何網站)
只是要能上網ftp收信等等的話用你的這個範本+adsl非固定的
可行嗎?這樣會不會不很危險
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

小黑屋|Archiver|手機版|聯成電腦技術論壇

GMT+8, 2024-11-14 23:45

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表