我們知道網(wǎng)上的訪問通過tcp/ip封包來進(jìn)入主機(jī)系統(tǒng)的。在linux中它一般要同過ip過濾機(jī)制來實(shí)現(xiàn)第一層防護(hù),如果通過了這層防護(hù)還的通過下一關(guān)的檢查 那就是TCP_Wrappers 的功能。
封包過濾( IP Filter ):
封包過濾是 linux 提供的第一道防火墻呦!但是不同的核心版本會(huì)有不一樣的封包過濾機(jī)制!以 2.2.xx 為核心的 Linux 主要以 ipchains 作為過濾機(jī)制,至于目前新版的 2.4.xx 則以 iptables 為機(jī)制!OK!既然我們的 Red Hat 7.1, 7.2, 7.3 為 kernel 2.4.xx ,所以用 iptables 來進(jìn)行 IP 抵擋的工作啦!那么由于 TCP 封包里頭有 IP 及 port ,所以要抵擋來源 IP 或者是自身的 port ,自然就很容易來進(jìn)行啦!您目前只要知道 iptables 可以經(jīng)由 TCP 的封包表投資料來進(jìn)行分析的工作例如:和附規(guī)則的就通過,否則就把它丟棄 這樣就防止不符合規(guī)則的人進(jìn)入你的電腦。
至于抵擋封包的工作則可以讓 TCP_Wrappers 來進(jìn)行
要常常去看 /var/log/messages 與 /var/log/secure 這兩個(gè)個(gè)檔案!都是登陸登錄記錄等。
要做好主機(jī)的防護(hù),第一步就是要建立完善的密碼規(guī)則啦!因?yàn)檫@個(gè)咚咚常常是 cracker 嘗試入侵的第一步!你必須要建立好主機(jī)的密碼規(guī)則,可以嘗試以 chattr 來將 /etc/passwd 及 /etc/shadow 做成不可變更的檔案!較為安全啦!
做好安全的幾個(gè)常見的工作
1.升級(jí)與修補(bǔ)套件漏洞、及移除危險(xiǎn)套件:
2.每項(xiàng)系統(tǒng)服務(wù)的安全設(shè)定項(xiàng)目
3
.TCP_Wrappers 的基礎(chǔ)防火設(shè)定4
.iptables 的防火規(guī)則設(shè)定5.主機(jī)資源偵測(cè)系統(tǒng)( MRTG )
6.登錄檔案分析系統(tǒng):
iptables:
iptables 是 linux Kernel 2.4.xx 版本以上的主要 IP 過濾機(jī)制!他最大的功能就是可以過濾掉不要的 TCP 封包啦!當(dāng)然功能還不止于此,他還可以用來進(jìn)行 IP 偽裝,以達(dá)成 NAT 的主機(jī)功能呢! iptables 的工作方向,必須要依規(guī)則的順序來分析,底下我們簡(jiǎn)單的談一談 iptables 的幾個(gè)概念吧:
有幾個(gè) tables :
跟之前版本的 ipchains 不同的地方是, iptables 可以自行定義一些 tables 的新規(guī)定!將可以讓防火墻規(guī)則變的更為便于管理呢!基本上,原本的 iptable 至少有兩個(gè) table ,一個(gè)是 filter ( 預(yù)設(shè)的,沒有填寫 tables 時(shí),就是 filter 這個(gè) table 啦 ),一個(gè)則是相當(dāng)重要的 nat table 。其中, filter 可以用來管理主機(jī)的安全,至于 nat 則是用來處理 NAT 的功能啦!
清除規(guī)則:
iptables 的訂定方法其實(shí)很簡(jiǎn)單,就是使用指令列的方式來訂定而已,他的基礎(chǔ)語法在清除規(guī)則時(shí),是這樣的:
[root @test /root]# /sbin/iptables [-FXZ]
參數(shù)說明:
-F :清除所有的已訂定的規(guī)則;
-X :殺掉所有使用者建立的 chain (應(yīng)該說的是 tables )啰;
-Z :將所有的 chain 的計(jì)數(shù)與流量統(tǒng)計(jì)都?xì)w零
范例:
[root @test /root]# /sbin/iptables -F
[root @test /root]# /sbin/iptables -X
[root @test /root]# /sbin/iptables -Z
請(qǐng)注意,如果在遠(yuǎn)程聯(lián)機(jī)的時(shí)候,『這三個(gè)指令必須要用 scripts 來連續(xù)執(zhí)行』,不然肯定『會(huì)讓你自己被主機(jī)擋在門外!』
定義政策( Policy ):
清除規(guī)則之后,再接下來就是要設(shè)定規(guī)則的政策啦!這個(gè)所謂的政策指的是『當(dāng)你的封包不在你的規(guī)則之內(nèi)時(shí),則該封包的通過與否,以 Policy 的設(shè)定為準(zhǔn)』,例如:你設(shè)定了十條規(guī)則,但有一個(gè)封包來的時(shí)候,這十條規(guī)則都不適用,這個(gè)時(shí)候此一封包就會(huì)依據(jù) Policy 的規(guī)定為準(zhǔn),來決定是否可以通過防火墻啰。通常這個(gè)政策在 INPUT 方面可以定義的比較嚴(yán)格一點(diǎn),而 FORWARD 與 OUTPUT 則可以訂定的松一些!
[root @test /root]# /sbin/iptables [-t tables] [-P] [INPUT,OUTPUT,FORWARD| PREROUTING,OUTPUT,POSTROUTING] [ACCEPT,DROP]
參數(shù)說明:
-t :定義 table !
tables :table 的名稱,例如 nat 啰!
-P :定義政策( Policy )。
INPUT :封包為輸入主機(jī)的方向;
OUTPUT :封包為輸出主機(jī)的方向;
FORWARD:封包為不進(jìn)入主機(jī)而向外再傳輸出去的方向;
PREROUTING :在進(jìn)入路由之前進(jìn)行的工作;
OUTPUT :封包為輸出主機(jī)的方向;
POSTROUTING:在進(jìn)入路由之后進(jìn)行的工作。
范例:
[root @test /root]# /sbin/iptables -P INPUT ACCEPT
[root @test /root]# /sbin/iptables -P OUTPUT ACCEPT
[root @test /root]# /sbin/iptables -P FORWARD ACCEPT
[root @test /root]# /sbin/iptables -t nat -P PREROUTING ACCEPT
[root @test /root]# /sbin/iptables -t nat -P OUTPUT ACCEPT
[root @test /root]# /sbin/iptables -t nat -P POSTROUTING ACCEPT
將預(yù)設(shè)的政策都定義為接受啰!
增加、插入規(guī)則:
接下來則要定義規(guī)則啦!我們底下先完全以主機(jī)的角度來觀察!可以這樣來設(shè)定啦!
[root @test /root]# /sbin/iptables [-AI] [INPUT,OUTPUT,FORWARD] [-io interface] [-p TCP,UDP] [-s IP/network] [--sport ports] [-d IP/network] [--dport ports] -j [ACCEPT,DROP]
參數(shù)說明:
-A :新增加一條規(guī)則,該規(guī)則增加在最后面一行;
-I :在第一條規(guī)則加入;
INPUT :封包為輸入主機(jī)的方向;
OUTPUT :封包為輸出主機(jī)的方向;
FORWARD:封包為不進(jìn)入主機(jī)而向外再傳輸出去的方向;
-i :流入的網(wǎng)卡接口
-o :流出的網(wǎng)卡接口
interface :網(wǎng)絡(luò)卡接口,例如 ppp0, eth0, eth1....
-p :請(qǐng)注意,這是小寫呦!封包的協(xié)議啦!
TCP :封包為 TCP 協(xié)議的封包;
UDP :封包為 UDP 協(xié)議的封包;
-s :來源封包的 IP 或者是 Network ( 網(wǎng)域 );
--sport:來源封包的 port 號(hào)碼;
-d :目標(biāo)主機(jī)的 IP 或者是 Network ( 網(wǎng)域 );
--dport:目標(biāo)主機(jī)的 port 號(hào)碼;
-j :動(dòng)作,可以接底下的動(dòng)作;
ACCEPT :接受該封包
DROP :丟棄封包
范例:
[root @test /root]# /sbin/iptables -A INPUT -i lo -j ACCEPT
所有的來自 lo 這個(gè)接口的封包,都予以接受
[root @test /root]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.0.1 -j ACCEPT
來自 192.168.0.1 這個(gè) IP 的封包都予以接受
[root @test /root]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.1.0/24 -j ACCEPT
來自 192.168.1.0 這個(gè) C Class 的網(wǎng)域的任何一部計(jì)算機(jī),就予以接受!
[root @test /root]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.1.25 -j DROP
來自 192.168.1.25 的 IP 的封包,就直接全部給他丟棄!
[root @test /root]# /sbin/iptables -A INPUT -i eth0 -p TCP --dport 21 -j DROP
只要想要進(jìn)來 21 這個(gè) port 的封包,就把他丟棄!
[root @test /root]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.0.24 --dport 22 -j ACCEPT
來自 192.168.0.24 的主機(jī),想要到我的 port 22 時(shí),就予以接受!
請(qǐng)注意:防火墻的規(guī)則是『一行一行依序來檢查的,若符合任何一條規(guī)則,則予以動(dòng)作(接受或丟棄),否則繼續(xù)往下檢查到最后一條』上
TCP_Wrappers:
這個(gè) TCP_Wrappers 實(shí)在是很簡(jiǎn)單的一個(gè)設(shè)定工作,因?yàn)樗灰O(shè)定 /etc/hosts.allow 及 /etc/hosts.deny 就可以啦!基本上,他是經(jīng)由 /usr/sbin/tcpd 這個(gè)程序來進(jìn)行 TCP 的檢驗(yàn)工作!而檢驗(yàn)的方式則是以 /etc/hosts.allow 及 /etc/hosts.deny 來設(shè)定的啦!檢驗(yàn)的流程是先以 /etc/hosts.allow 這個(gè)檔案,檢驗(yàn)完之后,在到 /etc/hosts.deny 去搜尋!好了,那么 hosts.allow 要怎樣設(shè)定呢?
<服務(wù)名稱> : <IP/network> : <action>
特別注意, network 可以使用 192.168.0.0/255.255.255.0 ,但不可使用 192.168.0.0/24 !
[root @test /root]# vi /etc/hosts.allow
in.telnetd: 127.0.0.1 : allow
in.ftpd: 127.0.0.1 : allow
本機(jī)的 127.0.0.1 開放 telnet 及 ftp 哩!
[root @test /root]# vi /etc/hosts.deny
in.telnetd: 192.168.2.3 : deny 將 192.168.2.3 的 telnet 服務(wù)關(guān)掉!
本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/goldce/articles/426600.aspx