Security-Enhanced Linux(SElinux)
– 美國NSA國家安全局主導開發,一套增強Linux系統安全的強制訪問控制體系
目的:強制訪問控制體系
– 集成到Linux內核(2.6及以上)中運行
– RHEL7基於SELinux體系針對用戶、進程、目錄和文件提供了預設的保護策略,以及管理工具
SELinux的運行模式
– enforcing(強制)、permissive(寬鬆)
– disabled(徹底禁用)
切換運行模式
-臨時切換(當前切換):setenforce 1/0 #0表示降級,1表示升級
-固定配置(下次重啓才生效):vim /etc/selinux/config
[root@server0 ~]# getenforce #查看當前SELinux狀態
Enforcing
[root@server0 ~]# setenforce 0 #設置當前SELinux狀態
[root@server0 ~]# getenforce
Permissive
enforcing、permissive與disabled之間的切換必須到vim固定配置重啓才能生效
固定配置:
[root@server0 ~]# vim /etc/selinux/config
.. ..
SELINUX=permissive
[root@server0 ~]#reboot #重啓系統切換模式
補充:vim 命令模式
C(大寫):刪除光標之後到行尾,並且進入插入模式
-------------------------------------------------------------------------------------------
配置高級連接
配置聚合連接(網卡綁定)
和HSRP相似
HSRP:備份網關設備
路由器1 路由器2
192.168.1.254 192.168.1.253
活躍 備份
虛擬路由器
192.168.1.200
聚合連接:備份網卡設備
eth1 eth2
192.168.1.1/24 192.168.1.2/24
team
192.168.1.10
team,聚合連接(也稱爲鏈路聚合)
– 由多塊網卡(team-slave)一起組建而成的虛擬網卡,即“組隊”
– 作用1:輪詢式(roundrobin)的流量負載均衡
– 作用2:熱備份(activebackup)連接冗餘
熱備份配置: {"runner":{"name":"activebackup"}}
熱備份配置字符複雜可以用:man幫助輔助記憶
輸入man teamd.conf進入幫助界面
輸入 /example #全文查找example
再按n #按n 跳轉下一個匹配
找到並複製 {"runner":{"name":"activebackup"}}
[root@server0 ~]# man teamd.conf
/example #全文查找example
#按n 跳轉下一個匹配
一、添加team團隊設備
# nmcli connection add type team
con-name team0 ifname team0
config '{"runner": {"name": "activebackup"}}'
# cat /etc/sysconfig/network-scripts/ifcfg-team0
# ifconfig team0
二、添加成員
# nmcli connection add type team-slave
ifname eth1 master team0
# nmcli connection add type team-slave
ifname eth2 master team0
三、配置team0的IP地址
# nmcli connection modify team0
ipv4.method manual
ipv4.addresses 192.168.1.1/24
connection.autoconnect yes
四、激活team0
# nmcli connection up team-slave-eth1 #激活從設備eth1
# nmcli connection up team-slave-eth2 #激活從設備eth2
# nmcli connection up team0 #激活主設備team0
五、驗證
# teamdctl team0 state #專用於查看team信息
setup:
runner: activebackup
ports:
eth1
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up #狀態已激活
eth2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up #狀態已激活
runner:
active port: eth1 #指定活躍網卡爲eth1
注意:前面有輸入錯誤的地方不要重新輸一遍正確的,不會覆蓋,最好刪除網卡組成員
刪除命令:
# nmcli connection delete team-slave-eth1
# nmcli connection delete team-slave-eth2
# nmcli connection delete team0
在客戶端desktop虛擬機上按照server0重新配置一遍,配置IP地址爲192.168.1.2/24
都配置完後可以Ping驗證
若將其中一個網卡eth1或eth2端口關閉,命令:ifconfig eth1/eth2 down也會ping通,因爲有備份,兩個都關閉則ping失敗
-------------------------------------------------------------------------------------------
配置IPv6地址
IPv6 地址表示
– 128個二進制位,冒號分隔的十六進制數
– 每段內連續的前置 0 可省略、連續的多個 : 可簡化爲 ::
# nmcli connection modify 'System eth0'
ipv6.method manual
ipv6.addresses 2003:ac18::305/64
connection.autoconnect yes
# nmcli connection up 'System eth0'
# ifconfig eth0
# ping6 2003:ac18::305
-------------------------------------------------------------------------------------------
alias別名設置
查看已設置的別名
– alias [別名名稱]
定義新的別名
– alias 別名名稱= '實際執行的命令行'
取消已設置的別名
– unalias [別名名稱]
用戶個性化配置文件
影響指定用戶的 bash 解釋環境
– ~/.bashrc,每次開啓 bash 終端時生效
全局環境配置
影響所有用戶的 bash 解釋環境
– /etc/bashrc,每次開啓 bash 終端時生效
[root@server0 ~]# vim /root/.bashrc #影響root文件
.. ..
alias hello='echo hello'
[root@server0 ~]# vim /home/student/.bashrc #影響student文件
.. ..
alias hi='echo hi'
[root@server0 ~]# vim /etc/bashrc #全局配置文件
.. ..
alias haha='echo xixi'
退出遠程登陸,重新遠程server0驗證
[root@server0 ~]# hello #成功
[root@server0 ~]# hi #失敗
[root@server0 ~]# haha #成功
[root@server0 ~]# su - student
[student@server0 ~]$ hello #失敗
[student@server0 ~]$ hi #成功
[student@server0 ~]$ haha #成功
[student@server0 ~]$ exit
-------------------------------------------------------------------------------------------
防火牆策略管理(firewall)
一、搭建基本Web服務
利用服務端的軟件(httpd)爲客戶端提供Web服務
服務端: httpd(軟件)由Apache組織開發
1.server0上安裝httpd軟件
2.server0啓動httpd服務,設置開機自起
默認情況下:Apache沒有提供任何頁面
虛擬機登陸firefox頁面必須將真機的所有firefox頁面程序關閉
默認Apache網頁文件存放路徑:/var/www/html
默認Apache網頁文件名稱:index.html
[root@server0 ~]# yum -y install httpd #安裝軟件
[root@server0 ~]# systemctl restart httpd #設置開機自啓
[root@server0 ~]# systemctl enable httpd
[root@server0 ~]# vim /var/www/html/index.html #進入編輯頁面
<marquee><font color=green><h1>My First Web
#字體滾動,字體顏色,字體大小後面輸入頁面顯示內容
[root@server0 ~]# firefox 172.25.0.11
前面沒寫服務就默認http服務
二、FTP服務的搭建 ftp:文件傳輸協議
服務端: vsftpd(軟件)
1.server0上安裝 vsftpd軟件
2.server0啓動 vsftpd服務,設置開機自起
默認共享的位置:/var/ftp
可以創建文檔文件:
e.g:
[root@server0 ~]# touch /var/ftp/1.txt
[root@server0 ~]# touch /var/ftp/2.txt
測試
[root@server0 ~]# firefox ftp://172.25.0.11
-------------------------------------------------------------------------------------------
防火牆策略管理(firewall)
作用:隔離外網和內網
阻止外網(WAN)入站,允許內網(LAN)出站
系統服務:firewalld
管理工具:firewall-cmd(命令)、firewall-config(圖形)
查看防火牆服務狀態
[root@server0 ~]# systemctl status firewalld.service
根據所在的網絡場所區分,預設保護規則集
– public(默認的區域):僅允許訪問本機的sshd等少數幾個服務
– trusted:允許任何訪問
– block:拒絕任何來訪請求(客戶端請求會迴應並拒絕)
– drop:丟棄任何來訪的數據包(直接拒絕沒有任何迴應)
防火牆判斷的規則:匹配及停止
1.首先看請求(客戶端)當中的源IP地址,所有區域中是否有對於該IP地址的策略,如果有則該請求進入該區域
2.進入默認區域
虛擬機desktop0:
# firefox http://172.25.0.11 #訪問失敗,因爲沒有添加http服務
# firefox ftp://172.25.0.11 #訪問失敗,因爲沒有添加ftp服務
虛擬機server0:
# firewall-cmd --get-default-zone #查看默認區域爲public
# firewall-cmd --zone=public --list-all #查看區域規則信息
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client ssh #支持的服務
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
# firewall-cmd --zone=public --add-service=http #添加服務
# firewall-cmd --zone=public --list-all #查看區域規則信息
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client http ssh #已添加http服務
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
虛擬機desktop0:
# firefox http://172.25.0.11 #訪問成功
# firefox ftp://172.25.0.11 #訪問失敗
虛擬機server0:
# firewall-cmd --zone=public --add-service=ftp
# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client ftp http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
虛擬機desktop0:
# firefox ftp://172.25.0.11 #訪問成功
-------------------------------------------------------------------------------------------
--permanent選項:實現永久設置
虛擬機server0:
# firewall-cmd --reload #重新加載防火牆,關閉之前添加的服務
# firewall-cmd --zone=public --list-all #重新後之前設置的服務會消失
# firewall-cmd --permanent --zone=public --add-service=ftp
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --reload #重新加載防火牆
# firewall-cmd --zone=public --list-all
-------------------------------------------------------------------------------------------
修改默認的區域,不需要加上--permanent
虛擬機desktop0:
# ping 172.25.0.11 #可以通信
虛擬機server0:
# firewall-cmd --set-default-zone=block #修改默認區域爲block
# firewall-cmd --get-default-zone #查看默認區域
虛擬機desktop0:
# ping 172.25.0.11 #不可以通信
虛擬機server0:
# firewall-cmd --set-default-zone=drop #修改默認區域爲drop
# firewall-cmd --get-default-zone
虛擬機desktop0:
# ping 172.25.0.11 #通信無反饋
-------------------------------------------------------------------------------------------
虛擬機server0:
# firewall-cmd --permanent --zone=public --add-source=172.25.0.10 #添加客戶端desktop源IP
# firewall-cmd --zone=public --list-all
# firewall-cmd --reload
# firewall-cmd --zone=public --list-all
虛擬機desktop0:
# firefox http://172.25.0.11
-------------------------------------------------------------------------------------------
實現本機的端口映射
本地應用的端口重定向(端口1 --> 端口2)
– 從客戶機訪問 端口1 的請求,自動映射到本機 端口2
– 比如,訪問以下兩個地址可以看到相同的頁面:
虛擬機desktop0:
# firefox http://172.25.0.11:5423-------》172.25.0.11:80
虛擬機server0:
# firewall-cmd --permanent --zone=public
--add-forward-port=port=5423:proto=tcp:toport=80
# firewall-cmd --reload
# firewall-cmd --zone=public --list-all
虛擬機desktop0:
# firefox http://172.25.0.11:5423