Linux防火牆-SELinux、netfilter、iptables、ifconfig

10.11 Linux網絡相關

ifconfig命令

  • 查看網卡IP

若是系統沒有該命令可使用yum安裝:前端

[root@1 ~]# yum install -y net-tools

查看網卡IP還可使用命令:ip add,這個顯示有點亂!linux

  • ifconfig -a

顯示全部網卡信息(包括down掉的或者沒有IP地址的網卡)vim

啓動/關閉網卡

  • ifup/ifdown [網卡名]

應用環境:更改單個指定網卡配置後須要重啓才能生效,爲了不關閉或重啓全部網卡能夠對單個網卡執行該命令。
注: 若是網卡正在使用中,不要單獨使用ifdown命令!!!解決辦法: 「# ifdown ens33 && ifup ens33」,使兩個命令一塊兒執行!centos

爲虛擬機添加網卡

關閉虛擬機,按以下順序操做:網絡

點擊下一步:dom


在此能夠指定網絡適配器(網卡)類型,也能夠在添加完成後進行選擇:tcp

點擊「肯定」即添加完成!工具

注: 若是以上操做是在開機狀態下執行,添加完成後須要重啓網絡服務!!!oop

爲新增網卡添加配置文件

查看新增網卡的配置信息:學習


在此能夠查看其所在網段。

配置新增網卡信息:
開啓虛擬機後進行以下操做:

查看網絡信息:

網卡配置文件位置(複製原有網卡,進行重命名):
/etc/sysconfig/network-scripts/  
[root@localhost ~]# cd /etc/sysconfig/network-scripts/

建立新增網卡配置文件:
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37

[root@localhost network-scripts]# vim ifcfg-ens37
#更改該配置文件下的網卡名爲ens37
#刪除UUID

配置完成後重啓網絡服務:
[root@localhost network-scripts]# systemctl restart network

至此,添加完成,以後變能夠經過編輯該文件來配置該網卡!!!

注: 因本次添加的網卡的網絡鏈接類型是host-only模式,因此其IP和ens33不在同一網段。

增長虛擬網卡

  • 步驟:
一、切換至網卡配置文件
[root@1 ~]# cd /etc/sysconfig/network-scripts/

二、複製系統網卡
[root@1 network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:0 

三、編輯複製的配置文件
[root@1 network-scripts]# vi ifcfg-ens33\:0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.8.138
NETMASK=255.255.255.0
GATEWAY=192.168.8.2
DNS1=119.29.29.29
說明:更改NAME、DEVICE、IPADDR,系統已經設定網關可DNS,因此在此能夠刪除GATEWAY和DNS,也能夠保留,可是,若是要保留該選項則必須保持其與系統網卡配置一致!

四、重啓系統網卡
[root@1 network-scripts]# ifdown ens33 && ifup ens33
成功斷開設備 'ens33'。
成功激活的鏈接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/3)

