防火牆,一種高級訪問控制設備,置於不一樣網絡安全域之間,它經過相關的安全策略來控制(容許、拒絕、監視、記錄)進出網絡的訪問行爲。防火牆主要由服務訪問規則、驗證工具、包過濾和應用網關4個部分組成。實質上是指由軟硬件組合成的一個在內外網之間構造的一種保護屏障,它是一種隔離技術。所以從物理上區分,能夠分爲軟件和硬件防火牆,從邏輯上區分,能夠分爲主機和網絡防火牆,而咱們如今要講到的iptables,是屬於防火牆中的軟件防火牆的範疇,但它只是一個命令行工具或者說是一種客戶端代理,並非真正的防火牆,用戶經過這個代理,把安全設定執行到真正的防火牆框架中,這個框架叫作Netfilter。php
防火牆掃描流經它的網絡通訊,經過這樣的作法可以過濾掉一些攻擊,以避免其在目標計算機上被執行。防火牆還能夠關閉不使用的端口,並且還能禁止特定端口的流出通訊,封鎖特洛伊木馬。最後,它能夠禁止來自特殊站點的訪問,從而防止來自不明入侵者的全部通訊。html
防火牆原理mysql
防火牆的做用linux
工做於主機或網絡的邊緣,對於進出本主機或網絡的報文根據定義好的檢查規則做匹配檢測,對於可以被規則匹配到的報文作出相應處理的組件;web
防火牆的種類算法
主機防火牆sql
網絡防火牆數據庫
防火牆的功能apache
一、網絡安全的屏障vim
二、強化網絡安全策略
三、監控審計
四、監控審計
五、數據包過濾
六、網絡IP地址轉換
七、虛擬專用網絡
八、日誌記錄與事件通知
最大優勢是它能夠配置有狀態的防火牆,有狀態的防火牆可以指定並記住爲發送或接收信息包所創建的鏈接的狀態。防火牆能夠從信息包的鏈接跟蹤狀態得到該信息。在決定新的信息包過濾時,防火牆 所使用的這些狀態信息能夠增長其效率和速度。這裏有4種有效狀態,名稱分別爲ESTABLISHED、INVALID、NEW和RELATED。
防火牆的四表功能
filter :過濾 ,防火牆
nat : network , adress ,translation , 網絡地址轉換
mangle : 拆解報文, 作出修改 ,封裝報文 。
raw : 關閉nat 表上啓用的鏈接追蹤機智
注意 : nat : Network Address Translation ,安全性,網絡層+傳輸層;
Proxy : 代理,應用層;
nat :
SNAT : 只修改請求報文的源地址;
DNAT : 只修改請求報文的目標地址;
源地址轉換 : iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNET -j SNAT --to -source ExtIP
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNET -j MASQUERADE
目標地址轉換 : iptables -t nat -A POSTROUTING -d ExtIP --p tcp|udp --dport PORT -j DNAT --to-destination InterServerIP[:PORT]
80端口直接映射到tomcat的8080端口 :
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
數據包過濾匹配流程
鍵 (內置) :
PREROUTTING
INPUT
FORWARD
OUTPUT
POSTROUTING
報文流向
流入 : PREROUTING -->INPUT
流出 : OUTPUT --> POSTROUTING
轉發 :PREROUTING --> FORWARD -->POSTROUTING
各功能的分別實現 的位置:
filter : INPUT , FORWARD ,OUTPUT
nat : PREROUTING( DNAT ), OUTPUT ,POSTROUTING ( SNAT )
mangle : PREROUTING , INPUT ,FORWARD , OUTPUT ,POSTROUTING
raw : PREROUTING , OUTPUT
路由發生的時刻 :
報文進入本機後:
判斷目標主機 :
報文發出以前 :
判斷經由哪一個接口送出下一跳 :
iptables : 四表五鏈
添加規則時的考慮點 :
(1) 要實現哪一種功能 : 判斷添加在哪張表上;
(2) 報文流經的路徑 : 判斷添加在哪張鏈上;
鏈 : 鏈上規則的次序,即爲檢查的次序 :所以隱含必定的法則
(1) 同類規則(訪問同一應用),匹配範圍小的放上面;
(2)不一樣類規則(訪問不一樣應用),匹配到報文頻率較大的放上面;
(3)將那些可由一條規則描述的多個規則合併爲一個;
(4)設置默認策略;
功能優先級次序 : raw > mangle > nat c >filter
規則 :
組成部分 : 報文的匹配條件,匹配到以後處理動做
匹配條件 : 根據協議報文特徵指定
基本匹配條件 :
擴展匹配條件 :
處理動做:
內建處理機制
自定義處理機制
注意 : 報文不會通過自定義鏈, 只能在內置鏈上經過規則經行引用後生效。
iptables : 規則管理工具
添加、修改、刪除、顯示等;
規則和鏈有計數器:
pkgs : 由規則或鏈所匹配到報文的個數;
bytes : 由規則或鏈匹配到的全部報文大小之和;
目標 :
-j TARGET : jump 指定的TARGET
ACCEPT : 接收
DROP : 丟棄
REJECT : 拒絕
RETURN : 返回調用鏈
REDIRECT : 端口重定向
LOG : 記錄日誌
MARK : 作防火牆標記
DNAT : 目標地址轉換
SNAT : 源地址轉換
MASQUERADE : 地址
核心轉發 : /proc/sys/net/ipv4/ip_forward
/etc/sysct.conf
net.ipv4.ip_forward = 1
擴展匹配 :-m(指定擴展名)
隱式擴展 :對-p protocol指明的協議進行的擴展,可省略-m選項;
顯式擴展 : 必須顯式指明使用的擴展模塊(rpm -ql iptables | grep "\.so")
multiport 擴展 :以離散方式定義多端口匹配,最多指定15個端口;
# iptables -I INPUT -s 172.168.122.1/16 -d 172.168.120 -p tcp -m multiport -dports 22.80 -j ACCEPT
# iptables -I INPUT -d 172.168.122.1/16 -s 172.168.120 -p tcp -m multiport -dports 22.80 -j ACCEPT
iprange擴展
指明連續的(但通常是不能擴展爲整個網絡)IP地址範圍時使用:
conlimit 擴展
根據每客戶端IP(也能夠是地址塊)作併發鏈接數數量匹配
--connlimit-above n :鏈接的數量大於n
--connlimit-upto n :鏈接的數量小於等於n
limit擴展
基於收發報文的速率作檢查
令牌桶過濾器
--limit rate [/second|/minute|/hour|/day]
--limit-burst number
state擴展
根據鏈接追蹤機制檢查鏈接的狀態
調整鏈接追蹤功能所可以容納的最大鏈接數量
/proc/sys/net/nf_conntrack_max
已經追蹤到並記錄下的鏈接
/proc/net/nf_conntrack
可追蹤的鏈接狀態
NEW : 新發出的請求:鏈接追蹤模板中不存此鏈接相關的信息條目,所以,將其識別爲第一次發出的請求。
ESTABLISHED :NEW 狀態以後,鏈接追蹤模板中爲其創建的條目失效以前期間內所進行的通訊的狀態;
INVALIED : 沒法識別的鏈接
擴展
查看iptables使用說明
CentOS 6 : man iptables
CentOS 7 : man iptables-extensions
Netfilter是Linux中的一個子項目,它的主要功能是進行數據包過濾、鏈接跟蹤、地址轉換等,而iptables則是netfilter提供的對用戶數據包進行過濾、修改等操做的一種命令行工具,當數據包經過網卡進入進入內核時,它得先通過iptables的五條鏈,這些鏈都有相應的處理數據包的規則,而咱們正是經過在這些鏈上設置規則來控制管理數據包,從而達到防火牆的功能。每當數據包到達一個鏈時,iptables就會從鏈中的全部規則逐一開始校驗該數據包是否符合規則中限定的條件。若知足,系統就會根據每一個規則定義的方法來處理該數據包;若不知足,iptables則繼續檢查下一條規則,若是該數據包不符合鏈中的任意規則,iptables則會該鏈的默認策略去處理該數據包。
防火牆4種類型:特殊設計的硬件防火牆、數據包過濾型、電路層網關和應用級網關。安全性能高的防火牆系統都是組合運用多種類型防火牆,構築多道防火牆「防護工事」。
常見的防火牆品牌 : 華爲、天融信、深信服、H3C、網域、思科、山石網科、中科網威、飛塔、Juniper、綠盟科技、銳捷網絡、啓明星辰、佑友、網康、網禦星雲、NETGEAR、中新金盾、梭子魚、清信安、D-Link、網神、SonicWALL、迪普科技、東軟、博達、paloalto、交大捷普、Check Point、利譜、漢柏。
一、金盾抗DDOS防火牆
金盾抗DDOS防火牆是一款針對ISP接入商、IDC服務商開發的專業性比較強的專業防火牆。測試的效果代表,目前的防護算法對全部已知的拒絕服務攻擊是免疫的,也就是說,是徹底能夠抵抗已知DoS/DDoS攻擊的。(下圖金盾硬件防火牆價格大約88W一臺)
二、深信服防火牆
深信服防火牆能夠完全解決全部dos/ddos攻擊(synflood、ackflood、udpflood、icmpflood、igmpflood、arpflood、全鏈接等),針對CC攻擊,已推出DosNipe V8.0版本,此核心極其高效安全,在以往抵禦一切拒絕服務攻擊的基礎上,新增長了抵擋CC攻擊,新算法能夠高效的抵禦全部CC攻擊及其變種,識別準確率爲100%,沒有任何誤判的可能性。(深信服防火牆)
三、綠盟黑洞抗DDoS防火牆
綠盟黑洞抗DDoS防火牆是國內高防服務器機房中應用比較普遍的一款抗DoS、DDoS攻擊產品,其技術比較成熟,並且防禦效果顯著,已經獲得各大IDC機構的共同承認。黑洞目前分百兆、千兆兩款產品,分別能夠在相應網絡環境下實現對高強度攻擊的有效防禦,性能遠遠超過同類防禦產品。(下圖綠盟防火牆)
綠盟黑洞抗DDoS防火牆所帶來的防禦:
·自身安全:無IP地址,網絡隱身。
·可以對SYN Flood、UDP Flood、ICMP Flood和(M)Stream Flood等各種DoS攻擊進行防禦。
·能夠有效防止鏈接耗盡,主動清除服務器上的殘餘鏈接,提升網絡服務的品質、抑制網絡蠕蟲擴散。
·能夠防禦DNS Query Flood,保護DNS服務器正常運行。
·能夠給各類端口掃描軟件反饋迷惑性信息,所以也能夠對其它類型的攻擊起到防禦做用
四、Dosnipe防火牆:
Dosnipe防火牆硬件架構部分主體採起工業計算機(工控機),能夠承受惡劣的運行環境,保障設備穩定運行;軟件平臺是FreeBSD,核心部分算法是自主研發的單向一次性非法數據包識別方法,全部的Filter機制都是在掛在驅動級。能夠完全解決全部dos/ddos攻擊(synflood、ackflood、udpflood、icmpflood、igmpflood、arpflood、全鏈接等),針對CC攻擊,已推出DosNipe V8.0版本,此核心極其高效安全,在以往抵禦一切拒絕服務攻擊的基礎上,新增長了抵擋CC攻擊,新算法能夠高效的抵禦全部CC攻擊及其變種,識別準確率爲100%,沒有任何誤判的可能性。
Dosnipe防火牆升級以後,具有更多的新特性:
·完全解決最新的M2攻擊。
·支持多線路,多路由接入功能。
·支持流量控制功能。
·更強大的過濾功能。
·最新升級,完全高效的解決全部DDOS攻擊,cc攻擊的識別率爲100%
網絡層防火牆 :網絡層防火牆可視爲一種 IP 封包過濾器
應用層防火牆 :應用層防火牆能夠攔截進出某應用程序的全部封包,而且封鎖其餘的封包(一般是直接將封包丟棄)可分爲:包過濾型防火牆、應用層網關型防火牆、服務器型防火牆。
**數據庫防火牆 : **是一款基於數據庫協議分析與控制技術的數據庫安全防禦系統。基於主動防護機制,實現數據庫的訪問行爲控制、危險操做阻斷、可疑行爲審計。
防火牆的核心技術 :一、 包過濾(工做在網絡層) 二、 應用代理(工做在應用層) 三、 狀態檢測(工做在2-4層) 四、 徹底內容檢測()
包過濾防火牆技術原理
一、 簡單包過濾防火牆不檢查數據區
二、 簡單包過濾防火牆不創建鏈接狀態表
三、 先後報文無關
四、 應用層控制很弱
應用代理防火牆技術原理
一、 不檢查IP\TCP報頭
二、 不創建鏈接狀態表
三、 網絡層保護比較弱
防火牆分爲網絡防火牆和應用層防火牆
一、網絡防火牆
網絡防火牆就是一個位於計算機和它所鏈接的網絡之間的防火牆。該計算機流入流出的全部網絡通訊均要通過此防火牆。防火牆對流經它的網絡通訊進行掃描,這樣可以過濾掉一些攻擊以避免其在目標計算機上被執行。防火牆還能夠關閉不使用的端口。並且它還能禁止特定端口的流出通訊,封鎖特洛伊木馬。最後,它能夠禁止來自特殊站點的訪問,從而防止來自不明入侵者的全部通訊。
二、應用層防火牆
應用層防火牆是在 TCP/IP 堆棧的「應用層」上運做,您使用瀏覽器時所產生的數據流或是使用 FTP 時的數據流都是屬於這一層。應用層防火牆能夠攔截進出某應用程序的全部封包,而且封鎖其餘的封包(一般是直接將封包丟棄)。理論上,這一類的防火牆能夠徹底阻絕外部的數據流進到受保護的機器裏。
由於應用層防火牆的算法會更復雜,過慮更爲嚴格,因此在部署防火牆的時候,要把應用層防火牆部署到網絡防火牆的裏邊。
Linux防火牆體系主要工做在網絡層,針對TCP/IP數據包實施過濾和限制,屬於典型的包過濾防火牆(網絡層防火牆)。
2、iptables的錶鏈結構
一、iptables簡介
平時說iptables是防火牆,其實iptables是iptables/netfilter組合中的一個,只有iptables/netfilter才應該叫作防火牆,它是基於軟件方式工做的網絡防火牆。iptables工做於用戶空間,是防火牆的規則編寫工具,使用iptables編寫規則而且發送到netfilter;防火牆的規則剛放到netfilter中,它是一個可以讓規則生效的網絡架構,工做於內核空間。
【四個表】
iptables的結構是由tables組成,而tables是由鏈組成,鏈又是由具體的規則組成。所以咱們在編寫iptables的規則時,經過要先指定表,再指定鏈。tables的做用是區分不一樣功能的規則,而且存儲這些規則。
tables的類型分別有:
二、iptables的表、鏈結構
iptables是由四表五鏈組成的,想要配置iptables必須先了解這四表五鏈
優先級:raw表 > mangle表 > nat表 > filter表
①、raw表
RAW表只使用在PREROUTING鏈和OUTPUT鏈上,由於優先級最高,從而能夠對收到的數據包在鏈接跟蹤前進行處理。一但用戶使用了RAW表,在某個鏈上,RAW表處理完後,將跳過NAT表和ip_conntrack處理,即再也不作地址轉換和數據包的連接跟蹤處理了。
RAW表能夠應用在那些不須要作nat的狀況下,以提升性能。如大量訪問的web服務器,可讓80端口再也不讓iptables作數據包的連接跟蹤處理,以提升用戶的訪問速度。
raw內含有兩個鏈:PREROUTING和OUTPUT
②、mangle表
mangle表通常是對數據包進行修改用的
好比在網絡的轉發過程當中,數據包要從X到Z,中間夾了一個Y,當數據從X到Y的時候,Y要運行拆包,看是否是本身的,若是是就收下了,若是不就是從新封裝,把源IP改成本身的,而再也不是X的了,再進行轉發。
mangle表中含五個鏈:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
③、nat表
用於nat功能(端口映射,地址映射等)
主要用來處理一些將要到達本機路由和將要離開本機路由的數據包,修改數據包中的源、目標IP地址或端口;其對應的模塊爲iptable_nat。
nat表內含三個鏈:PREROUTING、POSTROUTING、OUTPUT
④、filter表
一看名字就知道是用來作過濾用的。filter表是iptables的默認表,若是在設置規則時,不指定表,則默認就是在filter表上操做
filter表內含三個鏈:INPUT、FORWARD、OUTPUT
2)五鏈
這五條鏈其實就是針對防火牆策略的規則
①、PREROUTING
路由前,數據包在通過防火牆前應作如何處理
②、INPUT
在數據包進行進入本機前就作何處理,目標是本機,不是網絡內的主機
③、OUTPUT
在數據包離開本機時作何處理,源是本機,目標是其它主機
④、FORWARD
對於轉發數據包作如何處理,由於本機多是一臺代理服務器,網絡內的其它主機在與互聯網通訊時都須要通過這臺服務器的轉發
⑤、POSTROUTING
在數據包離開防火牆時作如何處理
INPUT、OUTPUT鏈主要用在「主機型防火牆」中,即主要針對服務器本機進行保護的防火牆;而FORWARD、PREROUTING、POSTROUTING鏈多用在「網絡型防火牆」中,
簡化版【五條鏈】
鏈,也稱爲鉤子函數,它是一系列規則的一個組合,當數據包通過這些狗子函數時,她必須徹底匹配每個鉤子函數中的全部規則,方能進入下一個鉤子函數。
【語法規則】
語法:iptables [-t 表名] 命令選項 [鏈名] [條件匹配] [-j 目標動做或跳轉]
1)經常使用的命令選項:
-t:指定要操縱的表(四個表);
-A:向規則鏈中添加條目;
-D:從規則鏈中刪除條目;
-i:向規則鏈中插入條目;
-R:替換規則鏈中的條目;
-L:顯示規則鏈中已有的條目;
-F:清楚規則鏈中已有的條目;
-Z:清空規則鏈中的數據包計算器和字節計數器;
-N:建立新的用戶自定義規則鏈;
-P:定義規則鏈中的默認目標;
-h:顯示幫助信息;
-p:指定要匹配的數據包協議類型;
-s:指定要匹配的數據包源
2)經常使用的處理動做:
ACCEPT:容許數據包經過
DROP:直接丟棄數據包,不給任何迴應信息
REJECT: 拒絕數據包經過,必要時會給數據發送端一個響應的信息。
LOG:在/var/log/messages文件中記錄日誌而後將數據包傳遞給下一條規則
REDIRECT: 端口映射。
SNAT :源地址轉換,修改包來源IP爲某IP或IP範圍,作內網和公網之間的轉換。
DNAT::目標地址轉換。 修改數據包目的地IP爲某 Ip 或 IP 範圍。
3)經常使用的條件匹配:
一、狀態匹配:-m state --state 鏈接狀態
NEW:與任何鏈接無關的
ESTABLISHED:響應請求或已創建鏈接的
RELATED:與已有鏈接有相關性的,如FTP數據鏈接
二、MAC地址匹配:-m mac --mac-source MAC地址
eg:iptables -A INPUT -m mac --mac-source f0:1b:12:12:22:4f -j DROP
三、IP範圍匹配:-m iprange --src-range IP範圍
eg:iptables -A FORWARD -p tcp -m iprange --src-range 192.168.0.1-192.168.0.10 -j ACCEPT
四、多端口匹配:-m multiport --sports 源端口列表 和 -m multiport --sports 目的端口列表
eg:iptables -A INPUT -p tcp -m multiport --dport 11,29,116,121 -j ACCEPT
4)經常使用的一些iptables策略:
一、拒絕轉發來自192.168.2.33主機的數據
iptables -A FORWARD -s 192.168.2.33 -j REJECT
二、容許轉發來自192.168.2.1/99網段的數據
iptables -A FORWARD -s 192.168.2.1/99 -j ACCEPT
三、容許本機開放從TCP端口20-1024提供的應用服務。
iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
四、只容許管理員從202.13.0.0/16網段使用SSH遠程登陸防火牆主機。
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
五、 容許轉發來自192.168.0.0/24局域網段的DNS解析請求數據包。
iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
六、屏蔽ip 110.1.1.1的訪問
iptables -I INPUT -s 110.1.1.1 -j DROP
七、屏蔽從123.0.0.1到123.255.255.254 : iptables -I INPUT -s 123.0.0.0/8 -j DROP
八、屏蔽從從123.45.0.1到123.45.255.254 : iptables -I INPUT -s 124.45.0.0/16 -j DROP
九、屏蔽從從123.45.6.1到123.45.6.254 : iptables -I INPUT -s 123.45.6.0/24 -j DROP
十、容許全部本機向外的訪問 : iptables -A OUTPUT -j ACCEPT
十一、容許訪問22端口 : iptables -A INPUT -p tcp --dport 22 -j ACCEPT
十二、打開3306端口
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent #開啓3306端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 66 -j ACCEPT #打開遠程鏈接端口66
iptables -I INPUT -s 211.1.0.0 -j DROP
iptables -I INPUT -s 211.1.0.0/16 -j DROP
iptables -I INPUT -s 211.2.0.0/16 -j DROP
iptables -I INPUT -s 211.3.0.0/16 -j DROP
iptables -I INPUT -s 211.0.0.0/8 -j DROP
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
一、把它加到/etc/rc.local中
二、iptables-save >/etc/sysconfig/iptables能夠把你當前的iptables規則放到/etc/sysconfig/iptables中,系統啓動iptables時自動執
行。
三、service iptables save 也能夠把你當前的iptables規則放/etc/sysconfig/iptables中,系統啓動iptables時自動執行。
後兩種更好此,通常iptables服務會在network服務以前啓來,更安全。
iptables -D INPUT -s IP地址 -j REJECT
iptables -F 全清掉了
5)經常使用的iptables命令:
一、查看當前 IPTABLES 規則
service iptables status
二、 將全部iptables以序號標記顯示
iptables -L -n --line-numbers
三、 好比要刪除INPUT裏序號爲22的規則
iptables -D INPUT 22
iptables數據包的過濾流程
爲了更直觀的表現數據包的過濾流程,請參考第二步及下圖
更多介紹 : http://blog.51cto.com/linuxgentoo/1542782
注意 :
在centos6上,咱們用的是iptables服務,iptables: 包過濾型的防火牆
在centos7上,咱們用的是firewalld服務。
一樣的,centos6上安裝的是iptables包,而centos7上安裝的是firewalld包。
centos6仍是centos7,核心其實都是netfilter,netfilter是linux的一個內核模塊,iptables命令是linux內核自帶的。
1. 從軟、硬件形式上分爲 軟件防火牆和硬件防火牆以及芯片級防火牆。 2.從防火牆技術分爲 「包過濾型」和「應用代理型」兩大類。 3.從防火牆結構分爲 < 單一主機防火牆、路由器集成式防火牆和分佈式防火牆三種。 4. 按防火牆的應用部署位置分爲 邊界防火牆、我的防火牆和混合防火牆三大類。 5. 按防火牆性能分爲 百兆級防火牆和千兆級防火牆兩類。
| [linux@localhost ~]$service iptable status 查看防火牆的狀態
[linux@localhost ~]$servcie iptables stop --臨時關閉防火牆
[linux@localhost ~]$servcie iptables off --永久關閉防火牆
|
(1)查看iptables開機狀態:
[root@localhost ~]# chkconfig --list | grep iptables iptables 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
(2)關閉selinux
[root@localhost ~]# vim /etc/selinux/config
#SELINUX=enforcingSELINUX=disabled # 修改成disabled# SELINUXTYPE= can take one of these
LINUX經過下面的命令能夠開啓容許對外訪問的網絡端口:
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #開啓8000端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重啓服務
查看端口是否已經開放
/etc/init.d/iptables status
要開放22,80,8080 端口,輸入如下命令便可
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT
2. 修改文件
vim /etc/rc.d/init.d/iptables
添加上述文本
3. 保存:
/etc/rc.d/init.d/iptables save
4. 查看打開的端口:
/etc/init.d/iptables status
5. 重啓
5.1 /etc/init.d/iptables restart (臨時有效)
5.2 chkconfig iptables off/on (永久有效)
當服務器成爲肉雞時候,採起的措施 :
臨時採起的防範措施就是:利用iptables阻止服務器向外發送udp數據包。而後再查找應用,查找漏洞清除木馬文件。
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -P OUTPUT DROP
這個規則就是阻止了除了DNS要用到的53端口的其餘一切udp端口,由於在此以前作了只是封掉7000端口,等會兒發現攻擊改變了端口。
在服務器流量很大的時候分析本地新增哪些udp端口
netstat -lpnut|grep udp
查找出了是1833端口,而後根據1833端口查找相關的進程
ps -ef|grep 1833
得出的進程爲freebsd
而後根據進程查找所對應的應用的位置
lsof | grep -i freebsd
iptables更多介紹:http://www.cnblogs.com/MYue/p/7000821.html
1、關閉Firewall防火牆
執行如下操做:
systemctl stop firewalld.service
systemctl disable firewalld.service
2、安裝iptables防火牆
yum install iptables-services //安裝
vi /etc/sysconfig/iptables //編輯防火牆配置文件
Firewall configuration written by system-config-firewall
Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
//在此處下面編輯,添加80、330六、8080等端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! //保存退出
systemctl restart iptables.service //最後重啓防火牆使配置生效。
systemctl enable iptables.service //設置防火牆開機啓動。
firewalld有圖形界面和工具界面,因爲我在服務器上使用,圖形界面請參照官方文檔,本文以字符界面作介紹
firewalld的字符界面管理工具是 firewall-cmd
firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running);
firewalld默認配置文件有兩個:/usr/lib/firewalld/ (系統配置,儘可能不要修改)和 /etc/firewalld/ (用戶配置地址)
安裝firewalld
# yum install firewalld firewall-config
# systemctl enable firewalld
# systemctl start firewalld
關閉防火牆:
systemctl stop firewalld.service #中止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
服務
啓動一個服務:systemctl start firewalld.service
關閉一個服務:systemctl stop firewalld.service
重啓一個服務:systemctl restart firewalld.service
顯示一個服務的狀態:systemctl status firewalld.service
在開機時啓用一個服務:systemctl enable firewalld.service
在開機時禁用一個服務:systemctl disable firewalld.service
查看服務是否開機啓動:systemctl is-enabled firewalld.service;echo $?
查看已啓動的服務列表:systemctl list-unit-files|grep enabled
firewall-cmd --list-ports #查看已經開放的端口
# firewall-cmd --zone=public --list-ports # 查看全部開放的端口
#firewall-cmd --zone=public --add-port=9000-9999/tcp --permanent #開啓一個範圍的端口
#firewall-cmd --zone=public --remove-port=80/tcp --permanent #刪除一個端口
#firewall-cmd --reload #更新防火牆規則
firewall-cmd --zone=public --add-port=80/tcp --permanent #開啓端口
命令含義:
–zone #做用域
–add-port=80/tcp #添加端口,格式爲:端口/通信協議
–permanent #永久生效,沒有此參數重啓後失效
運行、中止、禁用firewalld
systemctl start firewalld #啓動firewall
firewall-cmd --reload #重啓firewall
#關閉狀態
systemctl stop firewalld.service #中止/禁用firewall
systemctl disable firewalld.service #禁止firewall開機啓動
firewall-cmd --state = systemctl status firewalld #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running;關閉狀態(disabled ))
查看所有的zone
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
查看Firewalld的當前運行狀態,輸入以下命令:
$ firewall-cmd --state
羅列出預約義的區域:
$ firewall-cmd --get-zones
獲取任何特定區域的全部相關信息:
$ firewall-cmd --zone= --list-all
你也能列出全部支持的服務:
$ firewall-cmd --get-services
更新firwalld:
$ firewall-cmd --set-default-zone=
添加或刪除額外的服務。
$ firewall-cmd--zone=--add-service= $ firewall-cmd--zone=--remove-service=
你能經過以下命令列出任何特定區域中全部開放的端口:
$ firewall-cmd --zone= --list-ports
你可用以下方式管理TCP/UDP端口的增長與刪除:
$ firewall-cmd--zone=--add-port= $ firewall-cmd--zone=--remove-port=
你能夠以下命令添加或刪除端口的轉發:
$ firewall-cmd--zone=--add-forward-port= $ firewall-cmd--zone=--remove-forward-port=
查看默認的zone
# firewall-cmd --get-default-zone
public
修改默認的zone
# firewall-cmd --set-default-zone=work
success
指定網卡查詢zone
# firewall-cmd --get-zone-of-interface=ens33
work
# firewall-cmd --get-zone-of-interface=ens37
no zone
給指定網卡設置zone
# firewall-cmd --zone=public --add-interface=ens37
success
給指定網卡修改zone
# firewall-cmd --zone=dmz --change-interface=lo
success
給指定網卡刪除zone
# firewall-cmd --zone=dmz --remove-interface=lo
success
# firewall-cmd --get-zone-of-interface=lo
no zone
查看全部網卡所在的zone
# firewall-cmd --get-active-zones
dmz
interfaces: ens37
work
interfaces: ens33
查看全部的service,(其實都是一些服務的名字)
# firewall-cmd --get-services
查看當前zone的service
# firewall-cmd --list-services
ssh dhcpv6-client
查看指定zone下的service
# firewall-cmd --zone=public --list-service
ssh dhcpv6-client
把http服務添加指定zone裏面
# firewall-cmd --zone=public --add-service=http
success
# firewall-cmd --zone=public --list-service
ssh dhcpv6-client http
把http服務添加指定zone裏面,並寫入配置文件
# firewall-cmd --zone=public --add-service=http --permanent
success
# cat /etc/firewalld/zones/public.xml
<service name="http"/>
刪掉指定zone的http服務
# firewall-cmd --zone=public --remove-service=http
success
/etc/firewalld/zones/ 是zone類型開頭.xml格式文件。還有前面文件.old結尾的文件的備份。例如:
public.xml public.xml.old。分別保存瞭如今的文件,和修改以前的備份,用於恢復。
/etc/firewalld/services/ 是service類型的文件。
/usr/lib/firewalld/ 裏面的 zones 和 services 目錄裏,分別保存了模板文件。用於手動添加firewalld規則。
需求:ftpd服務端口21修改成1121。在 work zone下放行。
新增service文件
# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
# vim /etc/firewalld/services/ftp.xml
<port protocol="tcp" port="21"/> 修改成 <port protocol="tcp" port="1121"/>
新增work文件
# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
# vim /etc/firewalld/zones/work.xml
新增一行 <service name="ftp"/>
重載firewalld
# firewall-cmd --reload
查看work zone
# firewall-cmd --zone=work --list-services
ssh dhcpv6-client ftp
如要開放80,22,8080 端口,輸入如下命令便可
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
而後保存:
/etc/rc.d/init.d/iptables save
查看打開的端口:
/etc/init.d/iptables status
關閉防火牆
1) 永久性生效,重啓後不會復原
開啓: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啓後復原
開啓: service iptables start
關閉: service iptables stop
查看防火牆狀態: service iptables status
CentOS 7默認使用的是firewall做爲防火牆,使用iptables必須從新設置一下
一、直接關閉防火牆
systemctl stop firewalld.service #中止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
二、設置 iptables service
yum -y install iptables-services
若是要修改防火牆配置,如增長防火牆端口3306
vi /etc/sysconfig/iptables
增長規則
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出後
systemctl restart iptables.service #重啓防火牆使配置生效
systemctl enable iptables.service #設置防火牆開機啓動
最後重啓系統使設置生效便可。
systemctl start iptables.service # 打開防火牆
systemctl stop iptables.service #關閉防火牆
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
前陣子在虛擬機上裝好了CentOS6.2,並配好了apache+php+mysql,可是本機就是沒法訪問。一直就沒去折騰了。
具體狀況以下
1. 本機能ping通虛擬機
2. 虛擬機也能ping通本機
3.虛擬機能訪問本身的web
4.本機沒法訪問虛擬機的web
後來發現是防火牆將80端口屏蔽了的緣故。
檢查是否是服務器的80端口被防火牆堵了,能夠經過命令:telnet server_ip 80 來測試。
解決方法以下:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
而後保存:
/etc/rc.d/init.d/iptables save
重啓防火牆
/etc/init.d/iptables restart
CentOS防火牆的關閉,關閉其服務便可:
查看CentOS防火牆信息:/etc/init.d/iptables status
關閉CentOS防火牆服務:/etc/init.d/iptables stop
本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文連接:https://www.linuxidc.com/Linux/2016-12/138979.htm
設定防火牆規則
iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 3.3.3.3/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 4.4.4.4/32 -p tcp -m tcp --dport 22 -j DROP
保存防火牆規則
iptables-save > /etc/sysconfig/iptables
設定開機自動恢復iptables規則
vim /etc/rc.d/rc.local iptables-restore < /etc/sysconfig/iptables
iptables關機自動保存
先清空防火牆規則
iptables -F
保存iptables規則,也就是說將/etc/sysconfig/iptables文件清空
iptables-save > /etc/sysconfig/iptables
手動生成一些iptables規則
iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 3.3.3.3/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 4.4.4.4/32 -p tcp -m tcp --dport 22 -j DROP
查看iptables規則是否生效
[root@ecs-7740 init.d]# iptables -nvL Chain INPUT (policy ACCEPT 27 packets, 1978 bytes) pkts bytes target prot opt in out source destination 0 0 DROP tcp -- * * 1.1.1.1 0.0.0.0/0 tcp dpt:22 0 0 DROP tcp -- * * 2.2.2.2 0.0.0.0/0 tcp dpt:22 0 0 DROP tcp -- * * 3.3.3.3 0.0.0.0/0 tcp dpt:22 0 0 DROP tcp -- * * 4.4.4.4 0.0.0.0/0 tcp dpt:22
設定關機時自動保存iptables規則
建立關機時要執行的腳本,而且確保其有執行權限
vim /etc/init.d/shutdownsh iptables-save > /etc/sysconfig/iptables chmod +x /etc/sysconfig/shutdownsh ls /etc/sysconfig/shutdownsh -rwxr-xr-x 1 root root 40 Jan 16 22:05 shutdownsh
建立軟鏈接文件至rcN.d路徑下,N爲運行等級
查看linux的防火牆是否阻止80端口
iptables -vnL | grep ":80 "
常見問題 :
一、Linux中,提供TCP/IP包過濾功能的軟件叫什麼?
答案 :iptables
2.使用iptables 寫一條規則:把來源IP爲192.168.1.101訪問本機80端口的包直接拒絕
iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT
3.要想把iptable的規則保存到一個文件中如何作?如何恢復?
使用iptables-save重定向到文件中:iptables-save > 1.ipt
使用iptables-restore反重定向回來:iptables-restore < 1.ipt
4.如何將本地80端口的請求轉發到8080端口,當前主機IP爲192.168.16.1,其中本地網卡eth0:
#iptables-tnat -A PREROUTING -d 192.168.16.1 -p tcp –dport 80 -j DNAT –to192.168.16.1:8080
或 者:
#iptables-t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080
5.包過濾防火牆與代理應用防火牆有什麼區別,能列舉幾種相應的產品嗎?
包過濾防火牆是根據包頭進行的過濾,而且是處於網絡層的,根據包的源ip地址,目標ip地址,協議類型,端口號,進行過濾;代理應用防火牆工做在應用層,他使用代理服務器技術,將內網對外網的訪問,變爲防火牆對外網的訪問,能夠對包的內容進行分辨,從而過濾。
代理應用防火牆:天融信GFW4000
包過濾防火牆:華爲NE 16E
6.iptables是否支持time時間控制用戶行爲,若有請寫出具體操做步驟。
支持。須要增長相關支持的內核補丁,而且要從新編譯內核。
或者使用crontab配合iptables,首先:vi /deny.bat 輸入/sbin/iptables -A OUTPUT -p tcp -s 192.168.1.0/24 --dport 80 -j DROP保存退出
打開crontab-e
輸入:00 21* * * /bin/sh /deny.bat
7.如何將本地 80 端口的請求轉發到 8080 端口,當前主機 IP 爲 192.168.2.1
Iptables -A PREROUTING -d 124.42.60.109 -p tcp -m tcp –dport 80 -j DNAT
–to-destination 10.0.0.18:9000
8.如何將本地 80 端口的請求轉發到 8080 端口,當前主機 IP 爲 192.168.16.1,其中本地
網卡 eth0:
答:
#iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to
192.168.16.1:8080
或者:
#iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport
80 -j REDIRECT --to-ports 8080
九、iptables 是否支持 time 時間控制用戶行爲,若有請寫出具體
十、用 iptables 添加一個規則容許 192.168.0.123 訪問本機 3306 端口
iptables -I INPUT 1 -p tcp -m tcp --dport 3306 -s 192.168.0.123 -j ACCE
十一、
十二、
參考連接 :
http://blog.51cto.com/linuxgentoo/1542782
http://www.javashuo.com/article/p-qzebckgf-mc.html
高防服務器中防火牆的功能在哪裏? :https://mp.weixin.qq.com/s/y0A8qKePVG0NWXlPFX3gTg
連接:
CentOS 7 上的防火牆設置簡明教程 | 以阿里云爲例 (實戰): https://mp.weixin.qq.com/s?__biz=MzA3OTgyMDcwNg==&mid=2650635171&idx=1&sn=376e5c3f1e3f4e58e3f080b90bb896f5&chksm=87a4796eb0d3f0784c082223886fb00efb36ccd3b04d2cec614c9cbbbf982b03fda23b99d1fb#rd
配置使用rsyslog+loganalyzer收集防火牆及交換機日誌 : http://blog.51cto.com/11555417/2046796
linux學習-iptabls簡單使用 : http://blog.51cto.com/11555417/2146095
基礎運維:iptables防火牆入門到掌握 : http://blog.51cto.com/leoheng/2162158
遠程鏈接配置LINUX iptables : http://blog.chinaunix.net/uid-25266990-id-96064.html
經常使用iptables腳本 : http://blog.chinaunix.net/uid-25266990-id-3182792.html
Linux上iptables基礎應用 :http://blog.51cto.com/xiaogongju/2060940
屏蔽端口 iptables 規則 :http://blog.51cto.com/xiaogongju/2060962
| 更多iptables相關教程見如下內容:
CentOS 7.0關閉默認防火牆啓用iptables防火牆 http://www.linuxidc.com/Linux/2015-05/117473.htm
iptables使用範例詳解 http://www.linuxidc.com/Linux/2014-03/99159.htm
Linux防火牆iptables詳細教程 http://www.linuxidc.com/Linux/2013-07/87045.htm
iptables的備份、恢復及防火牆腳本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm
Linux下防火牆iptables用法規則詳解 http://www.linuxidc.com/Linux/2012-08/67952.htm
Linux下iptables防火牆設置 http://www.linuxidc.com/Linux/2015-10/123843.htm
|
Iptables與Firewalld防火牆 : https://www.linuxprobe.com/chapter-08.html
Linux iptables防火牆原理詳解 : https://blog.csdn.net/liupeifeng3514/article/details/79054442
Linux iptables/netfilter命令參數詳解中文手冊 :https://blog.csdn.net/liupeifeng3514/article/details/79054425
Linux防火牆詳解(一) : http://blog.51cto.com/hmtk520/2046884
Linux防火牆詳解(二) : http://blog.51cto.com/hmtk520/2046938
centos 6.6默認iptable規則詳解 : https://www.jb51.net/os/RedHat/528120.html
Redhat(CentOS)下配置iptables防火牆的方法 : https://www.jb51.net/os/RedHat/86191.html
CentOS Linux防火牆配置及關閉方法 : https://www.jb51.net/os/RedHat/86187.html
centOS防火牆iptables的設置教程 : https://www.jb51.net/os/RedHat/68744.html
CentOS 5.4 防火牆配置80端口的方法(適用於centos5.3以上版本) : https://www.jb51.net/os/RedHat/32186.html
LINUX下防火牆iptables的日誌管理 : https://www.jb51.net/os/RedHat/1181.html
徹底免費自建Linux防火牆的方法 : https://www.jb51.net/os/RedHat/list92_57.html
Linux系統防火牆防止DOS和CC攻擊的方法 : https://www.jb51.net/os/RedHat/1064.html
轉 Iptables的增刪改查 : https://blog.csdn.net/u012402276/article/details/78655808
iptables總結 : https://www.jianshu.com/p/f5efb649b1c6
Linux下設置防火牆白名單(RHEL 6和CentOS 7)的步驟 :https://www.jb51.net/article/98622.htm
iptables/netfilter基於layer7實現應用層過濾 : http://blog.51cto.com/scholar/1638149
iptables原理知識 薦 : http://blog.51cto.com/guoting/1543295
Linux防火牆基礎知識及應用;設置SNAT策略,局域網共享上網;DNAT策略,發佈內部服務器 薦 置頂 : http://blog.51cto.com/13728740/2153394
CentOS 下利用Iptables配置IP地址白名單 : http://blog.51cto.com/nanchunle/1647311
轉 出口網關雙鏈路接入不一樣運營商舉例(負載分擔) : https://blog.csdn.net/u012402276/article/details/50834984
原 IATF信息保障技術框架的核心思想--縱深防禦 : https://blog.csdn.net/u012402276/article/details/50067783
原 HuaWei-USG6000系列防火牆清除Console登陸密碼 : https://blog.csdn.net/u012402276/article/details/49305605
Centos7-----firewalld詳解 : http://blog.51cto.com/11638832/2092203
【原】WAF 防火牆 部署 : https://www.jianshu.com/p/2027ac4333f2
解決CentOS 7安裝mysql後3306端口不通 : https://www.cnblogs.com/love-wife/p/10903876.html