GNU/Linux和FreeBSD上的NAT閘道器安裝(轉)

post0發表於2007-08-10
GNU/Linux和FreeBSD上的NAT閘道器安裝(轉)[@more@]

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!絕對不要遠端除錯防火牆配置!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

硬體需求:

雙網路卡

記憶體 > 64M

硬碟 > 1G

注:

NAT閘道器本身效率都很高,所以即使在配置很低的機器上執行效率也是足夠的(仍建議儘可能多的增加記憶體 > 256M),

如果需要記錄日誌做分析,則會產生很大的I/O操作並佔用大量硬碟空間,建議使用SCSI硬碟並做日誌輪循。

假設2塊網路卡分別按照以下網段設定:

內網網路卡IP地址:192.168.0.1/255.255.255.0 本身為閘道器

外網網路卡IP地址:111.222.111.222/255.255.255.192 閘道器:111.222.111.1

安全策略:

作為閘道器,安全性非常重要,建議除了遠端登入用的SSH外,儘可能多的停掉所有不相關服務。

本安裝文件只是最簡單的配置,沒有任何安全過濾規則,更多安全過濾規則需要根據實際情況補充。

FreeBSD 4.7上用IPFIREWALL做NAT閘道器

安裝FreeBSD系統時包含開發平臺(gcc工具等),因為核心預設不支援地址轉發和防火牆,所以需要重新編譯核心。

核心編譯

========

由於核心預設不支援地址轉發和防火牆,所以需要重新編譯核心:

#cd /usr/src/sys/i386/conf/

#cp GENERIC GATEWAY

#vi GATEWAY

修改後的核心配置:修改了名稱和增加了IPFIREWALL的相關選項:

#diff GATEWAY GENERIC

25c25

< ident GATEWAY

---

> ident GENERIC

62,64d61 加入IPFIREWALL選項

< options IPFIREWALL

< options IPFIREWALL_VERBOSE

< options IPDIVERT

重新編譯:大約需要30分鐘左右

#/usr/sbin/config GATEWAY

#cd ../../compile/GATEWAY/

#make depend; make; make install

重啟機器一次,確認新的KERNEL正常啟動。

修改rc.conf中的相關配置:假設內網使用網路卡fxp0,外網網路卡使用xl0

###############################################

gateway_enable="YES"

ifconfig_fxp0="inet 192.168.0.1 netmask 255.255.255.0"

ifconfig_xl0="inet 111.222.111.222 netmask 255.255.255.0"

defaultrouter="111.222.111.1"

natd_enable="YES"

natd_interface="xl0"

firewall_enable="YES"

firewall_type="open"

###############################################

防火牆過濾規則設定

==================

ipfw的規則是透過執行/etc/rc.firewall這個指令碼生效的,rc.firewall指令碼會檢查rc.conf中firewall_type等配置,然後根據firewall_type定義的模式"open" "client" "simple"等切換到rc.firewall中相應部分執行。

一個安全的防火牆本身是一個非常複雜的策略。為了方便配置,可以以rc.firewall檔案為基礎,在各種預設模式的基礎上加入自己的規則。預設最簡單的防火牆配置是在rc.conf裡設定使用"open"模式,

注意:修改rc.firewall配置建議從最簡單的"open"模式開始,而且讓修改生效前,一定將舊的成功執行的配置檔案備份成rc.firewall.bak,便於以後的錯誤後恢復,如果防火牆配置錯誤可能導致遠端無法登陸,因此修改防火牆配置一定要在伺服器終端介面進行。

日誌記錄

========

檔案系統最佳化: 使用非同步檔案系統提高效能async

vi /etc/fstab

/dev/da0s1f /tmp ufs rw,async 2 2

/dev/da0s1g /usr ufs rw,async 2 2

修改rc.firewall中"open"模式中的配置:開啟記錄日誌

#${fwcmd} add 65000 pass all from any to any

${fwcmd} add 65000 pass log all from any to any

修改/etc/newsyslog.conf 增加security日誌的儲存上限從100k到 10000K

/var/log/security 600 10 10000 * Z

新的配置生效

============

修改防火牆配置後,可以用

#sh /etc/rc.firewall

讓新的配置生效

常用命令

========

ipfw list:顯示目前的配置規則:

#ipfw list

00050 divert 8668 ip from any to any via xl0

00100 allow ip from any to any via lo0

00200 deny ip from any to 127.0.0.0/8

00300 deny ip from 127.0.0.0/8 to any

65000 allow log ip from any to any

65535 deny ip from any to any

ipfw show:顯示各種規則的統計資訊

# ipfw show

00050 1008267 632203534 divert 8668 ip from any to any via vr0

00100 0 0 allow ip from any to any via lo0

00200 0 0 deny ip from any to 127.0.0.0/8

00300 0 0 deny ip from 127.0.0.0/8 to any

65000 1782079 1257247553 allow ip from any to any

65535 36 31871 deny ip from any to any

RedHat 8上用iptables做NAT閘道器

將下列內容加入/etc/rc.local檔案中:eth0綁內網IP eth1綁外網IP

################

echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/modprobe ip_tables

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_nat

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_nat_ftp

/sbin/iptables --flush INPUT

/sbin/iptables --flush FORWARD

/sbin/iptables --flush POSTROUTING --table nat

/sbin/iptables --policy FORWARD DROP

/sbin/iptables --table nat --append POSTROUTING --out-interface eth1 --source 192.168.0.0/24 --jump MASQUERADE

/sbin/iptables --append FORWARD --in-interface eth1 --match state --state ESTABLISHED,RELATED --jump ACCEPT

/sbin/iptables --append FORWARD --source 192.168.0.0/24 --jump ACCEPT

################

iptables --list檢視過濾

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940793/,如需轉載,請註明出處,否則將追究法律責任。

相關文章