LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 757|回复: 2

高手指点下在iptables 下怎么吧FTP提供出去

[复制链接]
发表于 2005-7-10 11:11:11 | 显示全部楼层 |阅读模式
我吧21 和20断口都打开了FTP就是提供不出去 高手帮帮我
发表于 2005-7-10 13:17:34 | 显示全部楼层
IPtables與防火?

單機型 firewall 將Server藏在LAN中--DNAT

 

iptables 跟 ipchains 是無法同時使用,如果您已經使用 ipchains ,要改用 ipta
bles 時,要先將 ipchains 的 modules 移除,在載入 iptables 的 module , 才可
以使用 iptables !!

1.先檢查是否載入 ipchains module

lsmod | grep ipchains

2.如果有的話,要移除 ipchains

/etc/rc.d/init.d/ipchains stop ( or ipchains -F )

rmmod ipchains

3.再檢查是否有成功移除

lsmod | grep ipchains

4.載入 iptable module

modprobe ip_tables

 

------------------------------------------------------------------------
--------

防止別人用ACK、SYN、FIN等等的封包?頀呙 Linux

iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

 

------------------------------------------------------------------------
--------

NAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

不過此時 ftp 會無法正常運作,必須另外再加上

modprobe ip_conntrack_ftp

modprobe ip_nat_ftp

另外可以配合 proxy server,?娭泼刻 client 端均透過 proxy 連線

iptables -t nat -I PREROUTING -i eth0 -p tcp -s 192.168.0.0/255.255.255.
0 -d 192.168.0.113 --dport 80 -j ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.0.0/24 --dport 8
0 -j REDIRECT --to-port 3128

 

 

------------------------------------------------------------------------
--------

限制連線條件

iptables -A FORWARD -p TCP -s 11.22.33.44 -d 44.33.22.11 -j DROP

? 11.22.33.44 的 port 1024-65535 連線到 44.33.22.11 的 port 80 ,一律檔掉
!!

iptables -A FORWARD -p TCP -s 11.22.33.44 --sport 1024:65535 -d 44.33.22
.11 --dport www -j DROP

 

------------------------------------------------------------------------
--------

防止 port scan

# NMAP FIN/URG/PSH

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

# Xmas Tree

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP

# Another Xmas Tree

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j
DROP

# Null Scan(possibly)

iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP

# SYN/RST

iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# SYN/FIN -- Scan(possibly)

iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

 

------------------------------------------------------------------------
--------

防止 sync flood 攻擊的設定:

iptables -N synfoold

iptables -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN

iptables -A synfoold -p tcp -j REJECT --reject-with tcp-reset

iptables -A INPUT -p tcp -m state --state NEW -j synfoold

不過流量一大就不太好了!!

所以可以調整時間與次數的觸發值

iptables -N ping

iptables -A ping -p icmp --icmp-type echo-request -m limit --limit 1/sec
ond -j RETURN

iptables -A ping -p icmp -j REJECT

iptables -I INPUT -p icmp --icmp-type echo-request -m state --state NEW
-j ping

關閉主機的 icmp echo request

或者是直接設定主機不回應 echo request

/proc/sys/net/ipv4/icmp_echo_ignore_all

------------------------------------------------------------------------
--------

其他 iptables 的 sample

# 掛入相關 module

modprobe ip_tables

modprobe ip_conntrack

modprobe ip_conntrack_ftp

modprobe ip_conntrack_irc

# 先清成空白

iptables -F

iptables -X

iptables -F -t nat

iptables -X -t mangle

# 把 FORWARD 關閉

iptables -P FORWARD DROP

# 這是打開讓自己網域可以方便連結,也就是該網域不設防

iptables -A INPUT -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT

# 允許相關連結服務

iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT

iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 113 -j ACCEPT

iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCE
PT

iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP

上面是打開允許 port 20、21、22、23、25、53、110、113 等服務才能夠

被外面所連線。

port 20、21 : ftp 使用的。

port 22 : ssh 連線

port 23 : telnet 連線。方便使用,其?不開放比較安全。

port 25 : sendmail 使用。讓信件可以寄進?怼

port 53 : dns 使用。dns 需要打開 udp 使用。

port 110 : pop3 使用

