iptables

 

一、IT安全的概念和層面剖析

1)     隨着互聯網IT技術飛速發展,安全概念很是重要的,各類操做、配置、服務、設備等的安全性是運維人員必須時刻關注的,一旦被黑客或者誤操做,致使企業的損失。安全維護不只僅是安全人員的工做,同時運維人員也要懂一些安全策略和方法。linux

2)     做爲運維人員,要保證企業服務器、門戶網站、業務系統、數據庫等安全、高效的運行,安全體如今哪些層面呢?數據庫

n  硬件層面vim

n  軟件層面安全

n  系統層面服務器

n  網絡層面網絡

3)     硬件層面,安全主要體如今什麼地方?有哪些具體硬件安全須要保障呢?運維

n  進出機房,設置門禁、指紋識別、來訪登記、具體操做的事項;tcp

n  防止靜電、監控機房溫度、電子監控、空調安全運行的狀況;工具

n  電力安全保障、UPS+服務器雙電源、滅火器、消防設備;oop

n  接地線、防水、防地震、機房異地災備、機櫃加固、防雷。

4)     軟件層面,安全主要體如今什麼地方?有哪些具體軟件安全須要保障呢?

n  軟件服務的BUG、是否存在漏洞;

n  軟件服務的安全、權限設置、對外進程、端口;

n  軟件服務是否攜帶病毒、木馬,定時檢查;

n  WEB頁面防止篡改、數據庫對外權限、執行的SQL;

n  防止人爲誤操做、誤刪除、按期備份軟件服務等。

5)     系統層面,安全主要體如今什麼地方?有哪些具體系統安全須要保障呢?

n  Linux內核版本是否穩定、BUG、漏洞;

n  遠程鏈接端口、SSHD服務、端口和服務;

n  登陸用戶名、密碼安全、受權訪問的IP地址;

n  啓動文件、誤操做、誤刪除、備份核心文件。

6)     網絡層面,安全主要體如今什麼地方?有哪些具體網絡安全須要保障呢?

n  硬件設備、防火牆、交換機、路由器設備的安全;

n  ARP欺騙、攻擊、冒充局域網網關;

n  DDOS攻擊、大的流量訪問;

n  過濾請求包、數據包協議、開放的策略。

二、系統層面&防禦的策略

  •  按期升級Linux內核版本,儘可能使用穩定版本,及時給系統打補丁;
  •  儘可能禁止使用root用戶登陸,啓用普通用戶+sudo配置提權;
  •  按期修改服務器遠程登陸用戶名、密碼,密碼複雜度足夠複雜;
  •  引入系統級別的防火牆,關閉沒必要要的服務、端口、進程、設置安全策略;
  •  引入殺毒軟件,木馬攔截工具、按期掃描服務器系統的安全;
  •  編寫運維服務器管理流程、規範運維人員命令、配置,防止誤操做、刪除;
  •  7x24小時x365監控服務器系統CPU、MEM、DISK、NET、I/O使用狀況;
  •  引入Selinux系統級別的安全防禦,限制某個軟件、進程、目錄訪問權限;
  •  按期備份操做系統重要配置文件、WEB代碼、數據庫、啓動文件、任務計劃。

三、軟件層面&防禦的策略

  •   儘可能使用普通用戶運行軟件服務,不建議使用root;
  •   按期更新軟件服務的版本,儘可能使用穩定版本,及時打補丁;
  •   儘量隱藏軟件服務的版本號,替換軟件服務的名稱;
  •   保障軟件服務之間的依賴庫穩定、保障其兼容性、穩定性;
  •   授予用戶訪問軟件服務的權限、r、w、x權限,儘可能設置最小的權限。

四、Iptables防火牆的概念

1)NetFilter/Iptables(簡稱Iptables)是一款開源、免費的unix/linux操做系統防火牆軟件系統,基於數據包過濾的防火牆工具,主要是工做在OSI七層模型中:二層(數據鏈路層)、三層(網絡層)、四層(傳輸層)。

2)NetFilter主要是工做中內核空間(Kernel Space),屬於Linux內核自帶的系統模塊,無需安裝,默認集成的,主要是由各類過濾的信息表組成的,表主要用於存儲後期各類策略規則,負責規則、策略的處理、數據包過濾等工做。

