📄 00000030.htm
字号:
<BR> 从 telnetd 的 man page 可以知道: <BR> <BR> -h Disable the printing of host-specific information before login <BR> has been completed. <BR> <BR> 当有很多管道可以获得系统资讯的同时, 这招和下面的那招是个不错的解决方案。如果 <BR> 你认为跑 telnet daemon 是没有必要的, 那麽只消加个 "#" 在该行的最前面就行了: <BR> <BR>#telnet stream tcp nowait root /usr/libexec/telnetd telnetd <BR> <BR> 有个极不错的措施是, 你可以拒绝没有完整 FQDN 的人来连线。要做到这点, 也只要加 <BR> 个 -U 选项到 telnetd 後面: <BR> <BR>telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h -U <BR> <BR> 这是个小动作, 但是对你的系统安全有莫大的助益。 <BR> <BR> o ftpd <BR> <BR> 现在来看看 ftp。 对於 ftp FreeBSD 已经做了一些 log 的动作 。 可以看到在 <BR> /etc/inetd.conf 里面 ftpd 那一行已经加了 "-l"。然而, 你还是要设定你的syslogd <BR> , 使它可以接受 ftp daemon 产生的 log。从 man page 可以得知: <BR> <BR>-l Each successful and failed ftp(1) session is logged using syslog <BR> with a facility of LOG_FTP. If this option is specified twice, <BR> the retrieve (get), store (put), append, delete, make directory, <BR> remove directory and rename operations and their filename argu- <BR> ments are also logged. Note: LOG_FTP messages are not displayed <BR> by syslogd(8) by default, and may have to be enabled in syslogd(8)'s <BR> configuration file. <BR> 每个成功或是失败的 ftp 登入尝试, 都会以 LOG_FTP 机制纪录起来。如 <BR> 果这个选项被指定了两次, 所有的下载 (get), 上载(put), 新增, 删除, <BR> 建立目录, 及更名的动作和档案名字都会被纪录下来。 又: LOG_FTP 讯 <BR> 息预设是不会被 syslogd(8) 纪录下来的。你还要在 syslogd(8) 的设定 <BR> 档里面启动这个功能才行。 <BR> <BR> 让我们开启 syslogd 纪录 ftpd log 的功能吧~ 这个档案是 /etc/syslog.conf (别忘 <BR> 了顺便看看 man 5 syslog.conf)。把下面这一行加到这个设定档里: <BR> <BR>ftp.* /var/log/ftpd <BR> <BR> 也不要忘了执行这个指令 "touch /var/log/ftpdlog", 因为 syslogd 不能写入到一个 <BR> 没有被开启过的档案。如果你想要你的 ftpd 提供你更多的 log 讯息, 那麽就在 ftp <BR> 那一行多加个 "-l" 吧: <BR> <BR>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l <BR> <BR> 如果你想要确定你的使用者们都用 scp (Secure Copy, 附属在 SSH 里面), 但是又想 <BR> 要提供 anonymous ftp 服务, 也只消加个 "-A" 在 ftp 那行後面就行了: <BR> <BR>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -A <BR> <BR> 你也可以编辑 /etc/ftpwelcome, 说明目前接受 anonymous ftp 登入, 但是系统内的 <BR> 使用者就得使用 rcp 了。如果你有提供 anonymous ftp, 你可以使用 -S 选项来记录 <BR> 传输的情形: <BR> <BR>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -A -S <BR> <BR> o fingerd <BR> <BR> Finger 服务预设值还算安全: 它不容许不带 user name 的 query。这是一件不错的事 <BR> (tm)。然而, 就是有些人无论如何也不想 run fingerd。这种情形下, 你只要简单的给 <BR> 它加个 "#" 在这行的最前面就可以了。又, 你想要 log 住谁来 finger 的话, 加个 <BR> "-l" 也就行了: <BR> <BR>finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s -l <BR> <BR> Fingerd 产生的 log 资讯预设是写到 /var/log/messages。如果你想要这些资讯写入 <BR> 到特定的档案里去, 那麽就在 /etc/syslog.conf 加入这一行: <BR> <BR>daemon.notice /var/log/fingerd <BR> <BR>/* !fingerd anyone? */ <BR> <BR>$ man 5 syslog.conf <BR> <BR> 除了 ftp, telnet 和 finger 之外, 你实在不须要在 /etc/inetd.conf 中再多启动任 <BR> 何东西了。通常我都会关掉 talk 及 comsat等我个人不须要的东西。如同我之前讲的, <BR> 如果你不知到某个 servcie 是干嘛用的, 而且你也不须要它, 那麽就关掉它。一些和 <BR> 网路有关而且很有用的 man page 是: inetd, ftpd, telnetd, fingerd, syslogd, <BR> comsat, talkd, rshd, rlogind, inetd.conf。并且记得要看 man page 的"SEE ALSO" <BR> 部份, 以获得更多的相关资讯。 <BR> <BR> o ipfw (IP FrewWall) <BR> <BR> IP FireWall 做的是 packet 过滤的工作。没错, 就是只有这样。然而, 你要考虑的事 <BR> 是, 你的 kernel 要有支援 ipfw。 通常在我管的机器上, 我都会重编核心使其支援 <BR> ipfw。大概看起来是这样: <BR> <BR>options IPFIREWALL #finger the net <BR>options IPFIREWALL_VERBOSE #log the net <BR>options IPFIREWALL_DEFAULT_TO_ACCEPT <BR> <BR> 第一行表示最其本的 IP FireWall 支援。第二行让 ipfw 可以把接受或拒绝 packets <BR> 的纪录 log 起来。第三行非常重要, 让 ipfw 预设值是接受任何地方来的 packets 。 <BR> 如果你不这样做, 预设值拒绝任何地方来的 packets。我个比比较喜欢後者, 但我又认 <BR> 为在我自己的工作站上, 或一个让人登入的工作站, 预设拒绝任何 packets 不是一件 <BR> 太好的事。 <BR> <BR>********** NOTE ************ <BR> 如果你搞不清楚自己在做啥事, 那就不要用这个选项。 <BR> 就设定 firewall 而言, 这是不甚正确的。预设任何东西都该被挡掉才是正确的。如果 <BR> 你是要建置一台高安全性的系统, 或一台 firewall 的话,那就千万不要加入这个选项: <BR> <BR>options IPFIREWALL_DEFAULT_TO_ACCEPT <BR> <BR> 记住一件事: 要预设拒绝任接受任何 packets, 然後再加入 rule 来设定你想要接 <BR> 受那些 packets。查看 /etc/rc.firewall 以得到更多的资讯。再一次提醒你, 不要使 <BR> 用这个 option, 除非你只是想要防止 DoS attacks 或暂时把某些 port/network ban <BR> 掉。 <BR>***************************** <BR> <BR> o log_in_vain <BR> <BR> 你也可以透过 sysctl 命令, 来改变一些有用的系统变数: <BR> <BR># sysctl -w net.inet.tcp.log_in_vain=1 <BR># sysctl -w net.inet.udp.log_in_vain=1 <BR> <BR> 这会把尝试向你的机器要求你没有的服务的 connections log 起来。例如, 如果你在 <BR> 你的机器没有跑 DNS server, 而又有个人想要向你的机器要求 DNS 服务, 这时候你就 <BR> 会看到 <BR> <BR>Connection attempt to UDP yourIP:53 from otherIP:X <BR>(X 是某个 high port #) <BR> <BR> 你用 "dmesg" 命令就可以看到这一行。Dmesg 秀出的是系统的 kernel message <BR> buffer。然而, 这个 buffer 的空间是有限的, 所以系统也会把这些讯息写入到 <BR> /var/log/messages 里面去: <BR> <BR># tail -1 /var/log/messages <BR>Jun 12 19:36:03 ugh /kernel: Connection attempt to UDP yourIP:53 from otherIP:X <BR> <BR> o final notes <BR> 理论上呢, 你的系统现在已经比你装好它时更安全些了。你现在可以做一些事来确定你 <BR> 目前的更动: <BR> <BR>$ netstat -na | grep LISTEN <BR> <BR> 这会告诉你那些 service 在那些 port 跑。越少越好 :) 又, 再跑一些其它的 port <BR> scanners (strobe, nmap) 来找出你开了那些 port。 <BR> 而要确要你的 syslogd 已经开始纪下你刚刚想要 log 的事件, 可以这麽做: <BR> <BR># cd /var/log <BR># tail -10 fingerd ftpd messages <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -