一、合理使用Shell历史命令记录功能

Linux下可通过history命令查看用户所有历史操作记录,同时shell命令操作记录默认保存在用户目录下的.bash_history文件中,有时候***会删除.bash_history文件,这就需要合理备份.bash_history文件。

下面介绍下history日志文件的安全配置方法。

方法一:

默认的history命令只能查看用户历史操作记录,并不能区分每个用户操作命令的时间,

可以通过下面方法(加入四行内容)让history命令自动记录所有shell命令的执行时间,编辑/etc/bashrc文件:

HISTFILESIZE=1000

HISTSIZE=1000

HISTTIMEFORMAT="%F %T `whoami` "

export HISTIMEFORMAT

export LANG="zh_CN.UTF-8"

HISTFILESIZE定义了在.bash_history文件中保存命令的记录总数,默认值是1000,这里设置为4000;

HISTSIZE定义了history命令输出的记录总数;

HISTTIMEFORMAT定义时间显示格式,这里的格式与date命令后的“+"%F %T"”是一致的;

HISTTIMEFORMAT作为history的时间变量将值传递给history命令。

通过这样的设置后,执行history命令,就会显示每个历史命令的详细执行时间

方法二:

记录登录过系统的用户、IP地址、shell命令以及详细操作时间等,并将这些信息以文件形式保存在一个安全地方。

将下面这段代码添加到/etc/profile文件中,即可实现上述功能。

1.创建用户审计文件存放目录和审计日志文件 ;

mkdir -p /var/log/usermonitor/

2.创建用户审计日志文件;

echo "#########" >/var/log/usermonitor/usermonitor.log

3.将日志文件所有者赋予一个最低权限的用户;

chown nobody:nobody /var/log/usermonitor/usermonitor.log

4.给该日志文件赋予所有人的写权限;  

chmod 002 /var/log/usermonitor/usermonitor.log

5.设置文件权限,使所有用户对该文件只有追加权限 ;

chattr +a /var/log/usermonitor/usermonitor.log

6.编辑/etc/profile文件,添加如下脚本命令;

export HISTORY_FILE=/var/log/usermonitor/usermonitor.log
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}")  #### $(id|awk "{print \$1}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'

7.使配置生效

source  /etc/profile

8.使用如下命令监测用户行为审计日志文件;

tail -f /var/log/usermonitor/usermonitor.log

http://www.askoracle.org/linux/safe/802.html 


二、合理使用su、sudo命令

su命令是一个切换用户的工具,经常用于将普通用户切换到超级用户下,几乎所有服务器都禁止了超级用户直接登录系统,而是通过普通用户登录系统,然后再通过su命令切换到超级用户下,执行一些需要超级权限的工作。

sudo命令允许系统管理员分配给普通用户一些合理的“权利”,比如系统服务重启、编辑系统配置文件等。

sudo执行命令的流程是:将当前用户切换到超级用户下,然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户,

而这一切的完成要通过sudo的配置文件/etc/sudoers来进行授权。

例如,/etc/shadow文件普通用户是无法访问的:

[user01@unknown ~]$ more /etc/shadow
/etc/shadow: Permission denied

如果要让普通用户user01可访问这个文件,可以在/etc/sudoers添加如下内容:

user01     ALL = /bin/more /etc/shadow
这样,通过如下方式user01用户就可访问/etc/shadow文件:
[user01@unknown ~]$ sudo more /etc/shadow
[sudo] password for user01:

执行这个命令后,需要输入user01用户的密码,然后就可访问文件内容了。

如果每次都需要输入密码,那么某些自动调用超级权限的程序就会出现问题,此时可以通过下面的设置,让普通用户无需输入密码即可执行具有超级权限的程序。

例如,要让普通用户centreon具有/etc/init.d/nagios脚本重启的权限,可以在/etc/sudoers添加如下设置:

CENTREON   ALL = NOPASSWD: /etc/init.d/nagios restart

这样,普通用户centreon就可以执行nagios重启的脚本而无需输入密码了。

如果要让一个普通用户user02具有超级用户的所有权限,而又不想输入超级用户的密码,

只需在/etc/sudoers添加如下内容即可:

user02 ALL=(ALL) NOPASSWD: ALL

这样user02用户登录系统后,就可以通过执行如下命令切换到超级用户下:

[user02@unknown ~]$ sudo su -
[root@unknown ~]# pwd
/root

三、删减系统登录欢迎信息

为了保证系统的安全,可以修改或删除某些系统文件,需要修改或删除的文件有4个,分别是/etc/issue、/etc/issue.net、/etc/redhat-release和/etc/motd

/etc/issue和/etc/issue.net文件都记录了操作系统的名称和版本号,当用户通过本地终端或本地虚拟控制台等登录系统时,/etc/issue的文件内容就会显示,当用户通过ssh或telnet等远程登录系统时,/etc/issue.net文件内容就会在登录后显示。在默认情况下/etc/issue.net文件的内容是不会在ssh登录后显示的,要显示这个信息可以修改/etc/ssh/sshd_config文件,在此文件中添加如下内容即可:

