国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
透明防火墻架設(shè)的完全攻略(bridge+iptables+squid)
透明防火墻架設(shè)的完全攻略(bridge+iptables+squid)

架設(shè)透明代理和防火墻是linux平臺(tái)上很熱的話題,在水木上也有相關(guān)文章,但完全的攻略在公網(wǎng)上也很少,最近架了一臺(tái),前后花去一個(gè)多星期(我這人手腳慢,別笑,中間笑話也頗多)覺得還是把過程寫下來的好,可以讓人依葫蘆畫瓢。

先把網(wǎng)絡(luò)環(huán)境說一下,一個(gè)200人左右的局域網(wǎng),一個(gè)C class,一臺(tái)路由器做NAT(一個(gè)公網(wǎng)ip)。網(wǎng)絡(luò)環(huán)境還是很簡(jiǎn)單的,目的就是在路由器和局域網(wǎng)間加一臺(tái)透明防火墻進(jìn)去,同時(shí)完成cache server的功能。我不想讓防火墻做nat,一是因?yàn)橐呀?jīng)有了一臺(tái)路由器,要物盡其用。二是nat其實(shí)也是很耗資源的事(尤其當(dāng)下面的clients特別多時(shí),對(duì)router cpu的要求還是很高的,我就碰到過一臺(tái)cisco 75XX 路由器拖1000個(gè)用戶5分鐘死一次機(jī)的事,后來不得已架了一臺(tái)PIX做NAT)還是分分開的好。三是萬一cache server 趴下了,只要把鏈路重新旁接一下,網(wǎng)絡(luò)照樣用(頂多性能不好),不會(huì)影響用戶。

防火墻的平臺(tái)為一P4 2.4G server, 512M內(nèi)存,2×80GHD,兩塊NIC。安裝的是RH8.0 kernel 2.4.20(原來想裝gentoo的,但要命的1.4到現(xiàn)在才剛到RC3,等不及了,偷了一把懶~_~)

先下載bridge做橋接,bridge的作用就是讓兩塊網(wǎng)卡變成一個(gè)橋設(shè)備,讓兩端的網(wǎng)絡(luò)端口完全透明地轉(zhuǎn)發(fā)packets,而讓iptables起到blocking的作用。下載地址為http://bridge.sourceforge.net(什么?sourceforge?不知道上不去啊!沒辦法,因?yàn)楸娝苤脑?,大伙找https proxy繞上去吧?。┬柘螺dbridge-utils-0.9.6.tar.gz和bridge-nf-0.0.7-against-2.4.19.diff。(這個(gè)很重要,否則iptables無法攔截轉(zhuǎn)發(fā)過來的packets)

再到http://netfilter.samba.org下載iptables,并到www.linuxhq.xom下載最新的kernel及patch。

在/usr/src下釋放kernel,進(jìn)入/usr/src/linux,并把bridge的patch打上,patch –p1 < bridge-nf-0.0.7-against-2.4.19.diff.

下面就是重新編譯kernel了,make menuconfig.....
注意,除了要把該編譯進(jìn)去的驅(qū)動(dòng)編進(jìn)去(象NIC什么的,我第一次編時(shí)就漏了一塊網(wǎng)卡,汗ing)還要把最重要的iptables給enable起來,進(jìn)入Network Options,選中Network Packet filtering (replaces ipchains),這樣就會(huì)打開IP: Netfilter Configuration --> 子菜單,進(jìn)入,選中里面所有的選項(xiàng),然后回到Network Options菜單,選中“802.1d Ethernet Bridging” 和 “netfilter (firewalling) support”兩個(gè)選項(xiàng)(一看就知道很重要。)
退出,開編。
make dep
make modules
make modules_install
make bzImage
完成后cp /usr/src/linux/arch/i386/bzImage /boot/bzImage.bridge
然后把System.map拷至/boot下再在lilo或grub中更改相應(yīng)配置即可(這就不細(xì)說了,重編kernel的文章到處都有。)

重起,如果正常,開始下一步,tar –xzvf bridge-utils-0.9.6.tar.gz.
cd ./bridge-utils-0.9.3
make
make install(編譯bridge并安裝,具體的安裝目錄可在make文件生成時(shí)指定。)
完畢后可以先試試bridge的基本命令。如brctl addbr mybridge (創(chuàng)建bridge mybridge,然后用ifconfig查看會(huì)發(fā)現(xiàn)多了一個(gè)mybridge端口)
brctl addif mybridge eth0
brctl addif mybridge eth1 (把eth0和eth1包含到mybridge中)
然后需要對(duì)各端口做以下動(dòng)作
ifconfig eth0 0.0.0.0 promisc
ifconfig eth1 0.0.0.0 promisc(打開混雜模式)
這時(shí)橋接即已成功,從router和局域網(wǎng)轉(zhuǎn)發(fā)過來的消息開始通過機(jī)器,這時(shí)你會(huì)發(fā)覺滿屏的tcp/ip轉(zhuǎn)發(fā)消息讓你無法下手,硬盤也狂轉(zhuǎn),這是syslogd和klogd做的怪,log的priviledge設(shè)得太低,改掉它。telnet 進(jìn)入機(jī)器(這時(shí)你只能telnet,console上已經(jīng)泛濫成災(zāi)。)kill 掉syslogd和klogd,在/etc/syslog.conf中屏蔽掉*.info至/var/log/messages的rules(一開始我不知道這個(gè),結(jié)果第一天下午連到網(wǎng)絡(luò)上去,第二天上午一看,/var/log下的messages居然有2.7G,My God),并修改/etc/init.d/syslog,在daemon klogd 一項(xiàng)后加上-2 -c 4(提高klogd的消息轉(zhuǎn)發(fā)級(jí)別),重起syslogd,哈哈,整個(gè)世界清凈了?。。?

