优化项目
*添加普通用户,通过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——-