一、工具篇

1、Pacct

设置日志文件可以对每个用户的每一条命令进行记录,这一功能默认是不开放的,为了打开它,需要安装pacct工具:

accton命令是Linux系统进程管理命令之一,它的作用是打开进程统计,如果不带任何参数,即关闭进程统计,通过yum搜索,实际目前该工具已更名为:psacct:


psacct是一个工具包,里面包含有针对用户连接时间、进程执行情况等进行统计的工具。它可以记录用户登录信息。用户所执行的程序,程序执行情况信息等。它包含以下一些命令:

    ac:登录账号的简要信息。accton:打开或关闭进程账号记录功能。last:显示曾经登录过的用户。lastcomm:显示已执行过的命令。sa:进程账号记录信息的摘要。dump-utmp:输出utmp文件内容。dump-acct:输出acct或pacct文件内容。在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。accton命令的形式为accton file,file必须事先存在。先使用touch命令创建pacct文件。

注意: 若要开启指定用户的动作监控,需在该用户环境下创建文件并指定记录,sudo执行accton开启监控。

# which accton
/sbin/accton
#touch /var/log/pacct
# accton /var/log/pacct
Turning on process accounting, file set to '/var/log/pacct'.   #开启用户操作监控
# lastcomm root -f /var/log/pacct        ##验证
lastcomm               root     pts/0      0.00 secs Mon Nov 18 11:04
ssh              S   X root     pts/1      0.00 secs Mon Nov 18 11:03
ssh              S   X root     pts/1      0.01 secs Mon Nov 18 10:58
timeout                root     __         0.00 secs Mon Nov 18 11:02
df                     root     __         0.00 secs Mon Nov 18 11:02
accton           S     root     pts/0      0.00 secs Mon Nov 18 11:01

一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令进行关闭:accton。

2、rsyslog和系统日志工具 Syslog-ng

我的7.4.1708安装:rsyslog.x86_64 0:8.24.0-41.el7_7.2
要想执行syslog命令,需要安装syslog-ng,
CentOS 5.8搭建日志管理服务器(syslog-ng+logzilla)参见:https://www.linuxidc.com/Linux/2012-06/62198.htm

syslog-ng 相比传统的系统工具syslog,具有众多高级的功能:更好的网络支持,更加方便的配置,集中式的网络日志存储,并且更具有弹性。比如,使用syslogd时,所有的iptables日志与其他内核日志一起全部存储到了kern.log文件里。Syslog-ng则可以让你有选择性的将iptables部分分出到另外的日志文件中。Syslogd仅能使用UDP协议,Syslog-ng 可以使用UDP和TCP协议。所以你可以在加密的网络隧道中传输日志到集中日志服务器。

syslog-ng的一个设计原则就是建立更好的消息过滤粒度,syslog-ng能够进行基于内容和优先权/facility的过滤。另一个设计原则是更容易进行不同防火墙网段的信息转发,它支持主机链,即使日志消息经过了许多计算机的转发,也可以找出原发主机地址和整个转发链。最后的一个设计原则就是尽量使配置文件强大和简洁。
wget http://www.balabit.com/downloads/files/eventlog/0.2/eventlog_0.2.12.tar.gz

wget http://www.balabit.com/downloads/files/libol/0.3/libol-0.3.18.tar.gz

wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.5/source/syslog-ng_3.3.5.tar.gz

wget http://php-syslog-ng.googlecode.com/files/logzilla_v2.9.9o.tgz

注意:日志集中管理服务syslog-ng采用的是C/S架构,所以客户端也需要安装syslog-ng;

Linux系统中syslog服务采用udp 514端口,但在启动syslog时报以下错误:



去掉配置文件中冲突的内容:log { source(src); }中的source内容,重启服务后正常。


验证:

1)如果你用syslog-ng日志服务,编辑/etc/syslog-ng/syslog-ng.conf

@version: maj.minfilter f_msgs {
level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice);
};destination msgs { file("/var/adm/msgs"); };filter f_msgs {
level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice);
};destination msgs { file("/var/adm/msgs");
};log {filter(f_msgs);destination(msgs);};

配置文件说明:

options {flush_lines (0);time_reopen (10);log_fifo_size (1000);long_hostnames (off);use_dns (no);use_fqdn (no);create_dirs (yes);                  #此行改为yeskeep_hostname (yes);
};
......
source s_log {udp(ip(0.0.0.0) port(514));
};
......
destination d_log {file("/data/syslog-ng/kevin.log");
};
......
log { source(s_log);  destination(d_log); };  ##注意这里的s_log必须跟上述source后跟的一致配置说明:
options       为全局配置参数
source        是日志从本机的哪个IP哪个端口接收信息
destination   接收到信息保存在哪个文件
log           就是将来源信息写入到目的文件中

