FreeBSD系统安全设置

系统安全设置
1. 用户控制
尽量少的用户,我们的FTP帐户是和系统帐户绑定在一起的,所以我们添加用户的时候先建立一个目录,然后把新建的用户主目录指向到该目录下。假设我需要一个用户能够管理我的网站,而我网站的目录是在 /usr/www 目录下,那么我们新建立的用户 www_user 的主目录就指向 /usr/www 目录,同时它的shell是没有的:/usr/sbin/nologin ,主要是为了防止它通过ssh登陆到系统。同时FTP的密码也要设置的非常复杂,防止黑客通过暴力破解获得FTP权限。另外还要说道我们的root用户的密码,我想最少应该不要少于10位的数字+字母+字符的密码(我的密码是18位),否则是非常不安全的,如果密码简单,那么黑客通过短时间的暴力破解 SSH中的root帐户,不用几天,系统就可能被攻破了,同时也建议最少一个月更改一次root用户的密码。(强烈建议一般帐户不要有登陆系统的权限,就是把shell设为/usr/sbin/nologin)

一般如果要使用root权限建议建立一个属于wheel组的小用户,然后登陆后通过su命令提升为root用户进行管理,如果黑客通过破解了我们普通用户的权限后登陆系统,也不能直接通过root权限进行管理,这是一种安全防范的简单方法。

2. 文件访问控制
有时候被黑客入侵后拿到了小权限用户,比如传了一个WebShell到系统中,那么对方很可能会把 /etc/passwd 等内容直接读取出来,同时查看/etc/master.passwd中对加密后的root用户的密码hash进行破解,最后拿到密码进行登陆系统。那么我们就要控制部分文件只有root能够访问,其他用户无权访问。比如uname,gcc等,如果黑客拿到小权限用户后就会查看系统版本,然后找到该版本系统对应的溢出程序,使用gcc来进行编译,如果我们能够限制黑客访问uname和gcc等程序,能在一定程度上减缓黑客入侵的脚步。

使用chmod来改变某个文件的权限信息,比如我要 /etc/passwd 和 /etc/master.passwd 文件只能允许root访问:

使用八进制数字来设置

  # chmod 700 /etc/passwd

  # chmod 700 /etc/master.passwd

使用字符标记来进行设置

  # chmod u+w+r+x,go-w-r-x /etc/passwd

  # chmod u+w+r+x,go-w-r-x /etc/master.passwd

系统中有多个重要文件需要设置控制访问权限,一定要控制好,否则将会构成重要威胁。

3. 系统服务和端口控制
端口开的越多就越给黑客多一个入侵的机会,服务越多,危险越大,因为你不知道那些服务是不是有潜在的漏洞或者又发现了新的漏洞,所以尽量少的服务,比如sendmail默认是打开的,那么些建议你把sendmail关闭,关闭防范是在 /etc/rc.conf中加上:

  sendmail_enable = "NONE",如果设为"NO"那么只能够关闭掉pop3服务,不能关闭smtp的服务,所以要设置为"NONE".

系统中最好除了我们能够看到的Apache、Mysql、vsFTPd、SSH之外不要打开其他任何端口和服务。基本的方式是使用netstat -a 查看打开的端口,然后从对应的端口来找相关的服务,比如我们这里应该只允许开的端口有 21, 22, 80, 3306等,如果有其他端口,那么一定要仔细检查,很可能是黑客的后门或者是会对系统安全构成威胁的服务。同时有些服务不需要监听网络连接的话,只是需要本地的连接,比如Mysql,那么就可以关闭Socket监听,这个将在Mysql安全设置中讲解,另外,可以通过防火墙来控制部分端口访问和连接状况,比如Mysql的3306端口只允许192.168.0.1访问,那么我们就在ipfw里添加规则:

  ipfw add 10001 allow tcp from 192.168.0.1 to 10.10.10.1 80 in

  这样就能够防止黑客来访问服务器上的Mysql服务。具体防火墙的设置将在下面“防火墙设置”中详细讲解。

