Linux System Reinforcement

目录

1.文件系统及访问权限
2. Linux日志审计
3. 帐号安全管理
4. 基础物理安全
5. 系统编译环境安全
6. 系统病毒、后门、rootkit安全
7. 系统端口、服务安全
8. 系统内核安全

 

1.文件系统及访问权限

Linux为每个文件都分配了一个文件所有者,称为"文件属主",并赋予文件主惟一的注册名

1. 对文件的控制取决于文件主或超级用户root(linux系统中的root用户有无条件的最高权限)
2. 文件或目录的创建者(属主)对所创建的文件或目录拥有特别使用权
文件的所有关系是可以改变的,文件或目录的所有权可以转让给其它用户,但只有文件主或root用户才有权改变文件的所有关系

linux下文件/目录的权限基本原理如下

1. 文件权限转移
文件的所有权标志是用户ID(UID)。chown命今可以更改某个文件或目录的所有权。例如,超级用户把自己的一个文件拷贝给用户cg,为了让用户cg能够存取这个文件,超级用户(root)应该把这个文件的属主设为cg,否则,用户cg就
无法存取这个文件 chown [cfhvR] 用户 或 组[文件1] [文件2]....
1) 用户可以是用户名或用户ID 2) 文件是以空格分开的、要改变权限的文件列表,可以用通配符表示文件名 如果改变了文件或目录的所有权,原文件主将不再拥有该文件或目录的权限。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限 2. 文件的属主/属组 在Linux下,每个文件又同时属于一个用户组。当创建一个文件或目录时,系统就会赋予它一个用户组关系,用户组的所有成员都可以使用此文件或目录。 文件用户组关系的标志是GID。文件的GID只能由文件主或超级用户(root)来修改。chgrp命令可以改变文件或目录的拥有者或所属群组 chgrp [cfhRv] group文件名或目录 1) group是用户组ID 2) 文件名是以空格分开的,它支持通配符 Linux系统中的每个文件和目录都有访问许可权限(ACL),用它来确定谁可以通过何种方式对文件和目录进行访问及操作。访问权限规定三种不同类型的用户 1) 文件主(owner) 2) 同组用户(group) 3) 可以访问系统的其它用户(others) 访问权限规定三种访问文件或目录的方式,即 1) 读(r) 1.1) 文件 对于文件,读权限(r)表示只允许指定用户读其内容,而禁止对其做任何的更改操作,将所访问的文件内容作为输入的命令需要有读的权限,例如命令more、head、cat等 1.2) 目录 对于目录,读权限(r)可以列出存储在该目录下的文件,即读目录内容列表。这一权限允许shell使用文件扩展名字符列出相匹配的文件名(即ll xxdir | grep xxx) 2) 写(w) 2.1) 文件 写权限(w)表示允许指定用户打开并修改文件,例如命令cp、vi、mv等 2.2) 目录 写权限(w)表示允许从目录中删除或添加新的文件,通常只有目录主才有写权限 3) 可执行(x) 3.1) 文件 执行权限(x)允许指定用户将该文件作为一个程序执行。可以使用"ls -l"查看一个文件的详细属性。 3.2) 目录 执行权限(x)允许在目录中查找,并能用cd命令将工作目录改到该目录。使用"ls -ld"命令可以查看一个目录的详细属性

Relevant Link:

http://www.cnblogs.com/LittleHann/p/3862652.html
http://www.2cto.com/Article/201205/129787.html

 

2. Linux日志审计

0x1: 系统级别的日志

Linux的日志文件用来记录整个操作系统使用状况,他们是黑客攻击的重点目标,linux系统中,大部分的日志都保存在/var/log(还有一些例外例如mysql、未读邮件等),所以作为一个Linux网络系统管理员要充分用好以下几个系统日志文件

1. /var/log/boot.log
系统的引导日志

2. /var/log/dmesg
核心(内核)启动日志

3. /var/log/messages: 系统报错日志
messages日志是核心系统日志文件。它包含了大量的运行时信息,例如
    1) 系统启动时的引导消息
    2) IO错误
    3) 网络错误信息
    4) 某个人的身份切换为root
    5) 如果服务正在运行,比如DHCP服务器,您可以在messages文件中观察它的活动
通常,/var/log/messages是我们在做故障诊断时首先要查看的文件 

4. /var/log/maillog
邮件系统日志

5. /var/log/xferlog
FTP系统日志
 
6. /var/log/secure 
记录系统自开通以来所有用户的登录时间和地点,可以给系统管理员提供更多的参考

7. /var/log/wtmp 
记录当前和历史上登录到系统的用户的登录时间、地点和注销时间等信息。和/var/log/lastlog一样,这个文件是一个二进制文件,需要用last命令查看
last -f /var/log/wtmp

8. /var/log/spooler
News日志

9. /var/log/rpmpkgs
RPM软件包

10. /var/log/boot.log: 引导日志
记录开机启动讯息,就是Linux系统开机自检过程显示的信息
dmesg | more

11. /var/log/cron: cron(定制任务日志)日志
该日志文件记录crontab守护进程crond所派生的子进程的动作(包括用户、登录时间和PID,以及派生出的进程的动作)
    1) CMD的一个动作是cron派生出一个调度进程的常见情况
    2) REPLACE(替换)动作记录用户对它的cron文件的更新
    3) RELOAD动作在REPLACE动作后不久发生,这意味着cron注意到一个用户的cron文件被更新而cron需要把它重新装入内存
该文件可能会查到一些反常的情况

12. /var/log/lastlog
记录最后进入系统的用户信息,包括登录的时间、登录是否成功等信息。这个文件是一个2进制文件,需要用lastlog命令进行读取
    1) lastlog
    查看一下/var/log/lastlog文件中记录的所用账号的最后登录时间,再与自己的用机记录对比一下就可以发现该账号是否被黑客盗用,如果发现在某个时间段有一个自己不认可的帐号的进行了登录,则说明发现了可疑行为 
    2) du -h /var/log/lastlog
    查看其lastlog保存空间占用情况 
    3) echo "" > /var/log/lastlog
    清空lastlog的日志保存

以上几个文件都是由klogd、和syslogd进行记录的

1. klogd
通常klogd用来记录系统内核所产生的日志信息,也就是工作在系统内核态的进程所产生的日子记录

2. syslogd守护进程进行记录的
syslogd用来记录工作在用户态的进程的日志信息,这些程序包括以下几种进程
    1) 用户进程
    2) 网络服务器进程
    3) 多数的系统守护进程

因此,对于管理人员而言,通过及时检查syslogd记录的信息能够发现绝大多数的系统异常情况

syslogd负责发送、记录系统内核及工具所产生的信息。整个机制由以下几部分共同组成
    1) 系统调用syslog()

    2) 系统守护进程syslogd
    sys1ogd进程在系统启动时由/etc/rc.d/rc2.d/S12syslog启动。如果需要手工启动或停止syslogd,可以使用下面命令:
        2.1) /etc/rc.d/init.d/syslog start | stop

    3) 配置文件/etc/syslog.conf 
    通过配置syslog.conf,可以灵活地对信息的发送和保存进行控制

当系统内核及工具产生信息时,通过调用syslog(),把信息送往syslogd,它再根据/etc/syslog.conf中的配置要求,这些信息分别做如下处理

1) 记录到系统日志中
2) 输出到系统控制台上
3) 转发给指定的用户
4) 通过网络转发给其它主机上的syslogd 

0x2: 用户级别的操作日志

1. 特权指令执行记录
除了系统登录记录和syslog记录之外,在linux系统里,使用自己的记录方式。系统每天都会自动检查系统的安全设置, 包括对SetUID、SetGID的执行文件的检查,其结果将输出到/var/log/setuid.today文件中,管理员可以与
/var/log/security.yesterday文件对比,寻找系统安全设置的变化。 2. 硬件状态信息 在系统启动的时候,就将内核的检测信息输出到屏幕上,这些信息可以帮助用户分析系统中的硬件状态。一般使用dmesg命令来查看最后一次启动时输出的这个检测信息,这些信息被系统保存在/var/log/dmesg文件中 #cat /var/log/dmesg |more Linux version 2.6.32-431.23.3.el6.centos.plus.i686 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Tue Jul 29 23:27:50 UTC 2014 KERNEL supported cpus: Intel GenuineIntel AMD AuthenticAMD NSC Geode by NSC Cyrix CyrixInstead Centaur CentaurHauls Transmeta GenuineTMx86 Transmeta TransmetaCPU UMC UMC UMC UMC Disabled fast string operations BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009f400 (usable) BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved) BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000007fef0000 (usable) BIOS-e820: 000000007fef0000 - 000000007feff000 (ACPI data) BIOS-e820: 000000007feff000 - 000000007ff00000 (ACPI NVS) BIOS-e820: 000000007ff00000 - 0000000080000000 (usable) BIOS-e820: 00000000f0000000 - 00000000f8000000 (reserved) BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved) ..... 3. Bash Shell执行记录 各种Bash(kshell、cshell)还会记录用户使用的命令历史,使用用户主目录下的文件来记录这些命令历史,通常这个文件的名字为 1) .bash-history 2) .history(csh) ..

