Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92923
  • 博文数量: 50
  • 博客积分: 982
  • 博客等级: 准尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-16 12:19
文章分类

全部博文(50)

文章存档

2012年(5)

2011年(45)

我的朋友

分类: LINUX

2011-02-28 16:04:02

[设置Ngnix可提供AVI、MP3等的下载]

    # vi /usr/local/webserver/nginx/conf/mime.types

    ↑ 编辑mime.types文件

    将需要提供下载的格式前的文件类型修改为"application/octet-stream"

    # vi /usr/local/webserver/nginx/conf/mime.types.default

    ↑ 编辑mime.types.default文件

    将需要提供下载的格式前的文件类型修改为"application/octet-stream"

    [设置网站并发数限制]

    已在配置nginx.conf文件时加入并发数限制,具体参见官方维基百科(

    

     "部分

    [设置nginx程序限制的1M上传问题]

    已在配置nginx.conf文件时取消1M上传限制,具体参见nginx.conf文件内注释

    [优化PHP]

    具体参见(

    http://www.cnprint.org/bbs/blogs/1/blog312.html)\"php

     优化设置"部分

    此处仅设置部分必要内容

    # vi /usr/local/webserver/php/etc/php.ini

    ↑ 编辑php.ini文件

    1.将"disable_functions ="

    修改为 "disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status"

    ↑**这条建议在网站建成之后修改**该选项可以设置哪些PHP函数是禁止使用的,PHP中有一些函数的风险性还是相当大的,可以直接执行一些系统级脚本命令,如果允许这些函数执行,当PHP程序出现漏洞时,损失是非常严重的!

    需注意:如果您的服务器中含有一些系统状态检测的PHP程序,则不要禁用shell_exec,proc_open,proc_get_status等函数。

    2.将"upload_max_filesize = 2M"

    修改为 "upload_max_filesize = 50M"

    ↑该选项设定PHP所能允许最大上传文件大小,默认为2MB。根据实际应用需求,可以适当增大该设置。

    [优化mysql]

    具体参见(

    http://www.cnprint.org/bbs/blogs/1/blog312.html)\"mysql

     优化及安全设置"部分

    此处仅设置部分必要内容

    # vi /usr/local/webserver/mysql/my.cnf ↑ 编辑my.cnf文件

    1.将"table_cache = 64"

    修改为 "table_cache = 512"

    ↑指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间 的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果您发现open_tables等于 table_cache,并且opened_tables在不断增长,那么您就需要增加table_cache的值了(上述状态值可以使用show status like 'Open_tables'获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能 不稳定或者连接失败。

    2.将"sort_buffer_size = 512k"

    修改为 "sort_buffer_size = 2M"

    ↑每个线程排序所需的缓冲

    3.将"read_buffer_size = 128k"

    修改为 "read_buffer_size = 2M"

    ↑当一个查询不断地扫描某一个表,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果您认为连续扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。

    4.将"read_rnd_buffer_size = 512k"

    修改为 "read_rnd_buffer_size = 4M"

    ↑加速排序操作后的读数据,提高读分类行的速度。如果正对远远大于可用内存的表执行GROUP BY或ORDER BY操作,应增加read_rnd_buffer_size的值以加速排序操作后面的行读取。仍然不明白这个选项的用处…

    5.将"myisam_sort_buffer_size = 8M"

    修改为 "myisam_sort_buffer_size = 32M"

    ↑用于REPAIR TABLE。不明白这个选项的用处,百度上找到的设置方向也是五花八门,有128M、64M、32M等,折中选一个。

    [mysql的安全设置]

    具体参见(

    http://www.cnprint.org/bbs/blogs/1/blog312.html)\"Mysql

     的安全设置"部分

    此处仅设置部分必要内容

    **iptables中设置**关闭远程连接,即3306端口。这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本,所以不需要远 程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过 MySQL的内建安全机制。(您必须确定,您是否真的不需要远程连接mysql)

    [系统整体安全调整]

    1、**最后设置**RHEL或Red Had Enterprise Linux 5.X 的用户要首先要打开SElinux,方法是修改/etc/selinux/config文件中的SELINUX="" 为enforcing 。它可以保证您的系统不会非正常的崩溃。有些人认为应该关闭,我强烈不推荐,当然只是将RHEL用来玩玩,不是用于实际服务器则无所谓了。

    2、**最后设置**启用iptables 防火墙,对增加系统安全有许多好处。设置好防火墙的规则。

    iptables要求:

    * 屏蔽所有端口

    * 把SSH的缺省端口设置为56565

    * 把56565、80、3306端口打开

    * 把3306端口设置为只允许本机访问

    Iptables规则:

    # vi /usr/local/webserver/fw.sh

    将以下脚本命令粘贴到 fw.sh 文件中

    #!/bin/bash

    # Stop iptables service

    /sbin/service iptables stop

    # Inital chains default policy

    /sbin/iptables -F -t filter

    /sbin/iptables -P INPUT DROP

    /sbin/iptables -P OUTPUT ACCEPT

    # Enable Native Network Transfer

    /sbin/iptables -A INPUT -i lo -j ACCEPT

    # Accept Established Connections

    /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # ICMP Control

    /sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

    # WWW Service

    /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

    # SSH Service

    /sbin/iptables -A INPUT -p tcp --dport 56565 -j ACCEPT

    # Anti DDOS

    /sbin/iptables -I INPUT -p tcp --syn -m ttl --ttl-eq 117 -j DROP

    /sbin/iptables -I INPUT -p tcp --syn -m length --length :40 -j DROP

    # mysql 3306 Accept

    /sbin/iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT

    /sbin/iptables -A OUTPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT

    # Start iptables service

    /sbin/service iptables start

    保存后执行以下命令

    # chmod 755 /usr/local/webserver/fw.sh

    # echo '/usr/local/webserver/fw.sh' >> /etc/rc.d/rc.local

    # /usr/local/webserver/fw.sh

    3、执行setup关闭那些不需要的服务,少开一个服务,就少一个危险,已在中设置

    4、禁止Control-Alt-Delete键盘关闭命令

    在"/etc/inittab"文件中注释掉下面这行(使用#):

    # vi /etc/inittab

    将"ca::ctrlaltdel:/sbin/shutdown -t3 -r now" 修改为: "#ca::ctrlaltdel:/sbin/shutdown -t3 -r now"

    为了使这项改动起作用,输入下面这个命令:

    # /sbin/init q

    5、给"/etc/rc.d/init.d"下script文件设置权限

    给执行或关闭启动时执行的程序的script文件设置权限。

    # chmod -R 700 /etc/rc.d/init.d/*

    这表示只有root才允许读、写、执行该目录下的script文件。

    6、使"/etc/services"文件免疫

    使"/etc/services"文件免疫,防止未经许可的删除或添加服务:

    #chattr +i /etc/services

    7.阻止您的系统响应任何从外部/内部来的ping请求。

    既然没有人能ping通您的机器并收到响应,您可以大大增强您的站点的安全性。您可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。

    # vi /etc/rc.d/rc.local

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

    8、对您的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)

    如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:

    # vi /etc/security/limits.conf

    下面的代码示例中,所有用户每个会话都限制在 10 MB,并允许同时有四个登录。第三行禁用了每个人的内核转储。第四行除去了用户 bin 的所有限制。

    * hard rss 10000

    * hard maxlogins 4

    * hard core 0

    bin -

    激活这些限制

    # vi /etc/pam.d/login 底部添加一行: session required /lib/security/pam_limits.so。

    9、用chattr命令给下面的文件加上不可更改属性。

    # chattr +i /etc/passwd

    # chattr +i /etc/shadow

    # chattr +i /etc/group

    # chattr +i /etc/gshadow

    **mysql数据库密码变更后再设置**注意执行这个操作后,以root身份都不能向系统增加用户或者修改密码了。

    如果我们要增加用户或者修改密码的。应该先用chattr -i /etc/passwd等命令解除不可写设置,再进行操作。

    10、修改sshd的端口:

    修改防火墙配置,开启新的远程端口(56565)

    # vi /etc/sysconfig/iptables

    修改/etc/ssh/sshd_config:

    # vi /etc/ssh/sshd_config

    将里面的 Port 改为 56565,(具体的端口随意,不能和其他程序的端口冲突)。并注释掉前面的#号

    使sshd服务生效:

    # pkill sshd

    # service sshd start

    修改防火墙配置,关闭旧的远程端口(22)

    # vi /etc/sysconfig/iptables

    注意:修改了防火墙配置文件后不得再使用setup修改防火墙设置,否则现在的设置会失效

    11、 内核参数调整

    编辑sysctl.conf文件:

    # vi /etc/sysctl.conf

    修改如下:

    net.ipv4.conf.default.accept_source_route=0

    net.ipv4.icmp_echo_ignore_broadcasts=1

    net.ipv4.icmp_echo_ignore_all=1

    net.ipv4.icmp_ignore_bogus_error_responses=1

    net.ipv4.ip_conntrack_max=65535

    net.ipv4.tcp_syn_retries=1

    net.ipv4.tcp_synack_retries=1

    net.ipv4.route.gc_timeout=100

    net.ipv4.tcp_max_syn_backlog=32768

    net.ipv4.conf.default.rp_filter=0

    net.ipv4.tcp_max_syn_backlog = 8192

    net.ipv4.tcp_max_tw_buckets = 5000

    kernel.shmmax = 134217728

    查看状态:

    # sysctl -p

    12、经常检查系统日志。系统日志主要位于/var/log/目录下。防患于未然。

    

    

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76292/showart_1676285.html

阅读(713) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~