行动…Don\'t ever let somebody tell you, you can\'t do something. you got a dream, you gotta protect it. people can\'t do something themselves they wanna tell you you can\'t do it.if you want something. go get it.
分类: LINUX
2011-05-17 13:52:46
如下的sysctl命令用于改变安全设置,但是它也可以防止网络性能的下降。这些命令被设置为缺省值。
◆关闭如下参数可以防止黑客对服务器IP地址的攻击(注:“0”为允许,“1”为拒绝)
sysctl -w net.ipv4.conf.eth0.accept_source_route=0
sysctl -w net.ipv4.conf.lo.accept_source_route=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.all.accept_source_route=0
◆开启TCP SYN cookies,保护服务器避免受syn-flood攻击,包括服务取决denial-of-service (DoS) 或者分布式服务拒绝distributed denial-of-service (DDoS) (仅适用Red Hat Enterprise Linux AS)
sysctl -w net.ipv4.tcp_syncookies=1
◆以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击,所以我们只接受有可靠来源的重定向。
sysctl -w net.ipv4.conf.eth0.secure_redirects=1
sysctl -w net.ipv4.conf.lo.secure_redirects=1
sysctl -w net.ipv4.conf.default.secure_redirects=1
sysctl -w net.ipv4.conf.all.secure_redirects=1
另外,你可以配置接受或拒绝任何ICMP重定向。ICMP重定向是路由器传输路由信息的机制。比如,当网关接收到来自所接网络主机的Internet数据报时,网关可以发送重定向信息到一台主机。网关检查路由表获得下一个网关的地址,第二个网关将数据报路由到目标网络.关闭这些重定向得命令如下:
sysctl -w net.ipv4.conf.eth0.accept_redirects=0
sysctl -w net.ipv4.conf.lo.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.all.accept_redirects=0
◆如果这个服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能:
sysctl -w net.ipv4.conf.eth0.send_redirects=0
sysctl -w net.ipv4.conf.lo.send_redirects=0
sysctl -w net.ipv4.conf.default.send_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
◆配置服务器拒绝接受广播风暴或者smurf 攻击attacks:
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
◆忽略所有icmp包或者pings:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
◆有些路由器针对广播祯发送无效的回应,每个都产生警告并在内核产生日志.这些回应可以被忽略:
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
针对TCP和UDP的调优
下边的命令用来对连接数量非常大的服务器进行调优.
◆对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字. 这对于Web服务器非常有效:
sysctl -w net.ipv4.tcp_tw_reuse=1
如果你使用该命令,还要启动TIME-WAIT 套接字状态的快速循环功能:
sysctl -w net.ipv4.tcp_tw_recycle=1
◆服务器的一个问题是,同一时刻的大量TCP连接里有很多的连接被打开但是没有使用. TCP的keepalive功能检测到这些连接,缺省情况下,在2小时之后丢掉. 2个小时的可能导致内存过度使用,降低性能.因此改成1800秒(30分钟)是个更好的选择:
sysctl -w net.ipv4.tcp_keeplive_time=1800
◆对于所有协议的队列,设置最大系统发送缓存(wmem) 和接收缓存(rmem)到8MB
sysctl -w net.core.wmem_max=8388608
sysctl -w net.core.rmem_max=8388608
这些设置指定了创建TCP套接字时为其分配的内存容量. 另外,使用如下命令发送和接收缓存.该命令设定了三个值:最小值、初始值和最大值:
sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608"
sysctl -w net.ipv4.tcp_wmem="4096 87380 8388608"
第三个值必须小于或等于wmem_max和rmem_max。