禁用 ctrl+alt+del 的作用是防止机房管理人员误操作导致系统重启的问题. 需注意的是在 centos6 之前的版本中该设置文件是 / etc/inittab, 而到了 centos6 以后被放到了 / etc/init/control-alt-delete.conf 中. vi /etc/init/control-alt-delete.conf #start on control-alt-delete #exec /sbin/shutdown -r now "Control-Alt-Delete pressed" 将这两句注释掉就行了.
本文 centos 6.5 优化 的项有 18 处:
本文 centos 6.5 优化 的项有 18 处: 1,centos6.5 最小化安装后启动网卡 2,ifconfig 查询 IP 进行 SSH 链接 3, 更新系统源并且升级系统 4, 系统时间更新和设定定时任 5, 修改 ip 地址, 网关, 主机名, DNS6, 关闭 selinux, 清空 iptables7, 创建普通用户并进行 sudo 授权管理 8, 修改 SSH 端口号和屏蔽 root 账号远程登陆 9, 锁定关键文件系统 (禁止非授权用户获得权限)10, 精简开机自启动服务 11, 调整系统文件描述符大小 12, 设置系统字符集 13, 清理登陆的时候显示的系统及内核版本 14, 内核参数优化 15, 定时清理 / var/spool/clientmqueue16, 删除不必要的系统用户和群组 17, 关闭重启 ctl-alt-delete 组合键 18, 设置一些全局变量 19. 禁止使用 Ctrl+Alt+Del 快捷键重启服务器 (是为了防止机房人员误操作重启服务器)20. 清空防火墙并设置规则 1, 启动网卡
#centos6.x 最小化安装后, 网卡默认不是启动状态 ifup eth02,SSH 链接 ifconfig 查看 IP 后 SSH 终端连接. 3, 更新源 最小化安装是没有 wget 工具的, 必须先安装在修改源)
yum install wget 备份原系统更新源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
进入 yum.repos.d 目录
cd /etc/yum.repos.d 下载网易镜像源或者搜狐镜像源
- # 下载网易镜像源:
- wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
- # 或者 #下载搜狐镜像源:
- wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
网易搜狐的源可能有问题.
http://blog.csdn.net/ichsonx/article/details/8518420
清空 yum 缓存
yum clean all
生存缓存
yum makecache
开始更新系统以及内核
yum upgrade
必备软件
yum install ntpdate -y
4, 系统时间更新和设定定时任务 第一种: 更新时间并且写入 BOIS
ntpdate time.windows.com && hwclock -w && hwclock --systohc
或者: 查看时间服务器的时间:
# rdate time-b.nist.gov
设置时间和时间服务器同步:
# rdate -s time-b.nist.gov
第二种: 更新时间并且写入定时任务
echo '*/30 * * * * ntpdate time.windows.com && hwclock -w && hwclock --systohc >/dev/null 2>&1' >>/var/spool/cron/root
第三种: 每间隔 5 分钟和 10 分钟同步一次时间
echo '*/5 * * * */usr/sbin/ntpdate time.windows.com>/dev/null 2>&1'>>/var/spool/cron/rootecho '*/10 * * * */usr/sbin/ntpdate time.nist.gov>/dev/null 2>&1'>>/var/spool/cron/root
提示: CentOS 6.x 的时间同步命令路径不一样 6 是 / usr/sbin/ntpdate 5 是 / sbin/ntpdate5, 修改 ip 地址, 网关, 主机名, DNS #eth0 网卡设置
- mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bakvi /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE=eth0 #网卡设备名称 HWADDR=00:0C:29:D0:C7:B5 #以太网设备的对应的物理地址 TYPE=Ethernet #网络类型为以太网模式 UUID=080a457b-6a53-4a3a-9155-a23c1146c2c6 #通用唯一识别码 ONBOOT=yes #是否启动引导的时候激活 YESNM_CONTROLLED=no #设备 eth0 是否可以由 Network Manager 图形管理工具托管 BOOTPROTO=dhcp #静态 IP 地址获取状态 如: DHCP 表示自动获取 IP 地址 IPADDR=192.168.1.10 #IPIPV6INIT=noIPV6_AUTOCONF=noNETMASK=255.255.255.0 #网卡对应的网络掩码 GATEWAY=192.168.1.1 #网关地址
检查网卡配置
cat /etc/sysconfig/network-scripts/ifcfg-eth0
网关配置
- vi /etc/sysconfig/network
- # 表示系统是否使用网络, 一般设置为 yes. 如果设为 no, 则不能使用网络, 而且很多系统服务程序将无法启动
- NETWORKING=yes
- # 设置本机的主机名, 这里设置的主机名要和 / etc/hosts 中设置的主机名对应
- HOSTNAME=c65mini.localdomain
- # 设置本机连接的网关的 IP 地址. 例如, 网关为 10.0.0.1 或者 192.168.1.1
- GATEWAY=192.168.1.1
修改主机 DNS
vi /etc/resolv.conf; generated by /sbin/dhclient-scriptnameserver 8.8.8.8nameserver 4.4.4.4
修改 HOSTS
- vi /etc/hosts127.0.0.1 lvtao.localdomain
- # 使用 DNS 域名服务器来解析名字
- order bind hosts
- # 一台主机是否存在多个 IP
- multi on
- # 如果用逆向解析找出与指定的地址匹配的主机名, 对返回的地址进行解析以确认它确实与您查询的地址相配. 为了防止 "骗取"IP 地址
- nospoof on
重启网卡生效设置两种方法
service network restart
或者
/etc/init.d/network restart
6, 关闭 selinux, 清空 iptables 在服务器配置完全成功后各项服务正常后, 在开启 selinux 查看 selinux 状态
第一种方法:/usr/bin/setstatus -v #如果显示: SELinux status: enabled 就是开启状态第二种方法: cat /etc/selinux/config #如果显示: SELINUX=enforcing 则是开启状态 permissive 有提醒的状态 disabled 是关闭第三种方法: grep SELINUX=disabled /etc/selinux/config 第四种方法: getenforce 修改 selinux 状态 如果修改配置文件则永久生效, 但是必须要重启系统
第一种: vi /etc/selinux/config 修改 SELINUX=disabled 第二种: sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 如果想立即生效 (如果想临时性的改变) setenforce 0setenforce 1 设置 SELinux 成为 enforcing 模式 setenforce 0 设置 SELinux 成为 permissive 模式 查看状态 getenforceiptables 防火墙规则清理了, 根据需求定制
- # 清空 iptables 规则
- iptables -F
- # 查看 iptables 规则
- iptables -L
- # 保存规则, 注意, 虽然清空了, 不保存的话, 重启后, 又会有规则.
- /etc/init.d/iptables save
7, 创建普通用户并进行 sudo 授权管理 创建普通用户 useradd lvtao 修改用户密码 passwd lvtao 另一种方式: 一次性创建用户和设置密码 echo "123456"|passwd --stdin lvtao&&history -c 其中 lvtao 为你创建的用户名 sudo 授权管理 打开 sudo 配置文件 visudo
- # 按: set nu 查看行, 找到 99 行
- root ALL=(ALL) ALL
- # 添加
- lvtao ALL=(ALL) ALL
8, 修改 SSH 端口号和屏蔽 root 账号远程登陆
- # 备份 SSH 配置
- cp /etc/ssh/sshd_config sshd_config_bak
- # 修改 SSH 安全配置
- vi /etc/ssh/sshd_config
- #SSH 链接默认端口
- port 52113
- # 禁止 root 账号登陆
- PermitRootLogin no
- # 禁止空密码
- PermitEmptyPasswords no
- # 不使用 DNS
- UseDNS no
重新载入 SSH 配置 /etc/init.d/sshd reload 查看端口里面是否有刚才修改过的端口号 52113
netstat -lnt
或者反查端口是那个进程
lsof -i tcp:52113
centos6.5 最小化安装没有 lsof 工具需要 yum install lsof9, 锁定关键文件系统 (禁止非授权用户获得权限)
chattr +i /etc/passwdchattr +i /etc/inittabchattr +i /etc/groupchattr +i /etc/shadowchattr +i /etc/gshadow
10, 精简开机自启动服务注意: 刚装完操作系统一般可以只保留 crond,network,syslog,sshd 这四个服务. 后期根据业务需求制定自启服务 #(Centos6.x 为 rsyslog Cetnos5.x 为 syslog) 如果是中文的话. 可能会需要 LANG=en 或者替换 3:on 成 3: 启用
- # 关闭全部服务
- for sun in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $sun off;done
- # 或者
for sun in `chkconfig --list|grep 3: 启用 | awk '{print $1}'`;do chkconfig --level 3 $sun off;done
- # 开启需要的服务
- for sun in crond rsyslog sshd network;do chkconfig --level 3 $sun on;done
- # 或者需要使用防火墙的话可以开启 iptables 和 ip6tables
- for sun in crond rsyslog sshd network iptables ip6tables;do chkconfig --level 3 $sun on;done
查询下开启的服务 chkconfig -list | grep 3:on 或者 chkconfig -list|grep 3: 启用
[bingoku@c65mini ~]$ chkconfig --list|grep 3: 启用 crond 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭 ip6tables 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭 iptables 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭 network 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭 rsyslog 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭 sshd 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
11, 调整文件描述符大小
- # 查看文件描述符大小
- ulimit -n
第一种:# 这里参考的是阿里云主机默认设置.
vi /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 * soft nofile 65535* hard nofile 65535
第二种:
echo '* - nofile 65535' >> /etc/security/limits.conf
第三种: 把 ulimit -SHn 65535 命令加入到 / etc/rc.local, 然后每次重启生效 追加命令到 rc.local 配置文件里面
cat>>/etc/rc.local<<EOF#open filesulimit -HSn 65535#stack sizeulimit -s 65535EOF
第四种: 如果不修改 limits 配置文件, 直接立即生效, 但重启后又恢复之前的默认. ulimit -SHn 6553512, 设置系统字符集第一种:
vi /etc/sysconfig/i18n
如果想用中文提示: LANG="zh_CN.UTF-8 如果想用英文提示: LANG="en_US.UTF-8 如果临时切换也可以. UTF-8 第二种: 使用 sed 快速替换
# 替换成英文 sed -i 's#LANG="zh_CN.*"#LANG="en_US.UTF-8"#' /etc/sysconfig/i18n# 替换成中文 sed -i 's#LANG="en_US.*"#LANG="zh_CN.UTF-8"#' /etc/sysconfig/i18n# 替换成 UTF-8 中文 sed -i 's#LANG="zh_CN.*"#LANG="zh_CN.UTF-8"#' /etc/sysconfig/i18n
13, 清理登陆的时候显示的系统及内核版本
- # 查看登陆信息
- cat /etc/redhat-release cat /etc/issue
- # 清理登陆信息
- echo>/etc/redhat-release echo>/etc/issue
14, 内核参数优化 vi /etc/sysctl.conf
- # 可用于 apache,nginx,squid 多种等 web 应用 net.ipv4.tcp_max_syn_backlog = 65536net.core.netdev_max_backlog = 32768net.core.somaxconn = 32768
- net.core.wmem_default = 8388608net.core.rmem_default = 8388608net.core.rmem_max = 16777216net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 0net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2
- net.ipv4.tcp_tw_recycle = 1#net.ipv4.tcp_tw_len = 1net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_mem = 94500000 915000000 927000000net.ipv4.tcp_max_orphans = 3276800
- #net.ipv4.tcp_fin_timeout = 30#net.ipv4.tcp_keepalive_time = 120net.ipv4.ip_local_port_range = 1024 65535
- # 以下参数是对 centos6.x 的 iptables 防火墙的优化, 防火墙不开会有提示, 可以忽略不理.# 如果是 centos5.X 需要吧 netfilter.nf_conntrack 替换成 ipv4.netfilter.ip
- #centos5.X 为 net.ipv4.ip_conntrack_max = 25000000net.nf_conntrack_max = 25000000net.netfilter.nf_conntrack_max = 25000000net.netfilter.nf_conntrack_tcp_timeout_established = 180net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
立即生效 /sbin/sysctl -p centos6.5 可能会报错
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown keyerror: "net.bridge.bridge-nf-call-iptables" is an unknown keyerror: "net.bridge.bridge-nf-call-arptables" is an unknown key
出现这个的原因是, 没有自动载入 bridge 桥接模块
modprobe bridgeecho "modprobe bridge">> /etc/rc.local
查看桥接 lsmod|grep bridgecentos5.X 可能会报错 这个错误可能是你的防火墙没有开启或者自动处理可载入的模块 ip_conntrack 没有自动载入, 解决办法有二, 一是开启防火墙, 二是自动处理开载入的模块 ip_conntrack
error: "net.ipv4.ip_conntrack_max"is an unknown keyerror: "net.ipv4.netfilter.ip_conntrack_max"is an unknown keyerror: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established"is an unknown keyerror: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait"is an unknown keyerror: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait"is an unknown keyerror: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait"is an unknown key
centos5.X 解决方法:
modprobe ip_conntrackecho "modprobe ip_conntrack">> /etc/rc.local
centos6.X 可能会报错 这个错误可能是你的防火墙没有开启或者自动处理可载入的模块 ip_conntrack 没有自动载入, 解决办法有二, 一是开启防火墙, 二是自动处理开载入的模块 ip_conntrack
error: "net.nf_conntrack_max"isan unknown keyerror: "net.netfilter.nf_conntrack_max"isan unknown keyerror: "net.netfilter.nf_conntrack_tcp_timeout_established"isan unknown keyerror: "net.netfilter.nf_conntrack_tcp_timeout_time_wait"isan unknown keyerror: "net.netfilter.nf_conntrack_tcp_timeout_close_wait"isan unknown keyerror: "net.netfilter.nf_conntrack_tcp_timeout_fin_wait"isan unknown key
centos6.X 解决方法:
modprobe nf_conntrackecho "modprobe nf_conntrack">> /etc/rc.local 注意: 笔者在整理这篇 centos6.5 内核优化的时候发现, 如果不开启 ip6tables 去优化 nf_conntrack 模块去执行上面的解决方法会依旧提示上面的 error. 所以在优化服务的时候, 可以选择留下 iptables 和 ip6tables. 当然如果不用 iptables 的话, 在内核优化的时候就要去掉对 nf_conntrack 的设置, 在进行 / sbin/sysctl -p 是不会有错误提示的. 15, 如果安装 sendmail 必须定时自动清理 / var/spool/clientmqueue / 下文件防止 inode 节点被占满
- #centos6.5 已经不自动安装 sendmail 了所以没必要走这一步优化
- mkdir -p /server/scriptsvi /server/scripts/spool_clean.sh#!/bin/shfind/var/spool/clientmqueue/-typef -mtime +30|xargsrm-f
16, 删除不必要的系统用户和群组
# 删除不必要的用户
userdel admuserdel lpuserdel syncuserdel shutdownuserdel haltuserdel newsuserdel uucpuserdel operatoruserdel gamesuserdel gopheruserdel ftp
# 删除不必要的群组
groupdel admgroupdel lpgroupdel newsgroupdel uucpgroupdel gamesgroupdel dipgroupdel pppusers
17, 关闭重启 ctl-alt-delete 组合键
- vi /etc/init/control-alt-delete.conf
- # 注释掉
- #exec /sbin/shutdown -r now "Control-Alt-Deletepressed"
18, 设置一些全局变量
- # 设置自动退出终端, 防止非法关闭 ssh 客户端造成登录进程过多, 可以设置大一些, 单位为秒
- echo "TMOUT=3600">> /etc/profile
- # 历史命令记录数量设置为 10 条 (具体根据在即来定义)
- sed -i "s/HISTSIZE=1000/HISTSIZE=10/" /etc/profile
- # 立即生效
- source /etc/profile
19. 禁止使用 Ctrl+Alt+Del 快捷键重启服务器 (是为了防止机房人员误操作重启服务器)
sed -i "s/start on control-alt-delete/#start on control-alt-delete/g" /etc/init/control-alt-delete.conf
20. 清空防火墙并设置规则
- [root@localhost~]# iptables -F #清除火墙规则
- [root@localhost~]# iptables -L #查看防火墙规则
- [root@localhost~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- [root@localhost~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- [root@localhost~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
- [root@localhost~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
- [root@localhost~]# iptables -A INPUT -p udp --dport 123 -j ACCEPT
- [root@localhost~]# iptables -A INPUT -p icmp -j ACCEPT
- [root@localhost~]# /etc/init.d/iptables save
防火墙先要先放行端口然后再全部 dport 掉, 不能先全部 dport 掉然后再 accept, 这样如果我们是远程连上的设备的话会导致我们无法连接到设备上, 只能跑到机房里面去弄设备了.
来源: http://www.bubuko.com/infodetail-2639791.html