4. 日志管理和控制 (略)
  [NextPage]

5. 文件指纹检测
文件指纹就是我们文件的基本信息,比如文件权限、文件所属用户/组、文件最后修改日期、文件大小等等,这些都是重要信息,一般[[[黑客]]入侵后都可能修改文件,那么文件指纹就不一样了。另外,文件的md5校验值也属于文件的指纹的一种。

为了防止黑客篡改系统中的部分核心文件,比如 /etc/passwd, /etc/shadow, /etc/inetd.conf 等等,那么我们就可以考虑把部分重要文件进行备份,同时做一份目前有的文件的一个指纹保留,比如把 /etc,/bin, /usr/bin 目录下的文件进行指纹保留:

# ls -l /etc >; /var/back/etc.txt
# ls -l /bin >; /var/back/bin.txt
# ls -l /bin >; /var/back/usrbin.txt

当然,还有就是给每个重要的文件加上md5校验值,如果觉得不对劲的时候就进行匹配,保证文件的安全。

你可以给你觉得需要做指纹备份的目录进行备份,一般这是为了以后被黑客入侵后的系统检测和系统恢复。比如可以通过文件被修改的时间来确定是不是被入侵,比如可以对比看 /etc/inetc.conf文件和备份的文件有什么不同来确定是不是安装了服务型后门等。

6. 系统指纹泄漏和防范
一般黑客为了入侵某个系统,一定会先进行扫描等工作,扫描包括目标系统的端口开放情况和服务器使用服务程序和操作系统情况。比如很简单的手工检测Web服务的指纹:

# telnet target.com 80

那么就很可能返回Apache和PHP的版本信息,那么同时也可能使用扫描工具对Mysql、vsFTPd、SSH等服务的端口进行扫描,获取这些服务的指纹。多暴露一份系统信息,那么系统就多一份危险。那么解决办法就是把服务器上服务程序的Banner全部修改掉,从而能够迷惑黑客。

下面简单的说一些修改那些服务Banner的方法。

  * Apache

  修改httpd.conf文件,设置以下选项:

  ServerSignature Off

  ServerTokens Prod

上面的适用apache1***, apache 2.0这些都是默认 , 不过还是有server=Apache字样, 若要完全去掉需重新编译。

彻底地去掉banner, 修改httpd.h:

  Include/httpd.h

  Define SERVER_BASEVENDOR "Apache Group"

  Define SERVER_PRODUCTVENDOR "Apache"

  Define SERVER_BASEVERSION "1.3.27"

后从新编译Apache就能够完全去掉了。

  * PHP

  在php.ini中设置 expose_php = Off ,那么将无法在 http头信息中看到php的版本信息。

  * Mysql

  * vsFTPd

vsFTPd基本上是无法获取到一些关于vsFTPd的banner信息的,不过因为vsFTPd默认的banner信息是"Welcome to FTP Server!"对于高手来说,还是能够猜测到一点,所以我们要彻底改掉。修改vsFTPd的配置文件 vsftpd.conf 中的下面选项:

Ftpd_banner=xxxxx

把后面的xxxxx改为你想要的banner信息。

  * SSH

好象FreeBSD下默认安装的SSH被telnet target.com 22 的时候会显示SSH和FreeBSD的信息,简直是个大祸害,什么都告诉别人了,但是目前为止我还不知道怎么修改,知道的高手请指点。

7. 系统内核安全
FreeBSD有个比较强的功能,就是能够定义系统内核的安全等级,主要是为了防止内核后门专门定制的,能通过不同的等级限制对内核的访问和对防火墙等的修改。我们首先要开启系统的安全等级,然后设定安全等级,我们打开 /etc/rc.conf:

  # ee /etc/rc.conf

加入下面的内容:

  kern_securelevel_enable="YES"

  kern_securelevel="-1"

第一句是打开安全等级,第二句是定义等级。它一共五个等级,下面说说不同之处。

  * kern_securelevel -1:这是系统默认级别,没有提供任何内核的保护错误;

  * kern_securelevel 0:基本上作用不多,当你的系统刚启动就是0级别的,当进入多用户模式的时候就自动变成1级了。

  * kern_securelevel 1:在这个级别上,有如下几个限制:

  a. 不能通过kldload或者kldunload加载或者卸载可加载内核模块;

  b. 应用程序不能通过/dev/mem或者/dev/kmem直接写内存;

  c. 不能直接往已经装在(mounted)的磁盘写东西,也就是不能格式化磁盘,但是可以通过标准的内核接口执行写操作;

  d. 不能启动X-windows,同时不能使用chflags来修改文件属性;

  * kern_securelevel 2:在 1 级别的基础上还不能写没装载的磁盘,而且不能在1秒之内制造多次警告,这个是防止DoS控制台的;

  * kern_securelevel 3:在 2 级别的级别上不允许修改IPFW防火墙的规则。

如果你已经装了防火墙,并且把规则设好了,不轻易改动,那么建议使用3级别,如果你没有装防火墙,而且还准备装防火墙的话,不建议使用。我们这里推荐使用 2 级别,能够避免比较多对内核攻击。

8. 系统安全优化
一般优化系统主要是重新编译内核,去掉一些不要的驱动等等,你可以参考我在我Blog上写的关于编译内核的文章。我们这里对网络和内核一些选项进行优化和安全设置。编辑 /etc/sysctl.conf 文件,在里面加入如下内容:(有注释)

  #最大的待发送TCP数据缓冲区空间

  net.inet.tcp.sendspace=65536

  #最大的接受TCP缓冲区空间

  net.inet.tcp.recvspace=65536

  #最大的接受UDP缓冲区大小

  net.inet.udp.sendspace=65535

  #最大的发送UDP数据缓冲区大小

  net.inet.udp.maxdgram=65535

  #本地套接字连接的数据发送空间

  net.local.stream.sendspace=65535

  #加快网络性能的协议

  net.inet.tcp.rfc1323=1

  net.inet.tcp.rfc1644=1

  net.inet.tcp.rfc3042=1

  net.inet.tcp.rfc3390=1

  #最大的套接字缓冲区

  kern.ipc.maxsockbuf=2097152

  #系统中允许的最多文件数量

  kern.maxfiles=65536

  #每个进程能够同时打开的最大文件数量

  kern.maxfilesperproc=32768

  #当一台计算机发起TCP连接请求时,系统会回应ACK应答数据包。该选项设置是否延迟ACK应答数据包,把它和包含数据的数据包一起发送,在高速网络和低负载的情况下会略微提高性能,但在网络连接较差的时候,对方计算机得不到应答会持续发起连接请求,反而会降低性能。

  net.inet.tcp.delayed_ack=0

  #屏蔽ICMP重定向功能

  net.inet.icmp.drop_redirect=1

  net.inet.icmp.log_redirect=1

  net.inet.ip.redirect=0

  net.inet6.ip6.redirect=0

  #防止ICMP广播风暴

  net.inet.icmp.bmcastecho=0

  net.inet.icmp.maskrepl=0

  #限制系统发送ICMP速率

  net.inet.icmp.icmplim=100

  #安全参数,编译内核的时候加了options TCP_DROP_SYNFIN才可以用

  net.inet.icmp.icmplim_output=0

  net.inet.tcp.drop_synfin=1

  #设置为1会帮助系统清除没有正常断开的TCP连接,这增加了一些网络带宽的使用,但是一些死掉的连接最终能被识别并清除。死的TCP连接是被拨号用户存取的系统的一个特别的问题,因为用户经常断开modem而不正确的关闭活动的连接

  net.inet.tcp.always_keepalive=1

  #若看到net.inet.ip.intr_queue_drops这个在增加,就要调大net.inet.ip.intr_queue_maxlen,为0最好

  net.inet.ip.intr_queue_maxlen=1000

  #防止DOS攻击,默认为30000

  net.inet.tcp.msl=7500

  #接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包

  net.inet.tcp.blackhole=2

  #接收到一个已经关闭的端口发来的所有UDP包直接drop

  net.inet.udp.blackhole=1

  #为网络数据连接时提供缓冲

  net.inet.tcp.inflight.enable=1

  #如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表,节约路由的计算时间,但会需要大量的内核内存空间来保存路由表

  net.inet.ip.fastforwarding=0

  #kernel编译打开options POLLING功能,高负载情况下使用低负载不推荐SMP不能和polling一起用

  #kern.polling.enable=1

  #并发连接数,默认为128,推荐在1024-4096之间,数字越大占用内存也越大

  kern.ipc.somaxconn=32768

  #禁止用户查看其他用户的进程

  security.bsd.see_other_uids=0

  #设置kernel安全级别

  kern.securelevel=0

  #记录下任何TCP连接

  net.inet.tcp.log_in_vain=1

  #记录下任何UDP连接

  net.inet.udp.log_in_vain=1

  #防止不正确的udp包的攻击

  net.inet.udp.checksum=1

  #防止DOS攻击

  net.inet.tcp.syncookies=1

  #仅为线程提供物理内存支持,需要256兆以上内存

  kern.ipc.shm_use_phys=1

  # 线程可使用的最大共享内存

  kern.ipc.shmmax=67108864

  # 最大线程数量

  kern.ipc.shmall=32768

  # 程序崩溃时不记录

  kern.coredump=0

  # lo本地数据流接收和发送空间

  net.local.stream.recvspace=65536

  net.local.dgram.maxdgram=16384

  net.local.dgram.recvspace=65536

  # 数据包数据段大小,ADSL为1452.

  net.inet.tcp.mssdflt=1460

  # 为网络数据连接时提供缓冲

  net.inet.tcp.inflight_enable=1

  # 数据包数据段最小值,ADSL为1452

  net.inet.tcp.minmss=1460

  # 本地数据最大数量

  net.inet.raw.maxdgram=65536

  # 本地数据流接收空间

  net.inet.raw.recvspace=65536

  #ipfw防火墙动态规则数量,默认为4096,增大该值可以防止某些病毒发送大量TCP连接,导致不能建立正常连接

  net.inet.ip.fw.dyn_max=65535

  #设置ipf防火墙TCP连接空闲保留时间,默认8640000(120小时)

  net.inet.ipf.fr_tcpidletimeout=864000

 

无线路由密码防止被破解,防止人家蹭网的几个方法

1)用WPA 加密方式,并且使用不可能被字典猜到的密码,目前还是基本可靠的
2)如果只支持 WEP加密,那么,尽量考虑用隐藏 SSID的方式,这样可以增加破解难度
3)如果只支持 WEP加密,那么,可以考虑使用中文名字作为SSID,这样基本问题不大。
4)一般破解时候,大家都会选择常用的频道,例如 6频道, 第三步显示频道的时候,你的AP也会被列出来,那么第一个目标失败的时候,黑客往往会选择第二个容易下手的目标,但是如果你选择了8、 4、这些奇怪的频道,那么狠客往往懒得重新进入该频道的监控模式,你就可以逃过一劫。不过, 某些廉价AP,往往对6 频道做了优化,这个频道信号最强….这就没办法了。
5)有空经常换换你的密码

