無狀態和有狀態防火牆
目前USER和WEB_SERVER都是互通,所有服務都沒有阻擋。 有一天我們想讓所有經由F0/1到F0/0的連線都無法通過。 我們設定了一條ACL NAME TCPIN,然後把他擺在F0/1 IN方向的端口。 結果當然如我們預料的WEB_SERVER無法連到USER,但是USER不但ping不到也連不到web服務。 因為封包是一去一回,所以極有可能是回去的封包被阻擋了,因此我們在deny ip any any前加了兩條,允許established的封包和echo-reply的封包。 我們除了USER能ping和連WEB_SERVER的80port外,而且ACL的matches也有增加。 現在我們只是解決了兩個問題,可是如果還有其他服務要開呢?所以非常難以維護和使用。 仔細想想我們現在使用的防火牆,只有一條內對外全部允許,外對內全部拒絕,好像也是可以瀏覽網頁和PING,似乎有點矛盾? 因為傳統只靠這種ACL的防火牆我們稱作stateless firewall(無狀態防火牆),就是我有設定才放行,沒設定就不放行,所以管理者必須要很清楚所有封包往返的流量,他不會紀錄已出去的封包狀態。 但是現在的防火牆大部分為stateful firewall(有狀態防火牆),這有點像是我發起一個50000port去連google網站80port,防火牆當然會預期google網站會回應一個80port回給我50000port的連線,所以他所有出去的流量都會記錄在他的stateful表格裡,只要在表格內都會自動放行,當然等到他偵測到一個結束訊號的話,這些暫時放行的防火牆規則就會關掉了。 再舉個比方就像是我主動打電話給A,因為防火牆政策有允許我打給A,所以有狀態防火牆就會允許並且開始記錄這通電話的狀態,例如我和對方電話多少,目前進行到開始還是結束?而且之後所有這通電話A回應給我的聲音都會被防火牆自動允許,直到雙方說再見掛電話,防火牆的自動允許才會取消,但A能不能主動打給我呢?要看防火牆有沒有允許A能打給我的政策。