主頁(yè) > 知識(shí)庫(kù) > 在Ubuntu Server是配置iptables防火墻

在Ubuntu Server是配置iptables防火墻

熱門標(biāo)簽:河北點(diǎn)撥外呼系統(tǒng)哪家公司做的好 福州營(yíng)銷電銷機(jī)器人招商 文德數(shù)慧科技有限公司 智能外呼系統(tǒng)的選購(gòu) 地圖標(biāo)注不在現(xiàn)場(chǎng)怎么上傳門頭標(biāo) 地圖標(biāo)注員騙局 400電話申請(qǐng)商客通 企業(yè)電話機(jī)器人靠譜嗎 各種地圖標(biāo)注
關(guān)于iptables有價(jià)值的信息很多,但是大多都描述的很復(fù)雜。如果你想做些基本的配置,下面的 How To 很適合你。
◆ 基本命令
鍵入:

# iptables -L

列出您當(dāng)前iptables中在規(guī)則。如果您是剛剛建立您的服務(wù)器,那么可能此時(shí)還沒(méi)有任何規(guī)則,而且您應(yīng)該看到如下:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

◆ 允許建立會(huì)話

我們可以允許建立會(huì)話來(lái)接受流量:

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

◆ 在指定端口上允許入站流量

阻斷所有流量您也可以啟動(dòng)系統(tǒng),但是您可能正在通過(guò)SSH工作,所有在您阻斷其他流量前有必要允許SSH流量。

為了在22端口號(hào)(默認(rèn)的SSH端口)上的允許流量入站,您可以告訴iptables允許您的網(wǎng)卡接受所有的目的端口為22的TCP流量。

# iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT

特別的,這將向表中追加(-A)INPUT規(guī)則,允許目的端口號(hào)為SSH的所有流量進(jìn)入接口(-i) eth0,以便iptables完成跳轉(zhuǎn)(-j)或動(dòng)作:ACCEPT

讓我們核對(duì)下這些規(guī)則:(這里僅顯示了少數(shù)行,您應(yīng)該看到更多)

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh

現(xiàn)在,讓我們?cè)试S所有的web流量

# iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT

檢查我們現(xiàn)有的規(guī)則

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www

我們已經(jīng)指定SSH和web端口為允許通過(guò)的TCP流量,但是因?yàn)槲覀冞€沒(méi)阻斷任何流量,所以到目前為止所有的流量仍然可以進(jìn)入。

◆ 阻斷流量

一旦一條規(guī)則對(duì)一個(gè)包進(jìn)行了匹配,其他規(guī)則不再對(duì)這個(gè)包有效。因?yàn)槲覀兊囊?guī)則首先允許SSH和WEB流量,所以只要我們阻斷所有流量的規(guī)則緊跟其後,我們依然能接受我們感興趣的流量。我們要做的僅僅是把阻斷所有流量的規(guī)則放在最後,所以我們需要再次用到它。

# iptables -A INPUT -j DROP
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
DROP all -- anywhere anywhere

因?yàn)槲覀儎偛艣](méi)有指定一個(gè)接口或一個(gè)協(xié)議,所以除了web和ssh流量外其他任何流量都會(huì)被阻斷。

◆ 編輯 iptables

到目前為止我們?cè)O(shè)置過(guò)程中唯一的問(wèn)題是回環(huán)端口(loopbakc)也被阻斷了。我們本可以通過(guò)指定 -i eth0 來(lái)僅僅丟棄eth0上的數(shù)據(jù)包,但我們也可以為回環(huán)端口(loopback)添加一條規(guī)則。如果我們追加這條規(guī)則,這將太晚了----因?yàn)樗械牧髁恳呀?jīng) 被丟棄。我們必須插入這條跪著到第4行。

# iptables -I INPUT 4 -i lo -j ACCEPT
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere

最後2行看起來(lái)幾乎一樣,因此我們可以讓iptables列的更詳細(xì)些。

# iptables -L -v

◆ 日志記錄

在上面的例子中,所有的流量都不會(huì)被記錄。如果您愿意在syslog中記錄被丟棄的包, 下面將是最快捷的方式:

# iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

看 提示 段獲得更多關(guān)于logging的ideas.

◆ 保存 iptables

如果您現(xiàn)在要重新啟動(dòng)機(jī)器的話,您的iptables配置將會(huì)消失。為了不用每次重新啟動(dòng)時(shí)敲入這些命令,您可以保存你的配置,讓它在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)。你可以通過(guò)iptables-save 和iptables-restore命令來(lái)保存配置。


◆ 配置啟動(dòng)時(shí)自動(dòng)加載規(guī)則

保存您的防火墻股則到一個(gè)文件

# iptables-save > /etc/iptables.up.rules

接著修改 /etc/network/interfaces 腳本自動(dòng)應(yīng)用這些規(guī)則(末行是添加的)

auto eth0
iface eth0 inet dhcp
pre-up iptables-restore /etc/iptables.up.rules

你也可以準(zhǔn)備一組規(guī)則冰并自動(dòng)應(yīng)用它

auto eth0
iface eth0 inet dhcp
pre-up iptables-restore /etc/iptables.up.rules
post-down iptables-restore /etc/iptables.down.rules

◆ 提示
◆ 如果你要在一個(gè)規(guī)則基礎(chǔ)上手動(dòng)編輯iptables

下面的步驟復(fù)習(xí)了怎樣建立你的防火墻規(guī)則,并假定它們相對(duì)固定(而且對(duì)于大多數(shù)人來(lái)說(shuō)它們也應(yīng)該是)。但是如果你要做許多研究工作,你也許想要你的 iptables在你每次重啟時(shí)保存一次。你可以在 /etc/network/interfaces 里添加像下面的一行:

