!guide_close_btn!

每个极客都应该知道的Linux技巧(十一)

哈哈嘻嘻 2015-10-19 09:24:38 最新回复:2015-10-19 10:34:27
1869 2 0 1

到底是什么区分开普通的Linux用户和超级极客的呢?很简单:用在学习那些使长时工作转变为一瞬间工作的技巧、诀窍、秘诀和技术上的时间。如果你想提高效率而又不用做这些搜集资料的跑腿活儿,那接下来的内容可以帮助你更潇洒地工作,并且最大限度的利用你的电脑。本文中收集了50多条简单易学的Linux技巧,每天讲解5条,你开始享受这场饕餮盛宴吧!


51:通过ssh使用rsync

难度:中等

应用程序:Shell

rsync使大型目录结构保持同步。通过SSH使用tar远程复制一个文件系统的一部分是非常理想的,sync甚至更适合保持两台机器之间的文件系统的同步。为了使用SSH运行一个rsyns,传递给它一个-e转换:

  1. rsync -ave ssh greendome:/home/ftp/pub/ /home/ftp/pub/ 

注意从源端(在greendome上)来的文件说明后面的 / ,在源说明中,一个尾部的 / 告诉rsync这个目录的内容,但不是目录本身。为了将目录放入正在复制的内容的最高等级丢掉这个 /:

  1. rsync -ave ssh bcnu:/home/six . 

这将在 ~/six/目录下保持一个与bcnu:/home/six/上的任何东西同步的复制品。rsync默认只拷贝文件和目录,但是当源端移除了文件时并不会在目的端移除它们的拷贝。为了保持复制的精确性,包含–delete这个标志:

  1. rsync -ave ssh--delete greendome:~one/reports . 

现在当老的报表从greendome上的~one/reports/中移除了,在同步版本中,每次这个命令运行时,它们也将会从~six/public_html/reports/中移除。如果你在corn中像这样运行一条命令,记得丢掉v。这将会使输出稳定(除非rsync在运行中出现问题,在这种情况下你将会收到一封有错误输出的邮件)。使用SSH作为你的rsync运输方式,这样做的好处是使数据在网络传输过程中加密,并可以方便使用任何你已经用SSH客户端密钥建立的信任关系。

52:资源扫描

难度:中等

应用程序:nmap

例如,简单的TCP连接扫描可以在不需要root特权时进行:

一般来说,当人们想到nmap时,都假设nmap是用来进行一些违法的网络侦查,并为恶意攻击做准备的。但是作为一个强大的工具,nmap可以成为一个白帽子,做一些比入侵网络有意义得多的事。

  1. nmap rigel 

nmap也可以通过指定范围或者CIDR符号来扫描IP地址:

  1. nmap 192.168.0.1-254 

  2. nmap 192.168.0.0/24 

nmap如果以root身份运行,可以提供更多的信息。当它以root身份运行时,通过使用-O标志,它可以使用特殊的数据包来决定远程机器的操作系统。此外,你可以通过使用-sS标志来实现半开的TCP扫描。nmap将会发送一个SYN数据包到远程的主机,然后等待接收它回应的ACK。如果nmap收到一个ACK,它就知道这个端口是开放的。

这不同于普通的TCP三次握手,客户端会发送一个SYN包,如果它收到了初始的服务器ACK,客户端随后会将一个ACK送回服务器。攻击者们时常使用这个选项来避免使他们的扫描登陆到远程机器上。

  1. nmap -sS -O rigel  

  2. Starting nmap V. 3.00 ( www.insecure.org/nmap/ )  

  3. Interesting ports on rigel.nnc (192.168.0.61):  

  4. (The 1578 ports scanned but not shown below are in state: filtered)  

  5. Port State Service  

  6. 7/tcpopen echo  

  7. 9/tcpopen discard  

  8. 13/tcp open daytime  

  9. 19/tcp open chargen  

  10. 21/tcp open ftp  

  11. 22/tcp open ssh  

  12. 23/tcp open telnet  

  13. 25/tcp open smtp  

  14. 37/tcp open time  

  15. 79/tcp open finger  

  16. 111/tcpopen sunrpc  

  17. 512/tcpopen exec  

  18. 513/tcpopen login  

  19. 514/tcpopen shell  

  20. 587/tcpopen submission  

  21. 7100/tcp open font-service  

  22. 32771/tcpopen sometimes-rpc5  

  23. 32772/tcpopen sometimes-rpc7  

  24. 32773/tcpopen sometimes-rpc9  

  25. 32774/tcpopen sometimes-rpc11  

  26. 32777/tcpopen sometimes-rpc17  

  27. Remote operating system guess: Solaris 9 Beta through Release on SPARC  

  28. Uptime 44.051 days (since Sat Nov1 16:41:50 2003)  

  29. Nmap run completed -- 1 IP address (1 host up) scanned in 166 seconds  

 伴随着OS探测的激活,nmap可以确认OS是Solaris,但是现在你还可以知道,它可能是运行在SPARC处理器上的Version 9。

