CentOS服务器初始化设置详细说明
以阿里云服务器为例
一、挂载硬盘
1、磁盘分区
fdisk-l#查看设备,一般可以看到设备名为/dev/xvdb,或者为/dev/vdb(阿里云io优化型)
fdisk/dev/xvdb#对磁盘进行分区,或者fdisk/dev/vdb
输入n#创建新分区
输入p#创建主分区
输入1#创建第一个主分区
输入w#保存并执行以上命令,创建分区
待上面的命令执行完成之后,使用fdisk-l查看,会看到类似
/dev/xvdb1的分区
或者为
/dev/vdb1的分区(下面的步骤类似,注意xvdb1和vdb1的区分)
说明分区成功。
2、磁盘格式化
mkfs.ext4/dev/xvdb1#对分区进行格式化
说明:ext4是CentOS6.x默认的分区格式,CentOS5.x请使用ext3
mkfs.xfs/dev/vdb1或者mkfs-txfs/dev/vdb1
#CentOS7.x默认使用xfs分区
待格式化完成之后(根据分区大小,格式化需要的时间不同,请耐心等待),对分区进行挂载
3、挂载磁盘
例如:要把/dev/xvdb1挂载到/data目录
mkdir-p/data#创建目录
mount/dev/xvdb1/data#挂载
mount-text4/dev/xvdb1/data#挂载
mount-txfs/dev/vdb1/data#挂载
df-h#查看挂载结果
vi/etc/fstab#设置开机自动挂载,在最后一行输入以下代码
/dev/xvdb1/dataext4defaults00
:wq!#保存退出
或者使用UUID进行挂载
blkid/dev/xvdb1#得到磁盘的UUID,例如:
/dev/xvdb1:UUID="9c991d14-9372-4fd8-97d6-2aa1ac1acf47"TYPE="xfs"
vi/etc/fstab#设置开机自动挂载,在最后一行输入以下代码
UUID=9c991d14-9372-4fd8-97d6-2aa1ac1acf47/dataxfsdefaults00
:wq!#保存退出
mount-a#使分区设置立即生效
二、创建SWAP分区
说明:默认阿里云服务没有swap分区,512M的云服务器安装php5.6的时候会提示内存不足,安装失败!
强烈建议,不论内存有多大,都增加swap分区。
在512M的阿里云服务上增加1024M的swap空间
具体操作:
1、ddif=/dev/zeroof=/home/swapbs=1Mcount=1024#创建1024M的文件块
2、mkswap/home/swap#创建swap文件
3、swapon/home/swap#激活swap文件
4、swapon-s#查看swap
5、修改/etc/fstab文件,增加以下内容,让系统引导时自动启动
vi/etc/fstab#在最后添加下面代码
/home/swapswapswapdefault00
:wq!#保存退出
系统运维www.osyunwei.com温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
三、系统内核优化
1、CentOS5.xCentOS6.xCentOS7.x
vi/etc/security/limits.conf#在最后一行添加以下代码
*softnprocunlimited
*hardnprocunlimited
*softnofile655350
*hardnofile655350
:wq!#保存退出
2、CentOS5.xCentOS6.xCentOS7.x
vi/etc/profile#在最后一行添加以下代码
ulimit-SHn655350
ulimit-SHuunlimited
ulimit-SHdunlimited
ulimit-SHmunlimited
ulimit-SHsunlimited
ulimit-SHtunlimited
ulimit-SHvunlimited
:wq!#保存退出
source/etc/profile#使配置立即生效
ulimit-a#查看设置
3、CentOS6.x(CentOS5.x和CentOS7.x不需要设置此项)
vi/etc/security/limits.d/90-nproc.conf#在最后一行添加以下代码
*softnofile655350
*hardnofile655350
rootsoftnofile655350
roothardnofile655350
*softcoreunlimited
*hardcoreunlimited
rootsoftcoreunlimited
roothardcoreunlimited
:wq!#保存退出
4、CentOS5.x
sed-i"s/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g"'/etc/sysctl.conf'
echo-e"net.core.somaxconn=65535">>/etc/sysctl.conf
echo-e"net.core.netdev_max_backlog=262144">>/etc/sysctl.conf
echo-e"net.core.wmem_default=8388608">>/etc/sysctl.conf
echo-e"net.core.rmem_default=8388608">>/etc/sysctl.conf
echo-e"net.core.rmem_max=16777216">>/etc/sysctl.conf
echo-e"net.core.wmem_max=16777216">>/etc/sysctl.conf
echo-e"net.ipv4.route.max_size=5242880">>/etc/sysctl.conf
echo-e"net.ipv4.route.gc_timeout=20">>/etc/sysctl.conf
echo-e"net.ipv4.ip_local_port_range=102565535">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_retries2=5">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_fin_timeout=30">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_syn_retries=3">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_synack_retries=3">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_timestamps=0">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_tw_recycle=0">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_tw_reuse=1">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_keepalive_time=120">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_keepalive_probes=3">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_keepalive_intvl=15">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_max_tw_buckets=200000">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_max_orphans=3276800">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_max_syn_backlog=262144">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_wmem=819213107216777216">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_rmem=3276813107216777216">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_mem=94500000915000000927000000">>/etc/sysctl.conf
echo-e"net.ipv4.ip_conntrack_max=25000000">>/etc/sysctl.conf
echo-e"net.ipv4.netfilter.ip_conntrack_max=25000000">>/etc/sysctl.conf
echo-e"net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180">>/etc/sysctl.conf
echo-e"net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=1">>/etc/sysctl.conf
echo-e"net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60">>/etc/sysctl.conf
echo-e"net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120">>/etc/sysctl.conf
echo-e"net.unix.max_dgram_qlen=655360">>/etc/sysctl.conf
echo-e"kernel.msgmax=655360">>/etc/sysctl.conf
echo-e"kernel.msgmni=20480">>/etc/sysctl.conf
CentOS6.x7.x
sed-i"s/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g"'/etc/sysctl.conf'
echo-e"net.core.somaxconn=65535">>/etc/sysctl.conf
echo-e"net.core.netdev_max_backlog=262144">>/etc/sysctl.conf
echo-e"net.core.wmem_default=8388608">>/etc/sysctl.conf
echo-e"net.core.rmem_default=8388608">>/etc/sysctl.conf
echo-e"net.core.rmem_max=16777216">>/etc/sysctl.conf
echo-e"net.core.wmem_max=16777216">>/etc/sysctl.conf
echo-e"net.ipv4.route.max_size=5242880">>/etc/sysctl.conf
echo-e"net.ipv4.route.gc_timeout=20">>/etc/sysctl.conf
echo-e"net.ipv4.ip_local_port_range=102565535">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_retries2=5">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_fin_timeout=30">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_syn_retries=3">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_synack_retries=3">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_timestamps=0">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_tw_recycle=0">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_tw_reuse=1">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_keepalive_time=120">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_keepalive_probes=3">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_keepalive_intvl=15">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_max_tw_buckets=200000">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_max_orphans=3276800">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_max_syn_backlog=262144">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_wmem=819213107216777216">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_rmem=3276813107216777216">>/etc/sysctl.conf
echo-e"net.ipv4.tcp_mem=94500000915000000927000000">>/etc/sysctl.conf
echo-e"net.nf_conntrack_max=25000000">>/etc/sysctl.conf
echo-e"net.netfilter.nf_conntrack_max=25000000">>/etc/sysctl.conf
echo-e"net.netfilter.nf_conntrack_tcp_timeout_established=180">>/etc/sysctl.conf
echo-e"net.netfilter.nf_conntrack_tcp_timeout_time_wait=1">>/etc/sysctl.conf
echo-e"net.netfilter.nf_conntrack_tcp_timeout_close_wait=60">>/etc/sysctl.conf
echo-e"net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120">>/etc/sysctl.conf
echo-e"net.unix.max_dgram_qlen=655360">>/etc/sysctl.conf
echo-e"kernel.msgmnb=655360">>/etc/sysctl.conf
echo-e"kernel.msgmax=655360">>/etc/sysctl.conf
echo-e"kernel.msgmni=20480">>/etc/sysctl.conf
/sbin/sysctl-p#使配置立即生效
cat/var/log/secure#查看系统设置是否正确,没有error提示说明设置正确
错误:
error:"net.bridge.bridge-nf-call-ip6tables"isanunknownkey
error:"net.bridge.bridge-nf-call-iptables"isanunknownkey
error:"net.bridge.bridge-nf-call-arptables"isanunknownkey
解决办法:
modprobebridge
lsmod|grepbridge
modprobeip_conntrack
CentOS5.x中模块名是ip_conntrack
CentOS6.x7.x中模块名是nf_conntrack
在/etc/sysctl.conf优化时,在CentOS6.x7.x中要把
net.ipv4.netfilter.ip_conntrack_max这种参数
改成net.netfilter.nf_conntrack_max
1、创建普通账号
useraddosyunwei#创建普通账号
passwdosyunwei#根据提示设置密码,需要输入2次
2、禁用root直接登录
vi/etc/ssh/sshd_config#编辑
找到PermitRootLogin,将后面的yes改为no
:wq!#保存退出
3、给系统文件加锁,防止未经许可的删除或添加
chattr+ia/etc/passwd
chattr+ia/etc/shadow
chattr+ia/etc/group
chattr+ia/etc/gshadow
chattr+ia/etc/services
lsattr/etc/passwd/etc/shadow/etc/group/etc/gshadow/etc/services#显示文件的属性
注意:执行以上权限修改之后,就无法添加删除用户了。
chattr-ia/etc/passwd
chattr-ia/etc/shadow
chattr-ia/etc/group
chattr-ia/etc/gshadow
chattr-ia/etc/services
4、开启防火墙
yuminstalliptables#安装防火墙yuminstallwget先安装下载工具
chkconfigiptableson#设置开机启动
vi/etc/sysconfig/iptables#编辑,添加以下代码
#Firewallconfigurationwrittenbysystem-config-firewall
#Manualcustomizationofthisfileisnotrecommended.
*filter
:INPUTACCEPT[0:0]
:FORWARDACCEPT[0:0]
:OUTPUTACCEPT[0:0]
-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
-AINPUT-picmp-jACCEPT
-AINPUT-ilo-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT
-AINPUT-s192.168.1.1/24-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT
-AINPUT-jREJECT--reject-withicmp-host-prohibited
-AFORWARD-jREJECT--reject-withicmp-host-prohibited
COMMIT
#IptablesForOsYunWei.ComDate2015/05/22
serviceiptablesstart#启动防火墙
备注:-s192.168.1.1/24表示只允许这个ip段访问3306端口,可以根据需求修改
5、关闭SELINUX
vi/etc/selinux/config
#SELINUX=enforcing#注释掉
#SELINUXTYPE=targeted#注释掉
SELINUX=disabled#增加
:wq!#保存退出
setenforce0#使配置立即生效
6、修改ssh默认端口
把ssh默认远程连接端口22修改为222
vi/etc/ssh/sshd_config
在端口#Port22下面增加Port222
:wq!#保存退出
vi/etc/ssh/ssh_config
在端口#Port22下面增加Port222
:wq!#保存退出
/etc/init.d/sshdrestart#重启sshd服务
vi/etc/sysconfig/iptables#编辑
把22端口修改为222
:wq!#保存退出
serviceiptablesrestart#重启防火墙使配置生效
7、临时目录/tmp、/var/tmp、/dev/shm安全加固
7.1、/tmp目录
7.1.1、如果/tmp是独立分区,修改/tmp对应的挂载属性,加上nosuid,noexec,nodev选项
vi/etc/fstab#编辑修改
LABEL=/tmp/tmpext3rw,nosuid,noexec,nodev00
:wq!#保存退出
参数说明:
nosuid、noexec、nodev:不允许任何suid程序,不允许执行任何脚本,不存在设备文件
mount-oremount/tmp
mount-a#重新挂载分区
7.1.2、如果/tmp是根目录下的一个目录,可以建一个loopback文件系统挂载/tmp
ddif=/dev/zeroof=/mnt/tmpfsbs=1Mcount=5120
mke2fs-j/mnt/tmpfs
cp-ap/tmp/tmp.old
mount-oloop,noexec,nosuid,rw/mnt/tmpfs/tmp
chmod1777/tmp
mv-f/tmp.old/*/tmp/
rm-rf/tmp.old
vi/etc/fstab#编辑修改
/mnt/tmpfs/tmpext3loop,nosuid,noexec,rw00
:wq!#保存退出
mount-oremount/tmp
mount-a#重新挂载分区
7.2、/var/tmp目录
7.2.1、如果/var/tmp是独立分区,修改/var/tmp对应的挂载属性,加上nosuid,noexec,nodev选项
vi/etc/fstab#编辑修改
LABEL=/var/tmp/var/tmpext3rw,nosuid,noexec,nodev00
:wq!#保存退出
7.2.2、如果/var/tmp是/var分区下的一个目录,把/var/tmp目录下的数据移动到/tmp分区,在/var下做一个指向/tmp的软链接
cp-ap/var/tmp/*/tmp/
rm-rf/var/tmp
ln-sf/tmp/var/tmp
7.3、/dev/shm目录
修改/dev/shm的挂载属性
vi/etc/fstab#编辑修改
tmpfs/dev/shmtmpfsdefaults,nosuid,noexec,rw00
:wq!#保存退出
mount-oremount/dev/shm
mount-a#重新挂载分区
五、修改主机名称
这里设置主机名为:www.osyunwei.com
1、hostname“www.osyunwei.com”#设置主机名为www.osyunwei.com
2、
vi/etc/sysconfig/network#编辑配置文件CentOS5.xCentOS6.x
HOSTNAME=www.osyunwei.com#修改localhost.localdomain为www.osyunwei.com
:wq!#保存退出
vi/etc/hostname#编辑配置文件CentOS7.x
www.osyunwei.com#修改localhost.localdomain为www.osyunwei.com
:wq!#保存退出
3、vi/etc/hosts#编辑配置文件
127.0.0.1www.osyunwei.comlocalhost#修改localhost.localdomain为www.osyunwei.com
:wq!#保存退出
六、同步系统时间
yuminstall-yntp#安装ntp
ntpdatetime1.aliyun.com#执行时间同步
hwclock--systohc#系统时钟和硬件时钟同步
CentOS5.x
echo-e"00***/sbin/ntpdatetime1.aliyun.com&>/dev/null">>/var/spool/cron/root#添加计划任务
CentOS6.x7.x
echo-e"00***/usr/sbin/ntpdatetime1.aliyun.com&>/dev/null">>/var/spool/cron/root#添加计划任务
servicecrondrestart#重启服务
七、安装基础软件包
yuminstall-yapr*autoconfautomakebisoncloog-pplcompat*cppcurlcurl-develfontconfigfontconfig-develfreetypefreetype*freetype-develgccgcc-c++gtk+-develgdgettext
gettext-develglibckernelkernel-headerskeyutilskeyutils-libs-develkrb5-devellibcom_err-devellibpng*libjpeg*libsepol-devellibselinux-devellibstdc++-devellibtool*
libgomplibxml2libxml2-devellibXpm*libtifflibtiff*libX*libxml*makempfrncurses*ntpopensslopenssl-develpatchpcre-develperlphp-commonphp-gdpolicycoreutilsppltelnet
t1libt1lib*nasmnasm*wgetzlib-devel
至此,CentOS服务器初始化设置设置完成。