自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CentOS+iptables+squid透明代理+防火墻設(shè)置

系統(tǒng) Linux
本文詳細(xì)介紹了CentOS+iptables+squid透明代理+防火墻設(shè)置情況,具體的說明和配置方法都可以在文章里找到!

#p#CentOS+iptables+squid透明代理+防火墻設(shè)置問題困擾許多人們,我在這里幫大家集體解決下!

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

  相關(guān)資源:

  man.chinaunix.net,左下角有iptables的man,仔細(xì)看看。

  系統(tǒng):

  CentOS4.2,三塊網(wǎng)卡,兩個(gè)內(nèi)網(wǎng),一個(gè)外網(wǎng)。雙至強(qiáng),2GHz,2GB內(nèi)存。服務(wù)器主要開了squid,sshd,其他的一律閉掉了。

  eth0:192.168.100.1

  eth1:192.168.168.12

  eth2:A.B.C.D ?? 外網(wǎng)地址

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

  squid設(shè)定能根據(jù)自己的情況來,我們假設(shè)其端口為3128,在三塊網(wǎng)卡上都有監(jiān)聽(不要綁定某一個(gè)IP或網(wǎng)卡)。

  /etc/squid/squid.conf

  http_port 3128

  cache_mem 1000 MB

  cache_swap_low 90

  cache_swap_high 95

  cache_dir ufs /opt/cache/squid 8000 16 256

  cache_access_log /var/log/squid/access.log

  cache_store_log /var/log/squid/store.log

  dns_nameservers 210.77.192.88

  maximum_object_size 409600 KB

  maximum_object_size_in_memory 64000 KB

  emulate_httpd_log on

  ipcache_size 1024

  ipcache_low 90

  ipcache_high 95

  fqdncache_size 1024

  forwarded_for off

  coredump_dir /opt/cache/squid/coredump

  httpd_accel_port 80

  httpd_accel_host virtual

  httpd_accel_with_proxy on

  httpd_accel_single_host off

  httpd_accel_uses_host_header on

  acl all src 0.0.0.0/0

  acl lixiaedu100 src 192.168.100.0/24

  acl lixiaedu168 src 192.168.168.0/24

  http_access allow lixiaedu100

  http_access allow lixiaedu168

  http_access deny all

  cache_effective_user squid

  cache_effective_group squid

  cache_mgr

  zhaobing8181@163.com

  visible_hostname lixiaedu