pre-up iptables-restore /etc/iptables.up.rules
post-down iptables-save > /etc/iptables.up.rules

"post-down iptables-save > /etc/iptables.up.rules" 此行將保存規(guī)則用于下次啟動(dòng)時(shí)使用。
◆ 用iptables-save/restore來(lái)測(cè)試規(guī)則

如果你超出了這個(gè)指南來(lái)編輯iptables,你可能想利用iptables-save和iptables-restore來(lái)編輯和測(cè)試你的規(guī)則。你可以通過(guò)使用你喜愛(ài)的文本編輯器(此處為gedit)來(lái)打開這些規(guī)則文件來(lái)完成編輯。

# iptables-save > /etc/iptables.test.rules
# gedit /etc/iptables.test.rules

你會(huì)得到一個(gè)如下類似的文件(下面是緊接上的例子文件):

# Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006
*filter
:INPUT ACCEPT [368:102354]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92952:20764374]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# Completed on Sun Apr 23 06:19:53 2006

注意到這些都是減去iptables命令的iptables語(yǔ)句。隨意編輯這些命令、完成後保存它們。然後簡(jiǎn)單的測(cè)試下:

# iptables-restore /etc/iptables.test.rules

測(cè)試完畢後,如果你還沒(méi)添加iptables-save命令 到 /etc/network/interfaces 里面,記得不要丟失了你的更改:

# iptables-save > /etc/iptables.up.rules

◆ 更詳細(xì)的日志
為了在你的syslog中獲得更多細(xì)節(jié),你可能想創(chuàng)建一個(gè)額外的鏈。下面是個(gè)很簡(jiǎn)短的例子---我的 /etc/iptables.up.rules ,它將展示我是如何設(shè)置iptables記錄到syslog中的:

# Generated by iptables-save v1.3.1 on Sun Apr 23 05:32:09 2006
*filter
:INPUT ACCEPT [273:55355]
:FORWARD ACCEPT [0:0]
:LOGNDROP - [0:0]
:OUTPUT ACCEPT [92376:20668252]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j LOGNDROP
-A LOGNDROP -p tcp -m limit --limit 5/min -j LOG --log-prefix "Denied TCP: " --log-level 7
-A LOGNDROP -p udp -m limit --limit 5/min -j LOG --log-prefix "Denied UDP: " --log-level 7
-A LOGNDROP -p icmp -m limit --limit 5/min -j LOG --log-prefix "Denied ICMP: " --log-level 7
-A LOGNDROP -j DROP
COMMIT
# Completed on Sun Apr 23 05:32:09 2006

請(qǐng)注意 一個(gè)名為 LOGNDROP的鏈在文件頂部。而且,INPUT鏈底部標(biāo)準(zhǔn)的DROP被替換成了LOGNDROP,同時(shí)添加了協(xié)議描述so it makes sense looking at the log。最後我們?cè)贚OGNDROP鏈尾部丟棄了這些流量。下面的行告訴我們發(fā)生了什么:

* --limit 設(shè)置記錄相同規(guī)則到syslog中的次數(shù)
* --log-prefix "Denied..." 添加一個(gè)前綴使得在syslog中查找更easy
* --log-level 7 設(shè)置syslog的消息級(jí)別 (see man syslog for more detail, but you can probably leave this)

◆ 禁用防火墻

如果您要臨時(shí)禁用防火墻,您可以通過(guò)下面的命令清空所偶的規(guī)則:

# iptables -F

◆ 輕松配置通過(guò) GUI

新手可以利用 Firetarter(一個(gè)gui工具)---倉(cāng)庫(kù)中的可用軟件(新立德或apt-get 獲得)來(lái)配置她或他的iptables規(guī)則,而需要命令行知識(shí)。請(qǐng)查看指南,盡管...... 配置很簡(jiǎn)單,但是對(duì)于高級(jí)用戶來(lái)說(shuō)可能遠(yuǎn)遠(yuǎn)不能滿足。然而它對(duì)于大多數(shù)的家庭用戶來(lái)說(shuō)是足夠的...... 。(我)建議您使用firestarter在策略表中將出站配置為 “限制”,而將您需要的連接類型(如用于http的80、https的443,msn chat的1683等等)加入白名單。您也可以通過(guò)它查看進(jìn)出您計(jì)算機(jī)的活動(dòng)連接...... 。防火墻會(huì)一直保持下去一旦通過(guò)向?qū)渲猛戤?。撥?hào)用戶必須在向?qū)е兄付ㄋ趽芴?hào)時(shí)自動(dòng)啟動(dòng)。

firestarter主頁(yè): http://www.fs-security.com/ (再次, 倉(cāng)庫(kù)源中可用, 不需要編譯) 指南: http://www.fs-security.com/docs/tutorial.php

個(gè)人筆記:不幸運(yùn)的是,它沒(méi)有阻斷(或詢問(wèn)用戶)特定應(yīng)用/程序的選項(xiàng)......。因此,我的理解是一旦啟用了80端口(例如,用于訪問(wèn)網(wǎng)頁(yè)),那么任何程序都可以通過(guò)80端口連接任何服務(wù)器、做任何它想做的事......

標(biāo)簽:南陽(yáng) 曲靖 潛江 雞西 鎮(zhèn)江 長(zhǎng)沙 新余 鎮(zhèn)江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在Ubuntu Server是配置iptables防火墻》,本文關(guān)鍵詞  在,Ubuntu,Server,是,配置,iptables,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在Ubuntu Server是配置iptables防火墻》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于在Ubuntu Server是配置iptables防火墻的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章