双网卡 同时访问两个网络,内网与外网同时能上的方法

想同时访问内网,外网遇到个问题,就是当访问内网的时候,外面就没法访问,反之亦然。经过研究终于找到,同时访问两个网络的方法。

比如

一个网络的地址:192.168.1.110,子网掩码:255.255.255.0,网关:192.168.1.1

另一个网络的地址:192.168.128.130,子网掩码:255.255.255.0,网关:192.168.128.2

第一步:route delete 0.0.0.0     “删除所有0.0.0.0的路由”

第二步:route add 0.0.0.0 mask 0.0.0.0    192.168.1.1 “添加0.0.0.0网络路由”

第三步:route add 0.0.0.0 mask 255.0.0.0 192.168.128.2 “添加10.0.0.0网络路由”

使用上述命令添加的路由在系统重新启动后会自动丢失,route add -p 添加静态路由,注意使用前要在tcp/ip设置里去掉接网卡的网关。

我用这个就是虚拟机上用的,一个是让虚拟机能够访问本机的共享资源,而虚拟机又能通过另外一个无线网卡同时访问外部网络,而不是通过本机网络访问外网。
 

剑侠情缘三如何潜水/游戏里面怎么潜水

发现 剑侠情缘三里面有个任务是潜水挖细沙,可能还有其他任务要用到,弄了好久都挖不到,就想到要潜水,但是操作了好久都不知道怎么潜水,后来终于被我研究出来了。

