高性能LINUX雙效防火墻

來源:本站原創 Linux 超過771 views圍觀 0條評論

系統功能說明:

  包過濾和WEB代理雙效合一。由iptables 實現包的過濾,由LINUX下大名鼎鼎的squid結合NAT來實現透明WEB代理。SQUID代理的性能本身已經是代理服務器中的佼佼者,本系統將其性能發揮的極至:通過ramdisk技術,讓SQUID把網頁cahce到內存中,這樣,你所訪問的網頁,除了第一次需要到網絡上取,以后都將來自內存!

(1)選擇一臺比較穩定的計算機,裝上兩塊網卡,512或1024M內存,硬盤160G(注意:第一塊網卡接內網,第二塊網卡接外網。)
(2)安裝centos5.3,安裝時選擇服務器模式,自動分區
(3)大概在10-15分中后系統安裝完畢,重啟后進入系統,開始配置系統

1、開啟包轉發

  編輯/etc/sysctl.conf,將net.ipv4.ip_forward=0 該為net.ipv4.ip_forward=1,保存修改。其目的是允許LINUX內核做IP包的轉發:允許IP數據包從一個網絡接口穿越到另一個網絡接口,只有這樣,系統才具有充當包過濾防火墻的條件。

2、激活RamDisk

  修改/etc/grub.conf

#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18-10)
root (hd0,0)
kernel /vmlinuz-2.6.18-10 ro root=/dev/sda6ramdisk=268435
initrd /initrd-2.6.18-10.img

  其中ramdisk=268435 是我們要添加的內容,目的是告訴系統默認的 ramdisk的大小是268435k,也就是256M。注意千萬不可以直接寫256M,這樣系統是不認識的,必須要換成K才行!(摸索了好幾個月的心得!),這樣設好,重新啟動后就系統就回自動生成一個256M的虛擬盤了。當然,你要根據自己的內存大小來設置這個參數,如果不運行XWINDOWS,設你總內存的一半都沒問題,因為LINUX系統本身并不需要很多內存的。

3、設置squid參數

  編輯/etc/squid/squid.conf,在末尾加入以下條目:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
http_access allow all
cache_dir ufs /squid 256 16 256

  前面四條參數使squid提供透明代理提供基礎。“http_access allow all”表示允許所有的客戶機器都可以訪問代理;這里特別強調的是最后一條 “cache_dir ufs /squid 256 16 256”,

256代表緩存空間最大為256M,16代表squid可以在硬盤緩沖存放的目錄下建立的第一級子目錄的數目,缺省值為16,;256是可以建立第二級子目錄的數目,缺省值256。

  squid默認的cache_dir是“/var/spool/squid”,我們因為要讓squid將內容cache到內存中,所以這里先改成/squid,接下來要將ramdisk影射到/squid目錄中。

4、建立ramdisk。用下面的兩條命令來完成:

(1)mkdir /squid 建立目錄“/squid”
(2)mkfs /dev/ramdisk 創建文件系統
(3)mount /dev/ramdisk /squid 將ramdisk 掛載到/squid目錄。

由于ramdisk在每次重啟后會消失,因此,為了讓系統啟動時自動建立好,我們可以建立一個自動裝載ramdisk的批命令:

mkfs /dev/ramdisk
mount /dev/ramdisk /squid

將這兩條命令寫到一個文件中,我們暫且用myautoexec.bat作為文件名,為了方便起見,我們建立/admin目錄,然后將myautoexec.bat文件保存在/admin下,并加給可執行的權限:chmod +x myautoexec.bat

  但這樣系統啟動時并不會被調用,所以我們還要做一件事:編輯/etc/rc.local 文件,在文件末尾插入一行:/admin/myautoexec.bat,這樣,系統就會自動調用myautoexec.bat了。

5、初始化squid。

  還記得“cache_dir ufs /squid 256 16 256”這個參數嗎?初始化過程實際上就是squid在指定的cache_dir中建立指定的一級目錄(這里是16),然后在每個一級目錄中建立256個二級目錄。使用的命令是:“squid –z ”。但現在這時輸入命令系統會報告出錯,因為/squid現在的屬主是root, squid 沒有權限操作root的文件,所以還要先把/squid目錄指派給squid用戶,用“chown squid.squid /squid”。再一次運行“squid –z ”,不到一秒鐘時間就可完成。如果這個過程是在磁盤上而不是在ramdisk上,一般要工作幾十秒鐘。

  同樣,這步的設置也要把

chown squid.squid /squid
squid –z

  兩條命令寫到myautoexec.bat中,最后加上一條“squid”,就是啟動squid服務進程。到這里,squid的設置全部完成。

6、設置NAT和防火墻規則。

  為了方便起見,建立文件/admin/myfirwall,將規則都寫到文件中:

#——初始化部分
iptables -F
iptables -t nat -F
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
#——初始化結束
#-START NAT<<<<<讓地址為10.27.0.0/16的內部計算機可以偽裝上因特網。
iptables -t nat -A POSTROUTING -o eth1 -s 10.3.37.0/24 -j MASQUERADE
#>>>>>end NAT
#端口轉換,將所有發到外網的請求端口為80的都轉到3128去,讓squid來處理,這一
#–條是透明代理的關鍵<<<<<<
iptables -t nat -A PREROUTING -i eth0 -d ! 10.27.0.0/16 -p tcp -m tcp \
–dport 80 -j REDIRECT –to-ports 3128
#>>>>>>>end 端口轉換
#防火墻規則<<<<<<< 這里要根據你的要求來定了
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p ICMP -j DROP
iptables –A INPUT –i eth1 –s 0.0.0.0/0 –p TCP –port ! 80 –j DROP
#以上兩條分別是將所有從外網進來的ping包都統統丟棄,將所有由外網發起的非80端口
#的請求都統統丟棄,意思就是只不允許從外網向內網發ping ,只允許外網訪問內網的
#HTTP服務。完整的防火墻規則要根據你的網絡安全要求來制定,這里只做參考。

  說明:所有以#開頭的行表示說明,不用寫入文件,保存為/admin/myfirewall,并用“chmod +x /admin/myfirewall”使其可以執行。編輯/admin/myautoexec.bat,加入“/admin/myfirewall”在最后一行。

  到此為止,我們的好性能防火墻全部配置完成,運行reboot 重啟后,可以工作了。

Squid各配置文件說明:

http_port   IP:端口 (設置squid監聽的IP地址和端口)

  cache_mem  指定使用多少物理內存作為高速緩存.如果這臺服務器僅用于共享上網,沒有其他服務,則可加大物理內存的1/2,但如果還有其他服務則

  cache_mem的大小不應超過物理內存的1/3.,否則會影響服務器的總體性能.

  cache_dir  ufs   /var/spool/squid 4096 16 256指定硬盤緩沖區的大小,其中ufs指的是緩沖的存儲類型,一般為ufs,/var/spool/squid指硬盤緩沖存放的目錄

  ,4096代表緩存空間最大為4096M,16代表squid可以在硬盤緩沖存放的目錄下建立的第一級子目錄的數目,缺省值為16,;256是可以建立第二級子目錄的

  數目,缺省值256。

  cache_effective_user  squid  設定使用緩存的有效用戶.(系統默認)

  cache_effective_group  squid  設定使用緩存的有效用戶組(系統默認)

  dns_nameservers   IP  為了使Squid能解析域名,必須告訴squid有效DNS服務器..

  cache_access_log 定義了訪問記錄日志文件的路徑,該日志記錄了用戶訪問Internet的詳細信息,通過日志文件可以查看每臺客戶機上網的記錄…所以大家不要干壞事的…

  cache_log 設置記錄緩存的相關信息日志文件的路徑…

  cache_store_log 定義了記錄網頁在緩存中調用情況日志文件的路徑…

  visible_hostname 定義了運行squid的主機名稱,當訪問發生錯誤時,該選項的值會顯示在錯誤提示網頁中.建議輸入主機的IP地址..

  cache_mgr 定義設置squid管理員的d E-mail地址,當訪問發生錯誤時,該選項會顯示在頁面上.

  規則:我們還可以使用acl   定義squid訪問控制列表.下面是其選項信息..

  src  IP   源IP地址(客戶機的IP地址).

  dst  IP   目標地址(服務的器IP地址).

  scrdomain 源名稱 (客戶機所屬的域).

  dstdomain 目標名稱(服務器所屬的域).

  time 一天中的某一時刻和一周內的某一天.

  url_regex  URL規則的表達式

  urlpath_regex:URL-path 略去協議和主機名的URL規則表達式匹配.

  proxy_auth 通過外部程序進行用戶認證.

  maxconn 單一IP最大連接數.

  time 語法[星期][時間段].星期可以使用這些關鍵字M(Mondy),T(Tuesday)…

  時間段:某一時刻-另一時刻

好了就以這個信息,下面我們去配置Squid服務器…

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=160轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