一个强大的功能是可以被用于和你的nmap的XML输出性能保持联系。使用-oX命令行转换而激活,就像这样:

  1. nmap -sS -O -oX scandata.xml rigel 

这在扫描IP地址范围或者你全部的网络时是特别有用的,你可以将所有通过扫描收集起来的信息放到一个XML文件里,并经过解析后插入到数据库中。这里是一个开放的端口的XML入口:

  1. <portprotocol="tcp"portid="22">

  2. <statestate="open"/>

  3. <servicename="ssh"method="table"conf="3"/>

  4. </port>

 nmap是一个强大的工具。通过使用它的XML输出性能,一点点的脚本,还有一个数据库,你可以创造一个更强大的可以在你的网络上监测未授权的服务和机器的工具。

53:备份你的bootsector(引导扇区)

难度:高级

应用程序:Shell

妨碍引导装入,双启动和很多其他下热闹的程序会留给你一个混乱的引导扇区。为什么不在你可以备份的时候给它创建一个备份呢:

引导装载器混乱、双启动及许多其他的可怕的进程可能造成乱七八糟的启动区。

  1. dd if=/dev/hda of=bootsector.img bs=512count=1

很显然,你应该改变这个装置来显示你的boot驱动(有可能是SCSI的sda)。还要非常小心,别把事情搞砸——你可能会轻而易举地毁掉你的驱动!恢复时使用:

  1. dd if=bootsector.img of=/dev/hda 

54:保护日志文件

难度:高级

应用程序:很多

在一个入侵过程中,一个入侵者将会很可能在很多系统日志中留下能反映他行为的迹象:一个有价值的审计追踪应该被保护。没有可靠的日志,就很难发现攻击者是如何侵入,或者是从哪里来的攻击。这个信息在分析事件、联系相关方面并给予反馈上,是很关键的。但是,如果入侵成功,什么才能阻止他来移除他的这些错误行为的痕迹呢?

这就是文件属性能发挥作用、挽回败局的地方(或者至少使事情没那么糟)。Linux和BSD都有给文件和目录分配额外的属性这个功能。这不同于标准的Unix权限方案中,系统为所有的用户提供的普遍的属性设置,而且它们比文件权限或者ACL都要更深层次影响文件访问。

在Linux中,你可以看到并且通过lsattr和chattr命令分别修改一个给出文件的设置。在写这篇文章时,Linux的文件属性只能在你使用ext2和ext3时获得。这还有些XFS和ReiserFS的关于获得属性支持的内核补丁。一个保护日志文件的有用的属性是append-only。当这个属性被设置后,文件不能被删除,而且写操作只能被允许在文件的最后追加。

在Linux下要设置append-only标志,运行这条命令:

  1. chattr +afilename 

看看+a属性是如何工作的:创建一个文件然后设置它的append-only属性:

  1. touch /var/log/logfile 

  2. echo "append-only not set" > /var/log/logfile 

  3. chattr +a /var/log/logfile 

  4. echo "append-only set" > /var/log/logfile 

  5. bash: /var/log/logfile: Operation not permitted 

企图第二次写文件失败,因为它将覆盖这个文件。然而,在文件的末尾追加仍然是被允许的:

  1. echo "appending to file" >> /var/log/logfile  

  2. cat /var/log/logfile  

  3. append-only not set  

  4. appending to file  

显而易见,一个获得root特权的侵入者能意识到使用了文件属性,并且可以通过运行chattr -a来移除append-only标志。为了防止这种情况,我们需要禁用移除append-only属性的性能,在Linux下使用功能机制完成这个。

