linuxeth0drop
❶ Linux下DMZ配置
Linux下DMZ構建
保護網路最常見的方法就是使用防火牆。防火牆作為網路的第一道防線,通常放置在外網和需要保護的網路之間。最簡單的情況是直接將防火牆放置在外網和企業網路之間,所有流入企業網路的數據流量都將通過防火牆,使企業的所有客戶機及伺服器都處於防火牆的保護下。這對於一些中小企業來說是簡單易行的,而且這種解決方法在某些情況下也表現不錯。然而這種結構畢竟比較簡單。企業中有許多伺服器、客戶機等資源需要保護,不同的資源對安全強度的要求也不同。不能用對待客戶機的安全級別來對待伺服器,這樣伺服器將會很危險;同樣,也不能用對待伺服器的安全級別來對待客戶機,這樣用戶會感覺很不方便。
針對不同資源提供不同安全級別的保護,可以考慮構建一個叫做「Demilitarized Zone」(DMZ)的區域。DMZ可以理解為一個不同於外網或內網的特殊網路區域。DMZ內通常放置一些不含機密信息的公用伺服器,比如Web、Mail、FTP等。這樣來自外網的訪問者可以訪問DMZ中的服務,但不可能接觸到存放在內網中的公司機密或私人信息等。即使DMZ中伺服器受到破壞,也不會對內網中的機密信息造成影響。
許多防火牆產品都提供了DMZ的介面(一般老的防火牆都只有兩個口,即做不了DMZ,現在的防火牆一般都有三個或四個介面)。硬體防火牆由於使用專門的硬體晶元,所以在性能和流量上有絕對的優勢。軟體防火牆的性價比非常好,一般企業使用起來效果不錯。如果使用Linux防火牆,其成本將更低。這里將介紹的是在Linux防火牆上劃分DMZ區域的方法。
構建DMZ的策略
Linux從2.4內核開始,正式使用iptables來代替以前的ipfwadm和ipchains,實現管理Linux的包過濾功能。Linux的包過濾通過一個叫netfilter的內核部件來實現。netfilter內建了三個表,其中默認表Filter中又包括3個規則鏈,分別是負責外界流入網路介面的數據過濾的INPUT鏈、負責對網路介面輸出的數據進行過濾的OUTPUT鏈,以及負責在網路介面之間轉發數據過濾的FORWARD鏈。要構建一個帶DMZ的防火牆,需要利用對這些鏈的設定完成。首先要對從連接外部網路的網卡(eth0)上流入的數據進行判斷,這是在INPUT鏈上完成。如果數據的目標地址屬於DMZ網段,就要將數據轉發到連接DMZ網路的網卡(eth1)上;如果是內部網路的地址,就要將數據轉發到連接內部網路的網卡(eth2)上。表1顯示了各個網路之間的訪問關系。
表1 網路間訪問關系表
內網 外網 DMZ
內網 / Y Y
外網 N / Y
DMZ N N /
根據表1,可以明確以下六條訪問控制策略。
1.內網可以訪問外網
內網的用戶顯然需要自由地訪問外網。在這一策略中,防火牆需要進行源地址轉換。
2.內網可以訪問DMZ
此策略是為了方便內網用戶使用和管理DMZ中的伺服器。
3.外網不能訪問內網
很顯然,內網中存放的是公司內部數據,這些數據不允許外網的用戶進行訪問。
4.外網可以訪問DMZ
DMZ中的伺服器本身就是要給外界提供服務的,所以外網必須可以訪問DMZ。同時,外網訪問DMZ需要由防火牆完成對外地址到伺服器實際地址的轉換。
5.DMZ不能訪問內網
很明顯,如果違背此策略,則當入侵者攻陷DMZ時,就可以進一步進攻到內網的重要數據。
6.DMZ不能訪問外網
此條策略也有例外,比如DMZ中放置郵件伺服器時,就需要訪問外網,否則將不能正常工作。
DMZ的實現
根據以上訪問控制策略可以設定Linux防火牆的過濾規則。下面將在一個虛構的網路環境中,探討如何根據以上六條訪問控制策略建立相應的防火牆過濾規則。這里的討論和具體應用會有所區別,不過這種討論將有助於實際應用。用戶在實際應用時可根據具體的情況進行設置。該虛擬環境的網路拓撲如圖1。
圖1 DMZ網路拓撲圖
如圖1所示,路由器連接Internet和防火牆。作為防火牆的Linux伺服器使用三塊網卡:網卡eth0與路由器相連,網卡eth1與DMZ區的Hub相連,網卡eth2與內網Hub相連。作為一個抽象的例子,我們用「[內網地址]」來代表「192.168.1.0/24」之類的具體數值。同理還有「[外網地址]」和「[DMZ地址]」。
對於防火牆,原則之一就是默認禁止所有數據通信,然後再打開必要的通信。所以在防火牆腳本的最初,需要清空系統原有的規則,然後將INPUT、OUTPUT、FORWARD的默認規則設置為丟棄所有數據包。
對應的防火牆腳本片段如下:
# Flush out the tables and delete all user-defined chains
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
# Drop every packet
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP
接下來,逐一解釋六種策略的實現。
1.內網可以訪問外網
對應的防火牆腳本片段如下:
/sbin/iptables -t nat -A POSTROUTING -s [內網地址] -d [外網地址] -o eth0 -j SNAT --to [NAT的真實IP]
當數據從連接外網的eth0流出時,要將來自內網的數據包的源地址改成Internet上的真實IP,這樣才能和外網的主機進行通信。「[NAT的真實IP]」表示分配給NAT用戶的真實IP,有幾個就寫幾個,以空格分開,但至少要寫一個。
2.內網可以訪問DMZ
對應的防火牆腳本片段如下:
/sbin/iptables -A FORWARD -s [內網地址] -d [DMZ地址] -i eth2 -j ACCEPT
以上命令允許所有來自內網、目的地為DMZ的數據包通過。
3.外網不能訪問內網
對應的防火牆腳本片段如下:
/sbin/iptables -t nat -A PREROUTING -s [外網地址] -d [內網地址] -i eth0 -j DROP
以上命令將來自外網、去往內網的數據包全部丟棄。
4.外網可以訪問DMZ
為了保護DMZ中的伺服器,外網對DMZ的訪問也要加以限制。通常的思路是,只允許外網訪問DMZ中伺服器所提供的特定服務,比如HTTP。
對應的防火牆腳本片段如下:
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -d [分配給HTTP伺服器的Internet上的真實IP] -s [外網地址] -i eth0 -j DNAT --to [HTTP伺服器的實際IP]
/sbin/iptables -A FORWARD -p tcp -s [外網地址] -d [HTTP伺服器的實際IP] -i eth0 --dport 80 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -d [外網地址] -s [HTTP伺服器的實際IP] -i eth1 --sport 80 ! --syn -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -s [外網地址] -d [DMZ地址] -i eth0 -j DROP
該防火牆腳本片段將開放HTTP服務,使得只有訪問DMZ中HTTP服務的數據包才能通過防火牆。
設置得當,Linux會能成為很好的防火牆。需要補充的是,任何一種防火牆都只能提供有限的保護。設置好防火牆不等於網路就是安全的,很多單位學校防火牆基本上是一個心理安慰的工具,連基本的策略都是全部any,所以關鍵在於綜合運用各種安全手段。
❷ linux 下用ifconfig 查看網卡狀態,發現eth0有RX有drop包,這是否說明內網硬體不正常.或者存在arp攻擊
ifconfig 顯示接收丟包,一般來說是驅動申請不到足夠的內存來存放收到的包
接收丟包統計在數據結構net_device_stats的下面這個欄位中
unsigned long rx_dropped; /* no space in linux buffers */
所以既不是硬體問題(否則根本收不到包),也不是arp攻擊(驅動不管上層協議類型的),有可能是內存不夠,但是不能確定,樓主可以查一下你網卡的驅動程序確認下
❸ linux iptables ftp設置
這些規則很羅嗦,最重要的是概念不清,加了基本等於沒加,該防護的都沒防護到,反而加重系統負擔。
OUTPUT鏈默認就是允許的,如果這個主機是你管理並可控的,你為何不讓本機可以訪問外部所有的地址?非得加那麼多啰嗦的腳本?
一、本機做NAT,讓內部主機訪問外部FTP伺服器的做法
1、清除所有舊有的規則
service iptables stop //RHEL才有的命令
2、載入讓NAT內部主機訪問外部FTP的模塊:
modeprobe ip_nat_ftp
//從RHEL4開始,該模塊會自動在系統載入ip_nat/ip_conntrack/ip_tables/ip_conntrack_ftp/ip_conntrack_irc等多個模塊
3、打開linux的轉發開關
echo "1" /proc/sys/net/ipv4/ip_forward
4、開啟NAT
iptables -t nat -A POSTROUTING -s $INT_NET -j SNAT --to $FW_IP
這樣,內部主機就可以訪問外部的FTP服務了,你不需要知道對方是主動還是被動模式
二、如果本機做FTP被訪問
service iptables stop
modprobe ip_conntrack_irc //如果埠不是21,後面還需要加上埠號。如果是21,這步也可以用modprobe ip_nat_ftp,把其他模塊也載入上。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
當INPUT的默認策略是DROP時,RELATED模塊用途就是為本機的FTP服務打開衍生埠,ESTABLISHED是允許回包。
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT //開放21埠
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT //開放管理埠
iptables -P INPUT DROP //默認策略拒絕
❹ linux運維必須知道的幾個常用命令
Linux是一個命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平這個原理都是無法改變的,Linux命令有許多強大功能:從簡單的磁碟操作、文件存取以及復雜的多媒體圖像和媒體文件都會使用到命令。
Linux常用的命令有哪些?老男孩教育為大家總結一下:
安裝和登錄命令:login 、shutdown 、halt 、reboot 、mount 、umount 、chsh
文件處理命令:file 、mkdir 、grep 、dd 、find 、mv 、ls 、diff 、cat 、ln
網路操作命令:ifconfig 、ip 、ping 、netstat 、telnet 、ftp 、route 、rlogin rcp 、finger
、mail 、nslookup
系統安全相關命令:passwd 、su 、umask 、chgrp 、chmod 、chown 、chattr、sudo、pswho
系統管理相關命令:df 、top 、free 、quota 、at 、lp 、 adser 、groupadd kill 、 crontab 、tar、unzip 、gunzip 、last
❺ 關於linux的iptables和selinux功能說明
iptables 能做到「控制內部機器上網與不上網,訪問哪些網站的控制」
但日誌只能記錄關於訪問ip數據的相關信息
iptables日誌內容:
IN=eht1 OUT=eth0 SRC=10.44.10.200 DST=219.223.222.17 LEN=48 TOS=0x00 PREc=0x00 TTL=127 ID=53825 DF PROTO=TCP SPT=1564 DPT=2142 WINDOW=16384 RES=0x00 SYN UPGR=0
SElinux是提高當前linux伺服器安全性的軟體應該對其他機器無效。
❻ 跪求:linux,iptables命令的使用,謝謝指導!
我就以192.168.1.0/24這個網段和80埠為例子來給你說明吧。
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j DROP
這是拒絕192.168.1.0/24這個網段的人來訪問本機。
如果指定某台主機的話,就把網段地址指定為主機的IP地址就可以了。
iptables -A INPUT -s 192.168.1.0/24 --dport 80 -p tcp -i eth0 -j DROP
句的意思就是,拒絕192.167.1.0/24這個網段的任何主機使用TCP協議從eth0這個網卡來訪問本機的80埠。如果使用具體主機的話,跟上面一樣,把網段地址改為主機IP地址就可以了。
iptables -A INPUT -P DROP
iptables -A FORWORD -P DROP
iptables -A OUTPUT -p DROP
iptables -t nat -A PREROUTING -p DROP
iptables -t nat -A POSTROUTING -p DROP
iptables -t nat -A OUTPUT -p DROP
這樣你就拒絕了所有人對你的機器的訪問了,同樣,你可不能訪問別人了。
但是,你還可以加上你自己的條目來讓訪問別人並讓別人來訪問你。
具體的設置,我推薦你看一下鳥哥的linux相關資料,他的官方網站是:
www.vbird.org
❼ linux 網關設置
/etc/sysconfigure/network 這個是設置網關的
route add default gw這個是用來設置路由表的。可以使用route -n查看
這個的作用是在/etc/resolv.conf裡面的nameserver作用一樣,添加路由表。
❽ 怎樣在 Linux 中限制網路帶寬使用
限制網路流量速率的一種方法是通過一個名為trickle的命令行工具。通過在程序運行時,預先載入一個速率限制 socket 庫 的方法,trickle 命令允許你改變任意一個特定程序的流量。 trickle 命令有一個很好的特性是它僅在用戶空間中運行,這意味著,你不必需要 root 許可權就可以限制一個程序的帶寬使用。要能使用 trickle 程序控製程序的帶寬,這個程序就必須使用非靜態鏈接庫的套接字介面。當你想對一個不具有內置帶寬控制功能的程序進行速率限制時,trickle 可以幫得上忙。
在 Ubuntu,Debian 及其衍生發行版中安裝 trickle :
1
$ sudo apt-get install trickle
在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟體倉庫):
1
$ sudo yum install trickle
trickle 的基本使用方法如下。僅需簡單地把 trickle 命令(及速率參數)放在你想運行的命令之前。
1
$ trickle -d <download-rate> -u <upload-rate> <command>
這就可以將 <command> 的下載和上傳速率限定為特定值(單位 KBytes/s)。
例如,將你的 scp 會話的最大上傳帶寬設定為 100 KB/s:
1
$ trickle -u 100 scp backup.tgz alice@remote_host.com:
如若你想,你可以通過創建一個自定義啟動器的方式,使用下面的命令為你的 Firefox 瀏覽器設定最大下載速率(例如, 300 KB/s)。
1
trickle -d 300 firefox %u
最後, trickle 也可以以守護進程模式運行,在該模式下,它將會限制所有通過 trickle 啟動且正在運行的程序的總帶寬之和。 啟動 trickle 使其作為一個守護進程(例如, trickled):
1
trickle -d 300 firefox %u
一旦 trickled 守護進程在後台運行,你便可以通過 trickle 命令來啟動其他程序。假如你通過 trickle 啟動一個程序,那麼這個程序的最大下載速率將是 1000 KB/s, 假如你再通過 trickle 啟動了另一個程序,則每個程序的(下載)速率極限將會被限制為 500 KB/s,等等。
在 Linux 中限制一個網路介面的速率
另一種控制你的帶寬資源的方式是在每一個介面上限制帶寬。這在你與其他人分享你的網路連接的上行帶寬時尤為實用。同其他一樣,Linux 有一個工具來為你做這件事。wondershaper就是干這個的。
wondershaper 實際上是一個 shell 腳本,它使用 tc 來定義流量調整命令,使用 QoS 來處理特定的網路介面。外發流量通過放在不同優先順序的隊列中,達到限制傳出流量速率的目的;而傳入流量通過丟包的方式來達到速率限制的目的。
事實上, wondershaper 的既定目標不僅僅是對一個介面增加其帶寬上限;當批量下載或上傳正在進行時,wondershaper 還試圖去保持互動性會話如 SSH 的低延遲。同樣的,它還會控制批量上傳(例如, Dropbox 的同步)不會使得下載「窒息」,反之亦然。
在 Ubuntu Debian 及其衍生發行版中安裝 wondershaper:
1
trickle -d 300 firefox %u
在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟體倉庫) 中安裝 wondershaper:
1
trickle -d 300 firefox %u
wondershaper 的基本使用如下:
1
$ sudo wondershaper <interface> <download-rate> <upload-rate>
舉個例子, 將 eth0 的最大下載/上傳帶寬分別設定為 1000Kbit/s 和 500Kbit/s:
1
$ sudo wondershaper <interface> <download-rate> <upload-rate>
你也可以通過運行下面的命令將速率限制進行消除:
1
$ sudo wondershaper <interface> <download-rate> <upload-rate>
假如你對 wondershaper 的運行原理感興趣,你可以閱讀其 shell 腳本源文件(/sbin/wondershaper)。
總結
在本教程中,我介紹了兩種不同的方法,來達到如何在 Linux 桌面環境中,控制每個應用或每個介面的帶寬使用的目的。 這些工具的使用都很簡單,都為用戶提供了一個快速且容易的方式來調整或限制流量。 如果你想更多地了解如何在 Linux 中進行速率控制,請參考 the Linux bible.
❾ linux 防火牆 默認策略是DROP 如何讓我能隨意連接其他人的22埠
iptables -A OUTPUT -o eth0 -d 192.168.100.250 -s 192.168.1.1 -p tcp --sport 22 -j ACCEPT
類似這樣
❿ 如何通過Linux系統下iptables防火牆開啟/關閉指定埠方法
一般情況下iptables已經包含在Linux發行版中.
運行iptables
--version來查看系統是否安裝iptables
啟動iptables
service
iptables
start
iptables
--list
//*查看iptables規則集*//
下面是沒有定義規劃時iptables的樣子:
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
如何開啟/關閉指定埠
例如:
開啟81埠:
iptables
-I
INPUT
-i
eth0
-p
tcp
--dport
81
-j
ACCEPT
iptables
-I
OUTPUT
-o
eth0
-p
tcp
--sport
81
-j
ACCEPT
關閉81埠:
iptables
-I
INPUT
-i
eth0
-p
tcp
--dport
81
-j
DROP
iptables
-I
OUTPUT
-o
eth0
-p
tcp
--sport
81
-j
DROP
然後保存
/etc/rc.d/init.d/iptables
save
你可以使用lsof命令來查看某一埠是否開放.查看埠可以這樣來使用.
我就以81埠為例:
lsof
-i:81
如果有顯示說明已經開放了.如果沒有顯示說明沒有開放