辛星解讀Linux下iptables的配置

來源:互聯網
上載者:User

辛星解讀Linux下iptables的配置

查看與清除儲存規則:

查看本機iptables設定: iptables -L -n

清除預設表filter中的所有規則連的規則: iptables -F

清除預設表filter中使用者自定鏈中的規則: iptables -X

把當前配置儲存: /etc/rc.d/init.d/iptables save

重啟iptables功能: service iptables restart

設定預設規則:

iptables -p INPUT DROP

iptables -p OUTPUT ACCEPT

iptables -p FORWARD DROP

上面的意思是超出了iptables裡的filter表中的兩個鏈規則(INPUT、FORWARD)時,不在這兩個規則包裡的資料包直接DROP,也就是放棄。這樣的配置還是很安全的,我們要控制流程入資料包。而對於OUTPUT鏈,也就是流出的包,我們不用做太多限制,而是採用ACCEPT,也就是說,不在這個規則裡的包也可以通過。

也就是說INPUT、FORWARD這兩個鏈採用的是允許什麼包通過,而OUTPUT鏈採用的是不允許什麼包通過。當然我們也可以三個鏈都使用DROP,但是這樣要寫的規則就會增加。如果我們只想要有限的幾個規則,比如只作為web伺服器,那麼我們還是推薦這三個鏈都是DROP。

INPUT鏈:

INPUT鏈的預設規則是DROP,我們就需要寫ACCEPT(通過)的鏈:

為了能遠程登入,我們要開啟22連接埠,操作為:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注意,如果我們把OUTPUT設定為DROP的時候要寫上它,如果我們忘了寫它,那麼會出現始終無法ssh的情況)

如果我們做了web伺服器,我們需要開啟80連接埠,操作為:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

當然如果我們的WEB伺服器把OUTPUT也設定為了DROP,那麼還需要加上:

iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

如果我們做了郵件伺服器,通常需要開啟25和110連接埠:

iptables -A INPUT -p tcp --dport 110 -j ACCEPT

iptables -A INPUT -p tcp --dport 25 -j ACCEPT

如果我們做了DNS伺服器,那麼通常開啟53連接埠:

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

允許loopback,不然會導致DNS無法正常關閉等問題:

iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)

iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

OUTPUT鏈:

由於OUTPUT鏈預設規則是ACCEPT,所以我們需要些DORP(放棄)的鏈。

我們可以減少不安全的連接埠串連,比如31337,如下:

iptables -A OUTPUT -p tcp --sport 31337 -j DROP

iptables -A OUTPUT -p tcp --dport 31337 -j DROP

比如我們只允許192.168.0.101的機器進行SSH串連,如下:

iptables -A INPUT -s 192.168.0.101 -p tcp --dport 22 -j ACCEPT

如果要允許或者限制一段IP可以用192.168.0.0/24表示192.168.0.1-255之間的所有IP,這裡的24是子網路遮罩數。

如果我們允許所有IP都可以進行SSH串連,如下:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

儲存配置:

因為對於命令的方式,都是即時生效的,如果想要重啟後也生效,就要寫入到/etc/sysconfig/iptables裡面。

我們可以使用/etc/rc.d/init.d/iptables save來儲存當前配置到設定檔中

FORWARD鏈:

FORWARD鏈的預設規則也是DROP,所以我們就寫需要ACCEPT的鏈,對正在轉寄鏈的監控。

首先我們需要開啟轉寄功能,在做NAT時,FORWARD預設規則是DROP時,必須做:

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

我們丟棄壞的TCP包:

iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

我們處理IP片段數量,防止攻擊,允許每秒100個:

iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

設定ICMP包過濾,允許每秒1個包,限制觸發條件是10個包:

iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.