防火墻與NAT服務器

1、認識防火墻

防火墻就是定義一些有順序的規則,并管理進入到網絡內的主機數據數據包的一種機制。廣義的來講,只要能夠分析與過濾出我們管理的網絡的數據包的數據,就可以稱為防火墻

防火墻又分為 ?“硬件防火墻” 和 “軟件防火墻”,放火墻的最大功能是幫助你限制某些服務的訪問

建議利用 Shell scripts來撰寫屬于你自己的防火墻機制,這樣比較清晰

防火墻最重要的規劃

切割被信任(子域)與不被信任(Internet)的網段

劃分出可提供Internet的服務與必須受保護的服務

分析出可接受與不可接受的數據包狀態

1.2、Linux系統上防火墻的主要類別

基本上,依據防火墻的管理范圍,我們可以將防火墻區分為 “網絡型” 和 “單一主機型” 的管理。

單一型主要是 NetFilter 和 TCP Wrapper兩種,區域性防火墻都是充當路由器角色,因此包含了 NetFilter 和 利用代理服務器(Proxy Server)

Netfilter (數據包過濾機制):主要分析 Header,Port,Mac,IP,Flags。提供了 iptables 這個軟件來作為防火墻數據過濾命令

TCP Wrappers(程序管理):主要是通過分析服務器程序來管理,因此與啟動的端口無關,只與程序名有關

Proxy(代理服務器):代理服務器其實是一種網絡服務。

Proxy Server 的運作原理簡介

1.3、防火墻的一般網絡布線示意

防火墻除了保護防火墻機制本身所在的那臺主機之外,還可以保護防火墻后面的主機。

1.3.1、單一網絡,僅有一個路由器

單一網域,僅有一個路由器的環境示意圖

架設在路由器上的防火墻可以管理整個局域網的數據包進出

因為內外網網絡分開,所以安全維護在內部可以開放的權限較大

安全機制的設置可以針對 Linux 防火墻主機來維護即可

對外只看到Linux防火墻主機,對于內網的可以達到有效的保護

1.3.2、內部網絡包含安全性更高的子網,需內部防火墻切開子網

內部網絡包含需要更安全的子網防火墻

防火墻對于LAN的防護不會設置的那么嚴密,所以公司中有什么特別重要的部門需要更安全的網絡環境。那么在LAN里面在加一個防火墻,將安全等級分類,那么將會讓重要的數據獲得更佳的保護

1.3.3、在防火墻后面架設網絡服務器主機

非軍事化隔離區(DMZ)

將網絡服務器獨立放置在兩個防火墻中間的網絡,我們稱之為 ”非軍事化隔離區(DMZ)“。DMZ重點在于保護服務器本身,所以將 Internet 和 LAN都隔離開來。如此依賴,不論是服務器本身還是LAN被攻陷時,另一個區域還是完好無損的。

1.4、防火墻使用的限制

拒絕讓 Internet 的數據包進入主機的某些端口

拒絕讓某些來源 IP 的數據包進入

拒絕讓帶有某些特殊標志(Flag)的數據包進入:如 SYN 連接

分析硬件地址(MAC)來決定連接與否

防火墻并不能有效阻擋病毒或木馬程序

防火墻對于來自內部的LAN的攻擊無能為力

所以,還是前面那幾句話:

關閉幾個不安全的服務

升級幾個可能有問題的軟件

使用防火墻架設好最起碼的安全防護



2、TCP Wrappers

說穿了,TCP Wrappers 就是通過 ?/etc/hosts.allow、/etc/hosts.deny 這兩個寶貝來管理的一個類似防火墻的機制

但必須是由

?super daemon ?(xinetd)所管理的服務 : 配置文件在 /etc/xinetd.d/ ?里面的服務就是 xinetd 所管理

支持 ?libwrap.so 模塊的服務 : 使用 ldd 命令來查看

2.2、/etc/hosts.{ allow | deny }

這兩個文件的順序與優先級

先以 /etc/hosts.allow 進行比對,規則符合就予以放行

再以 /etc/hosts.deny 比對,規則符合就予以阻擋

