Day08- team、iptables、firewall

SELinux概述
• Security-Enhanced Linux
– 美國NSA國家安全局主導開發,一套加強Linux系統安全的強制訪問控制體系
– 集成到Linux內核(2.6及以上)中運行
– RHEL7基於SELinux體系針對用戶、進程、目錄和文件提供了預設的保護策略,以及管理工具html

SELinux運行模式的切換
• SELinux的運行模式
– enforcing(強制)、permissive(寬鬆)
– disabled(完全禁用)linux

[root@server0 ~]# getenforce      #查看當前SELinux狀態
Enforcing
[root@server0 ~]# setenforce 0    #臨時修改爲寬鬆狀態
[root@server0 ~]# getenforce 
Permissive
[root@server0 ~]# setenforce 1    
[root@server0 ~]# getenforce

– 固定配置:/etc/selinux/config 文件web

補充: 在vim 命令模式下 按 「大寫的C」 刪除光標以後到行尾,而且進入插入模式docker

[root@server0 ~]# grep '^SELINUX=' /etc/selinux/config 
SELINUX=permissive
[root@server0 ~]# reboot

#####################################################################################
配置聚合鏈接(兩張網卡eth一、eth2)vim

HSRP    活躍路由器     備份路由器                          
                    虛擬路由器

         聚合鏈接    eth1      eth2    
                  team(192.168.1.1)

鏈路聚合的優點
• team,聚合鏈接(也稱爲鏈路聚合)
– 由多塊網卡(team-slave)一塊兒組建而成的虛擬網卡,即「組隊」
– 做用1:輪詢式(roundrobin)的流量負載均衡
– 做用2:熱備份(activebackup)鏈接冗餘後端

[root@server0 ~]# man teamd.conf        #按  「大寫的G」到全文的最後
                             向上查找  EXAMPLES
       "runner": {"name": "activebackup"}   #熱備份配置(最好複製粘貼)

# nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'      //添加熱備份鏈路(team0配置文件/etc/sysconfig/network-scripts/ifcfg-team0,顯示爲team0)
# ifconfig team0        //查看生成的網卡(對應配置文件/etc/sysconfig/network-scripts/ifcfg-team0)

# nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0         //添加eth1網卡到team0當中,命名爲team0-eth1
# nmcli connection add type team-slave con-name team0-eth2 ifname eth2 master team0         //添加eth2網卡到team0當中,命名爲team0-eth2

# nmcli connection modify team0 ipv4.method manual ipv4.addresses '172.16.3.20/24' connection.autoconnect yes   //配置team0的IP地址,默認啓用

# nmcli connection up team0-eth1        //激活成員
# nmcli connection up team0-eth2        //激活成員
# nmcli connection up team0         //激活team0

# teamdctl team0 state      //查看team狀態
# man  teamd.conf  #查看man幫助,按G到最後去尋找關鍵字端複製
# ifconfig eth1 down        //關閉其中一張網卡後,進行測試

[root@server0 ~]# nmcli connection delete team0         //刪除team配置
[root@server0 ~]# nmcli connection delete team0-eth1    //刪除team配置
[root@server0 ~]# nmcli connection delete team0-eth2    //刪除team配置

配置IPv6地址安全

• IPv4 地址表示
– 32個二進制位,點分隔的十進制數
– 例如:172.25.0.十一、127.0.0.1bash

• IPv6 地址表示
– 128個二進制位,冒號分隔的十六進制數
– 每段內連續的前置 0 可省略、連續的多個 : 可簡化爲 ::
– 例如:2003:ac18:0000:0000:0000:0000:0000:0305
2003:ac18::305/64 網絡

爲兩個虛擬機的接口 eth0 配置下列 IPv6 地址
– server0 上的地址應該是 2003:ac18::305/64
– desktop0 上的地址應該是 2003:ac18::306/64負載均衡

# nmcli  connection  modify  'System eth0'  ipv6.method  manual  ipv6.addresses  '2003:ac18::305/64'  connection.autoconnect  yes       //配置IPv6地址
# nmcli  connection  up  'System eth0'
# ifconfig      //查看IPv6
# ping6  2003:ac18::306/64      //測試IPv6聯通性

