热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux安全与优化

目录一、原则二、安全1、sudo登录2、禁止root远程SSH3、锁定关键系统文件4、隐藏Linux版本信息显示5、清除多余的系统虚拟用户账号6、历史记录数及登录超时7、禁ping




目录
一、原则
二、安全

1、sudo登录
2、禁止root远程SSH
3、锁定关键系统文件
4、隐藏Linux 版本信息显示
5、清除多余的系统虚拟用户账号
6、历史记录数及登录超时
7、禁ping
8、升权威胁命令
9、grub引导菜单加密
10、升级已知漏洞


三、优化

1、设定运行级别为3
2、精简开机启动服务
3、时间同步
4、中文显示设置
5、调整文件描述符数量
6、定时自动清理邮件服务临时目录
7、配置yum更新源
8、autofs自动挂载服务
9、关闭selinux及iptables
10、Linux内核参数优化

参考
————————————————————————————————————————————————————————


一、原则

安装系统最小化。即选包最小化,yum安装软件包也要最小化。
自启服务最小化。精简开机启动服务crond、sshd、network、rsyslog、sysstat。
操作命令最小化。尽量不用-r参数。。
登录用户最小化。没有特殊需求不登录root,用普通用户登录。
权限设置最小化。普通用户授权权限最小化,只给用户必需的管理系统的命令;文件及目录的权限设置最小化,禁止随意创建、更改、删除文件。


二、安全

1、sudo登录

通过sudo 授权管理,不用root 登录管理系统,而以普通用户身份登录。
sudo 授权管理:visudo或vim /etc/sudoers
登录sudo 用户名
查看当前用户被授予的sudo权限集合sudo -l

# sudo 授权管理:`visudo`或`vim /etc/sudoers`
vim /etc/sudoers
#98行以下
#% 用户组 机器=(授权使用哪个角色的权限) COMMANDS
root ALL=(ALL) ALL
centos ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
# centos用户登录
sudo centos

2、禁止root远程SSH

更改默认的远程连接SSH服务器端口,禁止root用户远程连接。

备份
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
配置
vim /etc/ssh/sshd_config
更改端口
Port 52112
禁止密码为空的用户远程登录
PermitEmptyPasswords no
禁止root 远程登录
PermitRootLogin no
禁止sshd 对远程主机名进行反向解析
UseDNS no
Linux 之间使用SSH 远程连接慢
GSSAPIAuthentication no
重启sshd
/etc/init.d/sshd reload

甚至更改SSH服务只监听内网IP,拨号到VPN 服务器,然后从局域网访问这些服务器。对外的Web服务器端口http80 和https 443进行安全控制。

vim /etc/ssh/sshd_config
Port 52112
PermitEmptyPasswords no
PermitRootLogin no
UseDNS no
GSSAPIAuthentication no
SSH 监听的IP
ListenAddress 192.168.10.10:52112
iptables限制端口
iptables -I INPUT -p tcp --dport 52112 -s 192.168.10.10/24 -j ACCEPT

3、锁定关键系统文件

锁定关键系统文件,如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,处理以上内容后把chattr、lsattr 改名为并转移,这样就安全多了。

#锁定
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
#解锁
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
#转义
mv /usr/bin/chattr /usr/bin/picha
#查看
lsattr /etc/passwd

4、隐藏Linux 版本信息显示

清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。

查看
cat /etc/issue
cat /etc/issue.net
清除
> /etc/issue
> /etc/issue.net

5、清除多余的系统虚拟用户账号

bin、adm、lp、halt、mail、uucp、operator、games、gopher、ftp、dbus、vcsa、abrt、ntp、saslauth、postfix、tcpdump

6、历史记录数及登录超时

历史记录数及登录超时环境变量设置

vim /etc/profile
#连接的超时时间控制变量。
TMOUNT=10
#命令行的历史记录数量变量。
HISTSIZE=5
#历史记录文件的命令数量变量~/.bash_history
HISTFILESIZE=10

7、禁ping

iptables -t filter -I INPUT -p icmp --icmp-type 8 -i eth0 -s 192.168.10.10/24 -j ACCEPT

8、升权威胁命令

常见于在VMware上做完实验,然后在服务器上操作。

删库跑路rm -rf
流量高峰关闭/重启服务器poweroff、halt、reboot
以上命令都毙了吧

9、grub引导菜单加密

#产生一个MD5密码
/sbin/grub-md5-crypt
#修改grub.conf 文件
vi /etc/grub.conf
14 password --md5 $1$A5FhR1$790TX7w3S4gjlhCAeHxAG1
#注意:password要加在splashimage 和title 之间,否则可能无法生效

10、升级已知漏洞

查看版本信息,版本有危险漏洞,尽快升级

rpm -qa openssl openssh bash
yum install openssl openssh bash -y

三、优化

1、设定运行级别为3

设定运行级别为3:使用文本命令行模式管理Linux,资源占用最小化

runlevel
init 3

查看当前系统运行级别runlevel
切换运行级别,后面接对应级别的数字init


