七週三次課(5月8日)Linux網絡相關、firewalld和netfilter、netfilter5表5鏈介紹、iptables語法

10.11 linux網絡相關linux

ifconfig 查看網卡相關IPweb

ifcionfig -a  當網卡沒有IP的時候,這個命令是不顯示的,加上 -a 就能夠查看到vim

開啓網卡: ifup eth0centos

關閉網卡: ifdown eth0安全

以上就是關閉網卡ifdown和啓動網卡ifup的操做,那麼這兩個命令何時用呢?有時候會單獨對一個網卡作更改,好比改了配置文件,須要重啓服務,這個時候不想全部的網卡都重啓一遍,只想重啓指定的網卡,這個時候就可使用 ifdown 和 ifup 命令來操做。可是遠程鏈接的話,最好不要使用 ifdown 這個命令,會直接連不上服務器,致使遠程操做不了。因此,咱們應該這樣操做,輸入命令 ifdown ens33 && ifup ens3服務器

網卡設定虛擬網卡,具體操做:網絡

cd /etc/sysconfig/network-scripts/tcp

cp ifcfg-eth0 ifcfg-eth0\:0    // \反斜槓是脫義:工具

編輯文件: vim  ifcfg-eth0\:0 下圖紅框處測試

重啓網卡服務: ifdown eth0:0 && ifup eth0:0

mii-tool eth0  查看網卡是否連接

ethtool  eth     查看網卡是否連接

hostnamectl  set-hostname  lxy 更改主機名

hostname 查看主機名

dns配置文件:  cat /etc/resolv.conf 

etc/host  文件解析

更改文件解析:

總結:
ifconfig 查看網卡IP
yum install net-tools 安裝或更新 ifconfig 命令
ip add 查看網卡IP,結果相比於 ifconfig 命令雜亂
ifconfig -a 當網卡沒有IP的時候,這個命令是不顯示的,加上 -a 就能夠查看到
ifdown 關閉網卡
ifup 啓動網卡
ifdown ens00 && ifup ens00 關閉和啓動網卡ens33同時進行,用於遠程鏈接服務器時
mii-tool ens00 命令和 ethtool ens00 命令均可以查看網卡是否鏈接,顯示的結果分別是 ok 和 yes
hostnamectl set-hostname   lxy-1 更改主機名爲 - 1
vi /etc/sysconfig/network-scripts/ifcfg-ens33 能夠更改配置文件爲自定義內容
/etc/hostname 主機名配置文件
/etc/resolv.conf DNS配置文件
vi /etc/hosts 更改文件 /etc/hosts 的解析,能夠實現IP地址的更改,可是更改僅僅在本機生效,一行裏面同時也支持一個IP多個域名,僅支持一行的內容,換行就不能生效了,而且左邊是IP,右邊是域名。在重複的內容中,之後面的內容爲準生效。

10.12 firewalld和netfilter

  1. selinux 命令

selinux 是 Redhat/CentOS 系統特有的安全機制。不過由於這個東西限制太多,配置也特別繁瑣因此幾乎沒有人去真正應用它。因此裝完系統,咱們通常都要把selinux關閉,以避免引發沒必要要的麻煩。關閉 selinux 的方法爲,使 「SELINUX=disabled」, 默認爲 enforcing。
輸入命令 vi /etc/selinux/config ,回車,見下圖,

保存該配置文件後,重啓機器方可生效。咱們可使用 getenforce 命令得到當前 selinux 的狀態

 getenforce    查看selinux 狀態

setenforce 0   臨時關閉selinux防火牆

二、 netfilter 防火牆

centos6和centos7都有iptables,這裏的iptables是一個工具或者叫命令.在centos6中叫netfilter,centos7中防火牆叫firewalld.底層都是基於iptables.

systemctl disable firewalld  命令表示先中止防火牆服務

systemctl stop firewalld      命令表示關閉防火牆服務

接着開啓 netfilter 防火牆,開啓以前,須要先安裝一個包,輸入命令 yum install -y iptables-services 