alias別名設置
• 查看已設置的別名
– alias [別名名稱]
• 定義新的別名
– alias 別名名稱= '實際執行的命令行'
• 取消已設置的別名
– unalias [別名名稱]

用戶個性化配置文件
• 影響指定用戶的 bash 解釋環境
– ~/.bashrc, 每次開啓 bash 終端時生效

全局環境配置
• 影響全部用戶的 bash 解釋環境
– /etc/bashrc, 每次開啓 bash 終端時生效

# vim /etc/bashrc
# alias myls='ls -lhd'
# su - student
# myls /opt

真機上操做
[root@room9pc14 桌面]# vim /root/.bashrc 

alias  s='ssh  -X  root@172.25.0.11'
alias  d='ssh  -X  root@172.25.0.10'
alias  rs='rht-vmctl  reset  server'
alias  rd='rht-vmctl  reset  desktop'
alias  rc='rht-vmctl  reset  cla***oom'

[root@room9pc14 桌面]#

#####################################################################################
防火牆策略管理

Web服務:

虛擬機server0上
服務端:安裝服務端軟件httpd

1.安裝httpd
[root@server0 ~]# yum -y install httpd

2.重啓httpd服務,設置開機服務自起
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# systemctl enable httpd

 默認網頁文件存放路徑:/var/www/html/
 默認主頁文件的名稱:index.html
[root@server0 ~]# cat /var/www/html/index.html
<marquee><font color=red><h1>NSD1705

   客戶端:安裝客戶端軟件firefox(本身訪問本身)

[root@server0 ~]# firefox http://172.25.0.11

FTP服務

虛擬機server0上
服務端:安裝服務端軟件vsftpd

1.安裝vsftpd
[root@server0 ~]# yum install -y vsftpd

2.重起vsftpd服務,設置開機服務自起
[root@server0 ~]# systemctl reset vsfpd

默認FTP共享路徑:/var/ftp
[root@server0 ~]# touch /var/ftp/test.txt

客戶端:安裝客戶端軟件firefox(本身訪問本身)

[root@server0 ~]# firefox ftp://172.25.0.11

#####################################################################################
Iptables防火牆
Linux包過濾防火牆
· netfilter
-位於Linux內核中的包過濾功能體系
-稱爲Linux防火牆的「內核態」
· iptables
-位於/sbin/iptables, 管理規則的工具
-稱爲Linux防火牆的「用戶態」

4表:raw、mangle、nat、filter
5鏈:InPut、OutPut、ForWard、PostRouting、PreRouting

表:存放不一樣的規則鏈
    -raw: 肯定是否對數據包進行狀態跟蹤
    -mangle: 爲數據包設置標記
    -nat: 修改數據包的源/目標地址或端口
    -filter: 肯定是否放行該數據包

鏈:存放防火牆規則:
    -InPut: 處理入站數據包
    -OutPut: 處理出站數據包
    -ForWard: 處理轉發數據包
    -PostRouting: 路由選擇以後處理
    -PreRouting: 路由選擇以前處理

包過濾匹配流程:
    1.規則表順序:
        --> raw --> mangle --> nat --> filter
    2.規則鏈順序:
        -入站:PreRouting --> InPut
        -轉發:PreRouting --> ForWard --> PostRouting
        -出站:OutPut --> PostRouting

    基本用法:
        iptables  [-t 表名]  選項  [鏈名]  [條件]  [-j 目標操做]
    總體規律:
        -不指定表,默認爲filter表
        -不指定鏈,對應表的全部鏈
        -除默認策略外,必須指定匹配條件
        -選項、鏈名、目標操做用大寫字母,其他都小寫

        基本目標操做:
            -ACCEPT:容許經過
            -DROP:直接丟棄,不給任何迴應
            -REJECT:拒絕經過,必要時會給出提示
            -LOG:記錄日誌,而後傳給下一條規則

        經常使用管理項:
            -A: 在鏈的末尾追加一條規則
            -I: 在鏈的開頭插入一條規則
            -L: 列出全部的規則條目
            -n: 以數字形式顯示地址、端口竺信息
            --line-numbers:查看規則時,顯示規則的序號
            -D: 刪除鏈內指定序號的規則
            -F: 清空全部規則
            -P: 爲指定的鏈設置默認規則

        基本匹配條件(!:取反):
            協議匹配:-p  協議名
            地址匹配:-s  源地址、-d  目標地址
            接口匹配:-i  收數據的網卡、-o  發數據的網卡
            端口匹配:--sport  源端口、--dport  目標端口
            ICMP類型匹配:--icmp-type  ICMP類型
            TCP標記匹配:--tcp-flags  檢查哪些位  哪些位被設置

        網絡鏈接的五種狀態:
            -NEW: 請求創建鏈接的包,徹底陌生的包
            -ESTABLISHED: 將要或已經創建鏈接的包
            -RELATED: 與已知某個鏈接相關聯的包
            -INVALID: 無對應鏈接,以及鏈接無效的包
            -UNTRACKED: 未跟蹤狀態的包
