自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iptables入門:郵件服務(wù)器簡單防護(hù)

原創(chuàng)
運(yùn)維 系統(tǒng)運(yùn)維
如果你剛剛學(xué)習(xí)了iptables的原理和基本語法,但還不清楚在線上服務(wù)器環(huán)境中如何實(shí)際的利用這個工具,那么建議閱讀本文。iptables一般有兩種工作模式,一種用作NAT路由器,一種作為主機(jī)防火墻。本文我們會介紹一個簡單的郵件服務(wù)器主機(jī)防護(hù)腳本。

本文針對iptables初學(xué)者。如果你剛剛學(xué)習(xí)了iptables的原理和基本語法,但還不清楚在線上服務(wù)器環(huán)境中如何實(shí)際的利用這個工具,那么建議閱讀本文。

iptables的兩種主要工作模式

對于iptables的數(shù)據(jù)包而言,有以下幾個流向:

PREROUTING→FORWARD→POSTROUTING

PREROUTING→INPUT→本機(jī)→OUTPUT→POSTROUTING

大家可以留意下,數(shù)據(jù)包的主要兩種流向(其實(shí)也是我們后面iptables的兩種工作模式):一是做為NAT路由器,另一種是做為主機(jī)防火墻。

iptables數(shù)據(jù)流入和流出詳細(xì)流程建議參考下圖:

圖  iptables數(shù)據(jù)包流入和流出詳細(xì)流程圖

圖  iptables數(shù)據(jù)包流入和流出詳細(xì)流程圖

iptables根據(jù)不同的數(shù)據(jù)包處理功能使用不同的規(guī)則表。它包括如下三個表:filter、nat和mangle。

  • filter是默認(rèn)的表,它包含真正的防火墻過濾規(guī)則。內(nèi)建的規(guī)則鏈包括:INPUT、OUTPUT和FORWARD。
  • nat表包含源和目的地址及端口轉(zhuǎn)換使用的規(guī)則,內(nèi)建的規(guī)則鏈包括PREROUTING、OUTPUT和POSTROUTING。
  • mangle表包含用于設(shè)置特殊的數(shù)據(jù)包路由標(biāo)志的規(guī)則,這些標(biāo)志隨后被filter表中的規(guī)則檢查。內(nèi)建的規(guī)則鏈包括:PREROUTING、INPUT、FORWARD、POSTROUTING和OUTPUT。

表對應(yīng)的相關(guān)規(guī)則鏈的功能如下:

  • INPUT鏈:當(dāng)一個數(shù)據(jù)包由內(nèi)核中的路由計算確定為本地的Linux系統(tǒng)后,它會通過INPUT鏈的檢查。             
  • OUTPUT鏈:保留給系統(tǒng)自身生成的數(shù)據(jù)包。
  • FORWARD鏈:經(jīng)過Linux系統(tǒng)路由的數(shù)據(jù)包(即當(dāng)iptables防火墻用于連接兩個網(wǎng)絡(luò)時,兩個網(wǎng)絡(luò)之間的數(shù)據(jù)包必須流經(jīng)該防火墻)。
  • PREROUTING鏈:用于修改目的地地址(DNAT)。
  • POSTROUTING鏈:用于修改源地址(SNAT)。

iptables詳細(xì)語法如下所示:

iptables [-t表名] <-A| I |D |R > 鏈名[規(guī)則編號] [-i | o 網(wǎng)卡名稱] [-p 協(xié)議類型] [-s 源IP地址 | 源子網(wǎng)][--sport 源端口號] [-d 目標(biāo)IP地址 | 目標(biāo)子網(wǎng)][--dport 目標(biāo)端口號] <-j 動作> 

注:此語法規(guī)則詳細(xì),邏輯清晰,推薦以此公式記憶。我們在剛開始寫iptables規(guī)則時就應(yīng)該養(yǎng)成好習(xí)慣,用公式來規(guī)范腳本,這對于我們的以后工作大有幫助。

這一節(jié)我們通過編寫一個簡單的用于郵件主機(jī)防護(hù)iptables腳本來熟悉iptables語法規(guī)則。網(wǎng)絡(luò)拓樸很簡單,iptables本身機(jī)器IP為:192.168.1.101/24,另一臺機(jī)器的IP為:192.168.1.102。

普通的郵件主機(jī)防護(hù)腳本

普通的郵件主機(jī)防護(hù)腳本比較容易實(shí)現(xiàn)。郵件主機(jī)主要開放二個端口:80和25,其他端口則關(guān)閉,另外由于這里沒有涉及多少功能,所以模塊的載入也很簡單,只涉及Filter表,而且腳本的初始化也很簡單。

我們可以按照編寫iptables的流程順序來寫腳本,腳本內(nèi)容如下:

(注:此服務(wù)器置于自己的機(jī)房內(nèi),所以沒有開放22端口,調(diào)試時直接進(jìn)機(jī)房調(diào)試。如果遠(yuǎn)程操作,需要打開22端口。)

#/bin/bash
iptables -F
iptables -X
iptables -Z
 
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
 
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
 
iptables -A INPUT -i lo -j ACCEPT 
iptables -A OUTPUT -o lo -j ACCEPT 
 
iptables -A INPUT -p tcp -m multiport --dports 25,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

