大多数 Linux 发布版都定义了适当的缓冲区和其余 Transmission Control Protocol(TCP)参数。能够修改这些参数来分配更多的内存,从而改进网络
性能。设置内核参数的方法是经过 proc 接口,也就是经过读写 /proc 中的值。幸运的是,sysctl 能够读取 /etc/sysctl.conf 中的值并根据须要填充
/proc,这样就可以更轻松地管理这些参数。清单 2 展现在互联网服务器上应用于 Internet 服务器的一些比较激进的网络设置。
# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000
将这些设置添加到 /etc/sysctl.conf 的现有内容中。第一个设置启用 TCP SYN cookie。当从客户机发来新的 TCP 链接时,数据包设置了 SYN 位,服务
器就为这个半开的链接建立一个条目,并用一个 SYN-ACK 数据包进行响应。在正常操做中,远程客户机用一个 ACK 数据包进行响应,这会使半开的链接
转换为全开的。有一种称为 SYN 泛滥(SYN flood) 的网络***,它使 ACK 数据包没法返回,致使服务器用光内存空间,没法处理到来的链接。SYN
cookie 特性能够识别出这种状况,并使用一种优雅的方法保留队列中的空间(细节参见参考资料一节)。大多数系统都默认启用这个特性,可是确保配
置这个特性更可靠。
启用 TCP 窗口伸缩使客户机可以以更高的速度下载数据。TCP 容许在未从远程端收到确认的状况下发送多个数据包,默认设置是最多 64 KB,在与延迟比
较大的远程客户机进行通讯时这个设置可能不够。窗口伸缩会在头中启用更多的位,从而增长窗口大小。
后面四个配置项增长 TCP 发送和接收缓冲区。这使应用程序能够更快地丢掉它的数据,从而为另外一个请求服务。还能够强化远程客户机在服务器繁忙时发
送数据的能力。
最后一个配置项增长可用的本地端口数量,这样就增长了能够同时服务的最大链接数量。
在下一次引导系统时,或者下一次运行 sysctl -p /etc/sysctl.conf 时,这些设置就会生效。
----------------------------------------------------------------------------------------------------------------------------
磁盘子系统的调优
磁盘在 LAMP 架构中扮演着重要的角色。静态文件、模板和代码都来自磁盘,组成数据库的数据表和索引也来自磁盘。对磁盘的许多调优(尤为是对于数
据库)集中于避免磁盘访问,由于磁盘访问的延迟至关高。所以,花一些时间对磁盘硬件进行优化是有意义的。
首先要作的是,确保在文件系统上禁用 atime 日志记录特性。atime 是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。由于
系统管理员不多使用 atime,禁用它能够减小磁盘访问时间。禁用这个特性的方法是,在 /etc/fstab 的第四列中添加 noatime 选项。
演示如何启用 noatime 的 fstab 示例
/dev/VolGroup00/LogVol00 / ext3 defaults,noatime 1 1
LABEL=/boot /boot ext3 defaults,noatime 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=SWAP-hdb2 swap swap defaults 0 0
LABEL=SWAP-hda3 swap swap defaults 0 0
有多种磁盘硬件组合,并且 Linux 不必定可以探测出访问磁盘的最佳方式。可使用 hdparm 命令查明和设置用来访问 IDE 磁盘的方法。hdparm -t
/path/to/device 执行速度测试,能够将这个测试结果做为性能基准。为了使结果尽量准确,在运行这个命令时系统应该是空闲的。
在 /dev/hd 上执行的速度测试
# hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads: 182 MB in 3.02 seconds = 60.31 MB/sec
hdparm 的经常使用选项
选项 描述
-vi 向磁盘查询它支持的设置以及它正在使用的设置。
-c 查询/启用 (E)IDE 32 位 I/O 支持。hdparm -c 1 /dev/hda 启用这个设置。
-m 查询/设置每中断多扇区模式。若是设置大于零,设置值就是每一个中断能够传输的最大扇区数量。
-d 1 -X 启用直接内存访问(DMA)传输并设置 IDE 传输模式。hdparm 手册页详细说明了在 -X 后面能够设置的数字。只有在 -vi 说明目前并未使用最
快速的模式的状况下,才须要进行这个设置。
不幸的是,对于 Fiber Channel and Small Computer Systems Interface(SCSI)系统,调优依赖于具体的驱动器。
必须将有帮助的设置添加到启动脚本中,好比 rc.local。
----------------------------------------------------------------------------------------------------------------------------
TCP/IP子系统的调优
全部的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数, 后面是它们的含义:
1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲
2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲
3. /proc/sys/net/ipv4/tcp_timestamps — 时间戳在(请参考RFC 1323)TCP的包头增长12个字节
4. /proc/sys/net/ipv4/tcp_sack — 有选择的应答
5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 若是TCP窗口最大超过65535(64K), 必须设置该数值为1
6. rmem_default — 默认的接收窗口大小
7. rmem_max — 接收窗口的最大大小
8. wmem_default — 默认的发送窗口大小
9. wmem_max — 发送窗口的最大大小
/proc目录下的全部内容都是临时性的, 因此重启动系统后任何修改都会丢失.
建议在系统启动时自动修改TCP/IP参数:
把下面代码增长到/etc/rc.local文件, 而后保存文件, 系统从新引导的时候会自动修改下面的TCP/IP参数:
echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
TCP/IP参数都是自解释的, TCP窗口大小设置为256960, 禁止TCP的时间戳(取消在每一个数据包的头中增长12字节), 支持更大的TCP窗口和TCP有选择的
应答.
上面数值的设定是根据互连网链接和最大带宽/延迟率来决定.
注: 上面实例中的数值能够实际应用, 但它只包含了一部分参数.
另一个方法: 使用 /etc/sysctl.conf 在系统启动时将参数配置成您所设置的值:
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
----------------------------------------------------------------------------------------------------------------------------
文件子系统的调优
ulimit -a 用来显示当前的各类用户进程限制。
Linux对于每一个用户,系统限制其最大进程数。为提升性能,能够根据设备资源状况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于须要作许多 socket 链接并使它们处于打开状态的 Java 应用程序而言,
最好经过使用 ulimit -n xx 修改每一个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每一个进程能够打开的文件数目加大到4096,缺省为1024
其余建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
暂时地,适用于经过 ulimit 命令登陆 shell 会话期间。
永久地,经过将一个相应的 ulimit 语句添加到由登陆 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加以下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 表明针对全部用户
noproc 是表明最大进程数
nofile 是表明最大文件打开数
2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改成 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restartnode
3)、修改全部 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
/**************************************
有时候在程序里面须要打开多个文件,进行分析,系统通常默认数量是1024,(用ulimit -a能够看到)对于正常使用是够了,可是对于程序来说,就太少
了。
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/login
session required /lib/security/pam_limits.so
**********
另外确保/etc/pam.d/system-auth文件有下面内容
session required /lib/security/$ISA/pam_limits.so
这一行确保系统会执行这个限制。
***********
3.通常用户的.bash_profile
#ulimit -n 1024
从新登录ok
----------------------------------------------------------------------------------------------------------------------------
内存子系统的调优
内存子系统的调优不是很容易,须要不停地监测来保证内存的改变不会对服务器的其余子系统形成负面影响。若是要改变虚拟内存参数
(在/proc/sys/vm),建议您每次只改变一个参数而后监测效果。对与虚拟内存的调整包括如下几个项目:
配置Linux内核如何更新dirty buffers到磁盘。磁盘缓冲区用于暂存磁盘的数据。相对于内存来说,磁盘缓冲区的速度很慢。所以,若是服务器使用
这类内存,性能会成问题。当缓冲区内的数据彻底dirty,使用:sysctl -w vm.bdflush="30 500 0 0 500 3000 60 20 0"
vm.bdflush有9个参数,可是建议您只改变其中的3个:
1 nfract, 为排队写入磁盘前,bdflush daemon容许的缓冲区最大百分比
2 ndirty, 为bdflush即刻写的最大缓冲区的值。若是这个值很大,bdflush须要更多的时间完成磁盘的数据更新。
7 nfract_sync, 发生同步前,缓冲区变dirty的最大百分比
配置kswapd daemon,指定Linux的内存页数量
sysctl -w vm.kswapd="1024 32 64"
三个参数的描述以下:
– tries_base 至关于内核每次所的“页”的数量的四倍。对于有不少交换信息的系统,增长这个值能够改进性能。
– tries_min 是每次kswapd swaps出去的pages的最小数量。
– swap_cluster 是kswapd 即刻写如的pages数量。数值小,会提升磁盘I/O的性能;数值大可能也会对请求队列产生负面影响。
若是要对这些参数进行改动,请使用工具vmstat检查对性能的影响。其它能够改进性能的虚拟内存参数为:
_ buffermem
_ freepages
_ overcommit_memory
_ page-cluster
_ pagecache
_ pagetable_cache
----------------------------------------------------------------------------------------------------------------------------
网络子系统的调优
操做系统安装完毕,就要对网络子系统进行调优。对其它子系统的影响:影响CPU利用率,尤为在有大量TCP链接、块尺寸又很是小时,内存的使用会
明显增长。
如何预防性能降低
以下的sysctl命令用于改变安全设置,可是它也能够防止网络性能的降低。这些命令被设置为缺省值。
◆关闭以下参数能够防止***对服务器IP地址的***
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
图Figure 10-7显示出将这些功能启用,链接数量明显下降.由于每一个TCP传输都包含远程客户端的信息缓存,因此有利于提升性能.缓存中存放round-trip时
间、最大segment大小、拥塞窗口的信息。
◆参数tcp_fin_timeout 是套接字关闭时,保持FIN-WAIT-2状态的时间。一个TCP链接以three-segment SYN序列开始, 以three-segment FIN序列结束.均
不保留数据.经过改变tcp_fin_timeout的值, 从FIN序列到内存能够空闲出来处理新链接的时间缩短了,使性能获得改进.改变这个值的前要通过认真的监测
,避免由于死套接字形成内存溢出.
sysctl -w net.ipv4.tcp_fin_timeout=30
◆服务器的一个问题是,同一时刻的大量TCP链接里有不少的链接被打开可是没有使用. TCP的keepalive功能检测到这些链接,缺省状况下,在2小时以后丢掉
. 2个小时的可能致使内存过分使用,下降性能.所以改为1800秒(30分钟)是个更好的选择:
sysctl -w net.ipv4.tcp_keepalive_time=1800
◆对于全部的队列,设置最大系统发送缓存(wmem) 和接收缓存(rmem)到8MB
sysctl -w net.ipv4.core.wmem_max=8388608
sysctl -w net.ipv4.core.rmem_max=8388608
这些设置指定了建立TCP套接字时为其分配的内存容量. 另外,使用以下命令发送和接收缓存.该命令设定了三个值:最小值、初始值和最大值:
sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608"
sysclt -w net.ipv4.tcp.wmem="4096 87380 8388608"
第三个值必须小于或等于wmem_max和rmem_max。
◆(SUSE LINUX Enterprise Server适用) 经过保留路径验证来源数据包。缺省状况下,路由器转发全部的数据包,即使是明显的异常网络流量。经过
启动和是的过滤功能,丢掉这些数据包:
sysctl -w net.ipv4.conf.eth0.rp_filter=1
sysctl -w net.ipv4.conf.lo.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.conf.all.rp_filter=1
◆当服务器负载繁重或者是有不少客户端都是超长延时的链接故障,可能会致使half-open链接数量的增长。这对于Web服务器很来说很日常,尤为有不少拨
号客户时.这些half-open链接保存在 backlog connections 队列中.将这个值最少设置为4096 (缺省为1024). 即使是服务器不接收这类链接,设置这个值
还能防止受到denial-of-service (syn-flood)的***.
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
◆设置ipfrag参数,尤为是NFS和Samba服务器。这里,咱们能够设置用于从新组合IP碎片的最大、最小内存。当ipfrag_high_thresh值被指派,碎片会被丢
弃直到达到ipfrag_low_thres值。
当TCP数据包传输发生错误时,开始碎片整理。有效的数据包保留在内存,同时损坏的数据包被转发。例如,设置可用内存范围从256 MB到384 MB
sysctl -w net.ipv4.ipfrag_low_thresh=262144
sysctl -w net.ipv4.ipfrag_high_thresh=393216
----------------------------------------------------------------------------------------------------------------------------
网络安全设置:
TCP SYN Flood 攻擊
TCP SYN Flood是一種常見,并且有效的遠端(遠程)拒絕服務(Denial of Service)攻擊方式,它透過必定的操做破壞TCP三次握手创建正常連接,佔用並耗
費系統資源,使得提供TCP服務的主機系統無法正常工做。由於TCP SYN Flood是透過網路底層對服務器Server進行攻擊的,它能够在任意改變本身的網路
IP地址的同時,不被網路上的其余設備所識別,這樣就給防範網路犯罪部門追查犯罪來源形成很大的困難。
系統檢查
通常情況下,能够一些簡單步驟進行檢查,來判斷系統是否正在遭受TCP SYN Flood攻擊。
一、服務端無法提供正常的TCP服務。連接請求被拒絕或超時。
二、透過 netstat -an 命令檢查系統,發現有大量的SYN_RECV連接狀態。
3. iptables的设置,引用自CU
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写做
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn并发数每秒1次,能够根据本身的须要修改
防止各类端口扫描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水***(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
----------------------------------------------------------------------------------------------------------------------------
暂定步骤:
修改/etc/profile文件,加入:
ulimit -u 10240
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
修改/etc/rc.d/rc.local,加入:
echo ‘131072′ > /proc/sys/fs/file-max
echo ‘131072′ > /proc/sys/fs/inode-max
(1G内存值修改为:65535 2G内存值修改为:131072 4G内存值修改为:262144)
修改/etc/sysctl.conf文件,加入:
net.core.rmem_default = 8388608
net.core.rmem_max = 8388608
net.core.wmem_default = 8388608
net.core.wmem_max = 8388608
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
net.core.netdev_max_backlog=3000
#Modify i-node
sys.fs.file-max= 65535
sys.fs.inode-max= 65535
#Set System Memory
vm.bdflush="30 500 0 0 500 3000 60 20 0"
vm.kswapd="1024 32 64"
#Disable HackAttack!
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.lo.secure_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.eth0.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.eth0.send_redirects=0
net.ipv4.conf.lo.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.tcp_syncookies=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
#Web Servers
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1800
net.ipv4.core.wmem_max=16777216
net.ipv4.core.rmem_max=16777216
net.ipv4.tcp_rmem="4096 87380 8388608"
net.ipv4.tcp.wmem="4096 87380 8388608"
net.ipv4.tcp_max_syn_backlog=8192
防火墙安全:
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写做
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn并发数每秒1次,能够根据本身的须要修改
防止各类端口扫描
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水***(Ping of Death)
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
备注说明:(相对比较激进的网络参数调整)
# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000
----------------------------------------------------------------------------------------------------------------------------
LINUX安全设置步骤:
删除全部那些不能在你系统上使用的默认用户和组帐户: lp,sync,shutdown,halt, news, uucp, operator, games, gopher
ROOT自动从shell注销
编辑你的配置文件”vi /etc/profile”,在某个地方加入以下行,
“HISTFILESIZE=”
TMOUT=3600
咱们为变量”TMOUT=”输入的这个值使用秒表示的、表明一个小时(60*60=3600秒)。若是你将此行加入你的“/etc/profile” 文件,那么在一小时的
非活动状态以后将要系统里的全部用户自动注销。你能够在用户私人的”.bashrc”文件里面
设置这个变量,能够在一个肯定的时间之后自动注销他们。
禁止而且卸载全部没有用的服务
你必须禁止别切卸载全部你不用的的服务,那样的话,你就能少担忧一些。看看你的”/etc/inetd.conf”文件, 用注释的方法禁用(在一行的开始加个#
),而后给inetd进程发送一个SIGHUP命令去更新到当前的”inetd.conf”文件。这样作:
第一步把”/etc/inetd.conf”更改许可权限成600,那样的话,就只有root能够读和写。
[Root@kapil /]# chmod 600 /etc/inetd.conf
第二步确保”/etc/inetd.conf”的全部者是root。
第三步编辑inetd.conf文件(vi /etc/inetd.conf),而且禁止一些服务,就像:ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop
-3, finger, auth等等,除非你打算用它。关闭这些服务就下降一些风险。
第四步给你的inetd进程发送一个HUP信号[root@kapil /]# killall -HUP inetd
第五步设置”/etc/inetd.conf”文件为不可更改,使用 chattr 命令,这样的话,没人能修改那个文件。*简单的设置文件为不可更改,执行以下命令:
[root@kapil /]# chattr +i /etc/inetd.conf
这将防止对”inetd.conf”文件的任何更改(意外的更改或者其余更改)。只有超级用户root能设置或者清除这个文件属性。修改inetd.conf *简单的取
消不可更改的设置,执行以下命令:
[root@kapil /]# chattr -i /etc/inetd.conf
免疫”/etc/services”文件
你必须免疫 “/etc/services” 文件,防止未经受权的删除、增长服务。
免疫 “/etc/services” 文件,使用命令:
[root@kapil /]# chattr +i /etc/services
禁止Control-Alt-Deletc键盘关机命令
在你的”/etc/inittab”文件里面注释掉以下的行(用一个”#”)。
这样作,编辑inittab文件(vi /etc/inittab),更换:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
读入:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
如今,按照以下提示输入,让更改生效:
[root@kapil /]# /sbin/init q
为脚本文件整理”/etc/rc.d/init.d”下的权限
整理脚本文件的许可权限,可靠的开始和结束全部你须要在引导时运行的常态进程,这样作:
[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*
这意味着只有root能够被容许读,写,和执行目录里面的脚本文件。
隐藏你的系统信息
默认状态下,当你登陆到linux机器时,他告诉你Linux分布商的名字,版本,核心版本和服务器名字。这对一个骇客来讲从你的服务器获得这些信息足够
了以必须马上用一个”Login:”提示符提示用户。
第一步
这样作,编辑”/etc/rc.d/rc.local”文件,放置”#”在以下行的前面。
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo “” >; /etc/issue
#echo “$R” >;>; /etc/issue
#echo “Kernel $(uname -r) on $a $(uname -m)” >;>; /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >;>; /etc/issue
第二步
而后,删除以下文件:在”/etc/”目录下的”issue.net” 和 “issue”:
[root@kapil /]# rm -f /etc/issue
[root@kapil /]# rm -f /etc/issue.net
禁止未用的 SUID/SGID 程序
一个常规用户若是设置为SUID root,将可以做为root运行程序。一个系统管理员必须最小化使用这些 SUID/GUID程序, 并且禁止那些不须要的程序。
第1步
从root拥有的程序里发现全部有`s’ 位的程序,用此命令:
[root@kapil]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;
* 在被选中的程序上禁止suid 位,键入以下命令:
[root@kapil /]# chmod a-s [program]
关闭ipv6
vi /etc/modprobe.conf,在文件中添加如下两行
alias net-pf-10 off
alias ipv6 offlinux