硬件采购优化(目前不考虑)
如果公司业务做大,可能需要购买硬件,所以需要对硬件有所要求
硬件采购方案
多家询问,看市场价
确定供货商之后,看详细的合同,填写申请单,通知人事和财务
签合同走相关程序,发货,验货,测试,上线
最好统一采购通同型号的服务器,同型号,同版本系统,统一管理
安装系统采用kickstart统一安装,除特别的服务如MySQL……
系统优化,把套接字数调到最大
ulimit -HSn 65535
设置相应系统的块大小,系统文件平均大小大于4K,最好这样设置
mke2fs -b 4096 -m 1 /dev/sda6
sudo控制用户权限
visudo
user ALL=(ALL) ALL
禁止用户ping服务器,当然也可以在iptables服务器上设置
echo “net.ipv4.icmp_echo_ignore_all=1” >>/etc/sysctl.conf
sysctl �Cp
关闭多余的控制台。
对单用户模式启动加密
/sbin/grub-md5-crypt
禁止键盘重启,修改/etc/inittab文件
编辑/etc/init/control-alt-delete.conf,找到
start on control-alt-delete
更改为
#start on control-alt-delete
删除登录提示的消息
安装监控套件,实时监控系统
为系统安装基础包
base
editors
developmentlibrarys
developmenttools
xsoftware developmentsystem tools
一键安装基础包
yumgroupinstall "develop tools"
关闭没用的端口,一般只启用服务端口,ssh,network,
rsyslog,crond (脚本实现)
for yimi in `chkconfig �Clist | grep 3:on |awk ‘{print $1}’`;
do
chkconfig �Clevel 3 $yimi off;
done
for yimi in {crond network rsyslog sshd};
do
chkconfig �Clevel 3 $yimi on;
done
禁止root通过远程登录,修改ssh端口好
锁定关键文件的
黑客一般通过脚本批量修改,上面可以防止脚本修改,如果Hacker通过手动更改还是不行
所以我们一般把chattr命令改名,Hacker可能就不知道了,安全性更高
网关调优优化参数配置
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
nginx服务内核优化
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_tw_buckets = 1800000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_retriesl = 22
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 3
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
Sudo控制权限举例
如果使用sudo管理权限那么给普通用户和超级用户的权限应该怎么给,有待讨论
关闭一些可能不需要的用户
关闭可能不需要的组,编辑/etc/group文件
配置防火墙iptables和seLinux,配置hosts访问权限文件
基于io,CPU,network网络,process进程,filesystem文件性能调整(经理加固文档已经做了安排,如下所示)
通过修改Linux内核参数,可以减少服务器的TIME_WAIT套接字数量 ,来达到预防DDos攻击的目的。
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 102465000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_mem = 192000 300000732000
上述内存单位是页,而不是字节
net.ipv4.tcp_rmem = 51200 131072204800
最大socket读buffer
net.ipv4.tcp_wmem = 51200 131072204800
TCP写buffer
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
net.ipv4.tcp_max_orphans = 2000
net.ipv4.tcp_syncookies = 1
表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
net.ipv4.tcp_tw_reuse = 1
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 1
表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭
以下3个参数与TCP KeepAlive有关.设为如下值:
net.ipv4.tcp_keepalive_time = 20
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_keepalive_probes = 2
#改善io系统的性能
vm.dirty_expire_centisecs = 1500
vm.dirty_writeback_centisecs =1000
vm.dirty_ratio = 20
vm.dirty_background_ratio = 100
#保证内存相关参数
vm.min_free_kbytes=409600
vm.vfs_cache_pressure=200
vm.swappiness = 40
定期清理一些不需要的文件,一个月前的文件
find /var/log/-type f �Cmtime +30 | xargs rm �Crf
重要日志设置root只读 chmod 400 文件
/var/log/message 系统启动后的信息和错误日志
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
防DOS攻击
echo "* soft core 0" >> /etc/security/limits.conf
echo "* hard core 0" >>/etc/security/limits.conf
echo "* hard rss 5000" >>/etc/security/limits.conf
echo "* hard nproc 20" >>/etc/security/limits.conf
echo "session required /lib/security/pam_limits.so" >> /etc/pam.d/login
设置sysctl.conf的权限
chownroot:root /etc/sysctl.conf
chmod600 /etc/sysctl.conf
备份重要文件…..."
cp-rpf /etc/inittab /etc/inittab.bak
cp-rfp /etc/fstab /etc/fstab.bak
cp-rfp /boot/grub /boot/grub.bak
设置防止IP欺骗…..."
echo"order bind,hosts" > /etc/host.conf
echo"multi on" >> /etc/host.conf
echo"nospoof on" >> /etc/host.conf