怎样用 PSAD 摆脱服务器端口被扫描

原创
怎样用 PSAD 摆脱服务器端口被扫描

互联网上有很多无聊的人会全天候的扫描各种端口,本教程将帮助您花 10 分钟用 PSAD 来彻底封杀他们。

本文的运行环境为 Ubuntu 20.04 LTS,其他 Linux 也类似。

在安装之前,需要设置好你的防火墙,只开放必要的端口,比如(网页服务80,ftp21),剩下的端口封闭并记录到系统记录。

安装

先来安装 PSAD
[shell]
sudo apt-get install psad
[/shell]

安装过程中可能会提示你需要先安装 Postfix,在 Postfix Configuration 中选择第二项“Internet Site”,然后输入主机名,以后发信均会用这个名字。确认后将会继续安装 PSAD。

备份并修改配置文件
[shell]
$ sudo cp /etc/psad/psad.conf /etc/psad/psad.conf-orig
$ sudo vi /etc/psad/psad.conf
[/shell]

配置

修改邮箱和主机名

[shell]
- EMAIL_ADDRESSES 是警报要发送给哪个邮箱
- HOSTNAME 定义本机域名
EMAIL_ADDRESSES username@yourhost.com;
HOSTNAME yourhost.com;
[/shell]

定义危险级别

PSAD 根据网络数据包,来定义危险级别,你可以根据需求自定义这些数值。
[shell]
### Danger levels. These represent the total number of
### packets required for a scan to reach each danger level.
### A scan may also reach a danger level if the scan trips
### a signature or if the scanning ip is listed in
### auto_ips so a danger level is automatically
### assigned.
DANGER_LEVEL1 5; ### Number of packets.
DANGER_LEVEL2 15;
DANGER_LEVEL3 150;
DANGER_LEVEL4 1500;
DANGER_LEVEL5 10000;
[/shell]

敏感度

报警阀值:黑客会扫描很多端口,当超过 x 个端口时就触发警报。比如超过 1 个端口时报警。
[shell]
### Set the minimum range of ports that must be scanned before
### psad will send an alert. The default is 1 so that at
### least two port must be scanned (p2-p1 >= 1). This can be set
### to 0 if you want psad to be extra paranoid, or 30000 if not.
PORT_RANGE_SCAN_THRESHOLD 1;
[/shell]

自动拦截(Ban IP)

是否开启自动拦截
[shell]
### If "Y", enable automated IDS response (auto manages
### firewall rulesets).
ENABLE_AUTO_IDS Y;
[/shell]

根据危害等级,自动拦截

达到一定的危害等级,才自动拦截,默认是5
[shell]
### Block all traffic from offending IP if danger
### level >= to this value
AUTO_IDS_DANGER_LEVEL 5;
[/shell]

自动拦截解封时间

IP 虽然被关进小黑屋了,但过段时间还是可以出来的。默认关小黑屋 1 小时,你也可以多关一会儿。
[shell]
### Set the auto-blocked timeout in seconds (the default
### is one hour).
AUTO_BLOCK_TIMEOUT 3600;
[/shell]

忽略特定端口

为了配合其他程序使用,你可以设置几个忽略的端口。端口格式:{协议}/{端口名}
[shell]
### define a set of ports to ignore (this is useful particularly
### for port knocking applications since the knock sequence will
### look to psad like a scan). This variable may be defined as
### a comma-separated list of port numbers or port ranges and
### corresponding protocol, For example, to have psad ignore all
### tcp in the range 61000-61356 and udp ports 53 and 5000, use:
### IGNORE_PORTS tcp/61000-61356, udp/53, udp/5000;
IGNORE_PORTS NONE;
[/shell]

例如默认的设置就是,当危险等级达到 5 级时,把此 IP 关小黑屋 3600 秒。

禁用邮件警告

PSAD 每天都会收到很多报警邮件,根据你设置的阈值不同,有时甚至会收到几百份,撑爆你的邮箱,因此你或许会希望关闭邮件报警功能。
找到 ALERTING_METHODS 并设置为 noemail 即可。
[shell]
### Allow reporting methods to be enabled/restricted. This keyword can
### accept values of "nosyslog" (don't write any messages to syslog),
### "noemail" (don't send any email messages), or "ALL" (to generate both
### syslog and email messages). "ALL" is the default. Both "nosyslog"
### and "noemail" can be combined with a comma to disable all logging
### and alerting.

ALERTING_METHODS noemail;
[/shell]

指定日志路径

默认情况下 PSAD 并不会监控 /var/log/syslog 所以需要手工指定。

搜索 IPT_SYSLOG_FILE,并将其值改为系统日志所在的路径,例如 Ubuntu 的路径为:/var/log/syslog
[shell]
IPT_SYSLOG_FILE = /var/log/syslog;
[/shell]

添加 IP 白名单

如果你每次登录 shell 的电脑是固定 IP,那么你可以把自己的 IP 放进白名单,永远不会被 PSAD 封禁。
[shell]
sudo vi /etc/psad/auto_dl
[/shell]

[shell]
# <IP address> <danger level> <optional protocol>/<optional ports>;
#
# Examples:
#
# 10.111.21.23 5; # Very bad IP.
# 127.0.0.1 0; # Ignore this IP.
# 10.10.1.0/24 0; # Ignore traffic from this entire class C.
# 192.168.10.4 3 tcp; # Assign danger level 3 if protocol is tcp.
# 10.10.1.0/24 3 tcp/1-1024; # Danger level 3 for tcp port range

8.6.253.50 0;
[/shell]

根据之前设置的级别,对应此处的 5 种等级,白名单是 0,黑名单是 5,你可以把自己 IP 设置成 0.

改好以后保存退出,重启 psad 服务:
[shell]
$ sudo service psad restart
[/shell]

现在你可以用另外一台电脑扫描端口来测试效果,注意不能跟你一个局域网,最好请外地的朋友帮忙。

欢迎转载,但请勿用于任何商业用途,谢谢你!请标注以下信息『 原文出处:怎样用 PSAD 摆脱服务器端口被扫描 - 张林海博客 http://zhanglinhai.com/archives/416 』