說明一下:

前面三條可以將iptables初始化。

modprobe這段是手動加載模塊的過程。一般如果用 service iptables start 來啟動iptables,會加載很多不必要的模塊,所以這里我們采用手動加載的方式。ip_conntrack模塊在平時的測試學(xué)習(xí)環(huán)境可以開啟,方便追蹤數(shù)據(jù)包的流向。不過,生產(chǎn)環(huán)境下我不建議大家開啟此模塊,以免加重服務(wù)器的負(fù)載。

默認(rèn)規(guī)則下方的兩條用于開啟系統(tǒng)回環(huán)端口,以免造成不必要的麻煩。具體是什么樣的麻煩?大家可以先想一想,文末會給出解答。

最后一條是允許RELATED和ESTABLISHED狀態(tài)的連接通過iptables。為什么要這樣設(shè)置,也會在文末解答。

iptables腳本開啟后,我們可以用命令查看一下結(jié)果,如下所示:

iptables -nv -L

此命令顯示結(jié)果如下:

Chain INPUT (policy DROP 13539 packets, 763K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
  480 32744 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 25,80 
   13  1411 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
 
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 
Chain OUTPUT (policy ACCEPT 472 packets, 52779 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0   

這時80和25之外的端口就被iptables成功隱蔽了。比如我們嘗試在另一臺機(jī)器上nmap掃描這臺服務(wù)器:

nmap -sT 192.168.1.101

此命令顯示結(jié)果如下:

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2011-05-25 00:46 CST
Interesting ports on 192.168.1.101:
Not shown: 1678 filtered ports
PORT   STATE SERVICE
25/tcp open  ssh
80/tcp open  http
MAC Address: 00:E0:62:12:7B:65 (Host Engineering)
 
Nmap finished: 1 IP address (1 host up) scanned in 37.721 seconds

看到這個結(jié)果說明iptables生效了。

另外,對剛剛學(xué)習(xí)iptables的朋友提供一個建議。一開始玩iptables很容易犯的一個錯誤就是把自己鎖在服務(wù)器外面了。針對這種情況,我們可以編寫一個crontab計劃任務(wù),每5分鐘關(guān)閉一次防火墻,等完全調(diào)試完后再關(guān)閉此crontab任務(wù):

vim /etc/crontab
*/5 * * * * /etc/init.d/iptables stop

以上只是初級的防護(hù)腳本。至于其它的SYN和Ping及其它攻擊,等大家熟悉了解其原理后,可以在此腳本的基礎(chǔ)上添加。

以下是上文中兩個問題的解答:

一、為什么要打開系統(tǒng)回環(huán)接口?

Linux系統(tǒng)默認(rèn)會有一塊名為lo的環(huán)回網(wǎng)絡(luò)接口,而真正的網(wǎng)卡一般則被Linux系統(tǒng)識別成名為eth0, eth1這樣的網(wǎng)絡(luò)接口。

一般,lo接口對應(yīng)的ip地址為127.0.0.1。

當(dāng)你從一臺linux主機(jī)向自身發(fā)送數(shù)據(jù)包時,實(shí)際上的數(shù)據(jù)包是通過虛擬的lo接口來發(fā)送接受的,而不會通過你的物理網(wǎng)卡eth0/eth1。

如果lo接口被墻,會發(fā)生ping/telnet/ssh本機(jī)(本機(jī)域名、localhost和127.0.0.1)不通的情況,會給調(diào)試帶來一些麻煩。

二、為什么要設(shè)置RELATED、ESTABLISHED狀態(tài)檢測?

相對于純IP過濾,狀態(tài)防火墻更加智能,效率更高。這個比較適合FTP服務(wù)器。有關(guān)iptables的狀態(tài)機(jī)制,可參閱這篇文章:http://os.51cto.com/art/201108/285209.htm

【編輯推薦】

  1. 深入淺出Netfilter/iptables防火墻框架(基礎(chǔ)篇)
  2. 深入淺出Netfilter/iptables防火墻框架(入門篇)
  3. iptables實(shí)戰(zhàn)系列:公共網(wǎng)絡(luò)服務(wù)防火墻
責(zé)任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2015-08-04 10:16:13

U-Mail郵件系統(tǒng)

2012-02-23 23:46:26

2009-09-01 11:18:26

郵件服務(wù)器

2009-09-02 14:23:19

郵件服務(wù)器性

2009-09-02 14:43:26

郵件服務(wù)器

2009-09-02 14:01:50

郵件服務(wù)器

2014-09-29 16:52:00

2009-09-02 14:27:29

郵件服務(wù)器

2009-09-02 14:34:42

郵件服務(wù)器

2015-08-25 15:34:51

2010-06-02 16:48:49

postfix郵件服務(wù)

2011-02-21 14:12:15

Postfix服務(wù)器安裝

2009-09-02 17:25:02

郵件服務(wù)器

2009-09-08 13:48:13

NFS服務(wù)器

2009-09-17 16:06:18

2011-07-08 14:24:49

郵件服務(wù)器U-Mail

2011-01-20 10:08:25

postfix安裝

2011-03-22 09:07:13

Nagios監(jiān)控Linux

2014-05-08 10:51:43

郵件服務(wù)器軟件海外郵件

2010-12-21 18:18:52

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號