其實(shí)我們也可以寫個(gè)啟動(dòng)腳本放在/etc/init.d中,如下:
#!/bin/bash

. /etc/init.d/functions


return=$rc_done


start() {
echo "Starting service bridge tranfw"
brctl addbr tranfw || return=$rc_failed
brctl addif tranfw eth0 || return=$rc_failed
brctl addif tranfw eth1 || return=$rc_failed
ifconfig eth0 0.0.0.0 promisc || return=$rc_failed
ifconfig eth1 0.0.0.0 promisc || return=$rc_failed
brctl sethello tranfw 1 || return=$rc_failed
brctl setmaxage tranfw 4 || return=$rc_failed
brctl setfd tranfw 4 || return=$rc_failed
ifconfig tranfw 192.168.9.11 broadcast 192.168.9.255 promisc up || return=$rc_failed
/sbin/route add default gw 192.168.9.1 netmask 0.0.0.0 metric 1
echo -e "$return"
}

stop() {
echo "Shutting down service bridge tranfw"
brctl delif tranfw eth0 || return=$rc_failed
brctl delif tranfw eth1 || return=$rc_failed
brctl delbr tranfw || return=$rc_failed
echo -e "$return"
}

status(){
ifconfig tranfw
brctl show tranfw
}

restart(){
$0 stop && $0 start || return=$rc_failed
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status tranfw
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=1

esac

exit $RETVAL

這樣啟動(dòng)時(shí)就自己起來了。

下一步,我們可以開始配iptables了
tar –xjvf iptables-1.2.7.tar.bz2
cd ./iptables-1.2.7
make
make install
安裝很簡(jiǎn)單。關(guān)鍵是如何用,我懶,抄了個(gè)腳本就開用了,如下:
#!/bin/bash
#Flush all rules from the chains
iptables -F
#Delete all user created chains (mainly KEEP_STATE chain)
iptables -X

#############################################################
##Create special chain KEEP_STATE
iptables -N KEEP_STATE
iptables -F KEEP_STATE
##Drop bad states
iptables -A KEEP_STATE -m state --state INVALID -j DROP
iptables -A KEEP_STATE -m state --state RELATED,ESTABLISHED -j ACCEPT
#############################################################

#Drop RST/ACKs to limit OS detection through pinging
iptables -A FORWARD -p tcp --tcp-flags RST RST,ACK -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "RST/ACK: "
iptables -A FORWARD -p tcp --tcp-flags RST RST,ACK -j DROP

#Deny pings from outside
iptables -A FORWARD -p icmp --icmp-type 0/0 -d 192.168.9.0/24 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 0/0 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Drop Echo Reply: "
iptables -A FORWARD -p icmp --icmp-type 0/0 -j DROP

#Drop potential SQL Worm
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 1433 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1433 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Possible SQL Worm: "
iptables -A FORWARD -p tcp --dport 1433 -j DROP

#Pass all boxes to the keep_state chain
iptables -A FORWARD -j KEEP_STATE

######################################################################
##Set up UDP
#Outgoing Traceroute
iptables -A FORWARD -p udp -s 192.168.9.0/24 --sport 32769:65535 --dport 33434:33523 -j ACCEPT

#Incoming Traceroute
iptables -A FORWARD -p udp -s 192.168.9.0/24 --dport 32769:65535 --sport 33434:33523 -j ACCEPT

#Time exceeded
iptables -A FORWARD -p udp -s 192.168.9.0/24 --dport 11 -j ACCEPT

#Port not found
iptables -A FORWARD -p udp -s 192.168.9.0/24 --dport 3 -j ACCEPT

#DNS
iptables -A FORWARD -p udp -s 192.168.9.0/24 --dport 53 -j ACCEPT

#SNMP
iptables -A FORWARD -p udp -s 192.168.9.0/24 --dport 161 -j ACCEPT

#DHCP
iptables -A FORWARD -p udp -s 192.168.9.0/24 --sport 68 --dport 67 -j ACCEPT

#Time Server
iptables -A FORWARD -p udp -s 192.168.9.0/24 --sport 1024:65535 --dport 123 -j ACCEPT

######################################################################
##Allow outward browsing
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 80 -j ACCEPT

##Allow outward ssh
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 22 -j ACCEPT

##Allow outward ftp
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 21 -j ACCEPT

##Allow outward telnet
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 23 -j ACCEPT

##Allow outward smtp
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 25 -j ACCEPT

##Allow outward pop
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 110 -j ACCEPT

###Block HTTP Request from outside that are not authorized
iptables -A FORWARD -p tcp --dport 80 -j DROP
iptables -A FORWARD -p tcp --dport 80 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Dropped HTTP: "

#Allow Telnet out
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 23 -j ACCEPT

#Deny ports
##telnet
iptables -A FORWARD -p tcp --dport 23 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Denied Telnet: "

#Deny ports
##telnet
iptables -A FORWARD -p tcp --dport 23 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Denied Telnet: "
iptables -A FORWARD -p tcp --dport 23 -j DROP

##Deny BO
iptables -A FORWARD -p udp --dport 31337 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Denied BO: "
iptables -A FORWARD -p udp --dport 31337 -j DROP

#Deny and log ftp on all others
#iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 21 -j DROP
#iptables -A FORWARD -p tcp --dport 21 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Denied FTP: "

#Deny suspicious traffic
iptables -A FORWARD -p tcp --destination-port 1080 -j DROP
iptables -A FORWARD -p tcp --destination-port 8080 -j DROP
iptables -A FORWARD -p tcp --destination-port 8000 -j DROP
iptables -A FORWARD -p tcp --destination-port 8081 -j DROP

##Allow all outgoing traffic
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128 (轉(zhuǎn)發(fā)至squid)
iptables -A FORWARD -s 192.168.9.0/24 -j ACCEPT

#Set to drop all packets not accepted by rules above
iptables -A FORWARD -j DROP

也把它放到/etc/init.d中,這樣就可以隨著xinet.d一起啟動(dòng)了。iptables的語(yǔ)法這里就不詳細(xì)說了,網(wǎng)上很多。

最后就是squid的配置,這需要仔細(xì)說一下,隨RH發(fā)布的squid的配置有問題,性能受限。建議先卸除,到www.squid-cache.org下載最新的2.5stable1。然后重新編譯,編譯前需做以下準(zhǔn)備工作:
1。編輯/usr/include/bits/types.h中__FD_SETSIZE值至32768
2。ulimit -HSn 32768
然后到squid src包目錄編譯squid ,./configure, make all, make install.....
squid會(huì)安裝在缺省的/usr/local/squid下,squid的可執(zhí)行文件在安裝目錄的bin子目錄下,配置文件在etc子目錄下

Squid配置文件為:/usr/local/squid/etc/squid.conf,以下為我的配置:
http_port 8080
cache_mem 32 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
cache_dir ufs /usr/local/squid/cache 10000 16 256
cache_access_log /usr/local/squid/logs/access.log
cache_log /usr/local/squid/logs/cache.log
dns_nameservers 202.96.209.5
unlinkd_program /usr/local/squid/bin/unlinkd
acl acllist src 192.168.9.0/255.255.255.0
acl regular_days time MTWHF 8:00-19:00
acl movie urlpath_regex "/etc/squid/banned.list"(把過濾關(guān)鍵字寫到文件中去)
acl banned url_regex iij4u.or.jp(做些控制)
acl cache_prevent1 url_regex cgi-bin /?
acl cache_prevent2 url_regex Servlet
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
http_access deny movie regular_days
no_cache deny cache_prevent1
no_cache deny cache_prevent2
http_access deny banned
http_access allow all
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
icp_access allow all
http_access allow manager localhost
http_access deny manager
http_access allow localhost
http_access deny all
client_lifetime 2 hours
half_closed_clients off
cache_effective_user squid
cache_effective_group squid(請(qǐng)注意squid對(duì)cache及l(fā)og目錄有讀寫權(quán))
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

同時(shí)在/etc/init.d中的啟動(dòng)腳本里加上這句ulimit -HSn 32768
這樣squid啟動(dòng)時(shí)在cache.log中就可以看到如此語(yǔ)句:
2003/03/05 09:30:53| Starting Squid Cache version 2.5.STABLE1-20030303 for i686-pc-linux-gnu...
2003/03/05 09:30:53| Process ID 12939
2003/03/05 09:30:53| With 32768 file descriptors available

此時(shí)的squid擁有32768個(gè)file descriptors(缺省為1024),如果用戶很多,缺省值會(huì)成為瓶頸,極度影響squid的速度(它會(huì)報(bào)錯(cuò)說running out of file descriptors),我曾經(jīng)在板上發(fā)問,結(jié)果沒人理我:-((,還是自力更生,豐衣足食。

啟動(dòng)squid:/usr/local/squid/bin/squid -D

大功告成!整個(gè)出internet的http流量就全朝squid走了,用戶不知道,同時(shí)又可完成封鎖的功能。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Iptables L7 Squid實(shí)現(xiàn)完善的軟件防火墻
linux+squid+iptables企業(yè)方案
IP6tables
iptables 原理及應(yīng)用詳解(轉(zhuǎn))
Linux防火墻Iptables設(shè)置
Linux iptables + TC做網(wǎng)關(guān)腳本 - linux/unix技術(shù)專區(qū) - 操...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服