安裝完成以後,就能夠開啓 iptables 服務,即開啓 netfilter 防火牆服務

systemctl enable iptables  表示開啓防火牆服務

systemctl  start  iptables   表示啓動防火牆服務

iptables -nvL  查看iptables 的默認規則

 

10.13 netfilter5表5鏈介紹

 以上就是 netfilter 防火牆的5個表,filter,nat,mangle,raw,security(Centos7以前沒有這個表) 。
filter 表用於過濾包,最經常使用的表,有INPUT、FORWARD、OUTPUT三個鏈
nat 表用於網絡地址轉換,有PREROUTING、OUTPUT、POSTROUTING三個鏈
managle 表用於給數據包作標記,而後根據標記去操做那些包,幾乎用不到
raw 表能夠實現不追蹤某些數據包,幾乎用不到
security 表在centos6中並無,用於強制訪問控制(MAC)的網絡規則,幾乎用不到

五個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
PREROUTING:做用是在包剛剛到達防火牆時改變它的目的地址,若是須要的話
INPUT:做用於進入本機的包
FORWARD:做用於那些跟本機無關的包
OUTPUT:做用於本機送出的包,改變本地產生的包的目的地址
POSTROUTING:在包就要離開防火牆以前改變其源地址

iptables簡介
netfilter/iptables(簡稱爲iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟件同樣,這個包過濾防火牆是免費的,它能夠代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。
iptables基礎
規則(rules)其實就是網絡管理員預約義的條件,規則通常的定義爲「若是數據包頭符合這樣的條件,就這樣處理這個數據包」。規則存儲在內核空間的信息 包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規 則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的 主要工做就是添加、修改和刪除這些規則。
iptables和netfilter的關係:
這是第一個要說的地方,Iptables和netfilter的關係是一個很容易讓人搞不清的問題。不少的知道iptables殊不知道 netfilter。其實iptables只是Linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是 netfilter,它是Linux內核中實現包過濾的內部結構。
iptables傳輸數據包的過程
① 當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否須要轉送出去。
② 若是數據包就是進入本機的,它就會沿着圖向下移動,到達INPUT鏈。數據包到了INPUT鏈後,任何進程都會收到它。本機上運行的程序能夠發送數據包,這些數據包會通過OUTPUT鏈,而後到達POSTROUTING鏈輸出。
③ 若是數據包是要轉發出去的,且內核容許轉發,數據包就會如圖所示向右移動,通過FORWARD鏈,而後到達POSTROUTING鏈輸出。
selinux 、firewalld 、 netfilter 及其5表5鏈

下面說法是4表5鏈的內容,如今是5表5鏈,多出來的表也幾乎用不到。
iptables的規則表和鏈:
表(tables)提供特定的功能,iptables內置了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網絡地址轉換、包重構(修改)和數據跟蹤處理。
鏈(chains)是數據包傳播的路徑,每一條鏈其實就是衆多規則中的一個檢查清單,每一條鏈中能夠有一 條或數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否知足規則所定義的條件。若是知足,系統就會根據 該條規則所定義的方法處理該數據包;不然iptables將繼續檢查下一條規則,若是該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定 義的默認策略來處理數據包。
Iptables採用「表」和「鏈」的分層結構。具體見下圖,
selinux 、firewalld 、 netfilter 及其5表5鏈

規則表:
1.filter表——三個鏈:INPUT、FORWARD、OUTPUT
做用:過濾數據包 內核模塊:iptables_filter.
2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
做用:用於網絡地址轉換(IP、端口) 內核模塊:iptable_nat
3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
做用:修改數據包的服務類型、TTL、而且能夠配置路由實現QOS內核模塊:iptable_mangle(別看這個表這麼麻煩,我們設置策略時幾乎都不會用到它)
4.Raw表——兩個鏈:OUTPUT、PREROUTING
做用:決定數據包是否被狀態跟蹤機制處理 內核模塊:iptable_raw

規則鏈:
1.INPUT——進來的數據包應用此規則鏈中的策略
2.OUTPUT——外出的數據包應用此規則鏈中的策略
3.FORWARD——轉發數據包時應用此規則鏈中的策略
4.PREROUTING——對數據包做路由選擇前應用此鏈中的規則
(記住!全部的數據包進來的時侯都先由這個鏈處理)
5.POSTROUTING——對數據包做路由選擇後應用此鏈中的規則
(全部的數據包出來的時侯都先由這個鏈處理)
規則表之間的優先順序:
Raw——mangle——nat——filter
規則鏈之間的優先順序(分三種狀況):
第一種狀況:入站數據流向
從外界到達防火牆的數據包,先被PREROUTING規則鏈處理(是否修改數據包地址等),以後會進行路由選擇(判斷該數據包應該發往何處),若是數據包 的目標主機是防火牆本機(好比說Internet用戶訪問防火牆主機中的web服務器的數據包),那麼內核將其傳給INPUT鏈進行處理(決定是否容許通 過等),經過之後再交給系統上層的應用程序(好比Apache服務器)進行響應。
第二衝狀況:轉發數據流向
來自外界的數據包到達防火牆後,首先被PREROUTING規則鏈處理,以後會進行路由選擇,若是數據包的目標地址是其它外部地址(好比局域網用戶經過網 關訪問QQ站點的數據包),則內核將其傳遞給FORWARD鏈進行處理(是否轉發或攔截),而後再交給POSTROUTING規則鏈(是否修改數據包的地 址等)進行處理。
第三種狀況:出站數據流向
防火牆本機向外部地址發送的數據包(好比在防火牆主機中測試公網DNS服務器時),首先被OUTPUT規則鏈處理,以後進行路由選擇,而後傳遞給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理。

總結:
getenforce 查看當前 selinux 的狀態,Enforcing 表示開啓,Permissive 表示關閉。
setenforce 0 臨時關閉 selinux
vi /etc/selinux/config 進入配置selinux文件,更改SELINUX=disabled,能夠永久關閉selinux
systemctl disable firewalld 表示先中止防火牆服務
systemctl stop firewalld 表示關閉防火牆服務
5個表: filter,nat,mangle,raw,security
5個鏈: PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
本機: PREROUTING →INPUT →OUTPUT →POSTROUTING
非本機:PREROUTING→FORWARD→POSTROUTING

10.14 iptables語法

ipta les -nvL 查看規則

/etc/sysconfig/iptables    規則保存路徑

iptables -F  清空規則  注:清空規則以後,使用命令 iptables -nvL,就看不到默認規則了,可是配置文件 /etc/sysconfig/iptables 裏面的內容沒有改變。也就是說,想要把當前的規則保存到配置文件裏,還須要執行一個命令 service iptables save ,這樣清空的規則纔會生效。若是不保存的話,能夠重啓 iptables ,再加載回來

也就是說,重啓服務器或是重啓 iptables 規則,都會去加載配置文件上的規則。
這些默認的規則都在 filter 這個表上,-t 是指定表,不使用 -t 的話,默認就是 filter 這個表。nat 表裏面都是沒有規則的,見下圖,

 

service iptables save 保存規則。當咱們把規則寫完以後,僅僅在當前內存中生效。想要重啓後還依然生效,就要作這個保存規則的操做。

iptables -Z  能夠把計數器清零

如今給filter表增長一條規則,

iptables命令選項輸入順序:

iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動做

輸入命令 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 

這條命令省略了 -t ,默認爲 filter 表;-A 表示增長一條規則,另外還有-I (大寫的i)表示插入一條規則,-D刪除一條規則;INPUT 表示針對的鏈,還能夠是OUTPUT或者FORWORD;-s 表示後面跟着指定的來源IP,-p 表示協議(tcp, udp, icmp),--sport/--dport 後跟來源端口/目標端口;-d 後跟目的IP(主要針對內網或者外網);-j 後跟動做(DROP即把包丟掉,REJECT即包拒絕;ACCEPT即容許包)。上圖中,最下面的紅色框框內容就是剛剛增長上去的規則。
總結一下各個選項的做用:
-A/-D :增長刪除一條規則;
-I :插入一條規則,其實跟-A的效果同樣;
-p :指定協議,能夠是tcp,udp或者icmp;
--dport :跟-p一塊兒使用,指定目標端口;
--sport :跟-p一塊兒使用,指定源端口;
-s :指定源IP(能夠是一個ip段);
-d :指定目的IP(能夠是一個ip段);
-j :後跟動做,其中ACCEPT表示容許包,DROP表示丟掉包,REJECT表示拒絕包;
-i :指定網卡(不經常使用,但有時候能用到);
還有一種用法 -I(大寫的i),輸入命令 iptables -I INPUT -p tcp --dport 80 -j DROP ,回車,見下圖,

能夠看到使用 -I 選項,規則就插入到第一行了。
既然能夠增長和插入,確定也能夠刪除,使用選項 -D ,輸入命令 iptables -D INPUT -p tcp --dport 80 -j DROP 

iptables -nvL --line-number   查看規則行號

輸入命令 iptables -D INPUT 7    根據行號刪除規則

還有一個選項 -P(大寫), 表示預設策略,這是默認的規則,在PuTTY上遠程登陸的話,輸入命令 iptables -P OUTPUT DROP ,回車,會發現整個斷掉了,什麼也執行不了,只能重啓。-P後面跟鏈名,策略內容或者爲DROP或者爲ACCEPT,默認是ACCEPT。

表名包括:

  • raw:高級功能,如:網址過濾。
  • mangle:數據包修改(QOS),用於實現服務質量。
  • net:地址轉換,用於網關路由器。
  • filter:包過濾,用於防火牆規則。

規則鏈名包括:

  • INPUT鏈:處理輸入數據包。
  • OUTPUT鏈:處理輸出數據包。
  • PORWARD鏈:處理轉發數據包。
  • PREROUTING鏈:用於目標地址轉換(DNAT)。
  • POSTROUTING:用於源地址轉換(SNAT)。

動做包括:

  • accept:接收數據包。
  • DROP:丟棄數據包。
  • REDIRECT:重定向、映射、透明代理。
  • SNAT:源地址轉換。
  • DNAT:目標地址轉換。
  • MASQUERADE:IP假裝(NAT),用於ADSL。
  • LOG:日誌記錄。

總結:
iptables -nvL 查看 iptables 規則
service iptables restart 重啓 iptables 規則
cat /etc/sysconfig/iptables 查看 iptables 配置文件
iptables -F 清空規則
-t 是指定表,不使用 -t 的話,默認就是 filter 這個表
service iptables save 保存規則
-Z (大寫) 能夠把計數器清零
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 給filter表增長一條規則
iptables -I INPUT -p tcp --dport 80 -j DROP 在第一行插入一條規則
iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 刪除增長的規則
iptables -D INPUT -p tcp --dport 80 -j DROP 刪除插入的規則
-A/-D :增長刪除一條規則;
-I :插入一條規則,其實跟-A的效果同樣;
-p :指定協議,能夠是tcp,udp或者icmp;
--dport :跟-p一塊兒使用,指定目標端口;
--sport :跟-p一塊兒使用,指定源端口;
-s :指定源IP(能夠是一個ip段);
-d :指定目的IP(能夠是一個ip段);
-j :後跟動做,其中ACCEPT表示容許包,DROP表示丟掉包,REJECT表示拒絕包;
-i :指定網卡(不經常使用,但有時候能用到);
iptables -nvL --line-number 每一行規則前面加上行號
iptables -D INPUT 7 刪除行號爲 7 的規則
iptables -P OUTPUT DROP 用來指定鏈的默認策略,不要隨意執行
iptables -P OUTPUT ACCEPT 恢復鏈的默認策略

iptables -P OUTPUT DROP 刪除默認規則,不要隨意執行 iptables -P OUTPUT ACCEPT 恢復默認規則

相關文章
相關標籤/搜索