现场启动报错:

/etc/init.d/syslog-ng start
Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql'
Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql'
Error in configuration, unresolved source reference; source='src'[FAILED]
上述模块报错不用管。

查看配置文件:

options {flush_lines (0);time_reopen (10);log_fifo_size (1000);long_hostnames (off);use_dns (no);use_fqdn (no);create_dirs (no);   ##如果这里配置为yes,下面的日志文件会自动创建,权限为666keep_hostname (yes);
};source s_sys {                            ##用于下方日志引用file ("/proc/kmsg" program_override("kernel: "));unix-stream ("/dev/log");internal();# udp(ip(0.0.0.0) port(514));   ##默认为udp514
};destination d_cons { file("/dev/console"); };
destination d_mesg { file("/var/log/messages"); };
destination d_auth { file("/var/log/secure"); };
destination d_mail { file("/var/log/maillog" flush_lines(10)); };
destination d_spol { file("/var/log/spooler"); };
destination d_boot { file("/var/log/boot.log"); };
destination d_cron { file("/var/log/cron"); };
destination d_kern { file("/var/log/kern"); };
destination d_mlal { usertty("*"); };filter f_kernel     { facility(kern); };
filter f_default    { level(info..emerg) andnot (facility(mail)or facility(authpriv)or facility(cron)); };
filter f_auth       { facility(authpriv); };
filter f_mail       { facility(mail); };
filter f_emergency  { level(emerg); };
filter f_news       { facility(uucp) or(facility(news)and level(crit..emerg)); };
filter f_boot   { facility(local7); };
filter f_cron   { facility(cron); };
filter f_msgs {
level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice);
};
destination msgs { file("/var/adm/msgs");  ##如果option里开启自动创建,则无需手动,否则
};
log {source(s_sys); filter(f_msgs); destination(msgs); ##注意这里的source后内容必须与前面的一  致。
};
#log { source(s_sys); filter(f_kernel); destination(d_cons); };
log { source(s_sys); filter(f_kernel); destination(d_kern); };
log { source(s_sys); filter(f_default); destination(d_mesg); };
log { source(s_sys); filter(f_auth); destination(d_auth); };
log { source(s_sys); filter(f_mail); destination(d_mail); };
log { source(s_sys); filter(f_emergency); destination(d_mlal); };
log { source(s_sys); filter(f_news); destination(d_spol); };
log { source(s_sys); filter(f_boot); destination(d_boot); };
log { source(s_sys); filter(f_cron); destination(d_cron); };

另外注意:如果客户端和syslog-ng服务端在同一主机,需建立【管道】,建立两者之间的通信,即将客户端服务器例如nginx等日志通过管道文件传输到日志服务器上。

【syslog-ng客户端配置】:也需要安装syslog-ng

options {flush_lines (0);time_reopen (10);log_fifo_size (1000);long_hostnames (off);use_dns (no);use_fqdn (no);create_dirs (yes);                 #修改为yeskeep_hostname (yes);
};
......
source s_slog {pipe("/data/kevin/log.pipe");  ##配置管道,随后手动创建
};
......
destination d_slog { udp(192.168.120.5 port(514)); };              #ip为syslog-ng服务端ip地址
......
log { source(s_sys); destination(msgs); };

然后在客户端创建管道文件:
mkdir /data/kevin && mkfifo /data/kevin/log.pipe
启动syslog-ng服务:/etc/init.d/syslog-ng start
验证测试:例如将客户端nginx服务日志信息导入到管道文件中
tail -f /etc/nginx/logs/access.log >> /data/kevin/log.pipe &
然后去syslon-ng的服务端查看,发现日志是否已经传过来了,执行:
tail -f //var/adm/msgs ##日志传输是实时的
多日志传输或更多详情,参见:https://www.cnblogs.com/kevingrace/p/6519504.html

2)如果用的默认syslog,编辑/etc/syslog.conf

修改:*.err;kern.debug;daemon.notice /var/adm/messages

3)如果用rsyslog服务,编辑etc/rsyslog.conf
*.err;kern.debug;daemon.notice /var/adm/messages

3、弱密码修改
生成环境一般对弱密码零容忍,因此弱密码必须修改加固,那怎样编制无规律的密码呢?Linux提供了一个mkpasswd工具可以按你的需求生成随机密码:
首先需要安装软件expect:
Centos:yum install -y expect
Ubuntu:apt-get install -y expect