若不再這兩者之內,亦即規則都不符合,最終予以放行

這兩者的配置舉例

ALL : 127.0.0.1

xxxx : 111.222.221.15/255.255.255.0<ip, domain, hostname> ? ?#tcp wrappers 理論上不支持 CIDR形式的掩碼,只支持Net mask的地址顯示形式



3、IPv4的內核管理功能:/proc/sys/net/ipv4/*

除了 iptabels 這個防火墻軟件外,Linux還提供了很多內核默認的攻擊阻擋機制。由于是內核的網絡功能,所以相關的設置數據都是放在 “/proc/sys/net/ipv4/" 這個文件夾下

Linux系統上的/proc目錄是一種文件系統,即proc文件系統。與其它常見的文件系統不同的是,/proc是一種偽文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,用戶可以通過這些文件查看有關系統硬件及當前正在運行進程的信息,甚至可以通過更改其中某些文件來改變內核的運行狀態。

基于/proc文件系統如上所述的特殊性,其內的文件也常被稱作虛擬文件,并具有一些獨特的特點。例如,其中有些文件雖然使用查看命令查看時會返回大量信息,但文件本身的大小卻會顯示為0字節。此外,這些特殊文件中大多數文件的時間及日期屬性通常為當前系統時間和日期,這跟它們隨時會被刷新(存儲于RAM中)有關。

為了查看及使用上的方便,這些文件通常會按照相關性進行分類存儲于不同的目錄甚至子目錄中,如/proc/scsi目錄中存儲的就是當前系統上所有SCSI設備的相關信息,/proc/N中存儲的則是系統當前正在運行的進程的相關信息,其中N為正在運行的進程(可以想象得到,在某進程結束后其相關目錄則會消失)。

3.1、/proc/sys/net/ipv4/tcp_syncookies

我們談到的阻斷式服務(Dos)攻擊,就是利用 TCP 數據包的 SYN 三次握手原理實現的,這種方式稱為 SYN Flooding。我們可以啟用內核的 SYN Cookies 模塊,在系統用來啟動隨機連接的端口(1024:65535)即將用完時自動啟動。

當啟動 SYN Cookies 時,主機在發送 SYN/ACK 確認數據包前,會要求 Client 端在短時間內回復一個序號,這個序號包含許多原 SYN 數據包內的信息,包括 IP、Port等。若 Client 端可以回復正確的序號,那么主機就確定該數據包為可信的,因此會發送 SYN/ACK 數據包,否則就不理會此數據包。

通過這一機制,可以大大降低大量無效的 SYN 等待端口,避免 SYN Flooding 的 Dos 攻擊。

要啟用此模塊,只需把 " /proc/sys/net/ipv4/tcp_syncookie " 的值置為 1

但是這個設置值由于違反了 TCP 的三次握手(因為主機在發送 SYN/ACK之前需要先等待 Client 的序號響應),所以可能會造成某些服務的延遲現象。不適合用在負載已經很高的服務器內,因為負載太高的主機有時會讓內核誤判遭受 SYN Flooding 的攻擊。

/proc/sys/net/ipv4/tcp_syncookie

3.2、/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

我們來談談 Ping Flooding 攻擊(不斷發 ping,并且發送大量數據包,無數的僵尸主機)

ping廣播地址就是把ping包發給網絡中所有主機,只要主機在線,那么就會回包,可以用來查看有哪些主機在線。

關閉 ping broadcasts 只需把 " /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts " 的值置為 1

/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

3.3、/proc/sys/net/ipv4/conf/網絡接口/*

Linux的內核還可以針對不同的網絡接口進行不一樣的參數設置,網絡接口的相關設置放置在此。

/proc/sys/net/ipv4/conf/eth0/



4、NAT服務器的設置

4.1、NAT,DNAT,SNAT

Network Address Translation,Destination,Source

修改數據包報頭來源項目,修改數據包報頭目標項目

4.2、最簡單的NAT服務器:IP 分享功能

舉例,偽裝(MASQUERADE):

$innet 是內網域,MASQUERADE 就是 IP 偽裝成為數據包出去(-o)的那塊設備上的IP。? 即只要來自于 $innet 網域的IP則從eth0這個接口的IP出去。

iptables ?-t ?nat ?-A ?POSTROUTING ?-s ?$innet ?-o ?eth0 ?-j ?MASQUERADE ?

除了 IP 偽裝之外,我們還可以直接指定修改 IP 數據包報頭的來源IP:

iptables ?-t ?nat ?-A ?POSTROUTING ?-o ?eth0 ?-j ?SNAT ?--to-source ?192.168.xx.xx

# --to-source? 192.168.xx.10-192.168.xx.20 表示某一段

4.3、在防火墻后端的網絡服務器上做DNAT 設置

DNAT 是在 nat ?PREROUTING 鏈

iptables ?-t ?nat ?-A ?PREROUTING ?-p ?tcp -i ?eth0 ?--dport 80 ?-j ?DNAT ?--to-destination ?192.168.xx.xx:80

iptables ?-t ?nat ?-A ?PREROUTING ?-p ?tcp ?--dport ?80 ?-j ?REDIRECT ?--to-ports 8080



重點回顧:

要擁有一臺安全的主機,必須要有良好的主機權限設置、隨時的更新套件、定期的重要數據備份、完善的員工教育機制。僅有防火墻是不夠的。

防火墻最大的功能就是幫助你 “限制某些服務的訪問來源”,可以管理來源與目標的IP。

防火墻根據數據包阻擋的層次,可以分為Proxy以及IP Filter兩種類型。

在防火墻內,但不在LAN內的服務器所在網絡,通常被稱為DMZ(非軍事化隔離區)。

數據包過濾機制的防火墻,通常至少可以分析 IP、Port、flag(如tcp的syn)

防火墻對于病毒的阻擋并不敏感

防火墻對于來自內部的網絡誤用或濫用的阻擋性比較不足

并不是架設了防火墻之后系統就一定安全,還是需要更新軟件漏洞以及管制用戶行為和權限等

內核2.4以后的Linux使用iptables作為防火墻軟件

防火墻的制定與規則順序有很大的關系,若規則順序錯誤,可能會導致防火墻的失效。

iptables 的默認table共有3個,分別是Filter、NAT及Mangle,常用的為Filter(本機)和NAT(后端主機)

filter table 主要為針對本機的防火墻設置,根據數據包的流向又分為 INPUT、OUTPUT、FORWARD 3條鏈

NAT table主要針對防火墻的后端主機,根據數據包流向又分為PREROUTING、OUTPUT、POSTROUTING 3條鏈,其中 PREROUTING 與 DNAT有關,POSTROUTING 則與SNAT有關。

iptables 的防火墻規則比對,但所有規則都不符合時,則以默認的策略(Policy)作為數據包的行為依據。

防火墻可以多重設置,例如雖然已經設置了 iptables,但仍可以持續設置TCP Wrappers,因為誰也不曉得什么時候iptables會有漏洞,或者是規則規劃不合適。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.安全技術 (1)入侵檢測與管理系統(Intrusion Detection Systems): 特點是不阻斷任...
    尛尛大尹閱讀 2,487評論 0 2
  • 防火墻的概念iptables的簡介iptables命令網絡防火墻NATfirewalld服務 一、防火墻的概念 (...
    哈嘍別樣閱讀 1,847評論 0 1
  • 一.防火墻概念 (一)安全技術介紹 (1) 入侵檢測與管理系統(Intrusion Detection Syste...
    楠人幫閱讀 1,515評論 0 3
  • 煢煢采藥誰家女, 一見公子誤終身。 寂寂宮墻靜十載, 竊竊心事藏七分。 庭院石楠吹又綠, 朝堂舊事入微塵。 昭雪沉...
    蕭亦行閱讀 384評論 0 1
  • 這個常見吧?! DOCTYPE聲明位于html文檔中的第一行,告知瀏覽器的解析器用什么文檔標準來解析這個文檔。這玩...
    Ken宣霖閱讀 238評論 0 0