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