linux日常管理(三)--iptables概念、語(yǔ)法

10.11 Linux網(wǎng)絡(luò)相關(guān)
10.12 firewalld和netfilter
10.13 netfilter5表5鏈介紹
10.14 iptables語(yǔ)法
擴(kuò)展(selinux了解即可)
1.selinux教程 http://os.51cto.com/art/201209/355490.htm
2.selinux pdf電子書(shū) http://pan.baidu.com/s/1jGGdExK
3.netfilter參考文章 http://www.cnblogs.com/metoy/p/4320813.html

網(wǎng)絡(luò)相關(guān)

ifconfig是比較老的工具了,用來(lái)查看網(wǎng)卡ip。它在net-tools包中:yum install net-toolsifconfig只顯示當(dāng)前工作的網(wǎng)卡,選項(xiàng)-a可以顯示所有的,包括關(guān)掉的網(wǎng)卡。

ifup ens33 、ifdown ens33 這倆命令很好理解,分別是開(kāi)啟ens33網(wǎng)卡和關(guān)閉網(wǎng)卡。主要用在更改指定網(wǎng)卡后單獨(dú)重啟網(wǎng)卡。注意down后不要把自己坑了:如果只有著一個(gè)能連接的網(wǎng)卡請(qǐng)小心操作。

設(shè)定虛擬網(wǎng)卡的思路是拷貝一個(gè)ens33:1配置文件,然后修改避免與原網(wǎng)卡配置沖突,最后重啟網(wǎng)卡即可。設(shè)定虛擬網(wǎng)卡在keeplived會(huì)用到。

mii-tool ens33 查看網(wǎng)卡是否物理連接,如果反饋“l(fā)ink ok”表示連接正常。也可以用另外一個(gè)工具:ethtool ens33,反饋“l(fā)ink detected:ok”表示連接正常。

更改主機(jī)名:hostnamectl set-hostname xxx,xxx是新的主機(jī)名。這個(gè)命令在centos6上不支持,主要是centos7開(kāi)始使用systemd工具。兩個(gè)系統(tǒng)都可以手動(dòng)修改etc/hostname來(lái)更改主機(jī)名。

DNS是用來(lái)解析網(wǎng)址為ip的服務(wù),具體概念不難,可以搜索關(guān)鍵字了解相關(guān)知識(shí)。在這里說(shuō)以下自己關(guān)于網(wǎng)址、ip服務(wù)的理解:操作系統(tǒng)本地有host文件(和hostname無(wú)關(guān),這是兩個(gè)概念)、DNS文件,當(dāng)我們要訪問(wèn)一個(gè)網(wǎng)址,操作系統(tǒng)首先在hosts文件中查找是否有對(duì)應(yīng)網(wǎng)址ip的匹配,如果沒(méi)有就去DNS文件中找。DNS文件里有本地記錄的,也有網(wǎng)絡(luò)服務(wù)商提供的服務(wù)器(遠(yuǎn)程記錄),操作系統(tǒng)本地查找無(wú)果就去服務(wù)器中找。以上就是DNS的優(yōu)先級(jí)。

linux上DNS配置文件是/etc/resolv.conf。這個(gè)文件是有netmanagerment生成的。我們直接在etc/sysconfig/network-scripts/ifcfg-ens33修改。上面說(shuō)/etc/hosts文件只在當(dāng)下有用,系統(tǒng)重啟后hosts文件會(huì)重置。

防火墻

linux里有豐富的安全配制。selinux是紅帽強(qiáng)大的安全機(jī)制,但是大多數(shù)公司都會(huì)關(guān)掉這個(gè)功能。因?yàn)槠渑渲帽容^復(fù)雜,對(duì)后續(xù)服務(wù)影響較多,工作量較大。selinux臨時(shí)關(guān)閉命令:setenforce 0。selinux永久關(guān)閉:vi /etc/selinux/config然后修改selinux一行。getenforce可以查看selinux運(yùn)行狀態(tài)。

關(guān)于防火墻,centos7之前使用netfilter防火墻,centos7開(kāi)始使用firewalld防火墻。兩個(gè)工具機(jī)制不一樣,但是內(nèi)部的使用的iptables都一樣?,F(xiàn)在centos6使用率還是挺多的。所以下面先介紹netfilter。

在centos7,首先要關(guān)閉firewalld,然后開(kāi)啟netfilter:

systemctl stop firewalld #關(guān)掉firewalld
systemctl disable firewalled #關(guān)閉firewalld開(kāi)機(jī)啟動(dòng)
yum install -y iptables-services #安裝iptables-services,這樣就可以使用之前版本的iptables了
systemctl enable iptables #設(shè)置開(kāi)機(jī)啟動(dòng)
systemctl start iptables #啟動(dòng)服務(wù)

netfilter五個(gè)表

