Linux安全与优化


一、原则

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

二、安全

1、sudo登录

  • 通过sudo 授权管理,不用root 登录管理系统,而以普通用户身份登录。
  • sudo 授权管理:visudovim /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,处理以上内容后把chattrlsattr 改名为并转移,这样就安全多了。
#锁定 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 版本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 远程连接 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更新源

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内核参数优化

#开启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内核参数注释与优化

版权声明:玥玥 发表于 2021-05-24 12:50:25。
转载请注明:Linux安全与优化 | 女黑客导航