安装完毕后:执行mkpasswd -l 16 -s 1 -d 2 -c 3-C 4

附参数说明:
-l:指定长度-d:数字的个数-c:小写字母个数-C:大写字母个数
-s:特殊字符个数

4、禁ping

1)备份配置文件

cp -p /etc/sysctl.conf /etc/sysctl.conf.bak

2.执行命令

sysctl -w net.ipv4.conf.all.accept_redirects="0"禁止icmp重定向报文
sysctl -w net.ipv4.conf.all.accept_source_route="0"禁止icmp源路由

二、配置修改

2.1、远程登录限制

1)禁止root用户远程登录

#禁止root用户远程telnet登录
vi /etc/pam.d/login  //新增第5行
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
auth       required     pam_securetty.so   #新增这一行
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so
~
#禁止使用telnet协议
rpm -qa |grep telnet
vi /etc/xinetd.d/telnet,#修改
disable = yes。
#禁止root用户远程ssh登录
vi /etc/ssh/sshd_config   #配置:
PermitRootLogin no
#重启服务
/etc/init.d/sshd restart

2)命令行界面超时时间

vi /etc/profile //配置如下,单位s
export TMOUT=180

3)禁用ctrl+alt+del组合键:

#centos7/redhat7/Fedora
rm /usr/lib/systemd/system/ctrl-alt-del.target
#禁止使用Ctrl+Alt+Del快捷键重启服务器
cp /etc/inittab /etc/inittabbak
vi /etc/inittab  #注释掉下面这一行
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
init q   #重新reload配置文件Commands:0              Power-off the machine6              Reboot the machine2, 3, 4, 5     Start runlevelX.target unit1, s, S        Enter rescue modeq, Q           Reload init daemon configurationu, U           Reexecute init daemon#其他版本
vi /etc/inittab  //释如下行,然后重启
#ca::ctrlaltdel:/sbin/shutdown***

3)限制远程登录IP

vim /etc/hosts.deny  //写入
sshd:all:deny
vim etc/hosts.allow  //按如下示例配置
all:192.168.4.44:allow #允许单个IP;
sshd:192.168.1.:allow #允许192.168.1的整个网段的PC通过SSH来访问本机

4)关闭IP伪装和绑定多IP功能

vi /etc/host.conf ##Redhat 默认没有/etc/host.conf文件,要先新建一个host.conf文件
multi off #关闭多IP绑定
nospoof on #关闭IP伪装

5)nfs访问

vim etc/hosts.allow  //按如下示例配置
portmap: 允许访问的IP

6)版本信息隐藏

#ssh

2.2 权限限制

1)锁定不需要的用户

常见可锁定系统默认的:

adm,lp,mail,uucp,operator,games,gopher,ftp,nobody
rpm,dbus,avahi,mailnull,smmsp,nscd,vcsa,rpc,rpcuser,nfsnobody
sshd,pcap,ntp,haldaemon,distcache,apache,webalizer,squid,xfs,gdm
sabayon,named

usermod -L username  #锁定
usermod –U username  #解锁

2)账户认证失败次数限制

#Redhat,CentOS,Fedora:
vi /etc/pam.d/system-auth   #配置:
auth required pam_tally.so deny=5 unlock_time=600
account required pam_tally.so
#Suse9:
vi /etc/pam.d/passwd#配置:
auth required pam_tally.so deny=5 unlock_time=600
account required pam_tally.so#Ubuntu,Suse10,Suse11,Suse12:
vi /etc/pam.d/common-auth#配置:
auth required pam_tally.so deny=5 unlock_time=600 no_lock_time
vi /etc/pam.d/common-account配置:
account required pam_tally.so=#配置SSH方式账户认证失败次数限制
vi /etc/pam.d/sshd  #如下配置
auth required pam_tally.so deny=5 unlock_time=600 no_lock_time
account required pam_tally.so
#centos6以上
auth required pam_tally2.so deny=5 unlock_time=600
account required pam_tally2.so

3)命令和账户别名配置

vi /etc/aliase   #删除或注释掉下面的行,禁用不必要的别名
#games: root
#ingres: root
#system: root
#toor: root
#uucp: root
#manager: root
#dumper: root
#operator: root
#decode: root
#root: marcvi /etc/mail/aliases  #同上
#games: root
#ingres: root
#system: root
#toor: root
#uucp: root
#manager: root
#dumper: root
#operator: root
#decode: root
#root: marc/usr/bin/newaliases  #使改变生效

4)使用yum update更新系统时不升级内核,只更新软件包

