Linux优化(服务器安全+性能)

以下内容是在老男孩linux/python初级培训时总结出来的

 

3.操作系统选择优化

 

可不配交换区(swap)。如果内存不足,增加更多的内存

服务调优,禁用不必要启动的服务,留更多的资源给mysql;

增加系统和MySQL服务器的打开文件数量(即文件描述符)及进程和线程数量。

Reiserfs对于打开、读写都非常快。文件检查只需几秒种。XFS,EXT3,EXT4也可。

文件系统调优,给数据仓库一个单独的文件系统,一般效率更高、更可靠。

给磁盘设置合适的block大小,减少IO读写次数。

不要使用NFS。光纤存储,SAN架构。

 

4.最小化软件包安装优化

一般情况下安装OS时,软件安装包组(Package Group)的选择:

base--------------------------基本环境

editors-----------------------编辑器

development librarys------开发库

development tools---------开发工具

x software development--图形界面开发软件

system tools----------------系统工具

yum groupinstall "develop tools " #双引号内为安装包组的名称

yum grouplist

 

5.禁止开机自启动无用服务

for oldboy in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig--level 3 $oldboy off;done

for oldboy in crond network syslog sshd;do chkconfig--level 3 $oldboy on;done

只留:crond network syslog sshd;

 

6.禁止root通过SSH远程登录并更改SSH端口

[root@centos ~]#cp /etc/ssh/sshd_config/etc/ssh/sshd_config.ori

#→更改配置前进行备份,是系统管理员的一个良好的习惯。

[root@centos ~]#vi /etc/ssh/sshd_config #→编辑sshd_config

####by oldboy#2011-11-24##

Port 52113 #→ssh连接默认的端口,谁都知道,必须要改。

PermitRootLogin no #→root用户黑客都知道的,禁止它远程登陆。

PermitEmptyPasswords no #→禁止空密码登陆

UseDNS no #不使用DNS

####by oldboy#2011-11-24##

 

7. chattr锁定关键系统文件

chattr +i /etc/passwd

chattr +i /etc/ shadow

chattr +i /etc/group

chattr +i /etc/gshadow

chattr +i /etc/services

chattr +i /etc/inittab

chattr +i /etc/rc.local

简单实现

for file in /etc/passwd /etc/ shadow /etc/group/etc/gshadow /etc/services /etc/inittab /etc/rc.local

do

chattr +i $file

done

 

8.内核优化(/etc/sysctl.conf),以下参数不全请勿直接使用

对这个内核参数可参考以下文章内容

http://www.linuxyw.com/a/tiaoyou/20130607/553.html

9.1 lvs/haproxy负载均衡代理内核参数配置

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.ipv4.ip_conntrack_max = 25000000

net.ipv4.netfilter.ip_conntrack_max=25000000

net.ipv4.netfilter.i

9.2 nginx/apache生产内核参数优化案例

cat >>/etc/sysctl.conf<<EOF

# Added by oldboy

net.ipv4.tcp_max_syn_backlog = 65536

net.core.netdev_max_backlog = 32768

net.core.somaxconn = 32768

 

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

 

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

 

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

 

net.ipv4.tcp_mem = 94500000 915

CDN公司cache服务器内核/etc/sysctl.conf优化案例

[root@CNC-TJ-D-711 ~]# sysctl -p |grep net.ipv4

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_retries1 = 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_sy

9.4内核参数优化特别说明

内核可优化的配置很多,但是对于一般的应用服务器来说,以上配置已经足够了。一些特殊的,甚至吹毛求疵的优化配置,要根据应用去处理,那是可遇不可求的。

 

10.增加系统文件描述符

[root@centos ~]#vim /etc/security/limits.conf

末尾加上

* - nofile 65535

注:配置完成后,重新登陆即可查看

[root@centos ~]# ulimit -n

65535

提示:也有人把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次重起生效。

[root@centos ~]# tail -4 /etc/rc.local

#open files

ulimit -HSn 65535

#stack size

