vm1 创建账户 netadm,softadm,uesradm,procadm;为所有的账户设置初始密码 123456
Useradd netadm
Passwd 123456
vm1 创建账户 devel1,devel2,devel3,test1,test2,test3;为所有账户设置初始密码 passwd
vm1 设置 test3 的账户过期时间为 2019-12-12.
chage -E 2019-12-12 test3
vm1 使用 passwd 命令临时锁定 devel3 账户
chage -l test3
passwd -S devel3
devel3 LK 2018-06-09 0 99999 7 -1 (密码已被锁定。)
vm1 为/etc/resolv.conf 文件添加 i 锁定属性,为/etc/hosts 添加 a 仅可追加属性
[root@vm1 ~]# chattr +i /etc/resolv.conf
[root@vm1 ~]# lsattr /etc/resolv.conf
----i----------- /etc/resolv.conf
[root@vm1 ~]# chattr +a /etc/hosts
[root@vm1 ~]# lsattr /etc/resolv.conf
----i----------- /etc/resolv.conf
vm1 用 test1 用户登陆系统,使用 su 命令切换为 test2 账户在 tmp 下创建一个文件(非
交互模式)
[root@vm1 ~]# su - test1
[test1@vm1 ~]$ su - test2 -c "mkdir /tmp/test"
[test2@vm1 ~]$ ls /tmp/
systemd-private-c20f480e7d4645c388b2a5ac93a5ca84-chronyd.service-t8zJps test
vm1 使用 root 登陆系统,设置 sudo 权限,要求如下:
vm1 让 netadm 能以 root 的身份执行网络管理的任务(参考 sudo 命令别名)
[root@vm1 ~]# vim /etc/sudoers
netadm ALL=(ALL) NETWORKING
[root@vm1 ~]# su - netadm
上一次登录:六 6月 9 15:10:36 CST 2018pts/0 上
[netadm@vm1 ~]$ sudo -l
vm1 让 softadm 能以 root 的身份执行软件管理的任务
visudo
softadm ALL=(ALL) /usr/bin/systemctl
[root@vm1 ~]# su - softadm
[softadm@vm1 ~]$ sudo -l
[softadm@vm1 ~]$ sudo systemctl start httpd
vm1 让 useradm 能以 root 的身份执行账户管理的任务(不能修改 root 密码)
[root@vm1 ~]# visudo
useradm ALL=(ALL) /usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,!/usr
/sbin/user* *root
[root@vm1 ~]# su - uesradm
[uesradm@vm1 ~]$ sudo -l
[uesradm@vm1 ~]$ sudo useradd newuser01
[uesradm@vm1 ~]$ sudo passwd newuser01
更改用户 newuser01 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[uesradm@vm1 ~]$ sudo passwd root
对不起,用户 uesradm 无权以 root 的身份在 vm1 上执行 /bin/passwd root。
vm1 让 procadm 能以 root 的身份执行进程管理任务(如杀死进程)
[root@vm1 ~]# visudo
procadm ALL=(ALL) PROCESSES
vm1 设置虚拟机 ssh 配置,进入 root 远程本机,设置 sshd 黑名单,禁止 test3 从任何
主机远程本机
[root@vm1 ~]# vim /etc/ssh/sshd_config
DenyUsers test3
[root@rootroom9pc01 ~]# ssh -X test1@192.168.2.20
[root@vm1 ~]# systemctl restart sshd
Test3@192.168.2.20's password:
Permission denied, please try again.
Test3@192.168.2.20's password:
vm1 真实主机创建一对 ssh 密钥,让真实机可以无密码远程虚拟机,观察密钥在虚拟机
中的位置
ssh-keygen -t rsa
ls -lh ~/.ssh/id_rsa*
[root@rootroom9pc01 ~]# ssh-copy-id root@192.168.2.20
[root@rootroom9pc01 ~]# ssh -X root@192.168.2.20
[root@vm1 ~]# tail -2 ~/.ssh/authorized_keys
在 vm1 主机使用 gpg 软件对/etc/rc.d/rc.local 文件进行对称加密,并将加密文件传给
vm2
[root@vm1 ~]# scp /etc/rc.d/rc.local.gpg root@192.168.2.30:/root
root@192.168.2.30's password:
在 vm2 对主机 vm1 传来的加密文件进行解密
[root@vm2 ~]# gpg -d rc.local.gpg > rc.local
在 vm1 上使用 gpg 创建非对称密钥对,并将公钥到处传给 vm2
在 vm2 主机将 vm1 传过来的公钥导入,并使用公钥对/etc/sysctl.conf 文件加密,并将
加密文件传给 vm1,在 vm1 主机使用自己的私钥解密该文件
[root@vm1 ~]# gpg --gen-key
[root@vm1 ~]# gpg --list-keys
[root@vm1 ~]# gpg -a --export UserA > /tmp/UserA.pub
[root@vm1 ~]# scp /tmp/UserA.pub 192.168.2.30:/tmp/
[root@vm1 ~]# ls
[root@vm1 ~]# gpg -d sysctl.conf.gpg > sysctl.conf
[root@vm1 ~]# ls
[root@vm1 ~]# cat sysctl.conf
[root@vm2 ~]# gpg --import /tmp/UserA.pub
[root@vm2 ~]# ls
[root@vm2 ~]# gpg -e -r /etc/sysctl.conf
[root@vm2 ~]# scp /etc/sysctl.conf.gpg 192.168.2.20:/root
在 vm1 主机使用私钥给文件/etc/sysctl.conf 文件签名,在 vm2 主机验证签名
[root@vm1 ~]# gpg -b /etc/sysctl.conf
[root@vm1 ~]# ls -lh /etc/sysctl.conf*
-rw-r--r--. 1 root root 449 5月 3 2017 /etc/sysctl.conf
-rw-r--r--. 1 root root 287 6月 9 16:54 /etc/sysctl.conf.sig
[root@vm1 ~]# scp /etc/sysctl.conf* 192.168.2.30:/root
[root@vm2 ~]# gpg --verify sysctl.conf.sig sysctl.conf
gpg: 于 2018年06月09日 星期六 16时54分52秒 CST 创建的签名,使用 RSA,钥匙号 5A6EAA70
gpg: 完好的签名,来自于“UserA (UserA) <UserA@163.com>”
使用 aide 软件对/bin/和/sbin/目录进行入侵检测
在 vm2 上安装 nginx,vsftpd,mariadb,mariadb-server,并启动所有对应的服务
[root@rootroom9pc01 ~]# scp '/root/桌面/mysourse/lnmp_soft.tar.gz' '/root/桌面/mysourse/nginx-1.12.2.tar.gz' root@192.168.2.30:/root
[root@vm2 ~]# yum -y install gcc pcre-devel openssl-devel
[root@vm2 ~]# useradd -s /sbin/nologin nginx
[root@vm2 ~]# tar -xvf nginx-1.12.2.tar.gz
[root@vm2 ~]# cd nginx-1.12.2/
[root@vm2 ~]# ./configure --user=nginx --group=nginx --with-http_ssl_module
[root@vm2 ~]# make && make install
[root@vm2 ~]# yum -y install vsftpd
[root@vm2 ~]# yum -y install mariadb mariadb-server mariadb-devel
[root@vm2 ~]# /usr/local/nginx/sbin/nginx
[root@vm2 ~]# systemctl start mariadb
[root@vm2 ~]# systemctl start vsftpd
在 vm1 上使用 nmap 扫描 vm2 主机的所有 TCP 服务
[root@vm1 ~]# yum -y install nmap
[root@vm1 ~]# nmap -sT 192.168.2.30
Starting Nmap 6.40 ( http://nmap.org ) at 2018-06-09 17:25 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 192.168.2.30
Host is up (0.00097s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
3306/tcp open mysql
MAC Address: 52:54:00:40:9E:7F (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds
在 vm2 上配置 nginx 用户认证,并使用 tcpdump 抓取 80 端口相关的数据包,注意默
认抓取的是第一个网卡的数据,抓取其他网卡可以使用-i 选项
[root@vm2 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
auth_basic "Input Password" ;#认证提示符
auth_basic_user_file "/usr/local/nginx/pass" ;#认证密码文件
[root@vm2 ~]# yum -y install httpd-tools
[root@vm2 ~]# htpasswd -c /usr/local/nginx/pass tom
New password:
Re-type new password:
Adding password for user tom
[root@vm2 ~]# cat /usr/local/nginx/pass
tom:$apr1$9BkN1IZT$M6ugWM8Ok3h0anYhMt2E/.
[root@vm2 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@vm1 ~]# firefox http://192.168.2.30
[root@vm2 ~]# ss -untlp | grep 80
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=8071,fd=6),("nginx",pid=7340,fd=6))
[root@vm2 ~]#
在 vm1 上使用 firefox 访问 vm2 的页面,输入账户与密码,到 vm2 观察数据包
[root@vm1 ~]# firefox http://192.168.2.30
[root@vm2 ~]# tcpdump -A -i eth1 host 192.168.2.30 and tcp port 80
Host: 192.168.2.30
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Authorization: Basic dG9tOjEyMzQ1Ng==
Connection: keep-alive
[root@vm2 ~]# echo dG9tOjEyMzQ1Ng== | base64 -d
tom:123456[roo
在 vm2 主机,使用 limit 模块对 nginx 限制并发,限制并发数量为 10,burst 为 10
在 vm2 主机,设置 nginx 拒绝所有非 POST 或 GET 的请求
在 vm2 主机,设置 nginx 防止 buffer 数据溢出
在 vm2 主机登陆 mariadb 服务器,创建一个可以从远程登陆的数据库账户
在 vm2 主机使用 tcpdump 对 3306 进行抓包,在 vm1 连接 vm2 的数据库,进行查询操
作,回到 vm2 观察抓取的数据包信息
在 vm2 安装 tomcat,并以 tomcat 身份降级启动 tomcat 服务
在 vm2 主机执行如下命令:
mkdir -p /root/{source1.0,surce2.0}/test/
echo “hehe” > /root/source1.0/test.conf
echo “haha” > /root/source2.0/test.conf
echo “hello” > /root/source1.0/test/hello.shecho “hello world” > /root/source2.0/test/hello.sh
cp /bin/find /root/source1.0/
cp /bin/find /root/source2.0/
echo “xyz” >> /root/source2.0/find
在 vm2 主机对/root/source1.0 和/root/source2.0 生成补丁文件,并使用 patch 工具对
source1 目录下的所有代码打补丁
准备 2 台虚拟机,配置如下:
vm1(eth1:192.168.2.20,设置网关为 192.168.2.30)
vm2(eth1:192.168.2.30,eth2:201.1.1.30),开启路由转发
vm3(eth2: 201.1.1.40,设置网关为 201.1.1.30)
在 vm2 主机设置防火墙规则:
禁止任何其他主机 ping 本机,但本机可以 ping 其他主机
禁止 192.168.2.20 通过 ssh 远程本机
通过 mac 地址禁止 vm3 访问本机的 ftp 服务
通过一条规则设置允许访问本机的 80,3306,25 端口
禁止任何主机通过本机的 eth2 网卡访问本机的 53 端口
禁止 vm2 转发任何与 ftp 有关的数据包
设置 SNAT 规则,来源于 192.168.2.0 网络的数据包,修改源地址为 201.1.1.30