Linux功能模型分割特权给全能的root账户,并且允许你有选择的禁用它们。为了防止一个用户移除一个文件的append-only属性,我们需要移除CAP_LINUX_IMMUTABLE功能。当体现在当前运行系统中时,这个功能允许append-only属性被修改。为了当前系统中获得修改这个功能的设置,我们将简单有效地调用lcap(http://packetstormsecurity.org/linux/admin/lcap-0.0.3.tar.bz2).

为了解压和编译这个工具,运行这条命令:

  1. tar xvfj lcap-0.0.3.tar.bz2 && cd lcap-0.0.3 && make 

然后,不允许修改append-only标志,运行:

  1. ./lcap CAP_LINUX_IMMUTABLE 

  2. ./lcap CAP_SYS_RAWIO 

 第一条命令移除了改变append-only标志的功能,然后第二条移除了原始I/O的功能。这是很有必要的,因为这样就能保护文件不被访问块设备时驻留在其上的东西修改。这阻止了访问/dev/mem和/dev/kmem,有可能给入侵者提供恢复CAP_LINUX_IMMUTABLE功能的漏洞。为了在boot上移除这项功能,添加之前的两条命令到你的系统启动脚本中(例如/etc/rc.local)。你应该确保这个功能在boot命令中被移除了,防止其他启动脚本出问题。一旦lcap移除了内核功能,就只能通过重启系统来恢复了。

在做这些之前,你应该明白,给你的日志文件添加append-only标志,将会造成日志循环脚本失败。然而,做这件事将会极大的提升你的审计追踪的安全性。安全性的提升在突发事件中会被证明是很有用的。

55:自动加密连接

难度:高级

应用程序:FreeS/WAN

一个FreeS/WAN支持的特别cool的功能是,当其他主机运行FreeS/WAN时随机加密。这允许FreeS/WAN在所有支持随机加密的主机间透明传输。为了这个,每台主机必须使用FreeS/WAN生成一个公钥,这个公钥可以存储于那台主机的一个DNS TXT记录中。当一台主机要与另一个主机建立一个随机加密,希望初始化一个加密连接时,将会通过DNS查询这台主机的公钥并且初始化这个连接。

一开始,你想使用这个功能时,需要为每一台主机生成一个公钥。你可以通过运行如下命令来实现它:

  1. ipsec newhostkey --output /tmp/`hostname`.key 

现在你需要添加通过那条命令创建的文件的内容到/etc/ipsec.secrets中。

  1. cat /tmp/`hostname`.key >> /etc/ipsec.secrets 

然后,你需要生成一个TXT记录来存放你的DNS区域。你可以通过运行如下命令来实现它:

  1. ipsec showhostkey --txt @colossus.nnc 

现在添加这条记录到你的空间然后重载它。你会证实DNS已经通过这条命令正确的运行了:

  1. ipsec verify 

  2. Checking your system to see if IPsec got installed and started correctly 

  3. Version check and ipsec on-path[OK] 

  4. Checking for KLIPS support in kernel [OK] 

  5. Checking for RSA private key (/etc/ipsec.secrets) [OK] 

  6. Checking that pluto is running [OK] 

  7. DNS checks. 

  8. Looking for TXT in forward map: colossus [OK] 

  9. Does the machine have at least one non-private address [OK] 

 现在只需要重启FreeS/WAN-你现在应该能连接到任何支持随机加密的主机上了。但是如果其他的主机想要连接你该怎么办?要授权连接,你需要在你的DNS反向查找区域为你的机器创建一个TXT记录。

你可以通过运行一个简单的命令来生成一条记录:

  1. ipsec showhostkey --txt 192.168.0.64 

为你的子网添加这条记录到反向查找区域,然后其他的机器就可以和你的机器初始化随机加密了。伴随着随机加密的使用,所有主机间的传输将被自动加密,同时保护所有的服务。

点评 回复

全部回复

IT管理员巴拉巴拉
IT管理员巴拉巴拉 2015-10-19 10:27:03

感谢分享!

点评 回复

l84049381
l84049381 2015-10-19 10:34:27

谢谢分享+1

 

点评 回复

回复

您需要登录后才可以回帖 登录 | 注册
发表回复

内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“用户协议

My Followers

登录参与交流分享

登录

屏蔽
!block_confirm_cont!
温馨提示
!bind_my_phone_cont!