⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0570syslog.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
</pre></td></tr></table>

		很简单吧!如此一来,所有的资讯都会写入 /var/log/admin.log 里面了!<br><br>
	</div>

	<hr><a name=syslogd_secure></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>登录档的安全性设置</span><br>
	<div class=block2>
		好了,由上一个小节里面我们知道了 syslog.conf 的设定,也知道了登录档内容的重要性了,
		所以,如果幻想你是一个很厉害的骇客,想利用他人的电脑干坏事,然后又不想留下证据,
		你会怎么作?对啦!就是离开的时候将屁股擦乾净,将所有可能的讯息都给他抹煞掉,
		所以第一个动脑筋的地方就是登录档的清除工作啦~<br><br>

		哇!鸟哥教人家干坏事┅┅喂!不要乱讲话~俺的意思是,如果改天你发现你的登录档不翼而飞了,
		或者是发现你的登录档似乎不太对劲的时候,最常发现的就是网友常常会回报说,他的
		/var/log 这个目录『不见了!』不要笑!这是真的事情?请记得,『赶快清查你的系统!』<br><br>

		伤脑筋呢!那么有没有办法防止这样的事情呢?有呀!拔掉网路线┅┅呵呵!别担心,基本上,
		我们可以透过一个隐藏的属性来设定你的登录档,成为『
		<span class=text_import2>只可以增加资料,但是不能被删除</span>
		』的状态,那么或许可以达到些许的保护!不过,如果你的
		root 帐号被破解了,那么底下的设定还是无法保护的,因为你要记得『 <span class=text_import2>root
		是可以在系统上面进行任何事情的</span> 』,因此,请将你的 root 
		这个帐号的密码设定的安全一些!千万不要轻忽这个问题呢!<br><br>

		好了,开始来设定一下基本的隐藏属性吧!那就是在
		<a href="0220filemanager.php">Linux 档案属性</a>
		提过的 <a href="0220filemanager.php#lsattr">lsattr</a> 与 
		<a href="0220filemanager.php#chattr">chattr</a>
		这两个东西啦!如果将一个档案以 chattr 设定 i 这个属性时,那么该档案连 root
		都不能杀掉!而且也不能新增资料,嗯!真安全!但是,如此一来登录档的功能岂不是也就消失了?
		因为没有办法写入呀!所以棉,<span class=text_import2>我们要使用的是
		a 这个属性</span>!你的登录档如果设定了这个属性的话,那么
		<span class=text_import2>他将只能被增加,而不能被删除</span>!嗯!
		这个项目就非常的符合我们登录档的需求啦!因此,您可以这样的增加你的登录档的隐藏属性。<br>

		<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen">		请注意,底下的这个 chattr 的设定状态∶『仅适合已经对 Linux 系统很有概念的朋友』来设定,
		对于新手来说,建议您直接使用系统的预设值就好了,免得到最后登录档无法写入~
		那就比较糗一点! @_@
		</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>chattr +a /var/log/messages</span>
[root@linux ~]# <span class=term_command>lsattr /var/log/messages</span>
-----a------- /var/log/messages
</pre></td></tr></table>

		加入了这个属性之后,你的 /var/log/messages 登录档从此就仅能被增加,而不能被删除,直到
		root 以『 chattr -a /var/log/messages 』取消这个 a 的参数之后,才能被删除或移动喔!<br><br>

		虽然,为了您登录档的资讯安全,这个 chattr 的 +a 旗标可以帮助您维护好这个档案,
		不过,如果您的系统已经被取得 root 的权限,而既然 root 可以下达 chattr -a 来取消这个旗标,
		所以棉,还是有风险的啦!此外,前面也稍微提到,新手最好还是先不要增加这个旗标,
		很容易由于自己的忘记,导致系统的重要讯息无法记录呢。<br><br>

		基本上,鸟哥认为,这个旗标最大的用处除了在保护您登录档的资料外,
		他还可以帮助您避免掉不小心写入登录档的状况喔。要注意的是,当『
		<span class=text_import2>你不小心 "手动" 更动过登录档后,例如那个 /var/log/messages ,
		你不小心用 vi 开启他,离开却下达 :wq 的参数,呵呵!那么该档案未来将不会再继续进行登录动作!</span> 
		』这个问题真的很常发生!由于你以 vi 储存了登录档,则 syslogd 会误判为该档案已被更动过,
		将导致 syslogd 不再写入该档案新的内容~很伤脑筋的!<br><br>

		要让该登录档可以继续写入,你只要重新启动 syslog (/etc/init.d/syslog restart) 即可。
		不过,总是比较麻烦。所以啊,如果你针对登录档下达 chattr +a 的参数,嘿嘿!
		未来你就不需要害怕不小心更动到该档案了!因为无法写入嘛!除了可以新增之外~ ^_^<br><br>

		不过,也因为这个 +a 的属性让该档案无法被删除与修改,所以棉,当我们进行登录档案轮替时 (logrotate)
		,将会无法移动该登录档的档名呢!所以会造成很大的困扰。这个困扰虽然可以使用 logrotate 
		的设定档来解决,但是,还是先将登录档的 +a 旗标拿掉吧!<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>chattr -a /var/log/messages</span>
