me小怪兽

导航

Linux系统安全加固

 

1.4 Linux系统安全

1.4.1 关闭SElinux

vim /etc/selinux/config #修改成SELINUX=disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

1.4.2 firewall防火墙

#启动防火墙
systemctl start firewalld.service

#关闭防火墙
systemctl stop firewalld.service

#开端口范围
firewall-cmd --permanent --zone=public --add-port=20000-20030/tcp

#开某个端口
firewall-cmd --permanent --zone=public --add-port=80/tcp

#热加载
firewall-cmd –reload

1.4.3 修改主机名

hostnamectl set-hostname mysql #主机一修改成mysql

hostnamectl set-hostname nginx #主机二修改成nginx

注:

多个主机的主机名不一致

1.4.4 配置hosts

vim /etc/hosts #添加域名解析,新增ip+对应的主机名

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.2.10    nginx

192.168.2.11    mysql

1.4.5 设置时间同步

crontab -e #添加计划任务
*/5 * * * * /usr/sbin/ntpdate ntp.ntsc.ac.cn #同步时间服务器

1.4.6 修改系统参数

修改limits.conf文件,增加如下内容到配置文件最后:
vim /etc/security/limits.conf  #添加
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536

1.4.7 设置自动注销时间

#vim /etc/profile #添加
TMOUT=600 # 增加600秒后自动退出
source /etc/profile #刷新

1.4.8 更新yum

mkdir /etc/yum.repos.d/bak #创建备份

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo #下载阿里源
yum clean all #清除旧的YUM缓存
yum makecache #新建缓存

yum -y install vim  #测试yum源

1.4.9 远程端口号修改

[root@localhost yum.repos.d]# vim /etc/ssh/sshd.conf
#port 22 #更具公司需求修改
port 61122
[root@localhost yum.repos.d]#service sshd restart

1.4.10 禁止root远程登陆

1.创建普通用户
useradd channelfone
passwd channelfone

useradd channelfone

echo "123456" |passwd channelfone --stdin

useradd yunwei

echo "123456" |passwd yunwei --stdin

channelfone     ALL=(ALL)       NOPASSWD: ALL

yunwei          ALL=(ALL)       NOPASSWD: ALL

新的 密码:
重新输入新的 密码:
2.修改/etc/ssh/sshd_config配置文件、
PermitRootLogin yes # 改为no
systemctl restart sshd #重启sshd
3.默认所有普通用户都可以su到root

1.4.11 指定用户suroot