3)Iptables主要是工做中用戶空間(User Space),屬於Linux系統自帶(自行安裝)的系統工具,主要是用於管理底層Netfilter模塊的,默認不能直接操做內核模塊的,能夠經過iptables工具管理Netfilter模塊中過濾表,還能夠經過iptables工具在表中添加策略規則等。

4)在平常企業運維中,NetFilter和Iptables統稱爲Iptables防火牆,iptables防火牆默認有四張表:Raw、Mangle、NAT、Filter表,默認iptables是管理和使用Filter表。

5)四張表總共包含5條鏈,每條鏈上能夠沒有規則,也能夠有無數的規則,規則是用於限制、容許客戶端訪問服務器的策略定義的,規則和規則之間沒有衝突,5條鏈:

 

  •   RREROUTING;
  •   POSTROUTING;
  •   INPUT;
  •   OUTPUT;
  •   FORWARD。

五、IPTABLES四張表&五條鏈

 

 

 

iptables具備Filter, NAT, Mangle, Raw四種內建表。

六、Linux下IPtables下Filter表

Filter表示iptables的默認表,所以若是你沒有自定義表,那麼就默認使用filter表,它具備如下三種內建鏈:

  •   INPUT鏈 – 處理來自外部的數據;
  •   OUTPUT鏈 – 處理向外發送的數據;
  •   FORWARD鏈 – 將數據轉發到本機的其餘網卡設備上。

七、Linux下IPtables下NAT表

NAT (網絡地址轉換) 技術在平時是不少見的,如家庭中在使用路由器共享上網時,通常用的就是 NAT 技術,它能夠實現衆多內網 IP 共享一個公網 IP 上網。

NAT 的原理,簡單的說就是當內網主機訪問外網時,當內網主機的數據包要經過路由器時,路由器將數據包中的源內網 IP 地址改成路由器上的公網 IP 地址,同時記錄下該數據包的消息;

      外網服務器響應此次由內而外發出的請求或數據交換時,當外網服務器發出的數據包通過路由器時,本來是路由器上的公網 IP 地址被路由器改成內網 IP 。

SNAT 和 DNAT 是 iptables 中使用 NAT 規則相關的的兩個重要概念。如上圖所示,若是內網主機訪問外網而通過路由時,源 IP 會發生改變,這種變動行爲就是 SNAT;反之,當外網的數據通過路由發往內網主機時,數據包中的目的 IP (路由器上的公網 IP) 將修改成內網 IP,這種變動行爲就是 DNAT 。NAT表有三種內建鏈:

  PREROUTING鏈 – 處理剛到達本機並在路由轉發前的數據包。它會轉換數據包中的目標IP地址(destination ip address),一般用於DNAT(destination NAT)。

  POSTROUTING鏈 – 處理即將離開本機的數據包。它會轉換數據包中的源IP地址(source ip address),一般用於SNAT(source NAT)。

  OUTPUT鏈 – 處理本機產生的數據包。

八、Linux下IPtables命令圖解

 

九、Linux下IPtables命令剖析

1.命令:

-A 順序添加,添加一條新規則

-I 插入,插入一條新規則 -I 後面加一數字表示插入到哪行

-R 修改, 刪除一條新規則 -D 後面加一數字表示刪除哪行

-D 刪除,刪除一條新規則 -D 後面加一數字表示刪除哪行

-N   新建一個鏈

-X   刪除一個自定義鏈,刪除以前要保證次鏈是空的,並且沒有被引用

-L 查看

 @1.iptables -L -n 以數字的方式顯示

 @2. iptables -L -v顯示詳細信息

 @3. iptables -L -x 顯示精確信息

-E   重命名鏈

-F 清空鏈中的全部規則

-Z   清除鏈中使用的規則

-P 設置默認規則

2.匹配條件:

隱含匹配:

   -p  tcp udp icmp

   --sport指定源端口

   --dport指定目標端

   -s 源地址

   -d 目的地址

-i 數據包進入的網卡

-o 數據包出口的網卡

擴展匹配:

-m state --state   匹配狀態的

-m mutiport --source-port   端口匹配 ,指定一組端口

-m limit --limit 3/minute   每三分種一次