port 113 : auth 身份確認。打開是讓一些使用該 113 確認身份的主機

不至於反查時會卡住很久。

最後一行是對於主動連線或者是不合法連線,一律通通拒絕掉。

這個 script 內容,很適用只允許外面連結特定的 port 服務,剩下的其餘

port 就拒絕外面主動建立的連線。

 

(以上部分轉載自網路上的 news ,?碜孕≈菪值拇笞,可惜小編一直抽不出時間完整
的整理 iptables ...殘廿...)

 

以下是小編針對單一防護型的 server , 所撰寫的 iptables ,其目的只有防護自己
,如果您的情形也是如此,可以直接採用,只需要修改哪些 port 要開放就可以了!!

#!/bin/sh

# Sep,30,2002 Mon Anderson add for testing

# load modules if necessary

modprobe ip_tables

# modprobe ip_conntrack

# modprobe ip_conntrack_ftp

# modprobe ip_conntrack_irc

# disable all chains

iptables -F

iptables -t nat -F

iptables -t mangle -F

# define default policy

iptables -P FORWARD DROP

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

# allow all localhost

iptables -A INPUT -i lo -j ACCEPT

# allow ssh

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT

# iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

# iptables -A INPUT -p tcp -d 192.168.0.229 -j ACCEPT

# log

# iptables -A INPUT -p tcp -d 0.0.0.0/24 -j LOG --log-prefix "DROP_AAA__
" --log-level info

# iptables -A INPUT -p tcp --dport 1:65535 -j LOG --log-prefix "DROP_BBB
__ " --log-level info

# allow old connection and deny new connection

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


iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP

如果用 iptables -L ,會得到以下結果

Chain INPUT (policy DROP)

target prot opt source destination

ACCEPT all -- anywhere anywhere

ACCEPT tcp -- anywhere anywhere tcp dpt:ssh

ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED

DROP all -- anywhere anywhere state INVALID,NEW

Chain FORWARD (policy DROP)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

Chain RH-Lokkit-0-50-INPUT (0 references)

target prot opt source destination

另外,使用 iptables -t nat -L ,會得到以下結果

Chain PREROUTING (policy ACCEPT)

target prot opt source destination

Chain POSTROUTING (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

以上的 script , 用?肀Wo單機型的 server ,應該是足夠了!!

------------------------------------------------------------------------
--------

將 Server 藏在 LAN 中--DNAT 的?作

看完單機型的 firewall , 接著就?砜纯慈绾卫 iptables ?作 firewall ,
將需要保護的 server 藏到 LAN , 透過 firewall ?作 DNAT 的方式?肀Wo!!

架構圖如下 :

 

將 WWW Server 藏到 192.168.0.1 , 但是希望 Internet 的其他 user ,輸入 htt
p://11.22.33.44/ 能夠看到 192.168.0.1 的網頁內容

 

#!/bin/sh

# Dec,11,2002 Wed Anderson add for testing

# load modules if necessary

modprobe ip_tables

modprobe ip_conntrack

modprobe ip_conntrack_ftp

modprobe ip_conntrack_irc

# disable all chains

iptables -F

iptables -t nat -F

iptables -t mangle -F

# disable forward chain

# iptables -P FORWARD DROPecho "1" > /proc/sys/net/ipv4/ip_forward

iptables -P FORWARD ACCEPT

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

# alloe all localhost

iptables -A INPUT -i lo -j ACCEPT

# allow specical IP

# iptables -A INPUT -p tcp -d 192.168.0.1 -j ACCEPT

# allow ssh

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT

# allow http

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT

# allow old connection and deny new connection

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


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


iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP

iptables -A INPUT -i eth1 -m state --state NEW,INVALID -j DROP

# setup DMZ -- DNAT

iptables -A PREROUTING -t nat -i eth0 -p tcp -d 11.22.33.44 --dport 80 -
j DNAT --to-destination 192.168.0.1:80

# open DMZ goto Internet

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

 

 

至於 WWW Server , 只要將 Default Gateway 指向 192.168.0.254 即可以,此時就
可以? Internet 上,輸入 http://11.22.33.44 連結到 LAN 上的 WWW Server 了
!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-10 19:50:24 | 显示全部楼层
谢谢 :)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表