作者 主題: [問題]求助! About Iptables & DNS...  (閱讀 5684 次)

0 會員 與 1 訪客 正在閱讀本文。

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 於: 2004-08-18 09:18 »
又來麻煩學長了
我的防火牆架起來了
經由iptables 來做的防火牆
在各個port連線幾乎都沒有問題
但dns 連不進來,telnet 53也沒開
可是在telnet localhost 53 是ok的
所以我想應該是防火牆的問題
規則如下
又,如果我想把22 port 訂定只有特定的ip(假設為11.22.33.44)又該如何設定呢?

#!/bin/sh
NAT=1
NATSRC="192.168.3.0/24"
EXTIF="eth0"
INTIF="eth1"
BADIPS="12.34.56.78 123.100.200.0/24"
TCP_PORTALLOWED="20 21 22 25 53 80 110 3306 10000"
UDP_PORTALLOWED="53"
ICMPALLOWED="0 3 8 11"
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

echo -n "Initiating iptables..."
iptables -t filter -F
iptables -t nat -F
iptables -t filter -X
iptables -t nat -X
echo "ok"
if [ "$NAT" = "1" ]; then
echo -n "Setting NAT..."
echo "1" > /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp
iptables -t nat -A POSTROUTING -o $EXTIF -s $NATSRC -j MASQUERADE
echo "ok"
fi
echo -n "Setting rules..."
for ip in $BADIPS ; do
iptables -A INPUT -i $EXTIF -s $ip -j DROP
done
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
#iptables -A OUTPUT -p udp -m state --state NEW --dport 53 -j ACCEPT
iptables -A OUTPUT -m owner ! --uid-owner 0 -j DROP
iptables -N other
for type in $ICMPALLOWED ; do
iptables -A other -p icmp -m state --state NEW --icmp-type $type -j ACCEPT
done
for port in $TCP_ALLOWED ; do
iptables -A other -p tcp --dport $port --syn -m state --state NEW -i $EXTIF -j ACCEPT
done
for port in $UDP_PORTALLOWED ; do
iptables -A other -p udp --dport $port -m state --state NEW -i $EXTIF -j ACCEPT
done

iptables -A INPUT -p tcp -i $EXTIF --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -i $EXTIF --dport 10000 -j ACCEPT

iptables -A INPUT -p udp -i $EXTIF --dport 53 -j ACCEPT

