1  操作的最小化原则

1)安装系统最小化

2)开启程序服务最小化原则

3)操作最小化原则

4)登陆最小化原则;平时没有需求不用root登陆,要用普通登陆。

2  更改ssh服务默认端口及常规配置

# vim /etc/ssh/sshd_config

Port 2002

PermitRootLogin no

   UseDNS no             ; 不使用DNS

   GSSAPIAuthentication no ; 解决远程连接服务慢问题或通过sed命令直接对文件进行更改

# sed -i “s/Port 2002/Port 22/g” /etc/ssh/sshd_config 

3  Sudo的应用

让普通用户可以拥有指定root权限功能

3.1    通过visudo配置sudo

 

注:当给普通用户全部root权限时,可通sudo  su – 命令由当前普通用户切换到root用户环境变量中,而无需知道root的密码,只要知道当前用户密码即可切换成功。

3.2    通过配置文件配置sudo

 

3.3    配置文件的基本解释

通过visudo直接编辑,配置后可自动检查语法功能;

1)授权(授权组可用%开头)

Wang         ALL=(ALL)             ALL

用户    机器=(授权哪个角色的权限)  授权的命令

%用户组 机器=(授权哪个角色的权限)   授权的命令

2)别名的意义

用户或组

主机(机器)

授权角色权限

命令

Root

ALL

(ALL)

ALL

User_Alias  Uers=wang, %mikem

Host_Alias  

Hostname=lc1,lc2

Runas_Alias

OP=root

Cmnd_Alias

CMd=/sbin..

3.4    普通用户可通过sudo –l命令查看本身具有sudo的哪些权限

 

提示:

用户通过sudo提权时有时要输入的密码,有时不输入,其原因可在配置文件里配置密码超时时间;当通过sudo命令提权时,会先检查/var/db/sudo/目录下是否有相应用户的密码时间戳,如果没超时就直接通过,否则输入自己的密码才能执行。

4  Sudo配置注意事项

a)          命令别名下的成员必须是文件或目录的绝对路径

b)          别名名称是包含大写字母,数字,下划线,如果是字母都要大写

c)             一个别名下有多个成员,成员与成员之间,通过半角“,”号分隔;成员必须是有效实际存在的。

d)          别名成员受别名类型Host_Alias,User_Alias,Runas_Alias,Cmnd_Alias制约,定义什么类型的别名,就要有什么类型的成员相配。

e)          别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过“\”来续行;

f)            指定切换的用户要用()括号括起来,如果省略括号,则默认为root用户;如果括号里是ALL,则代表能切换到所有用户

g)          如果不需要密码直接运行命令的,应该加NOPASSWD:参数。

h)          禁止某类程序或命令执行,要在命令动作前面加上“!”号,并且放在允许执行命令的后面。

i)             用户组前面必须加%号。

5  系统字符集调整支持显示中文

 

5.1    建议更改字符集 (建议)

 

注:Source表示重新加载配置文件使其生效

6  服务器时间同步及更改

6.1    通过date –s命令更改时间并通过hwclock命令将更改的时间更新的bash里

[root@baiguin ~]# date -s "2014/10/15"

2014年 10月 15日 星期三 00:00:00 CST

[root@baiguin ~]# hwclock

[root@baiguin ~]# date +%F\ %T

2014-09-26 15:23:16

6.2    通过ntpdate更新服务器时间

# ntpdate time.nist.gov

 

6.3    Ntp-sever服务器搭建

1.   安装ntp-server(系统默认安装),也可通过yum安装。

[root@WBG1 ~]# rpm -qa ntp

ntp-4.2.6p5-1.el6.centos.i686

2.   编辑ntpd.conf配置文件

restrict 0.0.0.0 mask 0.0.0.0  nomodify notrap noquery  ; 拒绝所有

restrict 192.168.166.0 mask 255.255.255.0 nomodify   ; 只允许该网段更新时间

restrict 127.0.0.1             ; 本可有所有操作

server 210.72.145.44 prefer    ;  perfer参数是优先到远端Ntpserver更新时间

server  127.127.1.0   fudge   ; 如果远端服务器不能同步时间,则由本地时间提供给客户端

127.127.1.0 stratum 8

driftfile /var/lib/ntp/drift

keys /etc/ntp/keys

1)说明:关于权限设定部分 

权限的设定主要以 restrict 这个参数来设定,主要的语法为 

restrict IP地址 mask 子网掩码 参数

注:其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP。

2)参数有以下几个:

ignore :关闭所有的 NTP 联机服务 

nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网 

noquery :不提供客户端的时间查询 

注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!     

=============================         

3     watch查看NTP服务的运行状况

[root@WBG1 ~]# watch ntpq -p

参数说明:

remote: 它指的就是本地机器所连接的远程NTP服务器

refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
st: 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
t: 这个.....我也不知道啥意思^_^
when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
delay: 从本地机发送同步要求到服务器的round trip time
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确

4.   客户端配置,并加入crond自动同步。

1)通过命令直接同步

[root@DB_Mysql ~]# ntpdate 192.168.166.100     

======================

2)LINUX做为客户端自动同步时间:               ; 加入crond定时同步
       如果想定时进行时间校准,可以使用crond服务来定时执行,编辑 /etc/crontab 文件,加入下面一行:

30 8 * * * root /usr/sbin/ntpdate 192.168.166.100; /sbin/hwclock -w   #192.168.0.1是NTP服务器的IP地址
这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。

3)windows同步

