系统优化

优化项目

*添加普通用户,通过sudo授权管理
*更改默认的ssh服务端口,和禁止root远程链接
*定时自动更新系统时间
*配置yum更新源,从国内更新下载rpm包
*关闭selinux和iptables(iptables工作场景如果有wan ip一般要打开,高并发除外)
*调整文件描述符的数量(进程文件都会占用文件描述符)
*定时自动清理邮件队列垃圾文件,防止inode被占满
*精简开机自启动服务(crond|sshd|network|syslog(rsyslog))
*Linux内核参数优化
*更改字符集,支持中文,但是建议还是用英文字符集,防止乱码
*锁定关键系统文件:网站很可能会遭受攻击,黑客则会创建用户,修改启动方式,一般黑客都是通过web链接,会批量执行
    chattr +i : 给文件上锁(基本都和用户密码有关)|处理后把chattr改名(名字最好不要忘记)
    chattr +i /etc/passwd
    chattr +i /etc/inittab 
    chattr +i /etc/group
    chattr +i /etc/shadow
    chattr +i /etc/gshadow
    lsattr  filename        #查看文件属性
    mv /usr/bin/chattr /usr/bin/xmj #将命令改名
*清理/etc/issue/,对外的服务尽量隐藏系统版本
*可以将优化写成脚本批量执行
>>>更多的优化细节:http://oldboy.blog.51cto.com/2561410/988726

1.建立普通用户

whoami  #查看当前用户
echo 'xmj' | passwd  --stdin xmj#给用户设置密码|或者用passwd username
su - xmj    #切换用户
$          #普通用户提示符
#           #root账户提示符

[root@localhost ~]# whoami #查看当前用户
root
[root@localhost ~]# useradd xmj
*非交互式设置密码
[root@localhost ~]# echo 'xmj' | passwd --stdin xmj#给用户设置密码|或者用passwd username
Changing password for user xmj.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# su - xmj   #切换用户
Last login: Wed Jul 12 05:08:35 EDT 2017 on pts/0
[xmj@localhost ~]$            #普通用户提示符

*生产应用:批量创建用户,并且设置密码

2.修改yum源|即将yum源改称国内或者本地的yum源

配置公网yum源及制作rpm包

3.关闭selinux

*getenforce     #查看selinux状态
*setenforce 0   #临时关闭selinux(0表示关闭|1表示开启)
[root@foundation66 Desktop]# cat /etc/sysconfig/selinux     #selinux配置文件
......
SELINUX=enforcing(开启)|disabled(关闭)|permissive(打印警告但是不起用)
....
*这种修改方式:重启生效
*修改完配置文件最好有检查的好习惯
*临时关闭
[root@foundation66 Desktop]# getenforce     #查看selinux状态
Enforcing
[root@foundation66 Desktop]# setenforce 0   #临时关闭selinux(0表示关闭|1表示开启)
[root@foundation66 Desktop]# getenforce 
Permissive
[root@foundation66 Desktop]# setenforce 1
[root@foundation66 Desktop]# getenforce 
Enforcing
[root@foundation66 Desktop]#

4.linux系统的7个运行级别(0-6)

[root@foundation66 Desktop]# runlevel       #查看系统运行级别
N 5
[root@foundation66 Desktop]# cat /etc/inittab   

0-关机状态
1-密码丢失,用单用户1运行级别可以破解密码
2-没有nfs的多用户
3-字符界面和文本界面(生产工作环境使用的)
4-不可用
5-图形界面
6-重启

5.精简开机启动服务

[root@localhost Desktop]# setup #选择第四个systemservices里面带*的表示开机自启动服务 
[root@localhost Desktop]# ntsysv#直接进入systemservices
通过脚本
定义字字符集:LANG=en

[root@localhost Desktop]# chkconfig #查看服务开机启动状态
[root@localhost Desktop]# chkconfig  --list network
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost Desktop]#

6.root给普通用户权限管理|sudo用户权限管理

*使用visudo的好处是:会默认检查语法
*授权配置好后,注意检查
*授权规则超过一行,需要用\来换行

[root@localhost ~]# visudo | vim /etc/sudoers(644) #给普通用户赋于权限
.....
93 user    MACHINE=COMMANDS
98 root    ALL=(ALL)       ALL #默认:root可以去所有的机器上去干所有的事
   用户     机器=(授权哪个角色) /usr/sbin/useradd(多条指令用,隔开,并且授权需要写全路径)
xmj(%用户组) ALL=(ALL)       /usr/sbin/useradd,/usr/sbin/userdel
.....
[root@localhost ~]# visudo -c  #检查语法
*目的:即能让新手干活,又能保障系统安全
*给组授权时,保证组已经存在
[xmj@localhost ~]$ whoami
xmj
[xmj@localhost ~]$ useradd nihao
-bash: /usr/sbin/useradd: Permission denied
*注意普通用户执行root用户权限方式
[xmj@localhost ~]$ sudo /usr/sbin/useradd nihao   #注意普通用户执行root权限方式

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for xmj: 
[xmj@localhost ~]$ id nihao
uid=1002(nihao) gid=1002(nihao) groups=1002(nihao)
[xmj@localhost ~]$
*sudo授权leader之后:sudo su - 可以用leader的密码切到root(权限给了all),在生产环境中可以给自己创建一个有root权限的普通用户
*在工作环境中为了方便,可以加上:NOPASSWD:ALL
leader    ALL=(ALL)       NOPASSWD:ALL  (不安全,但是工作中挺方便)
[xmj@localhost ~]$ whoami
xmj
[xmj@localhost ~]$ sudo su - root
Last login: Wed Jul 12 10:10:55 EDT 2017 on pts/0
[root@localhost ~]# whoami
root
[root@localhost ~]# sudo -l    #查询当前用户被管理员给与了哪些权限
.....
(ALL) ALL
.....
[xmj@localhost ~]$ whoami
xmj
[xmj@localhost ~]$ sudo -l
Matching Defaults entries for xmj on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
    USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
    LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
    _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin\:/usr/local/sbin\:/usr/local/bin

User xmj may run the following commands on this host:
    (ALL) NOPASSWD: ALL
[xmj@localhost ~]$ 

*which 查看命令所在的路径
*查找位置$PAT|在path中的可以直接执行,否则需要写全路径
[root@localhost ~]# which useradd
/sbin/useradd
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# 

*及时对授权的操作进行测试
*记录root密码

7.添加环境变量

[xmj@localhost ~]$ ifcofig
bash: ifcofig: command not found...
[xmj@localhost ~]$ which ifconfig
/usr/sbin/ifconfig
[xmj@localhost ~]$ vi .bash_profile   #将ifconfig的路径添加到PATH后面即可,用:分隔开
.....
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/sbin/ifconfig
.....
[xmj@localhost ~]$ source .bash_profile | . .bash_profile #使之生效
[xmj@localhost ~]$ ifconfig 
.....

8.更改ssh登陆配置

user:root   默认端口:22
*需求:修改默认用户和端口防止黑客攻击

[root@localhost ~]# cd /etc/ssh/
[root@localhost ssh]# ll
total 268
-rw-------. 1 root root     242153 Mar 19  2014 moduli
-rw-r--r--. 1 root root       2123 Mar 19  2014 ssh_config
-rw-r--r--. 1 root root       4439 Jul 10  2014 sshd_config 
#一般带d的都是服务端(是demon的意思:进程)|可以用more|less|cat查看
-rw-r-----. 1 root ssh_keys    227 Jul 10  2014 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        162 Jul 10  2014 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys   1675 Jul 10  2014 ssh_host_rsa_key
-rw-r--r--. 1 root root        382 Jul 10  2014 ssh_host_rsa_key.pub

*修改ssh权限

[root@localhost ssh]# vim sshd_config
.....
Port 52113
PermitRootLogin  no
PermitEmptyPasswords no
UseDNS no
.....
[root@localhost ssh]# systemctl restart sshd.service 
[root@localhost ssh]# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:41730           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:52113           0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
tcp6       0      0 :::44862                :::*                    LISTEN     
tcp6       0      0 :::111                  :::*                    LISTEN     
tcp6       0      0 :::52113                :::*                    LISTEN     
[root@localhost ssh]# lsof -i :52113        #已知端口,反查服务
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    4610 root    3u  IPv4  51642      0t0  TCP *:52113 (LISTEN)
sshd    4610 root    4u  IPv6  51644      0t0  TCP *:52113 (LISTEN)
[kiosk@foundation66 Desktop]$ ssh root@172.25.66.100
ssh: connect to host 172.25.66.100 port 22: Connection refused
[kiosk@foundation66 Desktop]$ ping 172.25.66.250   #可以ping通证明网络ok
[kiosk@foundation66 Desktop]$ telnet 172.25.66.100 52113   #检查防火墙|查看服务是否启动
Trying 172.25.66.100...
telnet: connect to address 172.25.66.100: No route to host
[kiosk@foundation66 Desktop]$
*平时维护的时候:不允许root直接远程链接|只允许普通用户执行root的权限


[root@localhost ~]# netstat -an | grep -i est  #端口修改之后,没有断开,是因为建立的链接
Active Internet connections (servers and established)
tcp        0      0 172.25.66.100:22        172.25.66.250:48459     ESTABLISHED
Active UNIX domain sockets (servers and established)
[root@localhost ~]# 

9.调整字符集,修改中文显示