</pre></td></tr></table>

	</div>

	<hr><a name=syslogd_server></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>登录档主机的简单设定</span><br>
	<div class=block2>
		我们在之前稍微提到的,在 syslog.conf 档案当中,可以将登录资料传送到印表机,
		或者是远端主机上面去。这样做有什么意义呢?
		如果你将登录资讯直接传送到印表机上面的话,那么万一不小心你的系统被 cracker 所入侵,
		他也将您的 /var/log/ 砍掉了,怎么办?没关系啊!反正你已经将重要资料直接以印表机记录起来了,
		嘿嘿!他是无法逃开的啦!^_^<br><br>

		再想像一个环境,你的办公室内有十部 Linux 主机,每一部负责一个网路服务,
		你为了要了解每部主机的状态,因此,你常常需要登入这十部主机去查阅你的登录档~
		哇!光用想的,每天要进入十部主机去查资料,想到就烦~没关系~这个时候我们可以让某一部主机当成
		『登录档主机』 ,用他来记录所有的十部 linux 主机的资讯,嘿嘿!这样我就直接进入一部主机就可以了!
		省时又省事,真方便~<br><br>

		那要怎么达到这样的功能呢?首先,你必须要连上网路嘛!不然怎么接受资讯?
		再来,由于 syslog 用的是 udp 封包的 514 埠号,因此,你的登录档主机就得要启用这个 port 才行~
		如何启用呢?很简单啊!这样做就可以了!<br>

<table class="term"><tr><td class="term"><pre>
<span class=term_hd># 1. 先取得 port number 的资讯!</span>
[root@linux ~]# <span class=term_command>grep 514 /etc/services</span>
syslog          514/udp
<span class=term_say># 特别特别注意,你的 /etc/services 里面必须要存在这一行才行~
# 如果不存在这一行,你可以手动自行增加的!</span>

<span class=term_hd># 2. 修改 syslogd 的启动设定档,通常在 /etc/sysconfig 内!</span>
[root@linux ~]# <span class=term_command>vi /etc/sysconfig/syslog</span>
<span class=term_say># 找到底下这一行∶</span>
SYSLOGD_OPTIONS="-m 0"
<span class=term_say># 改成底下这样子!</span>
SYSLOGD_OPTIONS="-m 0 -r"

<span class=term_hd># 3. 重新启动与观察 syslogd 喔!</span>
[root@linux ~]# <span class=term_command>/etc/init.d/syslog restart</span>
[root@linux ~]# <span class=term_command>netstat -tlunp</span>
Proto Recv-Q Send-Q Local Address Foreign Address State  PID/Program name
udp   0      0      0.0.0.0:514   0.0.0.0:*              24314/syslogd
<span class=term_say># 嘿嘿!你的登录档主机已经设定妥当棉!很简单吧!</span>
</pre></td></tr></table>

		透过这个简单的动作,你的 Linux 主机已经可以接收来自其他主机的登录资讯了!
		当然啦,你必须要知道网路方面的相关基础,这里鸟哥只是先介绍,
		未来了解了网路相关资讯后,再回头来这里瞧一瞧先! ^_^,此外,
		更多的相关资讯可以 man syslogd 查阅看看喔! ^_^<br><br>

		至于 client 端的设定就简单多了!只要指定某个资讯传送到这部主机即可!
		举例来说,我们的登录档主机 IP 为 192.168.1.100 ,而 client 端希望所有的资料都送给主机,
		所以,可以在 /etc/syslog.conf 里面新增这样的一行∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/syslog.conf</span>