#p#

  iptables設(shè)定。iptables的設(shè)定分為兩部分,一是怎么進(jìn)行SNAT,二是在開設(shè)了squid的情況下怎么進(jìn)行安全防護(hù)的問題。

  一、SNAT

  modprobe ip_tables

  modprobe iptable_nat

  modprobe iptable_filter

  modprobe ip_conntrack_ftp

  modprobe ip_nat_ftp

  加掛一些iptables的必要的模塊,以便調(diào)用。

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

  打開“轉(zhuǎn)發(fā)”功能。讓數(shù)據(jù)包能在不同的網(wǎng)卡間“流動(dòng)”。

  iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth2 -j SNAT --to A.B.C.D

  iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o eth2 -j SNAT --to A.B.C.D

  iptables -t nat -A PREROUTING -s 192.168.100.0/24 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

  iptables -t nat -A PREROUTING -s 192.168.168.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

  上面這四句比較重要,是進(jìn)行透明代理的關(guān)鍵。前兩句的作用是進(jìn)行“源地址轉(zhuǎn)換”,也就是說要進(jìn)行內(nèi)網(wǎng)地址到外網(wǎng)地址的轉(zhuǎn)換。執(zhí)行了這兩句,即使沒有squid,內(nèi)網(wǎng)機(jī)器也能上網(wǎng)了。

  后面兩句是對(duì)從兩個(gè)內(nèi)網(wǎng)網(wǎng)卡進(jìn)入的、tcp協(xié)議的、目的端口號(hào)是80的,做“端口重定向”。重定向到3128端口。這樣,squid就能接到這個(gè)數(shù)據(jù)包了。

  OK!如果你的squid沒有問題,而且你也執(zhí)行了上面的語句,并且沒有報(bào)錯(cuò)。那就恭喜你,一個(gè)iptables+squid的透明代理做成了。如果你不相信,有兩個(gè)方法能測(cè)試:一是登錄:

  http://ipid.shat.net

  ,這是個(gè)國(guó)外網(wǎng)站,能顯示你的外網(wǎng)ip地址,更有是否被代理過。二是在一臺(tái)內(nèi)網(wǎng)機(jī)器上下載一個(gè)文件,或看一頁圖片非常多而且較慢的網(wǎng)頁,然后轉(zhuǎn)到另一臺(tái)內(nèi)網(wǎng)機(jī)器上下載同樣的文件或看剛才的圖片網(wǎng)頁。比

  較一下速度,就能感覺出來了。

  二、firewall

  如果你把這樣一臺(tái)服務(wù)器放到internet上,無異于是想“自殺”。防火墻沒有所有的保護(hù)機(jī)制和過濾功能。非常容易被各種攻擊所擊破。不要迷

  信Linux的安全性,網(wǎng)管員的安全意識(shí)要比空喊Linux安全重要得多。

  iptables -F

  iptables -X

  iptables -F -t mangle

  iptables -t mangle -X

  iptables -F -t nat

  iptables -t nat -X

  首先,把三個(gè)表清空,把自建的規(guī)則清空。

  iptables -P INPUT DROP

  iptables -P OUTPUT DROP

  iptables -P FORWARD ACCEPT

  設(shè)定INPUT、OUTPUT的默認(rèn)策略為DROP,F(xiàn)ORWARD為ACCEPT。

  iptables -A INPUT -i lo -j ACCEPT

  iptables -A OUTPUT -o lo -j ACCEPT

  先把“回環(huán)”打開,以免有不必要的麻煩。

  iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT

  iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT

  在所有網(wǎng)卡上打開ping功能,便于維護(hù)和檢測(cè)。

  iptables -A INPUT -i eth0 -s 192.168.100.250 -d 192.168.100.1 -p tcp --dport 22 -j ACCEPT

  iptables -A OUTPUT -o eth0 -d 192.168.100.250 -s 192.168.100.1 -p tcp --sport 22 -j ACCEPT

  打開22端口,允許遠(yuǎn)程管理。(設(shè)定了非常多的附加條件:管理機(jī)器IP必須是250,并且必須從eth0網(wǎng)卡進(jìn)入)

  iptables -A INPUT -i eth0 -s 192.168.100.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT

  iptables -A OUTPUT -o eth0 -d 192.168.100.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT

  iptables -A INPUT -i eth1 -s 192.168.168.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT

  iptables -A OUTPUT -o eth1 -d 192.168.168.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT

  iptables -A INPUT -i eth2 -p tcp --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT

  iptables -A OUTPUT -o eth2 -p tcp --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT

  iptables -A OUTPUT -o eth2 -p udp --dport 53 -j ACCEPT

  iptables -A INPUT -i eth2 -p udp --sport 53 -j ACCEPT

  上面這幾句是比較頭痛的,我做逐一解釋。

