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 過濾請求包、數據包協議、開放的策略。
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條鏈:
iptables具備Filter, NAT, Mangle, Raw四種內建表。
Filter表示iptables的默認表,所以若是你沒有自定義表,那麼就默認使用filter表,它具備如下三種內建鏈:
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鏈 – 處理本機產生的數據包。
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 |
: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 沒法識別的狀態。 |
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 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轉發功能。 |
[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 |