<span class=term_write>*.*       @192.168.1.100</span>
</pre></td></tr></table>

		立刻就搞定了!而未来主机上面的登录档当中,每一行的『主机名称』就会显示来自不同主机的资讯了。
		很简单吧! ^_^。接下来,让我们来谈一谈,那么如何针对登录档来进行轮转 (rotate) 呢?<br>
	</div>
</div>


<hr><a NAME="rotate"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">登录档的轮替(logrotate)∶</span><br>
<div class=block1>
	好了!假设我们已经将登录资料写入了记录档中了,也已经利用 chattr 设定了 +a 这个属性了,那么该如何进行
	logrotate 的工作呢!?这里请特别留意的是∶『<span class=text_import2>syslog 利用的是 demand 的方式来启动的,
	当有需求的时候立刻就会被执行的,但是 logrotate 却是在规定的时间到了之后才来进行登录档的轮替,
	所以这个 logrotate 程序当然就是挂在 <a href="0430cron.php">cron</a> 底下进行的呦!</span>』
	仔细看一下 /etc/cron.daily/ 里面的档案,嘿嘿~看到了吧! /etc/cron.daily/logrotate 
	就是记录了每天要进行的登录档轮替的行为啦! ^_^!底下我们就来谈一谈怎么样设计这个 logrotate 吧!<br><br>

	<hr><a name="rotate_config"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>logrotate 的设定档</span><br>
	<div class=block2>
		既然 logrotate 主要是针对登录档来进行轮替的动作,所以棉,他当然必须要记载『
		在什么状态下才将登录档进行轮替』的设定啊!那么
		logrotate 这个程式的参数设定档在哪里呢?!呵呵!那就是∶
		<ul><span class=text_import2><font face="细明体">
		<li>/etc/logrotate.conf
		<li>/etc/logrotate.d/</font></span></ul>

		注意棉!那个 logrotate.conf 才是主要的参数档案,至于 logrotate.d 是一个目录,
		该目录里面的所有档案都会被主动的读入 /etc/logrotate.conf 当中来进行!另外,在
		/etc/logrotate.d/ 里面的档案中,如果没有规定到的一些细部设定,则以 /etc/logrotate.conf
		这个档案的规定来指定为预设值!<br><br>

		好了,刚刚我们提到 logrotate 的主要功能就是将旧的登录档案移动成旧档,
		并且重新建立一个新的空的档案来记录,他的执行结果有点类似底下的图示∶<br><br>

		<center><img SRC="0570syslog/0570syslog_1.jpg"
			title="登录档进行 logrotate 的结果"
			alt="登录档进行 logrotate 的结果"><br>
			图一、登录档进行 logrotate 的结果</center><br>

		由上面的图示我们可以清楚的知道,当第一次执行完 rotate 之后,原本的 messages 会变成 messages.1
		而且会制造一个空的 messages 给系统来储存登录档。而第二次执行之后,则 messages.1 会变成
		messages.2 而 messages 会变成 messages.1 ,又造成一个空的 messages 
		来储存登录档!那么如果我们仅设定保留三个登录档而已的话,那么执行第四次时,则
		messages.3 这个档案就会被删除,并由后面的较新的保存登录档所取代!基本的工作就是这样啦!<br><br>

		那么多久进行一次 logrotate 的工作呢?嗯!这些都记录在 logrotate.conf
		里面,我们来看一下预设的 logrotate 的内容吧!<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/logrotate.conf</span>
<span class=term_say># 底下的设定是 "logrotate 的预设设定值" ,如果个别的档案设定了其他的参数,
# 那么将以个别的档案设定为主,若该档案没有设定到的参数,
# 则以这个档案的内容为预设值!</span>

<span class=term_write>weekly
<span class=term_say># 预设每个礼拜对登录档进行一次 rotate 的工作</span>

rotate 4
<span class=term_say># 保留几个登录档呢?预设是保留四个!</span>

create
<span class=term_say># 是否建立新的登录档来记录呢?因为我们要继续记录,所以当然是建立棉!</span>

#compress
<span class=term_say># rotate 之后的登录档,要不要压缩,通常是不要压缩啦,但是如果你的系统很忙碌,
# 表示你的登录档很庞大的时候,那么最好就是给他压缩一下比较不会占空间!
# 如果要压缩,将 # 拿掉即可!不过,登录档副档名会变成 messages.1.gz 喔!</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -