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
防火牆策略管理
# 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