iptables -A other -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A other -m state --state NEW,INVALID -i $EXTIF -j DROP
iptables -A other -m state --state NEW -i ! $EXTIF -j ACCEPT
iptables -A INPUT -j other
iptables -A OUTPUT -j other
iptables -A FORWARD -j other
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -I PREROUTING -m mac --mac-source 00:00:00:00:00:00 -j DROP
echo "ok"
if [ "$1" = "start" ]; then exit ;fi
echo -e "\n TEST MODE"
echo -n "ALL chains will be cleand after 7 sec."
i=1;while [ "$i" -le "7" ]; do
echo -n "."
i=`expr $i + 1`
sleep 1
done
echo -en "\nFlushing ruleset..."
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t filter -F
iptables -t nat -F
iptables -t filter -X
iptables -t nat -X
echo "ok"

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #1 於: 2004-08-18 10:04 »
我想,如果您把 iptables-save 的結果列示出來,應該有比較多的人願意幫您。 ^_^
--
雖然這個 script 檔已經可以說制式化了,但我就是沒耐心看完全部。 :(

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #2 於: 2004-08-18 10:11 »
引述: "jou"
我想,如果您把 iptables-save 的結果列示出來,應該有比較多的人願意幫您。 ^_^
--
雖然這個 script 檔已經可以說制式化了,但我就是沒耐心看完全部。 :(

真對不起,忘了這個禮貌了
看看還需要什麼我在補

[root@mail root]# iptables-save
# Generated by iptables-save v1.2.8 on Wed Aug 18 09:34:53 2004
*nat
:PREROUTING ACCEPT [2388:136560]
:POSTROUTING ACCEPT [56:3570]
:OUTPUT ACCEPT [66:4150]
-A PREROUTING -m mac --mac-source 00:00:00:00:00:00 -j DROP
-A POSTROUTING -s 192.168.3.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Aug 18 09:34:53 2004
# Generated by iptables-save v1.2.8 on Wed Aug 18 09:34:53 2004
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:other - [0:0]
-A INPUT -s 12.34.56.78 -i eth0 -j DROP
-A INPUT -s 123.100.200.0/255.255.255.0 -i eth0 -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -j other
-A FORWARD -j other
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m owner !--uid-owner root -j DROP
-A OUTPUT -j other
-A other -p icmp -m state --state NEW -m icmp --icmp-type 0 -j ACCEPT
-A other -p icmp -m state --state NEW -m icmp --icmp-type 3 -j ACCEPT
-A other -p icmp -m state --state NEW -m icmp --icmp-type 8 -j ACCEPT
-A other -p icmp -m state --state NEW -m icmp --icmp-type 11 -j ACCEPT
-A other -i eth0 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
-A other -m state --state RELATED,ESTABLISHED -j ACCEPT
-A other -i eth0 -m state --state INVALID,NEW -j DROP
-A other -i ! eth0 -m state --state NEW -j ACCEPT
COMMIT
# Completed on Wed Aug 18 09:34:53 2004

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #3 於: 2004-08-18 10:24 »
再補一個
[root@mail root]# iptables -L  
Chain INPUT (policy DROP)
target     prot opt source               destination        
DROP       all  --  12.34.56.78          anywhere          
DROP       all  --  123.100.200.0/24     anywhere          
ACCEPT     all  --  anywhere             anywhere          
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ftp-data
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:smtp
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:pop3
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:10000
ACCEPT     udp  --  anywhere             anywhere           udp dpt:domain
other      all  --  anywhere             anywhere          

Chain FORWARD (policy DROP)
target     prot opt source               destination        
other      all  --  anywhere             anywhere          

Chain OUTPUT (policy DROP)
target     prot opt source               destination        
ACCEPT     all  --  anywhere             anywhere          
DROP       all  --  anywhere             anywhere           !OWNER UID match root
other      all  --  anywhere             anywhere          

Chain other (3 references)
target     prot opt source               destination        
ACCEPT     icmp --  anywhere             anywhere           state NEW icmp echo-reply
ACCEPT     icmp --  anywhere             anywhere           state NEW icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere           state NEW icmp echo-request
ACCEPT     icmp --  anywhere             anywhere           state NEW icmp time-exceeded
ACCEPT     udp  --  anywhere             anywhere           udp dpt:domain state NEW
ACCEPT     all  --  anywhere             anywhere           state RELATED,ESTABLISHED
DROP       all  --  anywhere             anywhere           state INVALID,NEW
ACCEPT     all  --  anywhere             anywhere           state NEW

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
Re: [問題]求助! About Iptables & DNS...
« 回覆 #4 於: 2004-08-18 11:26 »
引述: "andyj"
如果我想把22 port 訂定只有特定的ip(假設為11.22.33.44)又該如何設定呢?

可以利用 tcp wrapper 設定或把這一行
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
加上 -s 11.22.33.44

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #5 於: 2004-08-18 11:42 »
引述: "andyj"
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT

如果 eth0 是對內網卡,那上列一行只允許內向外的 port 53 udp ,
那外向內的 port 53 udp 怎麼過?
試著加入
-A INPUT -d 61.218.xxx.xxx -i eth1 -p udp -m udp --dport 53 -j ACCEPT
試試?

其實對內部網路,我設得比較寬鬆。
-A INPUT -i eth0 -j ACCEPT

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #6 於: 2004-08-18 11:46 »
引述: "jou"
引述: "andyj"
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT

如果 eth0 是對內網卡,那上列一行只允許內向外的 port 53 udp ,
那外向內的 port 53 udp 怎麼過?
試著加入
-A INPUT -d 61.218.xxx.xxx -i eth1 -p udp -m udp --dport 53 -j ACCEPT
試試?

其實對內部網路,我設得比較寬鬆。
-A INPUT -i eth0 -j ACCEPT


eth0是對外網卡
因為這是對外的DNS Server
所以我必須要將eth0設成對外所有人可以查詢
照jou您這樣設定就全部都通?

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
Re: [問題]求助! About Iptables & DNS...
« 回覆 #7 於: 2004-08-18 11:47 »
引述: "jou"
引述: "andyj"
如果我想把22 port 訂定只有特定的ip(假設為11.22.33.44)又該如何設定呢?

可以利用 tcp wrapper 設定或把這一行
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
加上 -s 11.22.33.44


那就是
iptables -A INPUT -i eth0 -p tcp -m tcp -s 11.22.33.44 --dport 22 -j ACCEPT
這樣嗎?

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
Re: [問題]求助! About Iptables & DNS...
« 回覆 #8 於: 2004-08-18 11:54 »
引述: "andyj"
引述: "jou"
引述: "andyj"
如果我想把22 port 訂定只有特定的ip(假設為11.22.33.44)又該如何設定呢?

可以利用 tcp wrapper 設定或把這一行
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
加上 -s 11.22.33.44


那就是
iptables -A INPUT -i eth0 -p tcp -m tcp -s 11.22.33.44 --dport 22 -j ACCEPT
這樣嗎?


測試ok!
iptables -A INPUT -p tcp -s 11.22.33.44 -i $EXTIF --dport 22 -j ACCEPT

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #9 於: 2004-08-18 12:00 »
引述: "andyj"
引述: "jou"
引述: "andyj"
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT

如果 eth0 是對內網卡,那上列一行只允許內向外的 port 53 udp ,
那外向內的 port 53 udp 怎麼過?
試著加入
-A INPUT -d 61.218.xxx.xxx -i eth1 -p udp -m udp --dport 53 -j ACCEPT
試試?

其實對內部網路,我設得比較寬鬆。
-A INPUT -i eth0 -j ACCEPT


eth0是對外網卡
因為這是對外的DNS Server
所以我必須要將eth0設成對外所有人可以查詢
照jou您這樣設定就全部都通?

要分清楚對內和對外!! 這很重要!!
紅色那兩行,第一行是外面來查詢的
第二行是內部網路來的,我設得寬鬆。

edwardleung

  • 俺是博士!
  • *****
  • 文章數: 1135
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #10 於: 2004-08-18 12:18 »
引用

-A INPUT -d 61.218.xxx.xxx -i eth1 -p udp -m udp --dport 53 -j ACCEPT


Is it :
-A INPUT -s 61.218.xxx.xxx -i eth1 -p udp -m udp --dport 53 -j ACCEPT

right ?

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #11 於: 2004-08-18 13:05 »
引述: "jou"

要分清楚對內和對外!! 這很重要!!
紅色那兩行,第一行是外面來查詢的
第二行是內部網路來的,我設得寬鬆。


可是我只是要設成外面任何一個ip都可以來查詢
這樣還要設ip嗎?

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #12 於: 2004-08-18 13:14 »
引述: "edwardleung"
引用

-A INPUT -d 61.218.xxx.xxx -i eth1 -p udp -m udp --dport 53 -j ACCEPT


Is it :
-A INPUT -s 61.218.xxx.xxx -i eth1 -p udp -m udp --dport 53 -j ACCEPT

right ?

Not!
It is "-d" My IP.  ^_^

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #13 於: 2004-08-18 13:24 »
iptables -A INPUT -p udp -i $EXTIF --dport 53 -j ACCEPT
PS:$EXTIF=eth0

所以其實我這樣的話應該就已經開啟給外面的人來查詢了對吧
可是還是無法查詢....外面無法連線 telnet ip 53 沒開!

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #14 於: 2004-08-18 13:24 »
-A INPUT -d xxx.xxx.xxx.xxx -i eth0 -p udp -m udp --dport 53 -j ACCEPT
這一行表示,從外面進來的( -i eth0 ) protocal 是( -p udp ) match udp 是目的埠 53 ,目的位置是( -d xxx.xxx.xxx.xxx 您的 DNS 主機的 public IP)。
ps. 在這裡,-d 可有可無,自行拿捏。多這個的意思是說: 只對本機作 DNS 的查詢的封包通過。

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #15 於: 2004-08-18 13:25 »
iptables -A INPUT -d 220.229.x.x -i eth0 -p udp -m udp --dport 53 -j ACCEPT

所以其實我這樣的話應該就已經開啟給外面的人來查詢了對吧
可是還是無法查詢....外面無法連線 telnet ip 53 沒開!
nslook也都無法查詢只給我request time out

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #16 於: 2004-08-18 14:28 »
代碼: [選擇]
-A OUTPUT -m owner !--uid-owner root -j DROP
會不會是這一條規則的問題?停下來檢查。

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #17 於: 2004-08-18 14:33 »
引述: "jou"
代碼: [選擇]
-A OUTPUT -m owner !--uid-owner root -j DROP
會不會是這一條規則的問題?停下來檢查。


兇手真的是他.....
限定只有root的權限才能夠送出...
所以一般的anonymous都被擋掉,包含查詢....

Jou 真是感謝你喔
花了你半天的時間教育我 :lol:

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #18 於: 2004-08-26 10:57 »
在請問個笨問題
以下面這個規則
iptables -A INPUT -p tcp -s 220.228.x.x -i $EXTIF --dport 22 -j ACCEPT

可以看到220.228.x.x可以連線進來22port
那如果我有兩個以上的ip要怎麼設定?
我有試過-s 220.228.x.x 與229.37.x.x
中間用空白或逗號(,)都不行
因此想請學長在次指導一下!

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #19 於: 2004-08-26 11:19 »
雖然有 --iprange 的選項。
但您這是不同網段,所以...
再加一條規則就好了呀!!  ^+++^

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #20 於: 2004-08-26 11:30 »
引述: "jou"
雖然有 --iprange 的選項。
但您這是不同網段,所以...
再加一條規則就好了呀!!  ^+++^


同時用
iptables -A INPUT -p tcp -s 220.228.x.x -i $EXTIF --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s 229.37.x.x -i $EXTIF --dport 22 -j ACCEPT

這樣??

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #21 於: 2004-08-26 11:41 »
是的!!

andyj

  • 鑽研的研究生
  • *****
  • 文章數: 957
    • 檢視個人資料
[問題]求助! About Iptables & DNS...
« 回覆 #22 於: 2004-08-26 11:44 »
原來如此!
測試ok!
感恩喔!