Relevant Link:

http://blog.chinaunix.net/uid-25120309-id-3359929.html
http://www.liufofu.com/201207524.html
http://blog.chinaunix.net/uid-26569496-id-3199434.html

 

3. 帐号安全管理

0x1: 账户安全

1. 锁定系统中多余的自建帐号
检查方法: 执行命令
    1) #cat /etc/passwd
      2) #cat /etc/shadow
查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户:bin、sys、adm、uucp、lp、nuucp、hpdb、www、daemon等可根据需要锁定登陆
在进行操作之前,需要与管理员确认此项操作不会影响到业务系统的登录,如果对操作后的风险不确定,则可以采用备份的思路
备份方法:
      1) #cp -p /etc/passwd /etc/passwd_bak
      2) #cp -p /etc/shadow /etc/shadow_bak
加固方法:
      1) 使用命令passwd -l <用户名>锁定不必要的账号
      2) 使用命令passwd -u <用户名>解锁需要恢复的账号
  
2. 设置系统口令策略
检查方法: 执行命令
     1) #cat /etc/login.defs | grep PASS查看密码策略设置
备份方法:
      1) cp -p /etc/login.defs /etc/login.defs_bak
加固方法:
      1) #vi /etc/login.defs修改配置文件
      PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
      PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
      PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
      PASS_MIN_LEN 9 #最小密码长度9
  
3. 禁用root之外的超级用户
检查方法: 
      1) #cat /etc/passwd 查看口令文件,口令文件格式如下
备份方法:
      1) #cp -p /etc/passwd /etc/passwd_bak
加固方法:
      1) 使用命令passwd -l <用户名>锁定不必要的超级账户 
      2) 使用命令passwd -u <用户名>解锁需要恢复的超级账户  

4. 限制能够su为root的用户
检查方法:
      1) #cat /etc/pam.d/su
    查看是否有auth required /lib/security/pam_wheel.so这样的配置条目
备份方法: 
    1) #cp -p /etc/pam.d /etc/pam.d_bak
加固方法:
      1) #vi /etc/pam.d/su
      在头部添加:
      auth required /lib/security/pam_wheel.so group=wheel
      这样,只有wheel组的用户可以su到root
      #usermod -G10 test 
    将test用户加入到wheel组
   
5. 检查shadow中空口令帐号
检查方法:
      1) #awk -F: ( == "") { print } /etc/shadow
备份方法:
    1) cp -p /etc/shadow /etc/shadow_bak
加固方法:
    1) 对空口令账号进行锁定,或要求增加密码

0x2: 最小化服务

1. 停止或禁用与承载业务无关的服务
检查方法:
      1) runlevel 
    查看当前init级别
      2) chkconfig --list 
    查看所有服务的状态
备份方法:记录需要关闭服务的名称
加固方法:
      1) #chkconfig --level <服务名> on|off|reset 
    设置服务在个init级别下开机是否启动

0x3: 数据访问控制

1. 设置合理的初始文件权限
检查方法:
      1) cat /etc/profile 
    查看umask的值
备份方法:
      1) #cp -p /etc/profile /etc/profile_bak
加固方法:
      1) #vi /etc/profile
      umask=027 
会修改新建文件的默认权限,如果该服务器是WEB应用,则此项谨慎修改

0x4: 网络访问控制

1. 使用SSH进行管理
检查方法:
      1) ps –aef | grep sshd 
    查看有无此服务
备份方法:
加固方法:
      1) 使用命令开启ssh服务
      #service sshd start 

2. 设置访问控制策略限制能够管理本机的IP地址
检查方法:
      1) #cat /etc/ssh/sshd_config 
    查看有无AllowUsers的语句
备份方法:
      1) #cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
加固方法:
      1) #vi /etc/ssh/sshd_config
    添加以下语句
      AllowUsers *@10.138.*.* 此句意为: 仅允许10.138.0.0/16网段所有用户通过ssh访问
      保存后重启ssh服务
      2) #service sshd restart
值得注意的是,需要和管理员确认能够管理的IP段

3. 禁止root用户远程登陆
检查方法:
      1) #cat /etc/ssh/sshd_config 
    查看PermitRootLogin是否为no
备份方法:
      1) #cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
加固方法:
      1) #vi /etc/ssh/sshd_config
      PermitRootLogin no
      保存后重启ssh服务
      2) service sshd restart
"禁止root用户远程登陆"带来的直接后果就是root用户无法直接远程登录,需要用普通账号登陆后su

4. 限定信任主机
检查方法:
      1) #cat /etc/hosts.allow
    查看其中的主机
      2) #cat /$HOME/.rhosts 
    查看其中的主机