# iptables -t filter -I INPUT -p icmp -j REJECT     //拒絕ICMP包入站
# iptables -t filter -A INPUT -s 192.168.4.10 -j DROP   //丟棄192.168.4.10的入站包
# iptables -t filter -nL        //查看已有規則
# iptables -D INPUT 1       //刪除INPUT中第一條規則
# iptables -t filter -nL        //再次查看
# iptables -t filter -A INPUT -s 192.168.4.10 -p tcp --dport 21 -j DROP     //拒絕指定主機訪問TCP21號端口

# sysctl -w net.ipv4.ip_forward=1       //開啓路由轉發(臨時)
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A FORWARD -s 192.168.4.10 -j DROP       //不轉發來自192.168.4.10的包
# iptables -t filter -n

# iptables -A FORWARD -s 192.168.4.12 -d 100.100.100.100 -p tcp --dport 80 -j DROP      //拒絕4.12訪問100的80端口
# iptables -A FORWARD ! -s 192.168.4.0/24 -j DROP       //只有192.168.4.0段的包不丟棄(!:取反)

# cat iptables.rule

# iptables -t nat -A POSTROUTING -s 192.168.4.10 -j SNAT --to-source 172.16.4.10    //192.168.4.10源NAT轉化爲172.16.4.10(源地址假裝)
# iptables -t nat -F POSTROUTING

# iptables -t nat -A PREROUTING -d 192.168.4.10 -p tcp --dport 222 -j DNAT --to 172.16.4.10:22  //把訪問192.168.4.10的222端口DNAT到172.16.4.10的22端口(目標地址假裝)
# iptables -t nat -nL PREROUTING
# iptables -t nat -D PREROUTING 2                //刪除第2條

# iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 10022 -j DNAT --to-destination 172.16.0.2:22 ! -i docker0

# iptables -t filter -A INPUT -s 192.168.4.15 -p tcp --dport 80 -j DROP            //禁止192.168.4.15訪問本機的web服務

# iptables -t filter -A INPUT ! -s 192.168.4.12 -j DROP             //禁止除192.168.4.12之外的其餘主機ping本機

NAT防火牆,須要打開內核IP轉發

POSTROUTING   源地址假裝
經過假裝192.168.4.0網段的機器上網,首先防火牆本機能夠訪問互聯網
# iptables -t nat -A  POSTROUTING -s 192.168.4.0 -j SNAT --to-source  外網地址

PREROUTING    目標地址轉換
全部訪問防火牆10022端口的請求都轉發給後端的192.168.4.15的22端口
# iptables -t nat -A PREROUTING -i 本機名 -p tcp -m tcp --dport 10022 -j DNAT --to-destination 192.168.4.15:22

防火牆策略管理

  • 系統服務:firewalld
  • 管理工具:firewall-cmd(命令)
    firewall-config(圖形)
# systemctl status firewalld.service        //查看防火牆服務狀態
# firewall-cmd --get-zones          //獲取支持的區域列表

預設安全區域
• 根據所在的網絡場所區分,預設保護規則集
– public: 僅容許訪問本機的sshd等少數幾個服務(默認區域)
– trusted: 容許任何訪問
– block: 阻塞任何來訪請求(明確拒絕)
– drop: 丟棄任何來訪的數據包(丟棄請求:節省資源)

# firewall-cmd --get-default-zone       //查看默認區域(通常爲public)
# firewall-cmd --zone=public --list-all     //查看區域規則
# firewall-cmd --list-all-zones         //查看全部區域的詳細規則

