首页 > Linux操作系统 > Linux操作系统 > Linux基础优化与安全归纳总结
一名运维工程师在运维岗位上时间久了,就会发现 Linux 优化的重要性,同时会给运维工作带来很多的便利性。本人逐渐认识到了这一点,所以特意在工作闲暇之余,通过阅读 Linux 相关书籍及向同事、同行高手咨询,针对 系统的一些基本优化做了如下归纳总结,如有不足之处,还望大伙补充完善。
本文主要描述一些基本的系统优化知识点,并未涉及 Linux 深化优化,关于 Linux 的深化优化知识本人后期会更新。
第一点: Linux 的管理尽量不用 root 用户,利用 sudo 命令来控制普通用户对系统的管理
新建一个用户,使用 sudo 命令添加权限,详细操作步骤如下:
( 1 )添加新的用户: useradd 新的用户名
( 2 )检查是否已成功添加: id 新的用户名
( 3 )设置该用户的密码: echo 123321|passwd --stdin 新的用户名
接下来需将新的用户添加管理员权限,这个新的用户就相当于管理员
( 4 )备份之前的权限文件: \cp /etc/sudoers{,.back}
( 5 )将新的用户添加管理员权限:
echo " 新的用户名 ALL=(ALL) NOPASSWD: ALL " >> /etc/sudoers
( 6 )检查是否已成功添加: tail -1 /etc/sudoers
( 7 )配置生效: visudo -c
待以上操作完毕,那么此时的新的用户权限等同于 root 用户。
第二点:更改默认的远程连接 SSH 服务端口
( 1 )修改配置文件 /etc/ssh/sshd_config
Port 22 ,改为 Port 52113 (范围 —— 65535 ); ## 默认端口为 22
ListenAddress 0.0.0.0 ,改为 ListenAddress 内网 IP 地址; ## 监听内网 ip 地址
PermitRootLogion yes ,改为 PermitRootLogion no ; ##root 用户远程连接)
( 2 )重启生效: /etc/init.d/sshd reload
( 3 )查看端口状态: netstat -lntup|grep sshd
第三点:定时自动更新服务器时间,使其和互联网时间同步
( 1 )配置
echo '#time sync by 新的用户名 at 2019-04-01' >> /var/spool/cron/root
echo '/5 /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >> /var/spool/cron/root
### 每 5 分钟执行一次同步
### 至于以哪个时间服务器为基准,以下地址可自己选择:
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
( 2 )查看是否已更新: crontab -l
( 3 )最后备份下: \cp /var/spool/cron/root{,.back}
第四点:配置 yum 配置源
( 1 )创建备份文件存放目录
Mkdir -p /etc/yum.repos.d/{default,back}
( 2 )备份所有默认的配置文件
\mv /etc/yum.repos.d/repo /etc/yum.repos.d/default
( 3 )从阿里云获取 yum 源
wget -O /etc/yum.repos.d/CentOS-Base.repo
( 4 )备份 yum 源
\cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/default
第五点:关闭 selinux 及 iptables
( 1 )关闭 iptables : /etc/init.d/iptables stop
( 2 )检查是否已关闭: /etc/init.d/iptables status
( 3 )设置开机不自动启动: chkconfig iptables off
( 4 )确认配置: chkconfig --list iptables
( 5 )关闭 selinux :
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
( 6 )查看并确认配置: cat /etc/selinux/config
备注:永久生效,需要重启计算机。(在工作场景中,如果有外部 IP 一般要打开 iptables )
第六点:适当调整文件描述符的数量
鉴于进程及文件的打开都会消耗文件描述符,所以在运维过程中我们要调整下文件描述符的数量,表示形式为整数数字( —— 65535 )。
查看默认文件描述符: ulimit –n ### 一般默认为 1024
在 /etc/sercurity/limits.conf 里面配置:
echo '* - nofile 65535' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
第七点:定时自动清理邮件目录垃圾文件
防止 inodes 节点被占满。
第八点:精简并保留必要的开机自启动服务
( 1 )只保留重要的基础服务,其余全部关闭
chkconfig --list|egrep -v " sysstat|crond|sshd|network|rsyslog "|awk '{print "chkconfig "$1,"off"}'|bash
( 2 )确认配置: chkconfig --list|grep 3:on
第八点:优化 Linux 内核参数
( 1 )配置文件 /etc/sysctl.conf ,添加如下命令(可直接复制粘贴)
cat >>/etc/sysctl.conf<<EOF
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
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
EOF
( 2 )配置生效命令: sysctl -p
第九点:配置字符集
( 1 )查看配置文件: cat /etc/sysconfig/i18n
里面默认应该有以下 2 行内容:
LANG="en_US.UTF-8" ### 默认提示为英文
( 2 )先备份配置文件: cp /etc/sysconfig/i18n{,.back}
( 3 )修改配置文件:
说明:此项可将字符集修改为中文,也可不做修改。
echo 'LANG="zn_CN.UTF-8"' > /etc/sysconfig/i18n
echo 'SYSFONT="latarcyrheb-sun16"' >> /etc/sysconfig/i18n
( 4 )配置生效: source /etc/sysconfig/i18n
( 5 )确认配置是否成功: echo $LANG
第十点:锁定关键性系统文件,防止被篡改
配置命令:
chattr +i /etc/{passwd,shadow,group,gshadow}
lsattr -a /etc/{passwd,shadow,group,gshadow}
解除锁定命令: chattr -i
第十一点:禁止系统被 ping
配置命令: echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
配置生效命令: sysctl -p
第十二点:升级漏洞软件
查看相关软件的版本号: rpm -qa openssl openssh bash
执行升级: yum install openssl openssh bash
第十三点:优化 SSH 远程连接
( 1 )先备份配置文件: cp /etc/ssh/sshd_config{,.back}
( 2 )编辑 ssh 服务配置文件
编辑 ssh 服务的配置文件( vim /etc/ssh/sshd_config ),在第 12 行下面添加如下内容:
Port 52113 # 使用大于 10000 的端口号
PermitRootLogin no # 禁止 root 远程登录
PermitEmptyPasswords no # 禁止空密码登录
UseDNS no # 不使用 dns 解析
GSSAPIAuthentication no # 连接慢的解决配置
( 3 )确认配置: grep -A 5 -i 'Start by 新的用户名 ' /etc/ssh/sshd_config
( 4 )重启 ssh 服务: /etc/init.d/sshd restart
( 5 )确认配置是否成功: netstat -lntup | grep ssh
以上关于 Linux 系统的基础优化,由于本人能力及知识点有限,总结归纳的不够全面,还请大家多参考 Linux 工具书,如 等及同行高手。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559985/viewspace-2642459/,如需转载,请注明出处,否则将追究法律责任。