1、Pacct
设置日志文件可以对每个用户的每一条命令进行记录,这一功能默认是不开放的,为了打开它,需要安装pacct工具:
accton命令是Linux系统进程管理命令之一,它的作用是打开进程统计,如果不带任何参数,即关闭进程统计,通过yum搜索,实际目前该工具已更名为:pasacct:
cct是一个工具包,里面包含有针对用户连接时间、进程执行情况等进行统计的工具。它可以记录用户登录信息。用户所执行的程序,程序执行情况信息等。它包含以下一些命令:
ac:登录账号的简要信息。
accton:打开或关闭进程账号记录功能。
last:显示曾经登录过的用户。
lastcomm:显示已执行过的命令。
sa:进程账号记录信息的摘要。
dump-utmp:输出utmp文件内容。
dump-acct:输出acct或pacct文件内容。
在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。accton命令的形式为accton file,file必须事先存在。先使用touch命令创建pacct文件。
注意:若要开启指定用户的动作监控,需在该用户环境下创建文件并指定记录,sudo执行accton。
[root@b]# which accton
/sbin/accton
[root@b]#touch /var/log/pacct
[root@b]# accton /var/log/pacct
Turning on process accounting, file set to '/var/log/pacct'. #开启用户操作监控
[root@b]# 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.min
filter 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); #此行改为yes
keep_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,下面的日志文件会自动创建,权限为666
keep_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) and
not (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); #修改为yes
keep_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源路由