备份方法:
      1) #cp -p /etc/hosts.allow /etc/hosts.allow_bak
      #cp -p /$HOME/.rhosts /$HOME/.rhosts_bak
加固方法:
      1) #vi /etc/hosts.allow 
    删除其中不必要的主机
      2) #vi /$HOME/.rhosts 
    删除其中不必要的主机 

5. 屏蔽登录banner信息
检查方法:
      1) #cat /etc/ssh/sshd_config 
    查看文件中是否存在Banner字段,或banner字段为NONE
      2) #cat /etc/motd 
    查看文件内容,该处内容将作为banner信息显示给登录用户。
备份方法:
      1) #cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
      2) #cp -p /etc/motd /etc/motd_bak
加固方法:
      1) #vi /etc/ssh/sshd_config
      banner NONE
      2) #vi /etc/motd
      删除全部内容或更新成自己想要添加的内容 

6. 防止误使用Ctrl+Alt+Del重启系统
检查方法:
      1) #cat /etc/inittab | grep ctrlaltdel 查看输入行是否被注释
备份方法:
      1) #cp -p /etc/inittab /etc/inittab_bak
加固方法:
      1) #vi /etc/inittab
      在行开头添加注释符号"#"
      2) #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

0x5: 用户鉴别

1. 设置帐户锁定登录失败锁定次数、锁定时间
检查方法:
      1) #cat /etc/pam.d/system-auth 
    查看有无auth required pam_tally.so条目的设置
备份方法:
      1) #cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
加固方法:
      1) #vi /etc/pam.d/system-auth
      auth required pam_tally.so onerr=fail deny=6 unlock_time=300 
    设置为密码连续错误6次锁定,锁定时间300秒
      2) 解锁用户 faillog -u <用户名> -r
当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效性

2. 修改帐户TMOUT值,设置自动注销时间
检查方法:
      1) #cat /etc/profile 
    查看有无TMOUT的设置
备份方法:
      1) #cp -p /etc/profile /etc/profile_bak
加固方法:
      1) #vi /etc/profile
      增加
      TMOUT=600 
    无操作600秒后自动退出 

3. Grub/Lilo密码
检查方法:
      1) #cat /etc/grub.conf|grep password 
    查看grub是否设置密码
      2) #cat /etc/lilo.conf|grep password 
    查看lilo是否设置密码
备份方法:
      1) #cp -p /etc/grub.conf /etc/grub.conf_bak
      2) #cp -p /etc/lilo.conf /etc/lilo.conf_bak
加固方法:为grub或lilo设置密码
   
4. 限制FTP登录
检查方法:
      1) #cat /etc/ftpusers 
    确认是否包含用户名,这些用户名不允许登录FTP服务(只有你安装了ftp服务才会有这个文件)
备份方法:
      1) #cp -p /etc/ftpusers /etc/ftpusers_bak
加固方法:
      1) #vi /etc/ftpusers 
    添加行,每行包含一个用户名,添加的用户将被禁止登录FTP服务

5. 设置Bash保留历史命令的条数
检查方法:
      1) #cat /etc/profile|grep HISTSIZE=
      2) #cat /etc/profile|grep HISTFILESIZE= 
    查看保留历史命令的条数
备份方法:
      1) #cp -p /etc/profile /etc/profile_bak
加固方法:
      1) #vi /etc/profile
      修改HISTSIZE=5和HISTFILESIZE=5即保留最新执行的5条命令

0x6: 审计策略

1. 配置系统日志策略配置文件
检查方法:
      1) #ps –aef | grep syslog 
    确认syslog是否启用
      2) #cat /etc/syslog.conf 
    查看syslogd的配置,并确认日志文件是否存在
          2.1) 系统日志(默认)/var/log/messages
          2.2) cron日志(默认)/var/log/cron
          2.3) 安全日志(默认)/var/log/secure
备份方法:
      1) #cp -p /etc/syslog.conf
  
2. 为审计产生的数据分配合理的存储空间和存储时间
检查方法:
      1) #cat /etc/logrotate.conf 
    查看系统轮询配置,有无

 

4. 基础物理安全

0x1: BIOS
我们应该总是在系统启动的时候设置一个BIOS密码和禁用从CD-ROM和软盘引导。这将防止一些人未经允许访问你的系统和更改BIOS设置

 

5. 系统编译环境安全

0x1: 禁用代码编译
我们可以禁用代码编译并且只把编译的权限分配给一个用户组
方法:

//1. 添加编译用户组
/usr/sbin/groupadd compiler
//2. 把常见的编译器所属组赋给编译用户组
cd /usr/bin
chgrp compiler *cc*
chgrp compiler *++*
chgrp compiler ld
chgrp compiler as

0x2: .history安全
这是一个避免删除.bash_history或重定向到/dev/null的好方法,目的是禁止清除或删除他最后执行的命令,黑客常常通过删除.history来隐藏自己的攻击痕迹,影响取证
方法:

chattr +a .bash_history
chattr +i .bash_history  

0x3: chmod危险文件

chmod 700 /bin/ping
chmod 700 /usr/bin/finger
chmod 700 /usr/bin/who
chmod 700 /usr/bin/w
chmod 700 /usr/bin/locate
chmod 700 /usr/bin/whereis
chmod 700 /sbin/ifconfig
chmod 700 /usr/bin/pico
chmod 700 /usr/bin/vi
chmod 700 /usr/bin/which
chmod 700 /usr/bin/gcc
chmod 700 /usr/bin/make
chmod 700 /bin/rpm

0x4: 指定允许root登陆的TTY设备

/etc/securetty文件允许你指定root可以从哪个TTY设备登录
方法:

vi /etc/securetty
//一个好的建议是,只留2个可信的连接
tty1
tty2

Relevant Link:

http://yonghui702.blog.163.com/blog/static/817183420110131102257/

 

6. 系统病毒、后门、rootkit安全

0x1: 检测Rootkit

关于rootkit的基本原理和防御策略请参阅另外几篇文章

http://www.cnblogs.com/LittleHann/p/3870974.html
http://www.cnblogs.com/LittleHann/p/3879118.html
http://www.cnblogs.com/LittleHann/p/3879961.html

 

7. 系统端口、服务安全

0x1: 关闭不用的服务

我们应该把任何未使用的服务关闭,可以在/etc/xinetd.d文件夹里找到
方法:

cd /etc/xinetd.d
grep disable *
//这将显示所有服务开启或关闭的状态,然后根据需要来开启或关闭服务

0x2: 检测监听的端口

检测是否有必要开放端口是非常重要的
方法:

netstat -tulp
lsof -i -n | egrep ‘COMMAND|LISTEN|UDP’
nmap!
//这3种方法都可以

 

8. 系统内核安全

0x1: 内核加固

sysctl.conf用来加固内核,目的是避免DOS和欺骗攻击
方法:

//1. 了解下当前配置的大概情况
sysctl -a
//2. 添加如下内容
vi /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
#Prevent SYN attack
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
# Disables packet forwarding
net.ipv4.ip_forward=0
# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.lo.log_martians = 1
net.ipv4.conf.eth0.log_martians = 1
# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
14
net.ipv4.conf.default.rp_filter = 1
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Disables the magic-sysrq key
kernel.sysrq = 0
# Modify system limits for Ensim WEBppliance
fs.file-max = 65000
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 15
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off the tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0
# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1
# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 1
# Set maximum amount of memory allocated to shm to 256MB
kernel.shmmax = 268435456
# Improve file system performance
vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
# Improve virtual memory performance
vm.buffermem = 90 10 60
# Increases the size of the socket queue (effectively, q0).
net.ipv4.tcp_max_syn_backlog = 1024
# Increase the maximum total TCP buffer-space allocatable
net.ipv4.tcp_mem = 57344 57344 65536
# Increase the maximum TCP write-buffer-space allocatable
net.ipv4.tcp_wmem = 32768 65536 524288
15
# Increase the maximum TCP read-buffer space allocatable
net.ipv4.tcp_rmem = 98304 196608 1572864
# Increase the maximum and default receive socket buffer size
net.core.rmem_max = 524280
net.core.rmem_default = 524280
# Increase the maximum and default send socket buffer size
net.core.wmem_max = 524280
net.core.wmem_default = 524280
# Increase the tcp-time-wait buckets pool size
net.ipv4.tcp_max_tw_buckets = 1440000
# Allowed local port range
net.ipv4.ip_local_port_range = 16384 65536
# Increase the maximum memory used to reassemble IP fragments
net.ipv4.ipfrag_high_thresh = 512000
net.ipv4.ipfrag_low_thresh = 446464
# Increase the maximum amount of option memory buffers
net.core.optmem_max = 57344
# Increase the maximum number of skb-heads to be cached
net.core.hot_list_length = 1024
## DO NOT REMOVE THE FOLLOWING LINE!
## nsobuild:20051206 
//3. 重启后生效
sbin/sysctl -p
sysctl -w net.ipv4.route.flush=1

 

Copyright (c) 2014 LittleHann All rights reserved

 

Linux System Reinforcement,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。