运行级别说明
运行级别0系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
运行级别1单用户工作状态,root权限,用于系统维护,禁止远程登陆。
运行级别2多用户状态(没有NFS)。
运行级别3完全的多用户状态(有NFS),登陆后进入控制台命令行模式。
运行级别4系统未使用,保留。
运行级别5X11控制台,登陆后进入图形GUI模式。
运行级别6系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

2、精简开机启动服务

精简开机启动服务crond、sshd、network、rsyslog、sysstat


服务说明
sshd远程连接 Linux 服务器
rsyslog日志相关
network网络相关
crond周期性任务
sysstat包含监测系统性能及效率的一组工具。iostat工具提供 CPU 使用率及硬盘吞吐效率的数据;

设置

#查看
##调整为英文字符集`LANG=en`
LANG=en
##过滤已开启的服务`chkconfig --list|grep 3:on`
chkconfig --list|grep 3:on
#设置
##方法1:将所有的命令关闭,将需要的命令打开。
for order in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig--level 3 $order off;done
for order in crond network rsyslog sshd sysstat ;do chkconfig --level 3 $order on;done
##方法2:反选,把不需要的命令关闭。
for order in `chkconfig --list|grep "3:on"|awk '{print$1}'|grep -vE "crond|network|sshd|rsyslog|sysstat"`;
do chkconfig $order off;
done
##方法3:反选,把不需要的命令关闭。拼接命令,Bash运行。
chkconfig --list|grep 3:on|grep -vE "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig " $1 " off"}'|bash
##方法4:反选,把不需要的命令关闭。拼接命令,Bash运行。
chkconfig --list|grep 3:on|grep -vE "crond|sshd|network|rsyslog|sysstat" |awk '{print $1}'|sed -r 's#(.*)#chkconfig \1 off#g'|bash

3、时间同步

定时自动更新服务器的时间,使其与互联网时间同步

# 手动同步
/usr/sbin/ntpdate time.nist.gov
which ntpdate
#周期性同步
##方法1:定时任务
vim /var/spool/cron/root
#time sync by song at 2021-5-6
*/5 * * * * /user/sbin/ntpdate time.nist.gov > /dev/null 2>&1
##方法2:时间同步服务器ntp server

4、中文显示设置

更改系统字符集为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。

#备份配置文件
cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak
#设置
vim /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
#生效
source /etc/sysconfig/i18n
#查看
echo $LANG

5、调整文件描述符数量

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

#查看
ulimit -n
#调整
##方法1
vim /etc/security/limits.conf
* - nofile 65535
##方法2
vim /etc/rc.local
ulimit -HSn 65535

6、定时自动清理邮件服务临时目录

定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes 数被小文件占满。
邮件服务临时目录:CentOS 5 Sendmail 服务 /var/spool/clientmqueue/;CentOS 6 Postfix 服务 /var/spool/postf ix/maildrop/

#手动清理
find /var/spool/clientmqueue/ -type f|xargs rm -f
find /var/spool/postfix/maildrop/ -type f|xargs rm -f
#定时清理
## 建文件夹
mkdir -p /server/scripts
## 建脚本
vim /server/scripts/del_file.sh
find /var/spool/postfix/maildrop/ -type f |xargs rm -f
## 建定时任务
crontab -e
00 00 * * * /bin/sh /server/scripts/del_file.sh >/dev/null 2>&1
crontab -l

7、配置yum更新源

配置yum 更新源,从国内更新源下载安装软件包。如阿里源,网易源等。
本地yum源配置与卸载


8、autofs自动挂载服务

autofs服务:检测用户访问挂载,如用户访问未挂载文件系统时,自动挂载该文件系统。节约网络资源和服务器的硬件资源。
centos7:AutoFs自动挂载


9、关闭selinux及iptables

在工作场景中,如果有外部IP一般要打开iptables,高并发、高流量的服务器可能无法开启

SELinux
修改配置文件,永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
使用命令,临时关闭
setenforce 0
getenforce
iptables
关闭服务
/etc/init.d/iptables stop
确认关闭
/etc/init.d/iptables stop
关闭重启
chkconfig iptables off
chkconfig --list|grep ipt

10、Linux内核参数优化
vim /etc/sysctl.conf,执行sysct -p生效
linux内核参数注释与优化

#开启iptables服务
#设置
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

参考

linux内核参数注释与优化

————————————————————————————————————————————————————————

原文链接:https://blog.csdn.net/yueshangxigelou/article/details/117170582
已注转载,如需删除请及时联系,联系后立即删除。



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 图片复制到服务器 方向变了_双服务器热备更新配置文件步骤问题及解决方法
    本文介绍了在将图片复制到服务器并进行方向变换的过程中,双服务器热备更新配置文件所出现的问题及解决方法。通过停止所有服务、更新配置、重启服务等操作,可以避免数据中断和操作不规范导致的问题。同时还提到了注意事项,如Avimet版本的差异以及配置文件和批处理文件的存放路径等。通过严格执行切换步骤,可以成功进行更新操作。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
author-avatar
Duanzd09
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有