Linux服务器安全加固参考

政林 2020-05-26 1345浏览 1条评论
首页/正文
分享到: / / / /

Linux服务器安全加固参考

Linux系统由于其出色的性能、稳定性、开放源代码的灵活性和可扩展性,以及较低廉的成本,而受到互联网业界广泛关注和应用。这里我结合网上小伙伴的经验和自己收获总结。对Linux服务器安全、防火墙配置和服务器加固方案进行简单的讲解,防止网络上的攻击,文章主要是分享交流参考,欢迎各位大佬指点。

服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂密码 ,也可使用密码生成器自动生成复杂密码,这里给您一个链接参考:https://suijimimashengcheng.51240.com/

echo "root:wgr1TDs2Mnx0XuAv" | chpasswd

设置密码策略

修改文件/etc/login.defs

PASS_MAX_DAYS    99999          密码最长有效期
PASS_MIN_DAYS    0              密码修改之间最小的天数
PASS_MIN_LEN     5              密码长度
PASS_WARN_AGE    7              口令失效前多少天开始通知用户修改密码

对密码强度进行设置

编辑文件/etc/pam.d/password-auth

password   requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
difok= 定义新密码中必须要有几个字符和旧密码不同
minlen=新密码的最小长度
ucredit= 新密码中可以包含的大写字母的最大数目。-1 至少一个
lcredit=新密码中可以包含的小写字母的最大数
dcredit=定新密码中可以包含的数字的最大数目 
注:这个密码强度的设定只对"普通用户"有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功

对用户的登录次数进行限制

编辑文件 /etc/pam.d/sshd

auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300

多次输入密码失败后提示信息如下

pam_tally2 查看被锁定的用户

pam_tally2 --reset -u username 将被锁定的用户解锁

禁止root用户远程登录

禁止ROOT用户远程登录 。打开 /etc/ssh/sshd_config

#PermitRootLogin   no

注:生效要重启sshd进程。

限制能su到root的用户

操作方法 #使用命令  vi /etc/pam.d/su 修改配置文件,在配置文件中添加行。例如:只允许cs组用户su到root,则添加 auth required pam_wheel.so group=cs

更改ssh端口

vim /etc/ssh/sshd_config ,更改Port或追加Port

注:生效要重启sshd进程。

安全组关闭没必要的端口

腾讯云平台有安全组功能,里面您只需要放行业务协议和端口,不建议放行所有协议所有端口,参考文档:https://cloud.tencent.com/document/product/215/20398

设置系统中英文语言支持

#vi /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

设置账户保存历史命令条数,超时时间

打开 /etc/profile ,修改如下

HISTSIZE=1000TMOUT=600 五分钟未动,服务器超时自动断开与客户端的链接。

启用日志功能,定期查看系统日志

系统日志(默认)/var/log/messages
cron日志(默认)/var/log/cron
安全日志(默认)/var/log/secure

重要服务器可以将日志定向传输到指定服务器进行分析。

记录所有用户的登录和操作日志

通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。

.编辑配置文件

[root@root /]# vim /etc/profile
.在配置文件中输入以下内容:

history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
刷新配置立即生效。
[root@root /]# source /etc/profile

对Linux账户进行管理

使用命令 userdel -r 用户名 删除不必要的账号

使用命令 passwd -l 用户名 锁定不必要的账号

使用命令 passwd -u 用户名 解锁必要的账号

使用命令 awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd 查看具有登录权限的用户

使用命令 awk -F: '($3==0)' /etc/passwd 查看UID为0的账号,UID为0的用户会自动切换到root用户,所以危害很大

使用命令 awk -F: '($2=="")' /etc/shadow 查看空口令账号,如果存在空口令用户的话必须设置密码

使用脚本对账户进行管理

#! /bin/bash
​
\# Date:2020-05-31
​
\# Function: 对系统中的用户做检查,加固系统
​
echo "系统中有登录权限的用户有:"
​
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
​
echo "********************************************"
​
echo "系统中UID=0的用户有:"
​
awk -F: '($3=="0"){print $1}' /etc/passwd
​
echo "********************************************"
​
N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
​
echo "系统中空密码用户有:$N"
​
if [ $N -eq 0 ];then
​
 echo "恭喜你,系统中无空密码用户!!"
​
 echo "********************************************"
​
else
​
 i=1
​
 while [ $N -gt 0 ]
​
 do
​
  None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
​
  echo "------------------------"
​
  echo $None
​
  echo "必须为空用户设置密码!!"
​
  passwd $None
​
  let N--
​
 done
​
 M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
​
 if [ $M -eq 0 ];then
​
 echo "恭喜,系统中已经没有空密码用户了!"
​
 else
​
echo "系统中还存在空密码用户:$M"
​
 fi
​
fi

对重要的文件进行锁定,即使ROOT用户也无法删除

chattr 改变文件或目录的扩展属性

lsattr 查看文件目录的扩展属性

chattr +i /etc/passwd /etc/shadow //增加属性

chattr -i /etc/passwd /etc/shadow //移除属性

lsattr /etc/passwd /etc/shadow

使用脚本对重要文件进行锁定

`\`#! /bin/bash``
​
`\# Date:2020-05-31`
​
`\# Function: 锁定创建用户和组的文件,使之无法对用户和组进行操作!`
​
`read -p "警告:此脚本运行后将无法添加删除用户和组!!确定输入Y,取消输入N;Y/N:" i`
​
`case $i in`
​
   `[Y,y])`
​
•      `chattr +i /etc/passwd`
​
•      `chattr +i /etc/shadow`
​
•      `chattr +i /etc/group`
​
•      `chattr +i /etc/gshadow`
​
•      `echo "锁定成功!"`
​
`;;`
​
   `[N,n])`
​
•      `chattr -i /etc/passwd`
​
•      `chattr -i /etc/shadow`
​
•      `chattr -i /etc/group`
​
•      `chattr -i /etc/gshadow`
​
•      `echo "取消锁定成功!!"`
​
`;;`
​
•    `*)`
​
•      `echo "请输入Y/y or N/n"`
​
`esac`

阻止系统响应任何从外部/内部来的ping请求

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

DOS攻击防御

防止拒绝服务攻击

TCP SYN保护机制等设置

1、打开 syncookie:

# echo“1”>/proc/sys/net/ipv4/tcp_syncookies  //默认为1,一般不用设置

表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

2、防syn 攻击优化

用vi编辑/etc/sysctl.conf,添加如下行:net.ipv4.tcp_max_syn_backlog = 2048
进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.可调整到2048.

本文章来源于生活网络整理,只做分享探讨研究。

点击这里给我发
消息
最后修改:2020-05-26 20:19:00 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

评论列表

匿名用户 2022-05-08 15:25:02
Vjknuk [url=https://newfasttadalafil.com/]Cialis[/url] Levitra Gesund Hussqo Malignancies associated with AIDS are Kaposi sarcoma a cancer arising from the lining cells of capillaries that produces dark purplish skin nodules and lymphoma cancer of lymph nodes. Plyluy <a href=https://newfasttadalafil.com/>Cialis</a> Turkisch Levitra Canadian Cialis Prices Iyppiw https://newfasttadalafil.com/ - cialis viagra combo pack Flagyl Online In Uk Enfoem
回复