drop proto tcp and not (dst port 80)
pass proto tcp and dst port 80
它们之间有区别吗?
drop proto tcp and not (dst port 80)
pass proto tcp and dst port 80
它们之间有区别吗?
我们与一家大型公司合作,该公司在每封来自外部(发给他们)的电子邮件前都添加了一个电子邮件标签,其内容如下:
“警告,这封电子邮件来自您的组织外部 - 除非您认出发件人,否则请勿点击任何链接”
我不想完全像这样实现标记,因为我们所有邮件流的 90% 都在我们和这家公司之间。我担心标记会变成被忽略的噪音。(更不用说混乱的电子邮件链)
我想设置的是仅当外部帐户首次向我们的组织发送电子邮件时才适用的标记例如,标记如下所示:
“警告 - 您之前从未收到来自[email protected]的电子邮件- 如果您没有收到此电子邮件,请谨慎行事”
我相信这会更有效。
有谁知道如何做到这一点?我们的环境:
On prem Exhchange 2013 / Proofpoint 垃圾邮件过滤
我正在寻找一种方法来编写具有多个匹配值的单个规则,如果消息包含第一个单词或第二个单词,请不要将这些行写入日志文件。
这有效但不干燥:
if $msg contains "WARNING:" then { Action (type="omfile" File="/var/log/ignorethis") stop }
if $msg contains "IGNORE THIS MESSAGE:" then { Action (type="omfile" File="/var/log/ignorethis") stop }
这个不起作用:
if $msg contains "WARNING: || IGNORE THIS MESSAGE:" then { Action (type="omfile" File="/var/log/ignorethis") stop }
我正在尝试在包含用户帐户的文件中过滤掉服务帐户,每行一个:
"svc.test"
"test.user"
"test.user2"
Select-String 添加不需要的元数据:
C:\Output> select-string -Path C:\Output\tmp.csv 'svc' -NotMatch
tmp.csv:415:"test.user"
tmp.csv:416:"test.user2"
我只是想:
"test.user"
"test.user2"
我该怎么做呢?
--- 更新 --- 这是 Get-Member cmdlet 的结果:
PS C:\Output> select-string -Path C:\Output\tmp.csv 'svc' -NotMatch|get-member
TypeName: Microsoft.PowerShell.Commands.MatchInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
RelativePath Method string RelativePath(string directory)
ToString Method string ToString(), string ToString(string directory)
Context Property Microsoft.PowerShell.Commands.MatchInfoContext Context {get;set;}
Filename Property string Filename {get;}
IgnoreCase Property bool IgnoreCase {get;set;}
Line Property string Line {get;set;}
LineNumber Property int LineNumber {get;set;}
Matches Property System.Text.RegularExpressions.Match[] Matches {get;set;}
Path Property string Path {get;set;}
Pattern Property string Pattern {get;set;}
我需要数据。如何将线属性数据输出到文件?
我使用 Thruk 作为监控界面。在页面的左上角有一个按钮,它打开一个堆栈,其中包含您要应用的主机/服务等的过滤器。您可以轻松添加诸如主机、服务、持续时间等过滤器。
但是我在“状态信息”列中有几个具有不同描述集的服务。我希望能够只显示感兴趣的集合,但在过滤器堆栈的下拉列表中看不到“状态信息”选项。
在 Thruk 中是否可以按状态信息进行过滤?
我正在就 syslog-NG 的问题与您联系。我们的一些设备(主要是 HP 交换机和 SAN)正在发送似乎不遵守 syslog RFC 5424 的 syslog 消息。
举几个例子:
如果我嗅探服务器的网络接口,我们可以看到这些“错误”消息(如您所见,在 PRI 之后,我们可以看到 PROGRAM,然后是时区和用逗号分隔的字段。简而言之,混合字段,缺少字段等不是标准的系统日志消息):
<190>raslogd: 2017/03/08-16:03:20, [SEC-1203], 53642, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
因此,我目前无法过滤这些消息。我尝试定义一个常规过滤器并尝试打印 MSGHDR、MSG、PRI 等字段,但什么也看不到。
过滤此消息的唯一方法是仅定义外部接口和一个文件作为输出,而无需任何模板。
例如,如果我做这样的过滤器:
destination d_INCOMING_ALL { file("/app/syslog-ng/logs/incoming_all.log"); };
log {
source(s_EXTERNAL);
destination(d_INCOMING_ALL);
};
我可以在日志文件中看到消息,但以某种方式格式化(我想 syslog-NG 重新格式化它们):
[root@xxxxxxxxxxxx logs]# grep -i cswc incoming_all.log
Mar 9 09:44:20 cswc-mo8x-hpsan01 raslogd: 2017/03/09-08:34:50, [SEC-1203], 53647, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
[root@xm1p1034vmo logs]#
问题是我无法像那样过滤这些消息(我们收到来自 1000 多个设备的日志),我需要过滤来自这些设备的消息!我能做到的唯一方法是使用主机名(cswc- )或程序名(raslogd)
所以我尝试通过向该文件添加模板来显示字段,例如:
destination d_test {
file ("/app/syslog-ng/logs/test_olivier.log"
template("pri=${priority} date=${ISODATE} host=${HOST} program=${PROGRAM} message=${MSG}\n")
);
};
但没有任何效果,没有显示任何内容。我尝试了所有字段,MSG、MESSAGE、MSGHDR 等。无法管理显示任何内容。唯一有效的是没有过滤器或模板的解析。
自然,如果我尝试了所有类型的过滤器,如下面的这些,它就不起作用(因为字段是混合的):
filter f_is_SAN {
host("cswc.*" flags(ignore-case));
};
相同的:
filter f_is_SAN {
match(".*cswc.*" flags(ignore-case));
};
关于如何为来自这些设备(主机名或程序名)的这些消息创建过滤器的任何提示?
感谢和问候,
我已将 Logstash 配置为过滤httpd_access_log
消息并了解与COMBINEDAPACHELOG
. 但是,我收到如下错误:
[2017-02-10T15:37:39,361][WARN ][logstash.outputs.elasticsearch] Failed action. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"filebeats", :_type=>"logs", :_routing=>nil}, 2017-02-10T23:37:34.187Z perf-wuivcx02.hq.mycompany.com cdn.mycompany.com 192.168.222.60 - - [10/Feb/2017:15:37:30 -0800] "GET /client/asd-client-main.js HTTP/1.1" 200 221430 "http://perf.companysite.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"], :response=>{"index"=>{"_index"=>"filebeats", "_type"=>"logs", "_id"=>"AVoqY6qkpAiTDgWeyMHJ", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse [timestamp]", "caused_by"=>{"type"=>"number_format_exception", "reason"=>"For input string: \"10/Feb/2017:15:37:30 -0800\""}}}}}
这是我的 Logstash 过滤器配置:
filter {
if [type] == "json" {
json {
source => "message"
}
}
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
if [type] == "httpd_access_log" {
grok {
match => { "message" => "%{URIHOST} %{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp", "MMM dd yyyy HH:mm:ss", "MMM d yyyy HH:mm:ss", "ISO8601" ]
}
}
}
该date
函数适用于处理syslog
类型消息,但不适用于httpd_access_log
消息。有谁知道为什么时间戳会导致httpd_access_log
文件中的行无法在 Elasticsearch 中建立索引?
提前感谢您提供的任何帮助或建议!
为了描述这种情况,我需要定义三台机器。在本地网络上,我有一台机器(笔记本电脑)和一台机器(服务器)分别通过 WAN 和 LAN 连接到路由器。第三台机器是外部 vps (VPS)。
我正在尝试使用明确的 IP 地址从笔记本电脑通过 SSH 连接到服务器。为此,我设置了监听端口 22 的 openssh 服务器(所有机器都运行 Ubuntu)。在路由器上,我为 SERVER 提供了一个保留的 IP 地址,并将传入端口 22 的端口转发规则添加到 SERVER 的端口 22。
什么工作: - 从 VPS 到服务器的 SSH - 从笔记本电脑到服务器的 SSH,使用本地网络内部的本地主机名
什么不工作: - 使用显式 IP 地址从笔记本电脑 SSH 到服务器。
为了尝试调试,我运行了 nmap 以查看端口是否被过滤。我在 VPS 和 LAPTOP 上都运行了以下命令
nmap -sS -p 22 xx.xx.xx.xx
其中 x 表示本地网络路由器的文字外部 IP。结果如下:
VPS:22/tcp 打开 ssh
笔记本电脑:22/tcp 过滤 ssh
只是为了仔细检查我是否使用 LAPTOP 中的本地主机名,端口应该是打开的。使用显式外部 IP 从笔记本电脑 SSH 时,为什么端口会被过滤?我的路由器是否过滤了传出请求?