-m limit --limit-burst  5   只匹配5個數據包

-m string --string --algo bm|kmp --string"xxxx"  匹配字符串

-mtime--timestart 8:00 --timestop 12:00  表示從哪一個時間到哪一個時間段

-mtime--days    表示那天

-m mac --mac-source xx:xx:xx:xx:xx:xx 匹配源MAC地址

-m layer7 --l7proto qq   表示匹配騰訊qq的 固然也支持不少協議,這個默認是沒有的,須要咱們給內核打補丁並從新編譯內核及iptables纔可使用 -m layer7 這個顯示擴展匹配

3.動做:

-j

DROP 直接丟掉

ACCEPT 容許經過

REJECT 丟掉,可是回覆信息

LOG --log-prefix"說明信息,本身隨便定義" ,記錄日誌

SNAT       源地址轉換

DNAT       目標地址轉換

REDIRECT   重定向

MASQUERAED  地址假裝

保存iptables規則

service iptables save

# 重啓iptables服務

service iptables stop

service iptables start

十、Linux下IPtables企業案例解析

 

 

 

含義:

:INPUT ACCEPT [0:0]# 該規則表示INPUT表默認策略是ACCEP ([ 0:0 ]裏記錄的就是經過該規則的數據包和字節總數。)

:FORWARD ACCEPT [0:0]# 該規則表示FORWARD表默認策略是ACCEPT

:OUTPUT ACCEPT [0:0]# 該規則表示OUTPUT表默認策略是ACCEPT

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT# 意思是容許進入的數據包只能是剛剛我發出去的數據包的迴應,ESTABLISHED:已創建的連接狀態。RELATED:該數據包與本機發出的數據包有關。

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT# 意思就容許本地環回接口在INPUT表的全部數據通訊,-i 參數是指定接口,接口是lo,lo就是Loopback(本地環回接口)

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -j REJECT –reject-with icmp-host-prohibited

# 這兩條的意思是在INPUT表和FORWARD表中拒絕全部其餘不符合上述任何一條規則的數據包。而且發送一條host prohibited的消息給被拒絕的主機。

下面來介紹一下,我添加的每一個參數是什麼意思,跟我沒講得容許22端口的同樣

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-A 最後添加一條規則

-j 後面接動做,主要的動做有接受(ACCEPT)、丟棄(DROP)、拒絕(REJECT)及記錄(LOG)

–dport 限制目標的端口號碼。

-p 協定:設定此規則適用於哪一種封包格式 主要的封包格式有: tcp, udp, icmp 及 all 。

-m state –state 模糊匹配一個狀態,

NEW 用戶發起一個全新的請求

ESTABLISHED 對一個全新的請求進行迴應

RELATED 兩個完整鏈接之間的相互關係,一個完整的鏈接,須要依賴於另外一個完整的鏈接。

INVALID 沒法識別的狀態。

十一、IPtables企業案例規則實戰一

WEB服務器,開啓80端口;

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

郵件服務器,開啓25,110端口; 

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
FTP服務器,開啓21端口

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

DNS服務器,開啓53端口

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

容許icmp包經過,也就是容許ping,

[root@www-jfedu-net ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT設置成DROP的話)

[root@www-jfedu-net ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT設置成DROP的話)

將本機的8080端口轉發至其餘主機,主機IP:192.168.0.141,目標主機IP和端口:192.168.0.142:80,規則以下;

iptables -t nat -A PREROUTING  -d 192.168.0.141/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.142:80

iptables -t nat -A POSTROUTING -d 192.168.0.142/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.141

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

同時開啓iptables forward轉發功能。

十二、IPtables企業案例規則實戰二

生產環境,線上門戶網站iptables規則策略以下:

[root@localhost ~]# vim /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Wed Dec 14 21:05:31 2016

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [602:39593]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#########################

-A INPUT -i lo -j ACCEPT

-A INPUT -s 116.22.202.146 -j DROP

-A INPUT -s 139.224.227.121 -j ACCEPT

##########################

-A INPUT -p icmp -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

-A INPUT -s 116.243.139.7 -p tcp -m state --state NEW -m tcp --dport 7001 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8801 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT

####

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

# Completed on Wed Dec 14 21:05:31 2016

相關文章
相關標籤/搜索