Banner /etc/issue.net

为了安全起见,建议将此文件中的内容删除或修改。

/etc/redhat-release文件也记录了操作系统的名称和版本号,为了安全起见,可以将此文件中的内容删除。

/etc/motd文件是系统的公告信息。每次用户登录后,/etc/motd文件的内容就会显示在用户的终端。

四:SSH Iptables访问控制

方法一:

在/etc/hosts.allow中添加允许ssh登陆的ip或者网段   
sshd:192.168.1.2:allow 或者

sshd:192.168.1.0/24:allow

在/etc/hosts.deny添加不允许ssh登陆的IP
sshd:ALL           #ALL表示除了上面允许的,其他的ip 都拒绝登陆ssh

方法二:

使用iptables。  
iptables -A INPUT -p tcp -s 192.168.1.2 --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP

方法三:

修改ssh配置文件

vi /etc/ssh/sshd_config
添加一行:
allowusers xxx@192.168.1.2 
注:xxx为你用来登入服务器的用户名。

*********************************************************

隐藏和伪装端口banner  http://kangyang.blog.51cto.com/471772/580853

net session /delete /y

Linux服务器被***的几个表象:

1.从外部ping延迟高
2.从内部ping网关延迟高
3.内存和CPU占用居高不下
4.通过netstat查看到的状态为SYN_RECV的请求多,且刷新慢

抵挡***的方法:

1.设置防火墙规则

1.iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

2.iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

3.iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

2.封ip和ip段

1.iptables -I INPUT -s 49.116.15.23 -j DROP     #封单个ip

2.iptables -I INPUT -s 49.116.15.23/32 -j DROP  #和上一个效果一样,封单个IP

3.iptables -I INPUT -s 49.116.15.0/24 -j DROP   #封ip段,指定前三段

4.iptables -I INPUT -s 49.116.0.0/16 -j DROP    #封ip段,只指定前两段

5.iptables -I INPUT -s 49.0.0.0/8 -j DROP       #封ip段,只指定第一段

3.iptables限制源IP和MAC地址

iptables -I INPUT -s x.x.x.x -p tcp --dport 8080 -m mac --mac-source 11:22:33:44:55:66 -j ACCEPT

在这里有个问题:如何知道该封哪些个ip呢?
答案是 netstat 命令。
通过 netstat查看当前请求,频繁出现且状态为SYN_RECV的ip多是恶意***的。

两个方法要结合起来用才能起来显著的效果,这是本人在维护高并发和高流量的投票网站中实践得出的经验。

本文转载:http://ixdba.blog.51cto.com/2895551/1552907

linux下清理日志的脚本

需求:由于/var分区单独划分,给的分区大小才5G,日志写满了,需要写个脚本定时清理日志文件

#!/bin/bash

##delete log script ,write by xl

LOG_DIR1=/var/log

LOG_DIR2=/var/spool/mail

LOG_DIR3=/var/spool/mqueue

ROOT_UID=0

##Must be use root to run this script

if [ "$UID" -ne "$ROOT_UID" ]

then

echo "Must be root to run this script."

exit 1

fi

cd $LOG_DIR1 || {

echo "Can not change to necessary dircectory." >&2

exit 1

}

#把空设备重定向到文件里面

cat /dev/null > maillog && echo "Logs cleaned up."

cat /dev/null > maillog.1 && echo "Logs cleaned up."

cat /dev/null > maillog.2 && echo "Logs cleaned up."

cd $LOG_DIR2 || {

echo "Can not change to necessary dircectory." >&2

exit 1

}

cat /dev/null > root && echo "Logs cleaned up."

cat /dev/null > stock && echo "Logs cleaned up."

###清除mqueue下的小文件

cd $LOG_DIR3

ls |xargs rm -rf

1、删除系统默认账户、组
可以删除的用户有:adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher 等
可以删除的组有:adm,lp,news,uucp,games,dip,pppusers,popusers,slopusers 等
[root@localhost ~]# userdel adm  # 删除用户命令
[root@localhost ~]# groupdel adm  # 删除组命令
## 如果用户只做服务启动 , 那么最好将登陆 shell 设为 /sbin/nologin  2、关闭不需要的系统服务
可以有选择的关闭这些服务:anacron、auditd、autofs、avahi-daemon、avahi-dnsconfd、bluetooth、cpuspeed、firstboot、gpm、
haldaemon、hidd、ip6tables、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、
restorecond、rpcgssd、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv
[root@localhost ~]# chkconfig ip6tables off  # 关闭开机启动
## 下面是系统稳定运行必须的服务
acpid      用于电源管理,对于笔记本和台式电脑很重要,建议开启
Apmd       高级电源能源管理服务,可以监控电池
Kudzu      检测硬件是否变化的服务,建议开启
crond      任务计划服务,建议开启
atd        类似 crond ,提供指定时间做指定事情的服务
keytables  用于装载镜像键盘,根据情况,可以启动
iptables   Linux 内置防火墙软件,为了系统安全必须启动
xinetd     支持多种网络服务的核心守候进程,建议开启
xfs        使用 X Windows 桌面系统必须的服务
network    激活已配置网络接口的脚本程序,也就是启动网络服务,启动
sshd       提供远程登陆到 Linux 上的服务,为了系统维护方便,你看着办吧
syslog     记录系统日志的服务,很重要,建议开启