ulimit -s 65535

 

11.配置sudo对普通用户权限精细控制

12.禁ping(非必须)

[root@C ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >>/etc/sysctl.conf #允许ping则赋值0

[root@C ~]# sysctl -p

 

13.关闭多余的控制台(非必须)

[root@C ~]# vi /etc/inittab

#将多余的控制台注释掉

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

#4:2345:respawn:/sbin/mingetty tty4

#5:2345:respawn:/sbin/mingetty tty5

#6:2345:respawn:/sbin/mingetty tty6

 

14.清除多余的系统虚拟账号(非必须)

1.关闭/etc/passwd中不必要的用户(可选优化项)

#adm:x:3:4:adm:/var/adm:/sbin/nologin

#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

#sync:x:5:0:sync:/sbin:/bin/sync

#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

#halt:x:7:0:halt:/sbin:/sbin/halt

#mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

#news:x:9:13:news:/etc/news:

#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

#operator:x:11:0:operator:/root:/sbin/nologin

#games:x:12:100:games:/usr/games:/sbin/nologin

#gopher:x:13:30:gopher:/var/gopher:/sbin/nologi

2.关闭/etc/group中不必要的用户(可选优化项)

#lp:x:7:daemon,lp

#mail:x:12:mail

#news:x:13:news

#games:x:20:

#ftp:x:50:

#mailnull:x:47:

#smmsp:x:51:

#vcsa:x:69:

#pcap:x:77:

#ntp:x:38:

 

15.配置防火墙iptables和SELinux

根据自己实际情况配置iptables,一般内网的后端服务器,是不需要开启iptables的

16. grub加密码(非必须)

17.设置/etc/hosts.deny、/etc/hosts.allow(非必须)

可以控制外部IP对本机服务的访问

etc/hosts.allow 的设定优先于 /etc/hosts.deny

 

18.配置YUM安装源

此处可参考这篇文章:

配置网易yum源:http://www.linuxyw.com/a/qitafuwu/20130502/150.html

 

19.禁止键盘重启(/etc/inittab),使用字符模式level 3

[root@C ~]# vi /etc/inittab

修改以下内容:

id:3:initdefault:

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

另外,centos 6 里 这个组合键 的设置单独放在里另外一个文件里:/etc/init/control-alt-delete.conf

 

20. /tmp临时目录安全

临时目录权限比较大,可以考虑降权。(非必须)。

 

21.用户账户口令8位以上、定期更换、动态口令等

用户密码在8位以上,并且包含大小写字母和数字的组合。

密码定期更换,使用mkpasswd生成动态密码

使用ldap统一密码验证,或者第三方动态口令卡。

 

22.注销账号的时间,命令的历史记录数

监控/var/log/secure,ssh的用户登录和注销日志

减少命令历史记录数:

vi /etc/profile

HISTSIZE=50

TMOUT=300

 

23.删除登录信息(非必须)

(不显示内核版本,主机名,发行版本号及一些后台进程的版本号),防止探测。

cat /dev/null >/etc/issue

cat /dev/null >/etc/issue.net

cat /dev/null >/etc/motd

#包括应用层 比如隐藏apache ,php等的版本。

 

24.安装系统性能监控软件监控调试软件

yum install -y sysstat或rpm -ivh sysstat-7.0.0-3.el5.i386.rpm

附带相关命令作用:

vmstat:报告虚拟内存统计信息

mpstat:监测CPU(包括多CPU)性

iostat:监测I/O性能

sar:系统活动情况报告

●系统性能查看的重要命令分类

内存:top free、vmstat、mpstat、iostat、sar

CPU:top vmstat、mpstat、iostat、sar

I/O:vmstat、mpstat、iostat、sar

进程:ipcs、ipcrm

 

25.防病毒软件clamav,入侵检测ids、Tripwire(非必须)。

给每个文件建立系统指纹档案和md5校验值,定期文件比对。

26.配置服务器和互联网时间同步

echo '*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null2>&1' >>/var/spool/cron/root

提示:在机器数量少时,以上定时任务同步时间就可以了,如果机器数量大时,可以在网内在部署一个时间同步服务器ntp server,此处不在深入讲解了。大家可以自行查阅相关文章。

 

27.配置系统日志审计

sudo日志审计或普通日志审计。细节见老男孩相关培训文档。

 

28.操作系统磁盘分区划分优化

/boot 100-200M

swap 内存的1-2倍 /

/boot 100-200M

swap 16G,内存的1倍

/ 100G

/data 剩余(存放db数据)

 

29.负载均衡集群架构不同设备选型优化

选购的依据:价格成本、性能、冗余、维护成本。

提示:所有服务器要带独立远程管理卡。

29.1负载均衡器硬件选择及raid级别

LVS1主:DELL R610 1U,CPU E5606*2,4G*2内存 硬盘:SAS 146G*2 RAID1

LVS2主:DELL R610 1U,CPU E5606*2,4G*2内存 硬盘:SAS 146G*2 RAID1

提示:负载均衡器很重要,需要稳定,对CPU、内存要求不太高,磁盘大小要求不高,如果是haproxy/nginx,根据服务在架构中的层次和数量决定如何选硬件。;

29.2 WEB层硬件选择及raid级别

WWW主站1业务(两台):DELL R710,CPU E5606*2, 4G*4内存 硬盘:SAS 300G*2 RAID0

提示:为了节省成本,也可以选1U R610。如果机房机器海量,考虑到老跑机房换硬盘装系统的成本,也可以考虑SAS 146G*3 raid5。当然这部分也可以根据业务需要,实现虚拟化服务。

29.3 数据库层硬件选择及raid级别(适合mysql和oracle)

MYSQL主库1-1:DELL R710,CPU E5606*2 4G*8内存 硬盘:SAS 600G*6(或146G*6) RAID10

MYSQL主库1-2:DELL R710,CPU E5606*2 4G*8内存 硬盘:SAS 600G*6(或146G*6) RAID10

MYSQL从库1-1:DELL R710,CPU E5606*2 4G*4内存 硬盘:SAS 15k 600G*4 RAID0或RAID5

MYSQL从库1-2:DELL R710,CPU E5606*2 4G*4内存 硬盘:SAS 15k 600G*4 RAID0或RAID5

MYSQL从库2-1:DELL R710,CPU E5606*2 4G*4内存 硬盘:SAS 15k 600G*4 RAID0或RAID5

MYSQL从库

 

WWW主站2业务(两台):DELL R710,CPU E5606*2, 4G*4内存 硬盘:SAS 300G*2 RAID0

29.4 存储层硬件选择及raid级别

29.4.1数据备份硬件选择及raid级别

DELL R610,CPU E5606*2 16G内存,硬盘:SATA 7.2-10k 2T*4 可以不做raid 交叉备份

DELL R710,CPU E5606*2 16G内存,硬盘:SATA 7.2-10k 2T*6 raid5,做个raid5是折中方案

提示:备份服务一般考虑容量和冗余即可,对性能要求不高。如果容量巨大,就要考虑用磁盘阵列了设备了。

29.4.2共享存储NFS硬件选择及raid级别

NFS1:DELL R710,CPU E5606*2,16G内存,硬盘:SAS 15k 600G*6 RAID10/RAID5/RAID0

NFS2:DELL R710,CPU E5606*2,16G内存,硬盘:SAS 15k 600G*6 RAID10/RAID5

对于高并发业务,可以使用分布式存储MFS,GFS,FASTFS,HDFS等:

分布式一般是多台服务器,因此普通服务器配置就可以了。淘宝的分级存储策略可以借鉴。

 

30 linux服务器尽量少配外网IP地址

通过前端代理,负载均衡来给外部用户提供服务

通过堡垒机或VPN等配置公司内部人员进入服务器管理维护。

当然了这需要多台计算机才可以,如果服务器数量少,难以做到。

31.linux系统一键优化脚本

 

 

 

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS