linux查询安全组命令,Linux服务器安全加固参考

Linux服务器安全加固参考

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

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

echo "root:wgr1TDs2Mnx0XuAv" | chpasswd

设置密码策略

修改文件/etc/login.defs

linux查询安全组命令,Linux服务器安全加固参考_第1张图片

PASS_MAX_DAYS   99999         密码最长有效期

PASS_MIN_DAYS   0             密码修改之间最小的天数

PASS_MIN_LEN     5             密码长度

PASS_WARN_AGE   7             口令失效前多少天开始通知用户修改密码

对密码强度进行设置

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

8f3170e0effc9abf7f97cfb9431fee07.png

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

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

linux查询安全组命令,Linux服务器安全加固参考_第2张图片

pam_tally2 查看被锁定的用户

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

0e32acb90d25deacd9a3a804f29e87ce.png

禁止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进程。

安全组关闭没必要的端口

设置系统中英文语言支持

#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 五分钟未动,服务器超时自动断开与客户端的链接。

linux查询安全组命令,Linux服务器安全加固参考_第3张图片

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

系统日志(默认)/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

b8b9944b59c579be48ccfa91ebb294ec.png

linux查询安全组命令,Linux服务器安全加固参考_第4张图片

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

linux查询安全组命令,Linux服务器安全加固参考_第5张图片进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.可调整到2048.

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

你可能感兴趣的:(linux查询安全组命令)