转载于:https://blog.51cto.com/hao360/1553933

Linux登录安全及用户操作审计 ,linux下清理日志脚本相关推荐

  1. linux审计日志清除,Linux登录安全及用户操作审计 ,linux下清理日志脚本

    一.合理使用Shell历史命令记录功能 Linux下可通过history命令查看用户所有历史操作记录,同时shell命令操作记录默认保存在用户目录下的.bash_history文件中,有时候***会删 ...

  2. Linux下清理日志及自动清理

    liunx下清理日志 一.find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 此处我以tomcat下 logs目录下日志为例做演 ...

  3. linux sys伪用户作用,【原创】Linux版 对sys用户进行审计的示例

    更多精彩内容尽在 我们在操作数据库的时候,知道SYS用户的权限是最大的干什么事很方便,同时带来的问题就是非常危险,没有人可以束缚住.因此我们有时需要对SYS用户进行审计 SYS@LEO1>sho ...

  4. 【Linux】用户组、用户操作

    ​   /:根目录  ​   root:超级管理员(root)的家  ​   home:其他用户(普通用户)的家  ​   etc:配置文件  ​   usr:存放共享文件的(软件的安装路径)  ​ ...

  5. linux的超级管理用户目录是,Linux系统中的root超级权限的控制

    Linux系统中的root超级权限的控制 超级用户是系统最高权限的拥有者,是系统管理唯一的胜任者:由于权限的超级并且达到无所不能的地步,如果管理不擅,必会对系统安全造成威胁. 除了尽可能的避免用直接用 ...

  6. linux怎么给所有用户安装软件,Linux安装软件的几种方法

    一.rpm 包安装方式步骤: 1.找到相应的软件包,比如 soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su - 成 root 用户: 3.cd soft.version. ...

  7. Linux用某一用户创建文件,Linux创建用户,并赋予管理指定目录的权限

    Linux创建用户,并赋予管理指定目录的权限 一.创建用户 1.创建用户: useradd 用户名 2.设置密码: passwd userName 随后会提示输入密码 二.赋予权限 Linux给用户和 ...

  8. linux怎么找回普通用户密码,Ubuntu Linux系统密码找回

    Linux系统最重要的是root的密码,只要知道root的密码,你就拥有了所有的权限.对于普通的用户,root可以直接修改密码,通常是passwd username root@root# passwd ...

  9. linux那个目录存放用户密码信息,linux试题及答案

    选择题1 1.在创建Linux分区时,一定要创建()两个分区 A. FAT/NTFS B. FAT/SW AP C. NTFS/SW AP D.SW AP/根分区 2.在Red Hat Linux 9 ...

最新文章

  1. tap/tun接口是什么?
  2. mongodb不等于某个值_MongoDb进阶实践之四 MongoDB查询命令详述
  3. hdu 5020 求三点共线的组合数(容器记录斜率出现次数)
  4. PyCharm----快捷键
  5. [原创]Maven实战-读书笔记
  6. python tkinter画布中使用turtle_[Tkinter canvas of Python]海龟图书馆,python,之,tkinter,画布,Turtle,库...
  7. CMOS图像传感器——工作原理
  8. java代码中 作用_Java利用开发中代码生成工具的作用
  9. 编译aspell时出错
  10. 【基本办公软件】万彩办公大师教程丨二维条码制作工具
  11. 【ArcGIS微课1000例】0033:地图点状标记符号设计教程
  12. 城通网盘API的链接研究
  13. 基于opengl的2d机器人双人格斗游戏
  14. java编程填空及答案_JAVA填空题标准答案(103题)
  15. 如何刷新bios?在windows系统上刷新bios的方法
  16. vim设定utf8编码格式
  17. Android 之AS项目,无法编译,Make Project(小锤子)、Rebuild Project、Clean Project都无效
  18. dedecms 自定义表单html,dedecms自定义表单和自定义表单如何用自己模板教程
  19. 编程练习:既是完全平方数又有两位数字相同的三位数
  20. RealsenseD415/D435深度相机常用资料汇总

热门文章

  1. “领悟”的价值是什么?思维能力训练问答
  2. 天天都在说,无服务器计算到底是什么?
  3. 到底什么时候该使用MQ
  4. cakephp中使用大括号的形式避免用点号连接sql语句
  5. sharepoint 2013 使用outlook 打开sharepoint 任务失败
  6. 小蚂蚁学习数据结构(4)——线性结构——线性表的链式表示和实现(下)
  7. Linux用户权限管理
  8. 企业设置“蜜罐”的五大理由
  9. 基于Log4net插件
  10. VirtualBox中Ubuntu的全屏