WINDOWS 需要打开windows time服务和RPC的二个服务,如果在打开windows time 服务,时报错误1058,进行下面操作 :
1.运行 cmd 进入命令行,然后键入w32tm /register 进行注册正确的响应为:W32Time 成功注册。

2.如果上一步正确,用 net start "windows time" 或 net start w32time 启动服务。

5.   报错说明

      当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found 的错误的信息有以下2个: 

1)错误1.Server dropped: Strata too high

在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。

解决方法:

在ntp客户端用ntpdate -d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。

è这是因为NTP server还没有和其自身或者它的server同步上

注:在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

=====================

那么如何知道何时ntp server完成了和自身同步的过程呢?

在ntp server上使用命令:

# watch ntpq -p
出现画面:

Every 2.0s: ntpq -p Thu Jul 10 02:28:32 2008

remote refid st t when poll reach delay offset jitter

==============================================================================

192.168.30.22 LOCAL(0) 8 u 22 64 1 2.113 179133. 0.001

LOCAL(0) LOCAL(0) 10 l 21 64 1 0.000 0.000 0.001

注意:LOCAL的这个就是与自身同步的ntp server。

注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒*5=320秒的时间。

如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。

2)错误2.Server dropped: no data

从客户端执行netdate –d时有错误信息如下:

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

192.168.30.22: Server dropped: no data

server 192.168.30.22, port 123

.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found

解决方法:

出现这个问题的原因可能有2:

1.   检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。使用以下命令检查ntp的版本:

# ntpq -c version
下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 4.1 and 4.2.

In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".

In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd

解决1或查看服务端是否定义了拒绝参数,也会出现此问题。

把notrust去掉

2.检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。

解决2添加防火墙规则或直接关掉

#iptables  INPUT -p udp -m udp --dport 123 -j ACCEPT

如果觉得麻烦就直接把防火墙停掉

#service iptables stop

来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。

6.4    通过cron任务计划定时更新服务器时间

# echo “#time update by server” >>/var/spool/cron/root

#echo “*/5 * * * * /usr/sbin/ntpdate time.nist.gov” >>/var/spool/cron/root

注:此方法是通过互联网的方式同步时间,如果以后服务器多的话,自己也可以配置个别ntpserver用来同步其他服务器的时间更新,ntpserver负责到互联网更新时间,而其他服务器负责到ntpserver同步时间,这就是ntpserver的作用。

7  加大服务器文件描述符

7.1    通过编辑ulimit配置文件使文件描述符增加永久生效

#vim /etc/syscurity/limits.conf

#ulimit -n

 

 

注:调整的数字不是越大越好,一句话够用就行;

8  调整内核参数文件/etc/sysctl.conf

8.1    对sysctl.conf增加如下参数进行调优

#vim /etc/sysctl.conf               ; 进入文件后在最后行中添加

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.tcp_keepalive_probes = 3

net.ipv4.tcp_keepalive_intvl =15

net.ipv4.tcp_retries2 = 5

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_max_orphans = 32768

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_wmem = 8192 131072 16777216

net.ipv4.tcp_rmem = 32768 131072 16777216

net.ipv4.tcp_mem = 786432 1048576 1572864

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.ip_conntrack_max = 65536

net.ipv4.netfilter.ip_conntrack_max=65536

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

# sysctl –p                           ;通过命令使其生效

注:对以上参数的解释可参考此链接地址http://yangrong.blog.51cto.com/6945369/1321594

9  锁定关键系统文件

9.1    通过chattr +i 进行加锁

# chattr  +i  /etc/passwd  /etc/shadow  /etc/group  /etc/gshadow  /etc/inittab

锁定后不让添加及删除

[root@bogon ~]# rm -rf /etc/passwd

rm: 无法删除"/etc/passwd": 不允许的操作

 

9.2    通过chattr -i 进行解锁

# chattr –i /etc/passwd

9.3    通过lsattr 查看文件是否加锁

#lsattr  /etc/passwd                              ; 查询结果有i表示已加锁

 

9.4    通过chattr -a 参数只允许向文件内添加内容

[root@baiguin home]# chattr +a 111file

[root@baiguin home]# rm -rf 111file

rm: 无法删除"111file": 不允许的操作

[root@baiguin home]# mv 111file 222file

mv: 无法将"111file" 移动至"222file": 不允许的操作

[root@baiguin home]# echo 123 >111file

-bash: 111file: 不允许的操作

[root@baiguin home]# echo 123 >>111file

[root@baiguin home]# cat 111file

123

dfad

dsfsdafa

123

10          /etc/motd文件的作用

10.1 举例说明

当退出系统在进入系统时,会显示motd文件里面的内容,这样可以将一些信息告诉给使用者。

1)在motd文件中输入相关说明

 

2)退出重新登陆,查看显示情况。

 

11          Linux基础优化小结:

1)不用root,添加普通用户,通过sudo授权管理

2)更改默认的远程连接SSH服务端口及禁止root用户远程连接

3)定时自动更新服务器时间

4)配置yum更新源,从国内更新源下载安装rpm包

5)关闭selinux及iptables(暂时关闭,后面学到要开启并优化)

6)调整文件描述符数量,进程及文件的打开都会消耗文件描述符

7)定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满。

8)精简开机自启动服务

9)Linux内核参数优化

10)更改字符集,支持中文,但建议还是用英文字符集,防止乱码问题。

11)锁定关键系统文件

12)清空/etc/issue ,去除或更改系统及内核版本登陆前的屏幕显示

 posted on 2013-10-10 10:27  阿~贵  阅读(717)  评论(0编辑  收藏  举报