netfilter有5個(gè)表,實(shí)現(xiàn)防火墻規(guī)則配置。則五個(gè)表常用的是filter、nat兩個(gè)表:

  • filter表用于過(guò)濾包,最常用的表,有INPUT、FORWARD、OUTPUT三個(gè)鏈
  • nat表用于網(wǎng)絡(luò)地址轉(zhuǎn)換,有PREROUTING、OUTPUT、POSTROUTING三個(gè)鏈
  • managle表用于給數(shù)據(jù)包做標(biāo)記,幾乎用不到
  • raw表可以實(shí)現(xiàn)不追蹤某些數(shù)據(jù)包,幾乎用不到
  • security表在centos6中并沒(méi)有,用于強(qiáng)制訪問(wèn)控制(MAC)的網(wǎng)絡(luò)規(guī)則,幾乎用不到

配置防火墻的工作就是添加、修改和刪除一些網(wǎng)絡(luò)包處理規(guī)則。這些規(guī)則存儲(chǔ)在上面五個(gè)表中,分別指定了源地址、目的地址、傳輸協(xié)議(如TCP、UDP、ICMP)和服務(wù)類(lèi)型(如HTTP、FTP和SMTP)等。當(dāng)數(shù)據(jù)包與規(guī)則匹配時(shí),iptables就根據(jù)規(guī)則所定義的方法來(lái)處理這些數(shù)據(jù)包,如放行(accept)、拒絕(reject)和丟棄(drop)等。

數(shù)據(jù)包流向圖

數(shù)據(jù)包流向與netfilter的5個(gè)鏈:

  • PREROUTING:數(shù)據(jù)包進(jìn)入路由表之前
  • INPUT:通過(guò)路由表后目的地為本機(jī)
  • FORWARD:通過(guò)路由表后,目的地不為本機(jī)
  • OUTPUT:由本機(jī)產(chǎn)生,向外發(fā)出
  • POSTROUTING:發(fā)送到網(wǎng)卡接口之前

鏈(chains)是數(shù)據(jù)包傳播的路徑,每一條鏈其實(shí)就是眾多規(guī)則中的一個(gè)檢查清單。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)一個(gè)鏈時(shí),iptables就會(huì)從鏈中第一條規(guī)則開(kāi)始檢查,看該數(shù)據(jù)包是否滿足規(guī)則所定義的條件。如果滿足,系統(tǒng)就會(huì)根據(jù)該條規(guī)則所定義的方法處理該數(shù)據(jù)包;否則iptables將繼續(xù)檢查下一條規(guī)則,如果該數(shù)據(jù)包不符合鏈中任一條規(guī)則,iptables就會(huì)根據(jù)該鏈預(yù)先定義的默認(rèn)策略來(lái)處理數(shù)據(jù)包。

規(guī)則鏈之間的優(yōu)先順序:
第一種情況:入站數(shù)據(jù)流向
從外界到達(dá)防火墻的數(shù)據(jù)包,先被PREROUTING規(guī)則鏈處理(是否修改數(shù)據(jù)包地址等),之后會(huì)進(jìn)行路由選擇(判斷該數(shù)據(jù)包應(yīng)該發(fā)往何處),如果數(shù)據(jù)包 的目標(biāo)主機(jī)是防火墻本機(jī)(比如說(shuō)Internet用戶訪問(wèn)防火墻主機(jī)中的web服務(wù)器的數(shù)據(jù)包),那么內(nèi)核將其傳給INPUT鏈進(jìn)行處理(決定是否允許通 過(guò)等),通過(guò)以后再交給系統(tǒng)上層的應(yīng)用程序(比如Apache服務(wù)器)進(jìn)行響應(yīng)。

第二沖情況:轉(zhuǎn)發(fā)數(shù)據(jù)流向
來(lái)自外界的數(shù)據(jù)包到達(dá)防火墻后,首先被PREROUTING規(guī)則鏈處理,之后會(huì)進(jìn)行路由選擇,如果數(shù)據(jù)包的目標(biāo)地址是其它外部地址(比如局域網(wǎng)用戶通過(guò)網(wǎng) 關(guān)訪問(wèn)QQ站點(diǎn)的數(shù)據(jù)包),則內(nèi)核將其傳遞給FORWARD鏈進(jìn)行處理(是否轉(zhuǎn)發(fā)或攔截),然后再交給POSTROUTING規(guī)則鏈(是否修改數(shù)據(jù)包的地 址等)進(jìn)行處理。

第三種情況:出站數(shù)據(jù)流向
防火墻本機(jī)向外部地址發(fā)送的數(shù)據(jù)包(比如在防火墻主機(jī)中測(cè)試公網(wǎng)DNS服務(wù)器時(shí)),首先被OUTPUT規(guī)則鏈處理,之后進(jìn)行路由選擇,然后傳遞給POSTROUTING規(guī)則鏈(是否修改數(shù)據(jù)包的地址等)進(jìn)行處理。

規(guī)則表之間的優(yōu)先順序:Raw——mangle——nat——filter