#p#

  iptables -A INPUT -i eth0 -s 192.168.100.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT

  允許192.168.100.0/24網(wǎng)段的機(jī)器發(fā)送數(shù)據(jù)包從eth0網(wǎng)卡進(jìn)入。如果數(shù)據(jù)包是tcp協(xié)議,而且目的端口是3128(因?yàn)镽EDIRECT已把80改為3128了。nat表的PREROUTING是在filter表的INPUT前面的。)的,再而且,數(shù)據(jù)包的狀態(tài)必須是NEW或ESTABLISHED的(NEW代表tcp三段式握手的“第一握”,換句話說就是,允許客戶端機(jī)器向服務(wù)器發(fā)出鏈接申請(qǐng)。ESTABLISHED表示通過握手已建立起鏈接),通過。

  iptables -A OUTPUT -o eth2 -p tcp --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT

  我們先來看這一句。目前你的數(shù)據(jù)包已進(jìn)入到linux服務(wù)器防火墻上來了。squid需要代替你去訪問,所以這時(shí),服務(wù)器就成了客戶端的角色,所以他要使用32768到61000的私有端口進(jìn)行訪問。(大家會(huì)奇怪應(yīng)該是1024到65535吧。其實(shí)CentOS版的linux所定義的私有端口是32768到61000的,你能通過cat /proc/sys/net/ipv4/ip_local_port_range,查看一下。)再次聲明:這里是squid以客戶端的身份去訪問其他的服務(wù)器,所以這里的源端口是32768:61000,而不是3128!

  iptables -A INPUT -i eth2 -p tcp --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT

  當(dāng)然了,數(shù)據(jù)有去就有回。

  iptables -A OUTPUT -o eth0 -d 192.168.100.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT

  數(shù)據(jù)包還得通過服務(wù)器,轉(zhuǎn)到內(nèi)網(wǎng)網(wǎng)卡上。請(qǐng)注意,這里,是squid幫你去訪問了你想要訪問的網(wǎng)站。所以在內(nèi)網(wǎng)中,你的機(jī)器是客戶端角色,而squid是服務(wù)器角色。這和剛才對(duì)外訪問的過程是不同的。所以在這里,源端口是3128,而不是32768:61000。

  iptables -A OUTPUT -o eth2 -p udp --dport 53 -j ACCEPT

  iptables -A INPUT -i eth2 -p udp --sport 53 -j ACCEPT

  當(dāng)然,DNS是不可缺少的。

  iptables -A INPUT -i eth+ -p tcp --dport 80 -j LOG --log-prefix "iptables_80_alert" --log-level info

  iptables -A INPUT -i eth+ -p tcp --dport 21 -j LOG --log-prefix "iptables_21_alert" --log-level info

  iptables -A INPUT -i eth+ -p tcp --dport 22 -j LOG --log-prefix "iptables_22_alert" --log-level info

  iptables -A INPUT -i eth+ -p tcp --dport 25 -j LOG --log-prefix "iptables_25_alert" --log-level info

  iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j LOG --log-prefix "iptables_icmp8_alert" --log-level info

  當(dāng)然了,來點(diǎn)日志記錄會(huì)對(duì)網(wǎng)管員有所幫助。

  至此,一個(gè)完整的訪問過程就被我們分析過了。本篇中最主要的就是要說明squid在對(duì)內(nèi)網(wǎng)機(jī)器和外網(wǎng)服務(wù)器中扮演了兩種截然相反的角色。

  這對(duì)大家來說不太好理解。我也是摸索了一段時(shí)間才成功的。愿我的文章拋磚引玉,能引起大家的共鳴和思索。

  一點(diǎn)說明:最近見到過一種情況,就是squid無法啟動(dòng),或說起動(dòng)起來幾秒鐘就自動(dòng)停掉。messages中說有squid遇見了signal 25,所以停止。遇見這種問題,要查看squid的日志是不是太大了。我看了一下,access.log有1.6GB,store.log有2GB大小??磥硎侨罩廖募?。把兩個(gè)文件轉(zhuǎn)移或改名后就能了

通過文章大量的介紹,相信大家心中的困惑都得到解決了,還有什么不懂的問題,歡迎留言!

【編輯推薦】

責(zé)任編輯:趙鵬 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-03-16 12:46:29

CentOSiptables防火墻

2011-03-15 10:22:02

squidiptables

2010-03-31 17:43:44

CentOS防火墻

2011-03-15 17:25:38

2011-03-15 16:35:27

2011-03-17 16:00:57

2011-03-15 15:47:15

Iptables防火墻

2011-03-15 15:47:25

Squidiptables

2011-03-17 10:58:55

Linux防火墻Iptables入門

2011-03-15 09:10:43

iptables防火墻

2011-03-15 17:18:45

2011-03-15 17:38:24

2018-07-02 09:18:11

Linuxiptables防火墻

2010-07-05 14:39:59

2009-09-24 13:53:53

2009-11-30 13:50:13

配置透明代理

2009-12-21 14:44:06

2010-01-07 14:12:11

Linux防火墻

2011-03-15 15:47:26

LinuxIptables防火墻

2011-03-16 10:12:32

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)