day33:linux網絡相關及防火牆netfilter介紹

一、網絡相關的基礎linux

ifconfig查看IP地址信息vim

也能夠用ip  addr查看,不過這個顯示不直觀:安全

若是這個包沒有安裝yum    install    -y    net-toolsbash

[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.149.129  netmask 255.255.255.0  broadcast 192.168.149.255
        ether 00:0c:29:37:3b:d9  txqueuelen 1000  (Ethernet)
        RX packets 109556  bytes 80107827 (76.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 43183  bytes 16149071 (15.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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)
        RX packets 2  bytes 224 (224.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 224 (224.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifconfig -a:ifconfig有一個-a選項(能顯示沒有IP的網卡和down掉的網卡):服務器

啓動或關閉網卡:有時候咱們須要針對單個網卡進行操做,可使用以下命令:網絡

啓動網卡:ifup    eth0              ====        ifconfig   eth0       upapp

關閉網卡:ifdown   eth0         ====         ifconfig   eth0      downtcp

同時啓動和關閉:ifdown  eth0;ifup   eth0工具

設置網卡別名:有時須要給網卡設置多個IP地址用於通訊:以下oop

一、複製網卡腳本到新的網卡eth0:0裏,後面的冒號須要脫義:
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0\:0    #複製網卡腳本到新的文本內容:
二、並修改網卡eth0:0的內容:IP地址  DEVICE   NAME等:
[root@localhost network-scripts]# cat ifcfg-eth0:0       #查看網卡內容:
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.149.130
NETMASK=255.255.255.0
三、而後ping也能夠通:
[root@localhost ~]# ping 192.168.149.130
PING 192.168.149.130 (192.168.149.130) 56(84) bytes of data.
64 bytes from 192.168.149.130: icmp_seq=1 ttl=64 time=0.068 ms
64 bytes from 192.168.149.130: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 192.168.149.130: icmp_seq=3 ttl=64 time=0.046 ms

查看網卡的鏈路是否連通性有兩種方式:

ethtool        eth0                                #查看網卡連通性:

mii-tool       eth0                               #查看網卡連通性:

[root@localhost ~]# mii-tool eth0
eth0: negotiated 1000baseT-FD flow-control, link ok
[root@localhost ~]# ethool eth0
	Link detected: yes

二、修改DNS地址:       

     配置文件:   /etc/resolv.conf

     DNS是用來作IP和域名之間的解析,而在linux下設置DNS有兩種方式:

一、編輯並臨時修改/etc/resolv.conf文件裏的DNS配置,重啓網卡後會被網卡配置文件的裏的覆蓋:(格式:nameserver  114.114.114.114)

二、編輯網卡主配置文件(ifcfg-eth0),更改後重啓網卡生效:(格式:DNS1=114.114.114   \n    DNS2=8.8.8.8)

注意:若是是臨時修改DNS,則建議修改/etc/resolv.conf,若是是永久更改,則修改網卡主配置文件:

[root@localhost ~]# tail -n2 /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=114.114.114.114
DNS2=8.8.8.8
[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8

此外還有一個能夠解析的文件:只適合用本機:   /etc/hosts                          #在此不作過多解釋

三、linux下的防火牆(netfilter)

  SELinux是linux系統裏特有的安全機制,幾乎不多使用,安裝完系統後通常SELinux是關閉的(祕鑰驗證是會受此影響)

  netfilter:是linux下的防火牆,它是經過兩個管理工具"iptables"  "firewalld"來實現的,在Centos 6包括以前都是用的iptables,從Centos 7開始使用的firewalld

注意:要區分開iptablesfirewalld只是netfillter防火牆實現的兩種手段方式而已:

2.1:SELinux基本操做

臨時關閉SELinuxsetenforce     0

[root@localhost ~]# getenforce                 #查看selinux的狀態
Disabled
[root@localhost ~]# setenforce 0               #臨時關閉selinux:
setenforce: SELinux is disabled

永久關閉selinux:編輯/etc/selinux/config文件:

[root@localhost ~]# vim  /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
SELINUXTYPE=targeted

selinux=enforcing修改成disabled就能夠了,從新啓動系統便可:

三、netfilter(iptables):因爲如今好多公司仍是以前的Centos 6/5系統,咱們先簡單介紹iptables的用法:

   首先作一個準備工做,關閉firewalld, 開啓iptables(須要安裝iptables-services這個包):

[root@localhost ~]# systemctl disable firewalld           #禁止firewalld服務開機啓動:
[root@localhost ~]# systemctl stop firewalld              #關閉firewalld服務:
[root@localhost ~]# yum install -y iptables-services      #安裝iptables,這樣可使用之前版本:
總下載量:483 k
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/2): iptables-services-1.4.21-24.1.el7_5.x86_64.rpm                                                         |  51 kB  00:00:00     
(2/2): iptables-1.4.21-24.1.el7_5.x86_64.rpm                                                                  | 432 kB  00:00:00     
完畢!
[root@localhost ~]# systemctl enable iptables            #容許iptables服務開機啓動:
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.                
[root@localhost ~]# systemctl restart iptables           #啓動iptables服務:
注意:iptables安裝完成後,默認此服務是開啓的:

3.1:查看iptables的默認規則iptables  -nvL         ==     iptables    -t    filter   -nvL(默認是顯示filter表)

默認規則保存在/etc/sysconfig/iptables

[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   53  4728 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 41 packets, 4264 bytes)
 pkts bytes target     prot opt in     out     source               destination

3.2:netfilter(iptables):內置有五個表及五個鏈

一、flter表:是系統默認的表,主要用於過濾包,該表內置有個鏈

    INPUT數據包進入本機時通過的鏈,做用於進入本機的包

    OUTPUT本機自身產生的包發送出去的,做用於本機送出的包

    FORWARD:數據包轉發(只是通過本機的包),做用於那些跟本機無關的包

二、nat表:用於網絡地址轉換:內置有三個鏈

    PERROUTING數據包剛剛進來到達防火牆時改變其目的地址(若是須要的話):

    OUTPUT改變本地產生的包的目的地址

    POSTROUTE數據包離開防火牆時改變其源地址

三、mangle表:用於數據包作標記,而後根據標記去操做相應的包:用的較少,無需太關注:內置五個鏈以下:

INPUT           OUTPUT        FORWARD         PERROUTING           POSTROUTE

四、raw表:能夠實現不追蹤某些數據包,用來節省資源:用的較少:內置以下兩個鏈: PERROUTING        OUTPUT

5、security:它是在Centos   7裏面纔有的,用於強制訪問控制MAC的網絡規則:沒人用過:

3.3:iptables   options    參數

options

-n:表示不針對IP反解析主機名

-v:表示列出的信息更詳細

-L:表示列出

-t:後面跟表名(默認打印filter表的相關信息):

-Aadd:表示增長一條規則,增長後規則是在最下面排列:

-Iinsert:插入一條規則,插入後規則在最上面顯示

-s:後面跟源IP地址:      -s   192.168.188.1

-d:後面跟目的地址:     -d  192.168.1.1

-sport:表示指定源端口,需結合-p使用:

-dport:表示指定目標端口,需結合-p使用:

-p:指定協議tcp    udp     icmp

-j:後跟動做:  ACCEPT(容許包)、REGECT(拒絕包)、      DROP(丟棄)

注意REGECTDROP都是丟掉包,區別在於:drop是直接丟棄,不會看數據包:而regect查看數據包,纔會說你不能夠進來:並拒絕:

-i:表示指定網卡,不經常使用:

-P預設策略,通常用於寫腳本,體如今iptables -nvL的第一行policy   ACCEPT

-F清空規則,不會清空配置文件的,但再次重啓iptables後還會加載出來:

-Z計數器清零,用於寫腳本,能夠用來封IP,以半小時爲準,經過判斷計數器的數量封IP,達到目的:

注意:在iptables裏匹配時會採起順序匹配,也就是說一旦匹配到了就會執行,不往下執行了

用法1:增長一條規則,當源IP爲192.168.188.1且端口123向IP爲192.168.1.1端口爲80的數據包,執行丟棄的操做:最下面:

iptables   -A   INPUT   -s   192.168.188.1  -p   tcp   --sport   123   -d   192.168.1.1   --dport 80  -j   DROP

[root@localhost ~]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 123 -d 192.168.1.1 --dport 80 -j DROP
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1037 96780 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0         state RELATED,ESTABLISHED
   
  108  8424 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0        reject-with icmp-host-prohibited
    0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.1.1   tcp spt:123 dpt:80
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 
Chain OUTPUT (policy ACCEPT 23 packets, 2504 bytes)
 pkts bytes target     prot opt in     out     source               destination   D

用法2:插入一條規則,源IP是192.168.149.0/24網段到本機的56888的端口數據包,所有放行

[root@localhost ~]#  iptables    -I    INPUT   -s    192.168.149.0/24    -p   tcp   --dport   56888   -j   ACCEPT

[root@localhost ~]# iptables -I INPUT -s 192.168.149.0/24  -p tcp --dport 56888 -j ACCEPT
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target   prot opt in     out     source               destination         
   35  3120 ACCEPT   tcp  --  *      *       192.168.149.0/24     0.0.0.0/0      tcp dpt:56888

 108  8424 REJECT    all  --  *      *       0.0.0.0/0            0.0.0.0/0       reject-with 
  0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.1.1    tcp spt:123dpt:80
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   icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 27 packets, 2832 bytes)
 pkts bytes target     prot opt in     out     source               destination

如上圖所示-A(增長)-I(插入)還有有區別-A增長後是會在最下面依次排序,-I插入後是在最上面,也就是說匹配的時候會優先匹配:而基於iptables的匹配規則,會是從上往下匹配依次,一旦匹配到就執行相關操做,在往下面的則不匹配

用法3:刪除一條規則:iptable   -D   INPUT   .........

1:若是要是知道規則的內容:刪除一條規則必須和添加時候的規則一致,也就是說出了-A/-D不同,其餘地方要相同:

[root@localhost ~]# iptables -D INPUT -s 192.168.149.0/24 -p tcp --dport 56888 -j ACCEPT
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1328  122K 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
  138 10764 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0       reject-with icmp-host-prohibited
    0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.1.1   tcp spt:123 dpt:80

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

2:若是要是忘記規則內容:則須要先查看當前序列號對應的規則,而後根據序列號操做:第一列num表示序列號:

[root@localhost ~]# iptables -nvL --line-number         #列出每條規則所對應的序列號:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       tcp  --  *      *       0.0.0.0/0          0.0.0.0/0       tcp dpt:80
2      193 17212 ACCEPT     tcp  --  *      *       192.168.149.0/24   0.0.0.0/0       tcp dpt:56888
3     1341  123K ACCEPT     all  --  *      *       0.0.0.0/0          0.0.0.0/0       state RELATED,ESTABLISHED
4        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0          0.0.0.0/0           
5        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0          0.0.0.0/0           
6        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0         0.0.0.0/0        tcp dpt:22
7      138 10764 REJECT     all  --  *      *       0.0.0.0/0         0.0.0.0/0            
8        0     0 DROP       tcp  --  *      *       192.168.188.1    192.168.1.1       tcpspt:123 dpt:80
[root@localhost ~]# iptables -D INPUT 8                #刪除第一列的第8條規則:

三、清除規則:iptables  -F                        #不會更改配置文件的內容:

[root@localhost ~]# iptables -F               #清除規則:
[root@localhost ~]# iptables -nvL             #再次查看規則:
Chain INPUT (policy ACCEPT 25 packets, 2236 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 19 packets, 2056 bytes)
 pkts bytes target     prot opt in     out     source               destination 
[root@localhost ~]# service iptables restart    #從新啓動規則:

註釋:重啓以後即會恢復以前的規則,由於它原來的規則的配置都保存在/etc/sysconfig/iptables文件裏,因此從新啓動會再次加載這個配置文件,恢復原有配置:
若是想保存永久保存當前配置,則可使用service iptables save  保存當前配置到配置文件裏便可:

永久保存當前配置到配置:service   iptables   save    

四、iptables還能夠針對某個網卡進行操做: -i             #把INPUT鏈裏源IP爲192.168.149.0/24網段到eth0的數據包都丟棄:

[root@localhost ~]# iptables -A INPUT -s 192.168.149.0/24 -i eth0 -j DROP
[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  235 20380 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       all  --  eth0   *       192.168.149.0/24     0.0.0.0/0

五、預設策略-P       #表示iptables規則鏈裏第一行(policy ACCEPT)這個, 

[root@localhost ~]# iptables -P OUTPUT DROP     #執行OUTPUT的預設策略爲DROP,遠程會斷掉:

此時則須要再去機房登陸你的主機,執行以下命令:把預設策略修改成ACCEPT:    #那若是主機在美國了,你也去麼???

[root@localhost ~]# iptables -P OUTPUT  ACCEPT      #修改output的預設策略爲ACCEPT;

如上命令切勿操做,由於一旦執行,不只會端口你的遠程服務器,有可能還會影響到業務,由於修改了它的默認策略爲DROP:

附記:

iptables的使用格式:

iptables    -t    [ filter|nat ]   -A|-I    [ INPUT|OUTPUT|FORWARD ]    -s    [ 源ip|源子網 ]    -p     [ tcp|udp|icmp ]     --sport   源端口    -d    [ 目標ip|目標子網 ]   --dport  目標端口  -j     [ ACCEPT|REGECT|DROP ]

相關文章
相關標籤/搜索