
3月25日,我们开放了
Linux Quest的注册,这是针对Linux操作系统的爱好者和专家的游戏。 一些统计数据:1117人注册了游戏,其中317人找到了至少一个钥匙,241人成功完成了第一阶段的任务,123-第二阶段成功完成了任务,70顺利通过了第三阶段。 今天我们的比赛已经结束,我们向胜利者表示祝贺!
- 亚历山大·泰德科夫(Alexander Teldekov)排名第一。
亚历山大对自己说,他是最典型的系统管理员。 居住在伏尔加格勒,管理着各种类Unix系统长达20年。 设法在Internet提供商,银行,系统集成商中工作。 现在,他在一家小型公司中远程工作,他为一个大型外国客户从事云基础架构。 喜欢看书,听音乐。 关于游戏,亚历山大说他喜欢整个游戏,他喜欢这样的难题。 在接受采访的一家公司中,我从事类似于Hackerrank的活动,这很有趣。 - 第二名-罗马·苏斯洛夫(Roman Suslov)。
莫斯科的小说。 他今年37岁。 他在Jet Infosystems担任Linux / Unix工程师。 为了工作,我必须管理Linux / Unix系统+ SAN并对其进行故障排除。 利益截然不同:Linux系统,编程,逆向工程,信息安全,Arduino。 关于游戏,Roman指出他总体上喜欢游戏。 “我略微弯曲了陀螺,并从灰色的日常生活中分心。 :)我想要更多的任务,否则我没有时间去体验游戏的结束方式。” - 第三个是alex3d。
Alex居住在莫斯科,从事软件开发。 “感谢您参加比赛,检查您的google-fu技能很有趣。”
同样在前10名玩家中的排名:
- 叶夫根尼·萨尔达耶夫(Yevgeniy Saldayev)
- 马克尔·莫赫纳切夫斯基
- 康斯坦丁·科诺索夫(Konstantin Konosov)
- 帕维尔·谢尔盖耶夫(Pavel Sergeev)
- 弗拉基米尔·博瓦耶夫(Vladimir Bovaev)
- 伊万·布诺夫(Ivan Bubnov)
- 帕夫洛klets
我们了解解决所有问题的方法很多,下面介绍一种可能的解决方案。
1.第一阶段
我们称其为“您确定管理员吗?”,因为任务非常简单-修复暖灯服务。
1.1。 有趣的事实:
在游戏的前15分钟,有两个玩家找到了第一把钥匙,在第一个小时,我们有三位领导者完成了任务。
1.2。 工作任务
您去了一家长期没有合适的IT专家的公司工作。 在开始清理之前,您需要解决一个严重的问题,该问题阻碍了办公室的工作。
一位清洁女工将电源电缆拖到服务器机柜上。 电源已恢复,但是一个非常重要的网站仍然无法正常工作。 该网站很重要,因为该公司不太关心信息安全,在该主页上,您可以从CEO的计算机上以明文找到管理员密码。
前几天,密码已更改,但每个人都忘记了新密码,主管无法工作。 有传言说这台机器上有密钥可以帮助我们解密会计凭证的备份。
每个人都在等待快速解决该问题!
1.3。 解决方案
1.首先,您需要在虚拟机中更改root密码才能访问它。 在启动时,我们注意到这是Ubuntu 16.04 Server。
要重置root密码,我们重新启动计算机,在启动时,显示grub菜单时,使用“ e”按钮转到Ubuntu项目的编辑。 我们编辑linux行,在末尾添加
init=/bin/bash
。 我们通过Ctrl + x加载,得到bash。 用rw重新挂载根目录,更改密码:
$ mount -o remount,rw /dev/mapper/ubuntu--vg-root $ passwd
不要忘记同步,重新启动。
2.条件表明该Web服务器对我们不起作用,我们看一下:
$ curl localhost Not Found The requested URL / was not found on this server. Apache/2.4.18
也就是说,实际上,Apache正在运行,但是响应代码为404。我们看一下配置:
$ vim /etc/apache2/sites-enabled/000-default.conf
还有一个键-StevenPaulSteveJobs。
我们检查路径
/usr/share/WordPress
这不是,但是有
/usr/share/wordpress
。 我们更正配置,然后重新启动Apache。
$ systemctl restart apache2
3.我们再试一次,出现错误:
Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /usr/share/wordpress/wp-includes/wp-db.php on line 1488
数据库未运行?
$ systemctl status mysql Active: active (running)
怎么了 有必要了解。 为此,您需要访问MySQL,
文档中对此进行了描述。 文档中的要点之一建议我们在
/etc/mysql/mysql.conf.d/mysqld.cnf
编写
skip-grant-tables
选项。 这也是关键-AugustaAdaKingByron。
我们将权限分配给用户
'wp'@'localhost'
。 我们启动MySQL,使其可通过网络访问,并在配置中对
skip-networking
选项进行注释。
4.采取措施后,Web服务器将启动,但该站点仍然无法正常运行,原因是
Warning: require_once(/usr/share/wordpress/wp-content/themes/twentysixteen/footer.php): failed to open stream: Permission denied in /usr/share/wordpress/wp-includes/template.php on line 562
我们更正了该文件的权利。
$ chmod 644 /usr/share/wordpress/wp-content/themes/twentysixteen/footer.php
我们刷新页面,转到站点并找到密钥-BjarneStroustrup! 我们找到了所有三个密钥,我们的主管可以工作,我们对会计文件进行了解密。 每个人都很高兴,您在建立公司的基础架构,备份和安全性方面还有很多工作要做。
2.第二阶段
有必要解决收集分析的问题。 每个人都喜欢分析-谁去哪里,去哪里以及走多少路。 我们提出了一个案例,生活中的所有工程师都可能以一种或另一种形式遇到。
2.1。 有趣的事实
我们的一个玩家在游戏的前10分钟输入了正确的密钥,并且在第一个小时,我们得到了一位负责处理任务的领导者。
2.2。 工作任务
您去公司工作,经理们来找您,要求您查找非洲发给谁的信。 您需要在上面建立前21个收件人地址。 收件人地址的首字母是关键。 一件事:通过其发送信件的邮件服务器不会加载。 每个人都在等待快速解决该问题!
2.3。 解决方案
1.由于fstab中不存在交换分区,因此未加载服务器,引导时系统尝试安装它并崩溃。 如何开机?
下载映像,我们从Live CD / DVD(故障排除-> Rescue)启动,下载了CentOS 7,挂载系统,编辑
/etc/fstab
。 在这里,我们找到了第一个钥匙-GottfriedWilhelm11646Leibniz!
创建交换:
$ lvcreate -n swap centos -L 256M $ sync && reboot
2.与往常一样,没有密码;您需要在虚拟机上更改root密码。 我们已经在第一个任务中做到了这一点。 我们进行了更改并成功进入服务器,但是它立即进入了重新引导状态。 服务器超载的速度使您甚至没有时间仔细查看所有日志。 如何理解发生了什么?
再次,我们从livecd引导,仔细研究系统日志,以防万一我们以冠冕为荣,因为这种频率很高。 在那里,我们找到了问题,第二把钥匙是Alan1912MathisonTuring!
必须删除
/etc/crontab
echo b > /proc/sysrq-trigger
行或将其注释掉。
3.之后,服务器启动,您可以完成管理人员的任务:“非洲的地址是什么?” 该信息通常是公开可用的。 您可以使用短语“ ip address africa”,“ geoip database”在Internet上找到此信息。 要解决此问题,可以使用免费的地址分发库(geoip)。 我们使用了
MaxMind GeoLite2数据库作为参考,该数据库可在Creative Commons Attribution-ShareAlike 4.0许可下获得。
让我们尝试仅使用Linux系统实用程序解决问题,但通常可以通过多种方式解决:使用文本过滤实用程序以及使用各种编程语言编写脚本。
首先,我们只需要从邮件日志
/var/log/maillog
获得“ IP发件人-收件人”对(
/var/log/maillog
建立一个收件人电子邮件表-IP发件人)。 可以使用以下命令完成此操作:
$ cat /var/log/maillog | fgrep -e ' connect from' -e 'status=sent' | sed 's/[]<>[]/ /g' | awk '/connect from/ {ip=$11} /status=sent/ {print $10" "ip}' > log1.txt
在继续编译非洲地址数据库之前,我们先查看发送者的顶级IP地址。
$ cat log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n 40 5206 L2JhbjAbM67GA99jg@mail.ru 4165 iHKTBkegOQa6fIALq@mail.ru 3739 nHkcBl7BdgXxijSYD7@mail.ru 3405 SMAzPJAzbl9vp4hAXo@mail.ru 3346 xILz6d7P@mail.ru
在所有邮件中,从顶部开始的前三个收件人通过字母数清楚地加以区分。 如果您将发件人的IP地址grep发送到此top-3中的地址,则可以看到某些网络的明显优势:
$ cat log1.txt | fgrep 'L2JhbjAbM67GA99jg@mail.ru' | cut -d' ' -f2 | sort | cut -d'.' -f1 | uniq -c | sort -r | head 831 105 806 41 782 197 664 196 542 154 503 102 266 156 165 45 150 160 108 165
大部分网络105 / 8、41 / 8、196 / 8,197 / 8由AFRINIC分配-AFRINIC是分配Internet资源的五个区域Internet注册服务商之一。 AFRINIC在非洲分配地址空间。 而41/8完全指非洲。
https://www.nic.ru/whois/?searchWord=105.0.0.0 https://www.nic.ru/whois/?searchWord=41.0.0.0
因此,问题的答案实际上在于日志本身。
$ cat log1.txt | fgrep -e '105.' -e '41.' -e '196.' -e '197.' -e '154.' -e '102.' | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21 4209 L2JhbjAbM67GA99jg@mail.ru 3313 iHKTBkegOQa6fIALq@mail.ru 2704 nHkcBl7BdgXxijSYD7@mail.ru 2215 uvRbp1O@mail.ru 1774 sPmMsmmFiV@mail.ru 1448 BtG3aHgQgCKuze2AKuRH@mail.ru 1233 eQpuuQ2uQdbwRL3@mail.ru 958 nJT5dpaBZ@mail.ru 862 ef4WbQiB@mail.ru 762 dQCqKL6eVminFfH7wLA@mail.ru 632 ifq6Rd1HxuCQOdO9@mail.ru 539 cFwm2ssypMmx1sA7@mail.ru 531 twtTnr4G@mail.ru 431 TSrczgYASrR11Hs3qCi@mail.ru 380 o3r3exc3OL@mail.ru 357 rzmjr2VAHK@mail.ru 348 vnPr6YjJ3ndw@mail.ru 312 anOjFXrwOtLP2Rl1Vcz6@mail.ru 289 dvny5zHmRW8fiT@mail.ru 282 sgg9jPxFDYvzw8Kr@mail.ru 274 tKSevzA7GntJ@mail.ru
至此,我们得到字符串“ LinuxBenedictTorvadst”。
正确的密钥是LinusBenedictTorvalds。
结果字符串包含与3个极端字符中的正确键有关的错字。 这是由于以下事实:我们选择的网络未完全分配给非洲国家,以及如何通过日志中的IP地址分配电子邮件。
通过充分了解分配给非洲国家的最大网络,您可以获得确切的答案:
$ cat log1.txt | fgrep -e' '105.{30..255}. -e' '41. -e' '196.{64..47}. -e' '196.{248..132}. -e' '197.{160..31}. -e' '154.{127..255}. -e' '102.{70..255}. -e' '156.{155..255}. | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21 3350 L2JhbjAbM67GA99jg@mail.ru 2662 iHKTBkegOQa6fIALq@mail.ru 2105 nHkcBl7BdgXxijSYD7@mail.ru 1724 uvRbp1O@mail.ru 1376 sPmMsmmFiV@mail.ru 1092 BtG3aHgQgCKuze2AKuRH@mail.ru 849 eQpuuQ2uQdbwRL3@mail.ru 712 nJT5dpaBZ@mail.ru 584 ef4WbQiB@mail.ru 463 dQCqKL6eVminFfH7wLA@mail.ru 365 ifq6Rd1HxuCQOdO9@mail.ru 269 cFwm2ssypMmx1sA7@mail.ru 225 twtTnr4G@mail.ru 168 TSrczgYASrR11Hs3qCi@mail.ru 142 o3r3exc3OL@mail.ru 111 rzmjr2VAHK@mail.ru 96 vnPr6YjJ3ndw@mail.ru 78 anOjFXrwOtLP2Rl1Vcz6@mail.ru 56 lHzWiB7ExvRtSbAcU9@mail.ru 56 dvny5zHmRW8fiT@mail.ru 40 sgg9jPxFDYvzw8Kr@mail.ru
这个问题也可以用另一种方式解决。
下载MaxMind,解压缩,下面的三个团队也解决了我们的问题。
$ cat GeoLite2-Country-Locations-ru.csv | grep "" | cut -d',' -f1 > africaIds.txt $ grep -Ff africaIds.txt GeoLite2-Country-Blocks-IPv4.csv | cut -d',' -f1 > africaNetworks.txt $ grepcidr -f africaNetworks.txt log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n21
最终,我们最终以某种方式对统计数据进行了统计,管理人员获得了工作所需的数据!
3.第三阶段
第三阶段与第一阶段有些相似-您还需要修理暖灯服务,但是比第一阶段的工作更困难。
3.1。 有趣的事实
在开始的15分钟内,三名玩家找到了第一把钥匙,在比赛开始后2小时20分钟,我们的获胜者完成了任务。
3.2。 工作任务
您去的公司工作,所有公司文件都存储在内部Wiki服务器上。 去年,一名工程师除了为服务器订购了3个新磁盘外,还订购了3个新磁盘,理由是为了系统容错,必须将磁盘放置在某些阵列中。 不幸的是,在安装后几周,工程师去了印度休息,没有回来。
几年来,服务器正常运行,但是几天前,公司的网络遭到了黑客攻击。 根据指示,安全人员从服务器中删除了磁盘并将其发送给您。 在运输过程中,丢失了一个磁盘。
您需要还原Wiki,首先要关注Wiki页面的内容。 该Wiki某个页面上的一段文字是来自1C服务器的密码,因此迫切需要对其进行解锁。
另外,在Wiki页面上的某个地方或其他地方,有来自日志服务器和视频监视服务器的密码,也希望恢复密码,如果没有密码,就无法调查此事件。 与往常一样,他们希望从实际操作中解决问题!
3.3。 解决方案
1.我们尝试依次从拥有的驱动器启动,并且到处都收到相同的消息:
No bootable medium found! System halted
有必要从某个东西引导。 再次从Live CD / DVD中恢复启动(故障排除->救援)。 引导时,我们尝试找到引导分区,找不到分区,进入外壳。 我们正在尝试了解磁盘的内容和方式。 已知其中有三个。 在CentOS的第7版中,有更多用于此目的的工具,其中有
blkid
或
lsblk
向我们显示有关磁盘的所有信息。
如何和怎么做:
$ ls /dev/sd*
立即清楚的是
/dev/sdb1 - ext4 /dev/sdb2 - lvm /dev/sda1 /dev/sdc1 - /dev/sda2 /dev/sdc2 -
挂载sdb1,很明显这是CentOS 6的启动分区。
$ mkdir /mnt/sdb1 && mount /dev/sdb1 /mnt/sdb1
显然,我们转到了grub部分,并在其中找到了第一个键-James191955Gosling。
2.我们在使用LVM时研究pv和lvs。 我们看到应该有2个物理卷,其中一个没有定位,并向丢失的uid发誓。 我们看到逻辑上应该有两个卷:root和swap,而root则部分丢失(volume的P属性)。 坐骑不起作用,但是对不起! 我们真的需要他。
还有2个磁盘,请查看它们,组装并安装:
$ mdadm --examine --verbose --scan $ mdadm --assemble --verbose --scan $ mkdir /mnt/md127 && mount /dev/md127 /mnt/md127
我们看,很明显,这是CentOS 6的启动分区,是
/dev/sdb1
上已经存在的分区,在这里,同样的键是James191955Gosling!
我们看一下
/dev/md127
。
$ mdadm --detail /dev/md127
我们看到它应该由4个磁盘组装而成,由两个
/dev/sda1
和
/dev/sdc1
,它们在系统中应该分别为2和4。 我们假设您还可以从
/dev/sda2
和
/dev/sdc2
建立一个数组。 目前尚不清楚为什么没有元数据,但这是出于在果阿的某个地方的管理员的良心。 我们假设应该有RAID10,尽管有很多选择。 我们收集:
$ mdadm --create --verbose /dev/md0 --assume-clean --level=10 --raid-devices=4 missing /dev/sda2 missing /dev/sdc2
我们来看blkid,pvs,lvs。 我们发现我们收集了以前缺乏的物理体积。
我们立即修复了lvroot并挂载了它,但首先激活了VG:
$ vgchange -ay $ mkdir /mnt/lvroot && mount /dev/mapper/vg_c6m1-lv_root /mnt/lvroot
一切都在那里,包括DennisBMacAlistairCRitchie键-根主目录中的-
/root/sweet
。
3.但是,我们正在尝试恢复服务器以使其正常启动。 来自
/dev/md0
(我们拥有一切)的所有逻辑卷c被拖到
/dev/sdb2
,整个服务器最初都在这里工作。
$ pvmove /dev/md0 /dev/sdb2 $ vgreduce vg_c6m1 /dev/md0
我们将服务器熄灭,取出1和3个磁盘,保留第二个磁盘,然后从Rescue中的Live CD / DVD启动。 我们找到引导部分,在grub中恢复引导加载程序:
root (hd0,0) setup (hd0)
我们撕下启动盘并成功启动,但是该站点无法正常工作。
4.有两个选项可以启动站点:从头开始配置Apache或使用已经通过php-fpm预先配置的nginx:
$ /etc/init.d/nginx start $ /etc/init.d/php-fpm start
最后,您需要启动MySQL:
$ /etc/init.d/mysqld start
它没有启动,解决方案位于
/var/log/mysql
。 一旦您解决了MySQL问题,该站点就会开始工作,主页上就会有一个键-RichardGCCMatthewGNUStallman! 现在,我们可以使用1C,并且员工将能够获得报酬。 与往常一样,您在构建公司的基础架构和安全性方面还有很多工作要做。
我们还可以再次共享一本有助于我们和参与者为游戏做准备的书籍清单:
linux.mail.ru/books 。
感谢您与我们在一起! 关注下一场比赛的公告!