cp /etc/yum.conf /etc/yum.confbak
vi /etc/yum.conf   #在的最后添 exclude=kernel*
yum--exclude-kernel* update  #或直接在yum的命令后面加上如下的参数
#验证
cat /etc/issue  #查看系统版本
uname -a  #查看内核版本

2.3 日志配置

Linux基线安全加固操作实践相关推荐

  1. Linux系统安全加固浅谈

    对于企业来说,安全加固是一门必做的安全措施.主要分为:账号安全.认证授权.协议安全.审计安全.总的来说,就是4A(统一安全管理平台解决方案),账号管理.认证管理.授权管理.审计管理.用漏洞扫描工具扫描 ...

  2. 服务器的安全基线、加固及应急响应总结

    Windows安全基线及加固(例子为win server 2008): 1.身份鉴别 1)更改缺省账号:对于管理员帐号,要求更改缺省 Administrator 帐户名称 2)禁用guest账号 3) ...

  3. linux安全pdf,linux系统安全加固.pdf

    通用 linux 系统安全加固手册 系统安全加固手册 1 帐户安全配置要求 1 帐户安全配置要求 1.1 创建/etc/shadow 影子口令文件 1.1 创建/etc/shadow 影子口令文件 配 ...

  4. 字符设备驱动基础篇4——字符设备驱动读写接口的操作实践

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6575074.html. 一.细节 1.自动分配主设备号 注册函 ...

  5. 1 Linux SSH安全加固

    Linux SSH 安全加固,这里使用CentOS7.5 做演示 一.配置SSH双因素登录 ​ 1.确定系统时钟是正确的 ​ 2.安装相关依赖 ​ yum install -y git gcc aut ...

  6. Linux 快照 (snapshot) 原理与实践(二) 快照功能实践

    文章目录 0. 概要 1. 准备演示数据 2. 创建 snapshot-origin 目标 3. 创建 snapshot 目标 4. 验证 COW 操作 4.1 第一次写数据 4.2 第二次写数据 5 ...

  7. Linux 快照 (snapshot) 原理与实践(一) 快照基本原理

    文章目录 0. 背景 1. 如何理解快照(snapshot)? 2. 快照 (snapshot) 的原理 2.1 全量快照 1. 克隆 (Clone) 2. 镜像分离 (Split Mirror) 2 ...

  8. Linux 环境配置的最佳实践

    Linux 环境配置的最佳实践 Linux 基础知识 硬链接 & 软链接 Linux 目录 基本指令 Linux 环境配置 安装 zsh 和 oh-my-zsh 开发环境安装(必用) nvm ...

  9. Linux图形显示DRM子系统环境实践

    前言 学习Linux图形DRM子系统,还是需要有一个运行DRM框架的linux系统,这样无论在学习DRM应用程序还是驱动程序时,可以实际动手修改调试,运行看到效果,学习起来也是比较有动力和成就感的.下 ...

最新文章

  1. vue父组件调用子组件的方法
  2. 判定是否互为字符重排
  3. Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法
  4. VTK:几何对象之PolyLine
  5. 《Python编程从入门到实践》记录之字典遍历
  6. 算法:位运算加减乘除
  7. NServiceBus主机
  8. Android开发 - ImageView加载Base64编码的图片
  9. 实体框架 6.0:异步、IQueryable操作符和特性改进
  10. pie函数--Matplotlib
  11. Python 基础学习Chapter6
  12. 易捷行云亮相北京卫视,战略性新兴产业引发持续关注
  13. java查找字符位置_java 查找字符串所在的位置代码
  14. 用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)
  15. 【历史上的今天】1 月 25 日:电子游戏起源;《吃豆人》作者出生;“蠕虫王”问世
  16. mathmatica中ListLinePlot函数画图不能混合是咋回事啊
  17. java f else_java else if 为什么比 switch 效率低?最好可以解释下原理
  18. How to debug apps on Kindle Fire on OS X
  19. 古代官员常用计算机笔,古代官员也有年终奖清朝皇帝一般会赏赐
  20. CentOS7 win7 双系统安装

热门文章

  1. 暑假在电子厂干了3个月,我决定奋发图强学习软件测试
  2. jsp页面跳转与刷新的总结
  3. JSP页面带参跳转html页面
  4. Matlab语音及音乐信号的采集、滤波
  5. 我96年的,双非院校,卸载游戏后,进了世界500强
  6. facetime android,不再羡慕Facetime 安卓视频通话软件推荐
  7. 加密生活,Web3 项目合伙人的一天
  8. 关于java使用double还是float
  9. 开发测试工程师系列课程
  10. 怎样才能做到吸引用户和留住用户呢?