Linux计算机基础之engineer DAY04

时间:2022-05-14 14:27:59
###############################################
案例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
[root@server0 ~]# 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
[root@server0 ~]# 
##############################################
案例5:编写一个批量添加用户脚本
在 server0 上创建 /root/batchusers 脚本
1)此脚本要求提供用户名列表文件作为参数
2)如果没有提供参数,此脚本应该给出提示
Usage: /root/batchusers,退出并返回相应值
3)如果提供一个不存在的文件,此脚本应该给出提
示 Input file not found,退出并返回相应值
4)新用户的登录Shell为 /bin/false,无需设置密码
5)用户列表测试文件:
[root@server0 ~]# cat /root/userlist
duanwu
zhongqiu
zhsan
lisi
[root@server0 ~]# 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
[root@server0 ~]# /root/batchusers  /root/userlist
################################################
系统安全保护
SELinux概述
• Security-Enhanced Linux
– 美国NSA国家安全局主导开发,一套增强Linux系统安
全的强制访问控制体系

• SELinux的运行模式
– enforcing(强制)、permissive(宽松)
– disabled(彻底禁用)
 任何模式变成disabled(彻底禁用),都需要经历重起系统
• 切换运行模式
– 临时切换:setenforce 1|0
– 固定配置:/etc/selinux/config 文件
虚拟机Server0与虚拟机Desktop0       
[root@server0 ~]# getenforce
Enforcing
[root@server0 ~]# setenforce 0   #临时修改模式
[root@server0 ~]# getenforce
Permissive
[root@server0 ~]# vim /etc/selinux/config  #永久修改
SELINUX=permissive

#################################################
搭建基本的Web服务
1.安装httpd软件包
[root@server0 ~]# yum -y install httpd
2.重起httpd服务
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
[root@server0 ~]#
3.本机访问测试
[root@server0 ~]# firefox 172.25.0.11
4.书写网页文件
   默认存放网页文件路径:/var/www/html
   默认网页文件名称:index.html
[root@server0 ~]# vim /var/www/html/index.html
<marquee><font color=red><h1>NSD1810 阳光明媚
   滚动          字体颜色  红色      最大字体   
[root@server0 ~]#  firefox  172.25.0.11

搭建基本FTP服务
  FTP:文件传输协议
1.安装vsftpd软件包
[root@server0 ~]# yum -y install vsftpd
2.重起vsftpd服务
[root@server0 ~]#  systemctl restart vsftpd
[root@server0 ~]#  systemctl enable vsftpd

  FTP默认共享路径:/var/ftp
3.本机访问测试
[root@server0 ~]# firefox  ftp://172.25.0.11
[root@server0 ~]# cp /etc/redhat-release /var/ftp
[root@server0 ~]# 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:
[root@desktop0 ~]# firefox 172.25.0.11:5423
################################################
配置用户环境
alias别名设置
• 查看已设置的别名
– alias [别名名称]
• 定义新的别名
– alias 别名名称= '实际执行的命令行'
• 取消已设置的别名
– unalias [别名名称]
用户初始化文件
• 影响指定用户的 bash 解释环境
– ~/.bashrc,每次开启 bash 终端时生效
• 影响所有用户的 bash 解释环境
– /etc/bashrc,每次开启 bash 终端时生效
[root@server0 ~]# vim /root/.bashrc
# .bashrc
alias hello='echo hello'
[root@server0 ~]# vim /home/student/.bashrc
# .bashrc
alias hi='echo hi'
[root@server0 ~]# vim /etc/bashrc
# /etc/bashrc
alias abc='echo abc'
    重新远程管理测试
################################################