按住鼠标右键.  然后视角向下,按W键 就是往前的键,可以潜下去了,不行的话 这个操作都试几下应该可以。

注意呼吸,上面那条没了就会少血,还有浮出水面只要视角向上,一直按住W 就可以了。

ATI SMBUS ati 南桥心片sb600 南桥驱动

ATI在显示芯片领域获得巨大成功之后,紧接着便大旗一挥,全面进军主板芯片市场,在双管齐下策略的指导下,推出了多款适用于Intel和AMD处理器芯片组产品,并且依靠其优秀的性能表现和出众的集成图形核心取得了不错的市场反响。这是ATI官方发布的适用于采用Xpress 200、Xpress 200m、Xpress 1100、Xpress 1150、Xpress 1200、Radeon X1200、Radeon X1250、CrossFire Xpress 1600、CrossFire Xpress 3200、SB400、SB450、SB600等系列南桥芯片组主板的最新驱动包

 ati_SMBUS_8-2_xp32-64_sb_58128

route命令

route命令可以在CMD DOS窗口中执行,主要看看route delete 和 route add。

route参数说明:

Manipulates network routing tables.

ROUTE [-f] [-p] [command [destination]
[MASK netmask] [gateway] [METRIC metric] [IF interface]

-f Clears the routing tables of all gateway entries. If this is
used in conjunction with one of the commands, the tables are
cleared prior to running the command.
-p When used with the ADD command, makes a route persistent across
boots of the system. By default, routes are not preserved
when the system is restarted. Ignored for all other commands,
which always affect the appropriate persistent routes. This
option is not supported in Windows 95.
command One of these:
PRINT Prints a route
ADD Adds a route
DELETE Deletes a route
CHANGE Modifies an existing route
destination Specifies the host.
MASK Specifies that the next parameter is the ‘netmask’ value.
netmask Specifies a subnet mask value for this route entry.
If not specified, it defaults to 255.255.255.255.
gateway Specifies gateway.
interface the interface number for the specified route.
METRIC specifies the metric, ie. cost for the destination.

All symbolic names used for destination are looked up in the network database
file NETWORKS. The symbolic names for gateway are looked up in the host name
database file HOSTS.

If the command is PRINT or DELETE. Destination or gateway can be a wildcard,
(wildcard is specified as a star ‘*’), or the gateway argument may be omitted.

If Dest contains a * or ?, it is treated as a shell pattern, and only
matching destination routes are printed. The ‘*’ matches any string,
and ‘?’ matches any one char. Examples: 157.*.1, 157.*, 127.*, *224*.
Diagnostic Notes:
Invalid MASK generates an error, that is when (DEST & MASK) != DEST.
Example> route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1
The route addition failed: The specified mask parameter is invalid.
(Destination & Mask) != Destination.

Examples:

> route PRINT
> route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2
destination^ ^mask ^gateway metric^ ^
Interface^
If IF is not given, it tries to find the best interface for a given
gateway.
> route PRINT
> route PRINT 157* …. Only prints those matching 157*
> route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2

CHANGE is used to modify gateway and/or metric only.
> route PRINT
> route DELETE 157.0.0.0
> route PRINT