iptables操作

語(yǔ)法格式:iptables [-t 表名] 命令選項(xiàng) [鏈名] [條件匹配] [-j 目標(biāo)動(dòng)作或跳轉(zhuǎn)]

說(shuō)明:表名、鏈名用于指定 iptables命令所操作的表和鏈,命令選項(xiàng)用于指定管理iptables規(guī)則的方式(比如:插入、增加、刪除、查看等;條件匹配用于指定對(duì)符合什么樣條件的數(shù)據(jù)包進(jìn)行處理;目標(biāo)動(dòng)作或跳轉(zhuǎn)用于指定數(shù)據(jù)包的處理方式,比如允許通過(guò)、拒絕、丟棄、跳轉(zhuǎn)給其它鏈處理。

iptables命令選項(xiàng):

-A  在指定鏈的末尾添加(append)一條新的規(guī)則
-D  刪除(delete)指定鏈中的某一條規(guī)則,可以按規(guī)則序號(hào)和內(nèi)容刪除
-I  在指定鏈中插入(insert)一條新的規(guī)則,默認(rèn)在第一行添加
-R  修改、替換(replace)指定鏈中的某一條規(guī)則,可以按規(guī)則序號(hào)和內(nèi)容替換
-L  列出(list)指定鏈中所有的規(guī)則進(jìn)行查看
-E  重命名用戶定義的鏈,不改變鏈本身
-F  清空(flush)
-N  新建(new-chain)一條用戶自己定義的規(guī)則鏈
-X  刪除指定表中用戶自定義的規(guī)則鏈(delete-chain)
-P  設(shè)置指定鏈的默認(rèn)策略(policy)
-Z  將所有表的所有鏈的字節(jié)和數(shù)據(jù)包計(jì)數(shù)器清零
-n  使用數(shù)字形式(numeric)顯示輸出結(jié)果
-v  查看規(guī)則表詳細(xì)信息(verbose)的信息
-V  查看版本(version)
-h  獲取幫助(help)

防火墻處理數(shù)據(jù)包的四種方式

ACCEPT 允許數(shù)據(jù)包通過(guò)
DROP   直接丟棄數(shù)據(jù)包,不給任何回應(yīng)信息
REJECT 拒絕數(shù)據(jù)包通過(guò),必要時(shí)會(huì)給數(shù)據(jù)發(fā)送端一個(gè)響應(yīng)的信息。
LOG    在/var/log/messages文件中記錄日志信息,然后將數(shù)據(jù)包傳遞給下一條規(guī)則

以下是iptables語(yǔ)法簡(jiǎn)圖:


iptables語(yǔ)法圖

下面是范圍匹配可選項(xiàng):


iptables范圍匹配圖

以下是一些比較有代表性的iptables語(yǔ)句,可以參照上面語(yǔ)法熟悉以下:

iptables -nvL #查看iptables規(guī)則
iptables -F #清空規(guī)則
service iptables save #保存規(guī)則
iptables -t nat #-t指定表
iptables -Z  #可以把計(jì)數(shù)器清零
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 
iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP
iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
iptables -nvL --line-numbers #查看iptables規(guī)則,并在前面標(biāo)號(hào)
iptables -D INPUT 1 #刪除標(biāo)號(hào)為1的規(guī)則
iptables -P INPUT DROP #input鏈默認(rèn)規(guī)則執(zhí)行drop動(dòng)作
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.安全技術(shù) (1)入侵檢測(cè)與管理系統(tǒng)(Intrusion Detection Systems): 特點(diǎn)是不阻斷任...
    尛尛大尹閱讀 2,625評(píng)論 0 2
  • 防火墻的概念iptables的簡(jiǎn)介iptables命令網(wǎng)絡(luò)防火墻NATfirewalld服務(wù) 一、防火墻的概念 (...
    哈嘍別樣閱讀 1,969評(píng)論 0 1
  • Linux網(wǎng)絡(luò)相關(guān) ifconfig命令查看網(wǎng)卡IP 剛接觸linux系統(tǒng)開(kāi)始的時(shí)候我們學(xué)習(xí)到查看網(wǎng)卡IP方式是使...
    hch004閱讀 383評(píng)論 0 0
  • iptabels是與Linux內(nèi)核集成的包過(guò)濾防火墻系統(tǒng),幾乎所有的linux發(fā)行版本都會(huì)包含iptables的功...
    隨風(fēng)化作雨閱讀 4,975評(píng)論 1 16
  • 詳述iptables五鏈 防火墻程序是工作在內(nèi)核的TCP/IP的網(wǎng)絡(luò)協(xié)議棧的框架之上,通過(guò)網(wǎng)絡(luò)過(guò)濾可以實(shí)現(xiàn)入侵檢測(cè)...
    Net夜風(fēng)閱讀 1,005評(píng)論 1 1

友情鏈接更多精彩內(nèi)容