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(范围0——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 http://mirrors.aliyun.com/repo/Centos-6.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)
第六点:适当调整文件描述符的数量
鉴于进程及文件的打开都会消耗文件描述符,所以在运维过程中我们要调整下文件描述符的数量,表示形式为整数数字(0——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工具书,如《Linux就该这么学》等及同行高手。
Linux基础优化与安全归纳总结的更多相关文章
- Linux基础优化和安全重点小结
Linux基础优化和安全重点小结 1.不用root管理,以普通用户的名义通过sudo管理授权(/etc/sudoers) 2.更改默认的ssh服务端口,禁止root用户远程连接,甚至监听 ...
- Linux基础优化(二)
Linux基础优化(二) 一操作系统字符优化 避免出现中文乱码,UTF-8支持中文GBK-Xx支持中文 (一)查看默认编码 [root@centos7 ~]# echo $LANG en_US.UTF ...
- Linux 基础优化
1.操作的最小化原则 1)安装系统最小化 一般情况下安装OS时,软件安装包组(Package Group)的选择: base--------------------------基本环境 editors ...
- 18.linux基础优化
1.linux系统的基础优化 (1)关闭selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 临时关闭 ...
- linux运维、架构之路-linux基础优化
1.查看linux版本 cat /etc/redhat-release #CentOS release 6.9 (Final) ————>查看版本号 uname -m #x86_64 ————& ...
- 1、linux基础优化
1.添加一个用户 [root@oldboy ~]# useradd oldboy [root@oldboy ~]# id oldboy uid=500(oldboy) gid=500 (oldboy) ...
- linux基础优化
[root@moban oldboy]# for oldboy in `chkconfig --list |grep "3:on" |awk '{print $1}' |grep ...
- Centos6.5 64linux系统基础优化(二)
1 操作的最小化原则 1)安装系统最小化 2)开启程序服务最小化原则 3)操作最小化原则 4)登陆最小化原则;平时没有需求不用root登陆,要用普通登陆. 2 更改ssh服务默认端口及常规配置 # ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- Castle Windsor 的动态代理类如何获取实际类型
问题 在实际开发过程当中我们可能会针对某些类型使用动态代理技术(AOP),注入了一些拦截器进行处理,但是一旦某个类型被动态代理了,那么就会生成一个代理类.这个时候在该类内部使用 GetType() 方 ...
- python接口自动化(十一)--发送post【data】(详解)
简介 前面登录博客园的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以jenkins 登录为案例,传 data ...
- docker-compose-volumes的说明
docker-compose里两种设置方式都是可以持久化的 绝对路径的 ghost: image: ghost volumes: - ./ghost/config.js:/var/lib/ghost/ ...
- 学习ASP.NET Core Razor 编程系列十三——文件上传功能(一)
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 声明式RESTful客户端在asp.net core中的应用
1 声明式RESTful客户端 声明式服务调用的客户端,常见有安卓的Retrofit.SpringCloud的Feign等,.net有Refit和WebApiClient,这些客户端都是以java或. ...
- Flutter map 妙用及 .. 使用
前言 本篇文章对于熟悉 flutter 或者 dart 的小伙伴来说可能觉得比较简单,但是对于初学者或者没用过的小伙伴还是有些收获的. 背景 说到 map 妙用的发现,还要归功于 Tooltip 的研 ...
- Flutter 即学即用系列博客——03 在旧有项目引入 Flutter
前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...
- Java开发笔记(八十八)文件字节I/O流
前面介绍了如何使用字符流读写文件,并指出字符流工具的处理局限,进而给出随机文件工具加以改进.随机文件工具除了支持访问文件内部的任意位置,更关键的一点是通过字节数组读写文件数据,采取字节方式比起字符方式 ...
- 迭代器模式 Iterator 行为型 设计模式(二十)
迭代器模式(Iterator) 走遍天下,世界那么大,我想去看看 在计算机中,Iterator意为迭代器,迭代有重复的含义,在程序中,更有“遍历”的含义 如果给定一个数组,我们可以通过for循 ...
- mysql入门知识
数据库 什么是数据库就是存储数据的仓库(容器) 存储数据的方式1.变量 无法永久存储2.文件处理 ,可以永久存储 文件处理存在的弊端: 1.文件处理速度慢 2.文件只能在自己的计算机上读写 无法被共享 ...