五、查看網卡信息
[root@1 network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.8.125  netmask 255.255.255.0  broadcast 192.168.8.255
        ……

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.8.158  netmask 255.255.255.0  broadcast 192.168.8.255
        ether 00:0c:29:61:7d:7a  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        ……
六、檢測虛擬網啊IP是否通暢

在Windows系統cmd下ping該IP便可!

查看網卡是否鏈接

  • 方法1:mii-tool [網卡名]
[root@1 ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

查看:link ok說明網卡鏈接OK!

  • 方法2:ethtool [網卡名]
[root@1 ~]# ethtool ens33
Settings for ens33:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
……
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

查看:Link detected: yes說明網卡鏈接OK!

主機名

  • 更改主機名&主機名配置文件
更改:
[root@1 ~]# hostnamectl set-hostname 3

查看主機名:
[root@3 ~]# hostname
3
注:更改後的主機名要在系統重啓以後纔會顯示!  

主機名的配置文件:
[root@3 ~]# cat /etc/hostname 
3

DNS配置

  • DNS配置文件:/etc/resolv.conf
[root@1 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 119.29.29.29

注: 更改網卡配置便可更改DNS配置文件,更改後須要重啓網卡(ifdown/ifup)後生效,也可編輯‘/etc/resolv.conf’臨時更改DNS配置,該辦法在重啓網卡後會被網卡配置文件中的DNS覆蓋!

  • 本地域名配置文件文件:/etc/hosts
[root@1 ~]#  cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

說明: 使用vi命令可在該配置文件下能夠自定義IP所對應的域名(一個IP對應多個域名或一個域名對應多個IP,用空格隔開,當一個域名對應多個IP時,以配置文件中靠後面的配置爲準),可是該域名配置只在本機生效!

10.12 firewalld和netfilter

SELinux防火牆

  • 臨時關閉SELinux防火牆:
[root@1 ~]# setenforce 0
  • 永久關閉SELinux防火牆:

編輯配置文件‘/etc/selinux/config’

[root@1 ~]# vim /etc/selinux/config
……
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
……
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

將SELINUX=enforcing改成disabled保存,重啓系統便可!

  • 查看SELinux防火牆狀態
[root@1 ~]# getenforce
Disabled

netfilter(Firewalld)

Centos7中默認將原來(centos5/6)的防火牆netfileter升級爲了firewalld。iptables是它們實現防火牆功能的工具。

爲了方便學習,暫時停用firewalld,開啓centos6/5的防火牆機制netfilter。

  • 停用firewalld
一、關閉firewalld(禁止開機啓動)
[root@1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

二、中止firewalld服務
[root@1 ~]# systemctl stop firewalld
  • 開啓netfilter
開啓前先安裝iptables工具包:
[root@1 ~]# yum install -y iptables-services  

開啓iptables服務:
[root@1 ~]# systemctl enable iptables
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.
[root@1 ~]# systemctl start iptables

說明: 安裝完成後默認開啓iptables服務。

  • 查看iptables規則:iptables -nvL
[root@1 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    7   536 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 5 packets, 684 bytes)
 pkts bytes target     prot opt in     out     source               destination

10.13 netfilter 5表及鏈的介紹

表名

  • filter:包過濾,用於防火牆規則。
  • nat:地址轉換,用於網關路由器。
  • mangle:用於給數據包打標記,而後根據標記去操做那些表。(不經常使用)
  • 還有兩個不經常使用的表:raw和security,在此很少講述。

規則鏈名

  • filter的三種鏈:

    • INPUT鏈:做用於輸入本機的數據包。
    • OUTPUT鏈:做用於本機輸出的數據包。
    • FORWARD鏈:做用於與本機無關的包。
  • nat的三種鏈:

    • PREROUTING鏈:做用是在包剛剛到達防火牆時改變它的目的地址,若是須要的話。
    • OUTPUT鏈:改變本地產生的包的目的地址。
    • POSTROUTING鏈:在包離開防火牆以前改變其源地址。

nat表應用(瞭解內容)

環境:
假設有三臺機器(A,B,C),A機器上有一塊網卡鏈接公網IP1;B機器上有兩塊網卡b一、b2,b一、b2分別鏈接公網和私網IP2,、IP3;C機器上有一塊網卡鏈接私網IP4。很明顯此時A&B,B&C之間都分別能互通,可是A和C之間是不能直接連通的,只能藉助B作媒介才能連通。那麼如何設置才能使得A和C之間互通呢?

方法:

先打開路由轉發功能:
[root@1 ~]# echo "1" > /proc/sys/net/ipv4_forward

而後對nat表作IP轉發配置:
[root@1 ~]# iptables -t nat -A POSTROUTING -s IP2(此處IP在同一個網段便可) -o ensA(A機器的網卡名稱) -j MASQUERADE

說明: -o 選項後面跟設備名稱,表示出口網卡,MASQUERADE是假裝、冒充的意思。

10.14 iptables語法

iptables命令是Linux上經常使用的防火牆軟件,是netfilter項目的一部分。能夠直接配置,也能夠經過許多前端和圖形界面配置。

語法: iptables [options] [參數]
Options:
-n:不針對IP反解析主機名
-v:顯示更詳細的信息
-t:指定表(iptables命令默認做用於filter表)
-L:顯示信息
-F:清空全部規則
-A/D:=add/delete,添加/刪除一條規則
-I:插入一條規則
-p:指定協議,能夠是tcp,udp或icmp
--sport:跟-p一塊兒使用,指定源端口
--dport:跟-p一塊兒使用,指定目標端口
-s:指定源IP(能夠是一個IP段)
-d:指定目的IP(能夠是一個IP段)
-j:後面跟動做(ACCEPT表示容許包;DROP表示丟掉包;REJECT表示拒絕包)
-i:指定網卡
-Z:把包以及流量計數器清零
-P:=pre,預設策略

  • iptables命令選項輸入順序:
iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動做
  • 查看規則
[root@1 ~]# iptables -nvL

iptables規則配置文件:/etc/sysconfig/iptables

  • 清空規則
[root@1 ~]# iptables -F

注: 該命令不會清除配置文件內的規則!當更改規則後須要執行命令‘service iptables save’將其保存到配置文件。

  • 增長一條規則(-A/I)
[root@1 ~]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

說明: 增長一條規則,當IP~192.168.188.一、協議爲tcp、端口爲‘1234’的向IP~192.168.188.12八、端口爲80的機器發送包時執行操做:drop(丟掉包)。
注: 該命令也能夠把-A換成-I,二者的區別相似於排隊和插隊,兩種方法插入的規則優先級不一樣。

  • 刪除一條規則(-D)
    方法1: 知道規則的內容
[root@1 ~]# iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

注: 要刪除一條規則時,必須和插入的規則一致,也就是說,兩條iptables命令除了-A/I和-D不同外,其餘地方都同樣。

方法2: 忘記規則內容
首先因此用如下命令查看規則序號:

[root@1 ~]# iptables -nvL --line-number

而後再執行刪除命令:

[root@1 ~]# iptables -D INPUT [序號]
  • 更改預設策略(-P)

執行命令:

# iptables -P OUTPUT DROP

結果:

注意: 儘可能不要隨意更改該配置,尤爲是在進行遠程登陸時,一旦執行該命令後將會斷開鏈接。這個策略設定後只能用命令:‘iptables -P OUTPUT ACCEPT’來恢復成原始狀態,不能使用-F參數。

相關文章
相關標籤/搜索