防火牆判斷規則:(匹配及中止)
一、首先看請求(客戶端)當中的源IP地址,全部區域中是否對於該IP地址的策略,若是有,則該請求進入該區域
二、若是沒有其它匹配,則進入默認區域(前面沒有匹配)

# firewall-cmd --zone=public --add-service=http     //默認區域添加規則(臨時生效)
# firewall-cmd --zone=public --list-all     //查看區域規則(剛添加的)
# firewall-cmd --get-services           //獲取全部支持的服務

• 配置規則的位置
– 運行時(runtime)
– 永久(permanent)

# firewall-cmd --permanent --zone=public --add-service=http     //默認區域添加規則(permanent:永久生效)
# firewall-cmd --reload         //從新加載規則
# firewall-cmd --zone=public --list-all     //查看區域規則(剛添加的)

# firewall-cmd –get-active-zones        //獲取活動的區域和網絡接口
# firewall-cmd –get-zone-of-interface=eno1      //根據網卡接口獲取所在區域
# firewall-cmd --zone=public –change-interface=eno1     //更改網卡接口到public區域
# firewall-cmd --zone=drop --remove-source 192.168.1.7      //從drop區域中刪除源IP
修改默認區域

Server0(172.25.0.11):
# firewall-cmd --list-all       #查看當前區域public狀態
desktop0(172.25.0.10):
# ping -c 2 172.25.0.11     #能夠ping通

server0:
# firewall-cmd --set-default-zone=block   #修改默認區域爲block區域(永久)
# firewall-cmd --list-all
desktop0:
# ping -c 2 172.25.0.11    #不通可是有迴應

server0:
# firewall-cmd --set-default-zone=drop       #修改默認區域爲block區域(永久)
# firewall-cmd --list-all
desktop0:
# ping -c 2 172.25.0.11    #不通可是沒有迴應

# firewall-cmd --set-default-zone=public
# firewall-cmd --permanent --zone=public --add-source=172.25.0.10       //默認區域添加規則(permanent:永久生效)
# firewall-cmd --reload         //從新加載規則
# firewall-cmd --zone=public --list-all     //查看區域規則(剛添加的)
# firefox ftp://172.25.0.11     //測試ftp
# firefox http://172.25.0.11    //測試http

#####################################################################################
防火牆判斷的規則,匹配即中止

1.首先看客戶端請求中的源IP地址,查詢全部區域中是那個區域有該源IP地址的策略,而後進入該區域

  2.若是前面沒有匹配到,則進入默認區域

#####################################################################################

典型的應用方式:
嚴格,方式1:將默認區域保持爲block,針對須要放行的訪問在trusted區域添加策略
寬鬆,方式2:將默認區域保持爲trusted,針對須要阻止的訪問在block區域添加策略

#####################################################################################

添加服務到默認區域
server0:

# firewall-cmd --set-default-zone=public
# firewall-cmd --list-all

desktop0:

# firefox http://172.25.0.11    #不能訪問
# firefox ftp://172.25.0.11     #不能訪問

server0:

# firewall-cmd --permanent --add-service=http   #永久添加http
# firewall-cmd --permanent --add-service=ftp    #永久添加ftp
# firewall-cmd --list-all   
# firewall-cmd --reload            #從新加載配置
# firewall-cmd --list-all

desktop0:

# firefox http://172.25.0.11      #能夠訪問
# firefox ftp://172.25.0.11       #能夠訪問

#####################################################################################

實現本機的端口映射
• 本地應用的端口重定向(端口1 --> 端口2)
– 從客戶機訪問 端口1 的請求,自動映射到本機 端口2
– 好比,訪問如下兩個地址能夠看到相同的頁面:
http://172.25.0.11:5423/
http://172.25.0.11/

------->tcp 5423  ------> tcp 80
# firewall-cmd --permanent --add-forward-port=port=5423:proto=tcp:toport=80     //將5423端口映射到80端口
# firewall-cmd --reload
# firewall-cmd --list-all
# firefox http://172.25.0.11:5423      #測試是否能夠訪問到80端口的效果
# firewall-cmd --permanent --remove-forward-port=port=5423:proto=tcp:toport=80      //刪除將5423到80端口的映射
# firewall-cmd --reload
# firewall-cmd --list-all
相關文章
相關標籤/搜索