国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux設置iptables防火墻的詳細步驟(centos防火墻設置方法)

2020-06-21 13:08:10
字體:
來源:轉載
供稿:網友

我們 來討論一下如何為你的CentOS 服務器來設置簡單的防火墻。 這里我們以DigitalOcean的CentOS 6 VPS為基礎來討論的,同樣也適用于 阿里云上其他類型的LINUX系統。 (阿里云有個云盾系統,因此在你自己的VPS上不設置防火墻也是可以的)

需要說明的是: 本文只涉及最基礎最常用的防火墻設置,能屏蔽一些常用的攻擊,但并不能徹底保證你的服務器的安全。

系統的隨時更新 以及 關閉不必要的服務 仍然是保證系統安全非常重要的步驟。

如果你需要更全面的了解iptables,閱讀本文后,請google或是閱讀更加深入的資料!

首先簡單介紹一下什么是IPTables:

iptables是Linux內核中內置的防火墻,可以允許管理員通過設置table, chain以及相關的規則來進行數據包過濾和NAT。 一般來講,iptables防火墻已經內置于CentOS 6及其他Linux版本中,而且iptables服務默認都是啟動的。  iptables應用于IPv4, 如果要用IPv6,需要使用ip6tables.

iptables的命令格式:

 

復制代碼
代碼如下:

iptables[-ttable]command[chain][rules][-jtarget]

 

[-ttable]:用來指明使用的表,有三種選項:filter,nat和mangle,如果未指定,則使用filter作為缺省表。事實上,對于單個服務器的防火墻配置,一般來講,我們只需要對filter表進行配件就OK了。filter表包括INPUT,OUTPUT,和FORWARD三個chain.

command表明iptables命名要做什么,比如

-A(–append):該命令會把一條規則附件到chain的末尾。

-D(–delete)用來刪除某個規則。

-F(–flush)如果指定了chain,刪除該chain中的所有規則,如果未指定chain,則刪除所有chain中的所有規則。

target:是由規則指定的操作。包括下面幾種:

ACCEPT:接收信息包(允許它前往目的地),并且將停止遍歷chain.

DROP:拒絕,

此外還有REJECT,RETURN,LOG,REDIRECT,MARK,MIRROR,MAQUERADE等。

具體的iptables的語法和概念就不再多說了,請參照iptablesmanpage官方文檔.

簡單來說,iptables防火墻是由一系列的規則(rule)組成,一個數據請求進來,會依次和這些規則進行比較,如果正好符合規則的定義,那這個數據請求要么會被接收ACCEPT,要么被拒絕DRIP。如果不符合任何規則的定義,最后缺省的規則會被應用。

開始操作之前:

注意:一定要把你在DigitalOcean/Linode/阿里云上的服務器做一下快照備份,否則一旦你iptables的配置出了問題,極有可能把你自己擋在門外,你自己都無法連接到服務器了!!出現這種情況可是會欲哭無淚呀,除了重新做系統好像沒有更好的辦法了。(DigitalOcean提供了一個webconsole的界面,有時候會給你反悔和擦除iptables設置的機會,但阿里云沒有)

決定哪些端口需要開放

首先,SSH的端口22自然是需要開放的,否則我們就無法登錄服務器了。

一般來講,CentOS的VPS經常作為用LAMP搭建的Web服務器,FTP服務器,Mail服務器等。

對于Web服務來說,需要開放80端口,如果是HTTPS/SSL協議的話,還需用開放443端口

對于Mail服務來說,由于涉及SMTP,POP3,IMAP協議,需要開放的端口如下:

SMTP:25SecureSMTP:465POP3:110SecurePOP3:995IMAP:143IMAPoverSSL:993

對于FTP服務來說,需要開放20,21兩個端口

第一步:屏蔽最常見的攻擊

缺省情況下,CentOS的iptables的設置是允許任何數據通過的。

我們首先要清空iptables中的所有的規則:

 

復制代碼
代碼如下:

iptables-F

 

然后我們加上阻止簡單掃描和攻擊的規則

 

復制代碼
代碼如下:

iptables-AINPUT-ptcp--tcp-flagsALLNONE-jDROP#NONE包(所有標識bit都沒有設置)主要是掃描類的數據包
iptables-AINPUT-ptcp!--syn-mstate--stateNEW-jDROP#防止sync-flood攻擊
iptables-AINPUT-ptcp--tcp-flagsALLALL-jDROP#ALL包(所有的標注bit都被設置了)也是網絡掃描的數據包

 

關于sync-flood,請參照wikipedia的解釋。

第二步:為相應的服務開放對應的端口

首先我們應該接受本機localhost的任何請求,否則,數據庫連接等將無法工作

1
iptables-AINPUT-ilo-jACCEPT
對于不同的服務需要開放不同的端口

 

復制代碼
代碼如下:

iptables-AINPUT-ptcp--dport22-jACCEPT#SSH
iptables-AINPUT-ptcp--dport80-jACCEPT#HTTP
iptables-AINPUT-ptcp--dport443-jACCEPT#HTTPS
iptables-AINPUT-ptcp--dport25-jACCEPT#SMTP
iptables-AINPUT-ptcp--dport465-jACCEPT#SecureSMTP
iptables-AINPUT-ptcp--dport110-jACCEPT#POP3
iptables-AINPUT-ptcp--dport995-jACCEPT#SecurePOP3
iptables-AINPUT-ptcp--dport143-jACCEPT#IMAP
iptables-AINPUT-ptcp--dport993-jACCEPT#SecureIMAP

 

第三步:加上通用的規則

首先要允許所有從服務器端發起的連接,由此返回的響應數據應該是允許的!比如VPS發起的yumupdate,必須要允許外部的update數據進來

 

復制代碼
代碼如下:

iptables-IINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT

 

最后,設置缺省的策略:屏蔽任何進入的數據請求,允許所有從Server發出的請求

 

復制代碼
代碼如下:

iptables-POUTPUTACCEPT</p> <p>iptables-PINPUTDROP

 

至此,規則設置完畢

第四步:保存設置

首先通過下面的命令查看一下我們的設置是否正確!

 

復制代碼
代碼如下:

iptable-L-n

 

確認沒有問題后,執行下面的命令

 

復制代碼
代碼如下:

serviceiptablessave

 

執行上述命令后,相應的規則會寫入/etc/sysconfig/iptables這個文件,你可以檢查一下看看。

最后執行

 

復制代碼
代碼如下:

serviceiptablesrestart.

 

重新啟動iptables防火墻,以使上述設置生效。

最佳的方法:

為了更方便的修改和維護自己的iptables的設置,我一般是把所有的iptables的設置先寫到一個單獨文件中,測試沒有問題后。然后再保存到iptable的配置文件中。

下面是我自己的iptables文件~/script/firewall.sh

 

復制代碼
代碼如下:

#!/bin/bash
#Asimpleiptablesfirewallconfiguration</p> <p>PATH=/sbin:/bin:/usr/sbin:/usr/bin;exportPATH</p> <p>#flush/eraseoriginalrules
iptables-F#清除所有已制定的rule
iptables-X#清除用戶自定義的chain/table
iptables-Z#將所有的chain的計數和流量統計歸零</p> <p>#Acceptlocalhostconnetting,nomatterwhatitis
iptables-AINPUT-ilo-jACCEPT</p> <p>#Acceptanyresponsepackagewhichisinitiatedfrominside
iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT</p> <p>#blockmostcommonnetworkattacks(reconpacketsandsyn-floodattack)
iptables-AINPUT-ptcp--tcp-flagsALLNONE-jDROP
iptables-AINPUT-ptcp!--syn-mstate--stateNEW-jDROP
iptables-AINPUT-ptcp--tcp-flagsALLALL-jDROP</p> <p>#openportsfordifferentservices
iptables-AINPUT-ptcp--dport22-jACCEPT#SSH
iptables-AINPUT-ptcp--dport80-jACCEPT#HTTP
#iptables-AINPUT-ptcp--dport443-jACCEPT#HTTPS
#iptables-AINPUT-ptcp--dport25-jACCEPT#SMTP
#iptables-AINPUT-ptcp--dport465-jACCEPT#SecureSMTP
#iptables-AINPUT-ptcp--dport110-jACCEPT#POP3
#iptables-AINPUT-ptcp--dport995-jACCEPT#SecurePOP</p> <p>#ICMPconfiguration
#TopreventICMPDDOS,wedonotallowICMPtype8(echo-request)orlimitthisrequestwith1/second
#someICMPrequestsareallowed.
icmp_type="0341112141618"
forticmpin$icmp_type
do
iptables-AINPUT-picmp--icmp-type$ticmp-jACCEPT
done
#iptables-AINPUT-picmp--icmp-type8-mlimit--limit1/second-jACCEPT</p> <p>#defaultpolicies
iptables-POUTPUTACCEPT
iptables-PINPUTDROP</p> <p>#saveto/etc/sysconfig/iptables
/etc/init.d/iptablessave

 

你可以根據你的需要進行相應的修改。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 将乐县| 阿克| 吴川市| 积石山| 尼勒克县| 左权县| 嘉善县| 昭觉县| 正阳县| 庆阳市| 清水河县| 新丰县| 泸西县| 靖州| 奇台县| 长武县| 台中市| 班戈县| 津市市| 湖州市| 三台县| 社会| 鄄城县| 洛南县| 连南| 积石山| 柳林县| 南乐县| 自治县| 白河县| 隆安县| 五大连池市| 武隆县| 龙川县| 长沙市| 莱州市| 青铜峡市| 乐山市| 汾西县| 鹰潭市| 平江县|