Day33
课堂笔记
2019年4月16日
集群架构描述及Linux系统基础优化
基础优化:
1、添加一个普通用户oldboy。
# useradd oldboy
# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
# echo 123456|passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
2、加到sudo管理,oldboy就相当于管理员
# visudo
# grep -w oldboy /etc/sudoers
oldboy ALL=(ALL) NOPASSWD: ALL
远程连接oldboy直接用。
弃用root登录,改用oldboy用户登录。
重新配置Xshell连接
Connecting to 10.0.0.7:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
$ whoami
oldboy
$ sudo su - #切到root身份,否则,sudo vim。
# whoami
root
4、关闭防火墙(后面学习后在开启)
# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
# chkconfig iptables off
检查:
# /etc/init.d/iptables status
iptables: Firewall is not running.
# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
3、优化SSH远程连接
# cp /etc/ssh/sshd_config{,.ori}
# vim /etc/ssh/sshd_config
####by oldboy#2011-11-24##
Port 52113 #10000以上的端口
PermitRootLogin no #禁止root远程登录
PermitEmptyPasswords no #禁止空密码登录
UseDNS no #不使用解析。
GSSAPIAuthentication no #连接慢的解决配置。
####by oldboy#2011-11-24##
检查:
# grep oldboy -A 5 /etc/ssh/sshd_config
####by oldboy#2011-11-24##
Port 52113
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
####by oldboy#2011-11-24##
# vimdiff /etc/ssh/sshd_config{,.ori}
2 files to edit
# diff /etc/ssh/sshd_config{,.ori}
13,20d12
< ####by oldboy#2011-11-24##
< Port 52113
< PermitRootLogin no
< PermitEmptyPasswords no
< UseDNS no
< GSSAPIAuthentication no
< ####by oldboy#2011-11-24##
# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
检查:
# netstat -lntup|grep ssh
tcp 0 0 0.0.0.0:52113 0.0.0.0:* LISTEN 3216/sshd
tcp 0 0 :::52113 :::* LISTEN 3216/sshd
重新连接无法连接了。
Connecting to 10.0.0.7:22...
Could not connect to '10.0.0.7' (port 22): Connection failed.
Connecting to 10.0.0.7:52113...
Connecting to 10.0.0.7:52113...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Thu Apr 26 09:33:17 2018 from 10.0.0.1
[oldboy@oldboy ~]$
xshell连不上虚拟机的同学,从vmware进入虚拟机去关iptables
5、关闭selinux(安全)
永久生效,需要重启计算机
[root@oldboy ~]# vim /etc/selinux/config
[root@oldboy ~]# grep disable /etc/selinux/config
# disabled - No SELinux policy is loaded.
SELINUX=disabled
临时生效:
[root@oldboy ~]# setenforce 0 #设置Permissive模式
[root@oldboy ~]# getenforce #查生效情况
Permissive
# enforcing - SELinux security policy is enforced. 正常开启
# permissive - SELinux prints warnings instead of enforcing. 打印警告,但是也是禁止了。
# disabled - No SELinux policy is loaded. 禁止状态。
6、精简开机自启动服务
3种方法。
# setup
# ntsysv
================================
# chkconfig --list|egrep -v "sysstat|crond|sshd|network|rsyslog"|awk '{print "chkconfig "$1,"off"}'|bash
# chkconfig --list|grep 3:on
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
7、修改Linux服务器字符集
[root@oldboy ~]# vim /etc/sysconfig/i18n
[root@oldboy ~]# cat /etc/sysconfig/i18n
#LANG="en_US.UTF-8"
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"
生效:
[root@oldboy ~]# source /etc/sysconfig/i18n
检查:
[root@oldboy ~]# echo $LANG
zh_CN.UTF-8
8、设置Linux服务器时间同步(定时任务)
echo '#time sync by oldboy at 2010-2-1' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
[root@oldboy ~]# crontab -l
#time sync by oldboy at 2010-2-1
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
*/5 * * * * /usr/sbin/ntpdate ntp2.aliyun.com >/dev/null 2>&1
9、命令行的安全
echo 'export TMOUT=300' >>/etc/profile
echo 'export HISTSIZE=5' >>/etc/profile
echo 'export HISTFILESIZE=5' >>/etc/profile # cat ~/.bash_history
tail -3 /etc/profile
source /etc/profile #使得配置文件生效
10、锁定关键系统文件
chattr +i /etc/passwd /etc/shadow /etc/group /etc/inittab /etc/fstab /etc/sudoers
lsattr /etc/passwd /etc/shadow /etc/group /etc/inittab /etc/fstab /etc/sudoers
mv /usr/bin/chattr /opt/oldboy
11、清除多余的系统账号
12、为grub菜单加密码
# /sbin/grub-md5-crypt
Password:
Retype password:
$1$.Fv.q/$eCasAokSkgxvwOow37hJr1
/etc/grub.conf
password --md5 $1$.Fv.q/$eCasAokSkgxvwOow37hJr1
13、隐藏版本信息
# cat /etc/issue
CentOS release 6.9 (Final)
Kernel \r on an \m
# > /etc/issue
# cat /etc/issue
14、禁止Linux系统被ping
# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
# sysctl -p
缺点:自己也没办法调试了,Iptables 指定内网可以Ping,外网不能ping。
15、调整linux系统文件描述符数量
文件永久生效:
echo '* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
临时生效:
ulimit -SHn 65535
16、Linux服务器内核参数优化
vim /etc/sysctl.conf添加如下内容:
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000 #time-wait过多解决。
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
执行sysctl -p生效
17、升级漏洞软件及打补丁
yum install openssl openssh bash -y
yum update
yum install tree lrzsz dos2unix nc nmap -y
18、调整yum软件下载源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
模板机调整:
1、增加第二块调整网卡
\cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
[root@oldboy ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.16.1.7
NETMASK=255.255.255.0
DNS2=202.106.0.20
USERCTL=no
PEERDNS=yes
IPV6INIT=no
[root@oldboy ~]# ifup eth1
Determining if ip address 172.16.1.7 is already in use for device eth1...
[root@oldboy ~]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:0C:29:C3:F2:92
inet addr:172.16.1.7 Bcast:172.16.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fec3:f292/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:650 (650.0 b)
Interrupt:16 Base address:0x2000
[root@oldboy ~]# >/etc/udev/rules.d/70-persistent-net.rules
[root@oldboy ~]# vim /etc/rc.local
配置改主机名地址:
[root@oldboy scripts]# cat m.sh
#!/bin/sh
if [ $# -ne 2 ];then
echo "/bin/sh $0 hostname PartIP"
exit 1
fi
sed -i "s#oldboy#$1#g" /etc/sysconfig/network
hostname $1
sed -i "s#100#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "s#100#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth1
Linux基础优化与安全重点小结
1)不用root登录管理系统,而以普通用户登录通过sudo授权管理。
2)更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改SSH服务只监听内网IP。
3)定时自动更新服务器的时间,使其和互联网时间同步。
4)配置yum更新源,从国内更新源下载安装软件包。
5)关闭SELinux及iptables(在工作场景中,如果有外部IP一般要打开iptables,高并发高流量的服务器可能无法开启)。
6)调整文件描述符的数量,进程及文件的打开都会消耗文件描述符数量。
7)定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满(注意Centos6和Centos5要清除的目录不同)。
8)精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog、sysstat)。
9)Linux内核参数优化/etc/sysctl.conf,执行sysctl -p生效。
10)更改系统字符集为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。
11)锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab, 处理以上内容后把chattr、lsattr改名为oldboy,转移走,这样就安全多了。
12)清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。
13)清除多余的系统虚拟用户账号。
14)为grub引导菜单加密码。
15)禁止主机被ping。
16)打补丁并升级有已知漏洞的软件。
hosts解析
cat >/etc/hosts< 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.1.5 lb01 172.16.1.6 lb02 172.16.1.7 web02 172.16.1.8 web01 172.16.1.51 db01 db01.etiantian.org 172.16.1.31 nfs01 172.16.1.41 backup 172.16.1.61 m01 EOF