Linux安全与优化

目录

一、原则

二、安全

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 系统未使用,保留。
运行级别5 X11控制台,登陆后进入图形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
已注转载,如需删除请及时联系,联系后立即删除。

上一篇:44 | 套路篇:网络性能优化的几个思路(下)


下一篇:oracle