Linux計算機基礎之engineer DAY04
阿新 • • 發佈:2018-11-10
###############################################
案例4:編寫一個判斷指令碼
在 server0 上建立 /root/foo.sh 指令碼
1)當執行/root/foo.sh redhat,輸出為fedora
2)當執行/root/foo.sh fedora,輸出為redhat
3)當沒有任何引數或者引數不是 redhat 或者 fedora時,
其錯誤輸出產生以下資訊: /root/foo.sh redhat|fedora [[email protected] ~]# vim /root/foo.sh
#!/bin/bash
if [ $# -eq 0 ];then
echo '/root/foo.sh redhat|fedora' >&2 #正確變成錯誤
exit 3 #程式執行退出狀態值
elif [ $1 == redhat ];then
echo fedora
elif [ $1 == fedora ];then
echo redhat
else
echo '/root/foo.sh redhat|fedora' >&2 #正確變成錯誤
exit 4 #程式執行退出狀態值
fi
[[email protected] ~]#
##############################################
案例5:編寫一個批量新增使用者指令碼
在 server0 上建立 /root/batchusers 指令碼
1)此指令碼要求提供使用者名稱列表檔案作為引數
2)如果沒有提供引數,此指令碼應該給出提示
Usage: /root/batchusers,退出並返回相應值
3)如果提供一個不存在的檔案,此指令碼應該給出提
示 Input file not found,退出並返回相應值
4)新使用者的登入Shell為 /bin/false,無需設定密碼
5)使用者列表測試檔案:
[ [email protected] ~]# cat /root/userlist
duanwu
zhongqiu
zhsan
lisi
[[email protected] ~]# vim /root/batchusers
#!/bin/bash
if [ $# -eq 0 ];then
echo 'Usage: /root/batchusers' >&2
exit 2
elif [ -f $1 ];then
for i in `cat $1`
do
useradd -s /bin/false $i &> /dev/null
echo $i建立成功
done
else
echo 'Input file not found' >&2
exit 3
fi
[[email protected] ~]# /root/batchusers /root/userlist ################################################
系統安全保護 SELinux概述
• Security-Enhanced Linux
– 美國NSA國家安全域性主導開發,一套增強Linux系統安
全的強制訪問控制體系
• SELinux的執行模式
– enforcing(強制)、permissive(寬鬆)
– disabled(徹底禁用) 任何模式變成disabled(徹底禁用),都需要經歷重起系統 • 切換執行模式
– 臨時切換:setenforce 1|0
– 固定配置:/etc/selinux/config 檔案 虛擬機器Server0與虛擬機器Desktop0
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce 0 #臨時修改模式
[[email protected] ~]# getenforce
Permissive [[email protected] ~]# vim /etc/selinux/config #永久修改
SELINUX=permissive
#################################################
搭建基本的Web服務 1.安裝httpd軟體包
[[email protected] ~]# yum -y install httpd 2.重起httpd服務
[[email protected] ~]# systemctl restart httpd
[[email protected] ~]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
[[email protected] ~]# 3.本機訪問測試
[[email protected] ~]# firefox 172.25.0.11 4.書寫網頁檔案
預設存放網頁檔案路徑:/var/www/html
預設網頁檔名稱:index.html
[[email protected] ~]# vim /var/www/html/index.html
<marquee><font color=red><h1>NSD1810 陽光明媚
滾動 字型顏色 紅色 最大字型 [[email protected] ~]# firefox 172.25.0.11
搭建基本FTP服務 FTP:檔案傳輸協議 1.安裝vsftpd軟體包
[[email protected] ~]# yum -y install vsftpd 2.重起vsftpd服務
[[email protected] ~]# systemctl restart vsftpd
[[email protected] ~]# systemctl enable vsftpd
FTP預設共享路徑:/var/ftp 3.本機訪問測試
[[email protected] ~]# firefox ftp://172.25.0.11 [[email protected] ~]# cp /etc/redhat-release /var/ftp [[email protected] ~]# firefox ftp://172.25.0.11 ################################################
防火牆規則管理
作用:過濾與隔離 允許出站,過濾入站
硬體防火牆
軟體防火牆 RHEL7的防火牆體系
• 系統服務:firewalld
• 管理工具:firewall-cmd、firewall-config
預設安全區域
• 根據所在的網路場所區分,預設保護規則集
– public:僅允許訪問本機的sshd、dhcp、ping等少數幾個服務
– trusted:允許任何訪問
– block:阻塞任何來訪請求(明確拒絕)
– drop:丟棄任何來訪的資料包(沒有迴應,直接丟棄,節省資源) 資料包內容: 源IP地址 目標IP地址 資料 防火牆判定的規則:匹配及停止
1.檢視資料包中源IP地址,檢視自己所有區域規則,哪一個區域有該IP地址規則,則進入該區域 2.進入預設區域 (public)root使用者可以修改預設區域 #################################################
預設區域的修改
虛擬機器Server0:
]# firewall-cmd --get-default-zone #檢視預設區域
虛擬機器Desktop0:
]# ping 172.25.0.11 #可以通訊 虛擬機器Server0:
]# firewall-cmd --set-default-zone=block #修改預設區域
]# firewall-cmd --get-default-zone
虛擬機器Desktop0:
]# ping 172.25.0.11 #不可以通訊,有迴應 虛擬機器Server0:
]# firewall-cmd --set-default-zone=drop
]# firewall-cmd --get-default-zone
虛擬機器Desktop0:
]# ping 172.25.0.11 #不可以通訊,沒有迴應 ############################################
常見網際網路應用協議:
http:超文字傳輸協議 預設埠:80
https:安全超文字傳輸協議 預設埠:443
ftp:檔案傳輸協議 預設埠:21
tftp:簡單檔案傳輸協議 預設埠:69
DNS:域名解析協議 預設埠:53
telnet:遠端管理協議 預設埠:23
smtp:郵件協議(使用者發郵件) 預設埠:25
pop3:郵件協議(使用者收郵件) 預設埠:110
snmp:網路管理協議 預設埠:161 public區域的服務的協議新增 虛擬機器Server0:
]# firewall-cmd --set-default-zone=public #修改預設區域
]# firewall-cmd --get-default-zone
]# firewall-cmd --zone=public --list-all #檢視區域規則
虛擬機器Desktop0:
]# firefox 172.25.0.11 #不可以訪問 虛擬機器Server0:在public區域新增規則,新增服務訪問協議http
]# firewall-cmd --zone=public --add-service=http
]# firewall-cmd --zone=public --list-all
虛擬機器Desktop0:
]# firefox 172.25.0.11 #可以訪問 ###############################################
防火牆實現永久策略 • 配置規則的位置
– 永久(permanent)
虛擬機器Server0:
]# firewall-cmd --reload #重新載入防火牆所有永久策略
]# firewall-cmd --zone=public --list-all
]# firewall-cmd --permanent --zone=public --add-service=http ]# firewall-cmd --zone=public --list-all
]# firewall-cmd --reload
]# firewall-cmd --zone=public --list-all 臨時刪除
]# firewall-cmd --zone=public --remove-service=http
永久刪除
]# firewall-cmd --permanent --zone=public --remove-service=http ]# firewall-cmd --reload ##################################################
源IP地址規則的新增 虛擬機器Server0:單獨拒絕Desktop0訪問 ]# firewall-cmd --zone=block --add-source=172.25.0.10
]# firewall-cmd --zone=block --list-all
]# firewall-cmd --zone=block --remove-source=172.25.0.10 ################################################
埠:服務或程式或協議的編號 資料包內容: 源IP地址 目標IP地址 資料 目標埠 root可以改變服務或程式或協議的埠
也可以讓一個服務具備多個埠
• 本地應用的埠重定向(5423 -----> 80) – 從客戶機訪問5423 的請求,自動對映到本機 80
– 比如,訪問以下兩個地址可以看到相同的頁面:
客戶端訪問--->172.25.0.11:5423----》防火牆---》172.25.0.11:80 虛擬機器Server0:
]# firewall-cmd --zone=public --list-all ]# firewall-cmd --permanent --zone=public
--add-forward-port=port=5423:proto=tcp:toport=80 ]# firewall-cmd --reload //過載配置 虛擬機器Desktop0:
[[email protected] ~]# firefox 172.25.0.11:5423 ################################################
配置使用者環境 alias別名設定
• 檢視已設定的別名
– alias [別名名稱]
• 定義新的別名
– alias 別名名稱= '實際執行的命令列'
• 取消已設定的別名
– unalias [別名名稱] 使用者初始化檔案
• 影響指定使用者的 bash 解釋環境
– ~/.bashrc,每次開啟 bash 終端時生效 • 影響所有使用者的 bash 解釋環境
– /etc/bashrc,每次開啟 bash 終端時生效 [[email protected] ~]# vim /root/.bashrc
# .bashrc
alias hello='echo hello' [[email protected] ~]# vim /home/student/.bashrc
# .bashrc
alias hi='echo hi' [[email protected] ~]# vim /etc/bashrc
# /etc/bashrc
alias abc='echo abc' 重新遠端管理測試 ################################################
在 server0 上建立 /root/foo.sh 指令碼
1)當執行/root/foo.sh redhat,輸出為fedora
2)當執行/root/foo.sh fedora,輸出為redhat
3)當沒有任何引數或者引數不是 redhat 或者 fedora時,
其錯誤輸出產生以下資訊: /root/foo.sh redhat|fedora [[email protected] ~]# vim /root/foo.sh
#!/bin/bash
if [ $# -eq 0 ];then
echo '/root/foo.sh redhat|fedora' >&2 #正確變成錯誤
exit 3 #程式執行退出狀態值
elif [ $1 == redhat ];then
echo fedora
elif [ $1 == fedora ];then
echo redhat
else
echo '/root/foo.sh redhat|fedora' >&2 #正確變成錯誤
exit 4 #程式執行退出狀態值
fi
[[email protected] ~]#
##############################################
案例5:編寫一個批量新增使用者指令碼
在 server0 上建立 /root/batchusers 指令碼
1)此指令碼要求提供使用者名稱列表檔案作為引數
2)如果沒有提供引數,此指令碼應該給出提示
Usage: /root/batchusers,退出並返回相應值
3)如果提供一個不存在的檔案,此指令碼應該給出提
示 Input file not found,退出並返回相應值
4)新使用者的登入Shell為 /bin/false,無需設定密碼
5)使用者列表測試檔案:
[
duanwu
zhongqiu
zhsan
lisi
[[email protected] ~]# vim /root/batchusers
#!/bin/bash
if [ $# -eq 0 ];then
echo 'Usage: /root/batchusers' >&2
exit 2
elif [ -f $1 ];then
for i in `cat $1`
do
useradd -s /bin/false $i &> /dev/null
echo $i建立成功
done
else
echo 'Input file not found' >&2
exit 3
fi
[[email protected] ~]# /root/batchusers /root/userlist ################################################
系統安全保護 SELinux概述
• Security-Enhanced Linux
– 美國NSA國家安全域性主導開發,一套增強Linux系統安
全的強制訪問控制體系
• SELinux的執行模式
– enforcing(強制)、permissive(寬鬆)
– disabled(徹底禁用) 任何模式變成disabled(徹底禁用),都需要經歷重起系統 • 切換執行模式
– 臨時切換:setenforce 1|0
– 固定配置:/etc/selinux/config 檔案 虛擬機器Server0與虛擬機器Desktop0
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce 0 #臨時修改模式
[[email protected] ~]# getenforce
Permissive [[email protected] ~]# vim /etc/selinux/config #永久修改
SELINUX=permissive
#################################################
搭建基本的Web服務 1.安裝httpd軟體包
[[email protected] ~]# yum -y install httpd 2.重起httpd服務
[[email protected] ~]# systemctl restart httpd
[[email protected] ~]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
[[email protected] ~]# 3.本機訪問測試
[[email protected] ~]# firefox 172.25.0.11 4.書寫網頁檔案
預設存放網頁檔案路徑:/var/www/html
預設網頁檔名稱:index.html
[[email protected] ~]# vim /var/www/html/index.html
<marquee><font color=red><h1>NSD1810 陽光明媚
滾動 字型顏色 紅色 最大字型 [[email protected] ~]# firefox 172.25.0.11
搭建基本FTP服務 FTP:檔案傳輸協議 1.安裝vsftpd軟體包
[[email protected] ~]# yum -y install vsftpd 2.重起vsftpd服務
[[email protected] ~]# systemctl restart vsftpd
[[email protected] ~]# systemctl enable vsftpd
FTP預設共享路徑:/var/ftp 3.本機訪問測試
[[email protected] ~]# firefox ftp://172.25.0.11 [[email protected] ~]# cp /etc/redhat-release /var/ftp [[email protected] ~]# firefox ftp://172.25.0.11 ################################################
防火牆規則管理
作用:過濾與隔離 允許出站,過濾入站
硬體防火牆
軟體防火牆 RHEL7的防火牆體系
• 系統服務:firewalld
• 管理工具:firewall-cmd、firewall-config
預設安全區域
• 根據所在的網路場所區分,預設保護規則集
– public:僅允許訪問本機的sshd、dhcp、ping等少數幾個服務
– trusted:允許任何訪問
– block:阻塞任何來訪請求(明確拒絕)
– drop:丟棄任何來訪的資料包(沒有迴應,直接丟棄,節省資源) 資料包內容: 源IP地址 目標IP地址 資料 防火牆判定的規則:匹配及停止
1.檢視資料包中源IP地址,檢視自己所有區域規則,哪一個區域有該IP地址規則,則進入該區域 2.進入預設區域 (public)root使用者可以修改預設區域 #################################################
預設區域的修改
虛擬機器Server0:
]# firewall-cmd --get-default-zone #檢視預設區域
虛擬機器Desktop0:
]# ping 172.25.0.11 #可以通訊 虛擬機器Server0:
]# firewall-cmd --set-default-zone=block #修改預設區域
]# firewall-cmd --get-default-zone
虛擬機器Desktop0:
]# ping 172.25.0.11 #不可以通訊,有迴應 虛擬機器Server0:
]# firewall-cmd --set-default-zone=drop
]# firewall-cmd --get-default-zone
虛擬機器Desktop0:
]# ping 172.25.0.11 #不可以通訊,沒有迴應 ############################################
常見網際網路應用協議:
http:超文字傳輸協議 預設埠:80
https:安全超文字傳輸協議 預設埠:443
ftp:檔案傳輸協議 預設埠:21
tftp:簡單檔案傳輸協議 預設埠:69
DNS:域名解析協議 預設埠:53
telnet:遠端管理協議 預設埠:23
smtp:郵件協議(使用者發郵件) 預設埠:25
pop3:郵件協議(使用者收郵件) 預設埠:110
snmp:網路管理協議 預設埠:161 public區域的服務的協議新增 虛擬機器Server0:
]# firewall-cmd --set-default-zone=public #修改預設區域
]# firewall-cmd --get-default-zone
]# firewall-cmd --zone=public --list-all #檢視區域規則
虛擬機器Desktop0:
]# firefox 172.25.0.11 #不可以訪問 虛擬機器Server0:在public區域新增規則,新增服務訪問協議http
]# firewall-cmd --zone=public --add-service=http
]# firewall-cmd --zone=public --list-all
虛擬機器Desktop0:
]# firefox 172.25.0.11 #可以訪問 ###############################################
防火牆實現永久策略 • 配置規則的位置
– 永久(permanent)
虛擬機器Server0:
]# firewall-cmd --reload #重新載入防火牆所有永久策略
]# firewall-cmd --zone=public --list-all
]# firewall-cmd --permanent --zone=public --add-service=http ]# firewall-cmd --zone=public --list-all
]# firewall-cmd --reload
]# firewall-cmd --zone=public --list-all 臨時刪除
]# firewall-cmd --zone=public --remove-service=http
永久刪除
]# firewall-cmd --permanent --zone=public --remove-service=http ]# firewall-cmd --reload ##################################################
源IP地址規則的新增 虛擬機器Server0:單獨拒絕Desktop0訪問 ]# firewall-cmd --zone=block --add-source=172.25.0.10
]# firewall-cmd --zone=block --list-all
]# firewall-cmd --zone=block --remove-source=172.25.0.10 ################################################
埠:服務或程式或協議的編號 資料包內容: 源IP地址 目標IP地址 資料 目標埠 root可以改變服務或程式或協議的埠
也可以讓一個服務具備多個埠
• 本地應用的埠重定向(5423 -----> 80) – 從客戶機訪問5423 的請求,自動對映到本機 80
– 比如,訪問以下兩個地址可以看到相同的頁面:
客戶端訪問--->172.25.0.11:5423----》防火牆---》172.25.0.11:80 虛擬機器Server0:
]# firewall-cmd --zone=public --list-all ]# firewall-cmd --permanent --zone=public
--add-forward-port=port=5423:proto=tcp:toport=80 ]# firewall-cmd --reload //過載配置 虛擬機器Desktop0:
[[email protected] ~]# firefox 172.25.0.11:5423 ################################################
配置使用者環境 alias別名設定
• 檢視已設定的別名
– alias [別名名稱]
• 定義新的別名
– alias 別名名稱= '實際執行的命令列'
• 取消已設定的別名
– unalias [別名名稱] 使用者初始化檔案
• 影響指定使用者的 bash 解釋環境
– ~/.bashrc,每次開啟 bash 終端時生效 • 影響所有使用者的 bash 解釋環境
– /etc/bashrc,每次開啟 bash 終端時生效 [[email protected] ~]# vim /root/.bashrc
# .bashrc
alias hello='echo hello' [[email protected] ~]# vim /home/student/.bashrc
# .bashrc
alias hi='echo hi' [[email protected] ~]# vim /etc/bashrc
# /etc/bashrc
alias abc='echo abc' 重新遠端管理測試 ################################################