[root@XMJ ~]# cat /etc/sysconfig/i18n  #字符集生效的配置文件
LANG="C"
SYSFONT="latarcyrheb-sun16"
[root@XMJ ~]# locale -a        #查看系统支持的所有字符集

*修改字符集
[root@XMJ ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori
[root@XMJ ~]# echo 'LANG="zh_CN.gb18030"' > /etc/sysconfig/i18n    #注意双引号
[root@XMJ ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.gb18030"
[root@XMJ ~]# echo $LANG  #查看当前字符集
en_US.utf8
[root@XMJ ~]# source /etc/sysconfig/i18n
[root@XMJ ~]# echo $LANG
zh_CN.gb18030
[root@XMJ ~]# LANG=EN  #临时调整字符集到英文状态
[root@XMJ ~]# 

*字符集尽可能早的调整,不要等到问题再调整,当调整之后还出现问题的话,就删除重新配置
*字符集客户端和服务器端都需要调整


[root@localhost ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.0 (Maipo)
[root@localhost ~]# uname -r
3.10.0-123.el7.x86_64
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]#

10.批量添加用户

[root@localhost ~]# for user in `seq 10`;do useradd user$user;echo user$user | passwd --stdin user$user;done #注:此时账户名和密码相同
*--stdin参数:可以接收前面的字符串作为密码给后面的用户
[root@localhost ~]# tail /etc/passwd
user1:x:1004:1004::/home/user1:/bin/bash
user2:x:1005:1005::/home/user2:/bin/bash
user3:x:1006:1006::/home/user3:/bin/bash
user4:x:1007:1007::/home/user4:/bin/bash
user5:x:1008:1008::/home/user5:/bin/bash
user6:x:1009:1009::/home/user6:/bin/bash
user7:x:1010:1010::/home/user7:/bin/bash
user8:x:1011:1011::/home/user8:/bin/bash
user9:x:1012:1012::/home/user9:/bin/bash
user10:x:1013:1013::/home/user10:/bin/bash
[root@localhost ~]#

11.服务器的时间同步

*自己查询如何配置

12.调整系统文件描述符

*文件描述符:进程文件和系统打开都需要它,系统默认的表叫小
[root@localhost Desktop]# ulimit -n #查看系统文件描述符大小
1024

*修改文件描述符
(1)配置文件
[root@localhost Desktop]# vim /etc/security/limits.conf     #配置文件
.....
*       -   nofile      2048
....
[root@localhost ~]# ulimit -n  #需要退出重新登陆之后才能生效|(.|source不行)
2048
[root@localhost ~]#
(2)命令行
[root@localhost ~]# ulimit -HSn 65535  #临时修改重启之后失效
[root@localhost ~]# ulimit -n
65535
[root@localhost ~]# 
*永久生效:可以将其写入/etc/rc.d/rc.local

13.调整内核参数

[root@localhost ~]# vim /etc/sysctl.conf #配置文件
.....
net.ipv4.tcp_fin_timeout    链接时间(可以控制服务器的链接数)
net.ipv4.tcp_tw_reuse       开启重用的功能(默认值是0:表示关闭)
net.ipv4.tcp_tw_recycle     快速回收
net.ipv4.tcp_syncookies     表示开启SYN Cookies功能,当出现SYN等队列溢出时,器用cookies来处理,可以减少SYN攻击(默认1表示开启)
net.ipv4.tcp_max_syn_backlog    加大syn队列的长度
net.ipv4.tcp_keepalive_time tcp发送keepalive消息的频度
*参数好多....
.....
[root@localhost ~]# sysctl -p  #使资源生效

*了解syn攻击的处理

14.邮件的临时目录

[root@localhost spool]# ls
abrt-upload  at    cups  mail      postfix  up2date
anacron      cron  lpd   plymouth  rhsm
[root@localhost spool]# yum install sendmail -y
[root@localhost spool]# ls
abrt-upload  at            cron  lpd   mqueue    postfix  up2date
anacron      clientmqueue  cups  mail  plymouth  rhsm
[root@localhost spool]# /var/spool/clientmqueue/    #sendmail邮件临时存放地点
*要对垃圾文件进行处理,要不然inode会被占满,此时系统内存还有很多
*优化方式:定时清理     #当没有clientmqueue时可以不去做优化
[root@localhost ~]# find  /var/spool/clientmqueue/ -type  f | xargs  rm -f
[root@localhost ~]# mkdir /server/scripts -p
[root@localhost ~]# vim /server/scripts/del.sh
find  /var/spool/clientmqueue/ -type  f | xargs  rm -f
[root@localhost ~]# crontab -e
00 00 * * 6 /bin/sh /server/scripts/del.sh > /dev/null 2>&1
[root@localhost ~]# crontab -l
#del file by xmj
00 00 * * 6 /bin/sh /server/scripts/del.sh > /dev/null 2>&1
[root@localhost ~]# 

——-END——-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值