1.默认root是属于wheel组,例如:将用户channelfone附加至wheel组,命令如下
usermod -G wheel channelfone
2.修改/etc/pam.d/su配置文件。将以下行的注释(#)去掉
auth required pam_wheel.so use_uid
3.在文件/etc/login.defs 中最后添加一行
SU_WHEEL_ONLY yes
4.重启sshd服务
systemctl restart sshd

1.4.12 普通用户临时提权

vim /etc/sudoers #添加channelfone临时提权

# %wheel        ALL=(ALL)       NOPASSWD: ALL #改行下添加参数

channelfone     ALL=(ALL)       NOPASSWD: ALL

su - channelfone

[channelfone@localhost ~]$ sudo mkdir /root/test #普通用户无密码提权

1.4.13 注释掉系统不需要的用户和用户组

cp /etc/passwd /etc/passwdbak #修改之前先备份
1. vim /etc/passwd #编辑用户,在前面加上#注释掉此行
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin #注释掉ftp匿名账号

cp /etc/group /etc/groupbak #修改之前先备份
2. vim /etc/group #编辑用户组,在前面加上#注释掉此行
#adm:x:4:root,adm,daemon
#lp:x:7:daemon,lp
#uucp:x:14:uucp
#games:x:20:
#dip:x:40:

1.4.14 系统管理员账户修改

[admin@localhost ~]# vim /etc/shadow #root修改成其他名
admin:$6$V2oBzd79tfrIafXK$iyUT6NCJtfJnLkFCwx0k5iWr4zwveuB.7QkVoxxmEmGoHiH0lxuNWlS.1VvHFTshQoZ793dKuSI2jbzmiNU4n0::0:99999:7:::

[admin@localhost ~]# vim /etc/passwd #root修改成其他名
admin:x:0:0:root:/root:/bin/bash

1.4.15 防止非授权用户获得权限

chattr +i /etc/passwd #添加i属性
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow  #显示文件的属性
注意:执行以上权限修改之后,就无法添加删除用户了。
如果再要添加删除用户,需要先取消上面的设置,等用户添加删除完成之后,再执行上面的操作
chattr -i /etc/passwd #取消权限锁定设置
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow

1.4.16 启动或禁止用户IP登录

启动或禁止用户IP登录

查看 /etc/hosts.allow配置文件,设置允许登录的IP

[root@rhsde ~]# vim /etc/hosts.allow 添加

#

# hosts.allow   This file describes the names of the hosts which are

#               allowed to use the local INET services, as decided

#               by the '/usr/sbin/tcpd' server.

#

sshd:192.168.220.164:allow

查看/etc/hosts.deny文件,设置sshd:ALL

[root@rhsde ~]# vim /etc/hosts.deny   添加

sshd:ALL

也就是说,我们禁止所有IP,但是允许192.168.220.164相关IP登录

1.4.17 设置密码周期策略

vim /etc/login.defs #修改
PASS_MAX_DAYS 90 # 密码过期天数 90
PASS_MIN_DAYS 0 # 两次密码之间修改的最少天数 0
PASS_MIN_LEN 8 # 密码最小长度 8
PASS_WARN_AGE 7 # 密码过期前通知天数 7

1.4.18 设置密码复杂度

vim /etc/pam.d/system-auth #修改
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1
参数含义如下所示:
difok:本次密码与上次密码至少不同字符数
minlen:密码最小长度,此配置优先于login.defs中的PASS_MAX_DAYS
ucredit:最少大写字母 
lcredit:最少小写字母
dcredit:最少数字
ocredit=N:特殊字母的个数
retry:重试多少次后返回密码修改错误
【注】用root修改其他帐号都不受密码周期及复杂度配置的影响。
表示最小密码长度8位,数字,大小写,字母,特殊字符均至少包含1位。重试3次后返回密码修改错误

1.4.19 系统弱口令

https://suijimimashengcheng.51240.com/ #通过密码生成器生成高强度密码要求16位以上

1.4.20 系统内核漏洞

注:升级内核风险很高慎重决定

Linux Kernel官方网站:https://www.kernel.org/
ELRepo源网站:http://elrepo.org/
RPM包下载地址:
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
选择lt版本(长期支持)
kernel-lt-5.4.163-1.el7.elrepo.x86_64.rpm
kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64.rpm
yum install wget -y
cd /usr/local/src
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.163-1.el7.elrepo.x86_64.rpm
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64.rpm
yum install kernel-lt-5.4.163-1.el7.elrepo.x86_64.rpm -y
yum install kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64.rpm -y
#注意:kernel-lt是内核包,kernel-lt-devel是与内核相匹配的内核开发环境,都需要升级,必须保证内核开发环境和内核版本一致。
三、设置系统默认内核
#查看系统上的所有可用内核
[root@localhost src]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.4.163-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-2aaf6a587102425da09a55cad51a2c2f) 7 (Core)
#设置默认内核为我们刚才升级的内核版本
cp /etc/default/grub /etc/default/grub-bak #备份
grub2-set-default 0 #设置默认内核版本
vi /etc/default/grub
GRUB_DEFAULT=saved修改为:
GRUB_DEFAULT=0
:wq! #保存退出
#重新创建内核配置
grub2-mkconfig -o /boot/grub2/grub.cfg
#查看默认内核
grubby --default-kernel
grub2-editenv list
yum makecache #更新软件包
reboot #重启,现在系统默认内核已经是我们刚才升级后的最新版本
#重启后查看内核版本
uname -r
#查看内核包信息
uname -a ; rpm -qa kernel\* | sort
[root@localhost ~]# uname -a ; rpm -qa kernel\* | sort
Linux localhost.localdomain 5.4.163-1.el7.elrepo.x86_64 #1 SMP Tue Nov 30 12:12:53 EST 2021 x86_64 x86_64 x86_64 GNU/Linux
kernel-3.10.0-1160.el7.x86_64
kernel-lt-5.4.163-1.el7.elrepo.x86_64
kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64
kernel-tools-3.10.0-1160.el7.x86_64
kernel-tools-libs-3.10.0-1160.el7.x86_64
至此,CentOS升级系统内核到最新版教程完成。

1.4.21 防止误删除

将如下内容复制到bash脚本中执行即可
如需真实使用 rm 删除名可以在 rm 前加 \ 反斜杠.例如:

[root@localhost ~]# cat remove.sh

#!/sbin/bash

mkdir /home/remove

mkdir /home/remove/trash

mkdir /home/remove/tools

cat >> /home/remove/tools/remove.sh << EOF

PARA_CNT=\$#

TRASH_DIR="/home/remove/trash"

for i in \$*; do

STAMP=\$i

mv \$i \$TRASH_DIR/.\$STRMP

done

EOF

chmod -R 777 /home/remove

echo "alias rm="/home/remove/tools/remove.sh"" >> /etc/bashrc

source /etc/bashrc

[root@localhost ~]# touch test #测试

[root@localhost ~]# rm test

[root@localhost ~]# ll /home/remove/trash/test

-rw-r--r-- 1 root root 0 May 25 11:00 /home/remove/trash/test

1.4.22 ping

通过修改配置文件/proc/sys/net/ipv4/icmp_echo_ignore_all

该文件只有一个数值:

将该值改“1”后为开启(运行)禁止PING

将该值改“0”后为关闭(停止)禁止PING

运行:禁止Ping

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

停止:禁止Ping

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

 

posted on 2022-09-06 11:09  me小怪兽  阅读(336)  评论(0编辑  收藏  举报