ssh-copy-id -i ~/.ssh/id_rsa.pub root@服务器ip
复制代码
配置SSH配置文件/etc/ssh/sshd_config
mysql
sudo cp /etc/ssh/sshd_config ~ (备份,复原时使用)
sudo vi /etc/ssh/sshd_config
复制代码
选项 | 含义 |
---|---|
Port | 默认22(可修改) |
Protocol 2 | ssh 协议使用新版的 |
PermitRootLogin no | 不容许 root 登陆 |
PermitEmptyPasswords no | 不容许空密码登陆 |
PasswordAuthentication no | 使用密码受权登陆 |
RSAAuthentication yes | 使用RSA算法进行安全验证 |
PubkeyAuthentication yes | 容许公钥认证 |
UseDNS no | 禁用DNS反向解析 会加快速度 |
SyslogFacility AUTHPRIV | 记录用户登陆信息 |
设置完成以后,保存退出重启SSHDlinux
sudo service ssh restart
复制代码
或者ios
sudo /etc/init.d/ssh restart
复制代码
配置登陆用户 ,假如用户名为deploynginx
useradd -d /home/deploy -s /bin/bash -m deploy
复制代码
为新建立的用户,设置密码算法
passwd deplay
复制代码
而后给deploy用户配置权限sql
sudo vi /etc/sudoers
复制代码
找到下面的这一行apache
root ALL=(ALL:ALL) ALl
deplay ALL=(ALL) NOPASSWD: ALL
复制代码
NOPASSWD
表示,在切换sudo的时候不须要输入密码,根据本身喜爱来设置vim
最后保存退出便可。后端
检查服务器的区域设置。安全
locale
复制代码
若是结果不是 en_US.UTF-8,建议都设成它。
sudo locale-gen en_US en_US.UTF-8 en_CA.UTF-8
sudo dpkg-reconfigure locales
复制代码
而后,更新软件
sudo apt-get update
sudo apt-get upgrade
复制代码
sudo ufw allow from [ip] to any port [端口] 仅特定ip能够访问此端口
sudo ufw allow 80 容许80端口访问
sudo ufw allow 443 容许443端口访问
sudo ufw disable 禁用ufw
sudo ufw enable 启用ufw
复制代码
iptables -I INPUT -s *.*.*.* -j DROP 封停ip
iptables -D INPUT -s *.*.*.* -j DROP 解封ip
复制代码
vim /etc/cron.daily/00logwatch
#!/bin/bash
# Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0
# execute
/usr/sbin/logwatch --output mail --mailto [邮箱] --detail high
# Note: It's possible to force the recipient in above command
# Just pass --mailto address@a.com instead of --output mail
复制代码
安装 sendmail
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
复制代码
若是mail命令不存在,安装mailutils
sudo apt-get install mailutils
复制代码
查看是否启动
ps aux | grep sendmail 复制代码
编辑配置文件, sudo vim /etc/mail/sendmail.mc
修改监听地址, DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl</span>
若是提示 hostname 不合格, 修改它
查看 hostname `hostname`
修改 hostname `hostname [新值]`
复制代码
发送邮件
mail [邮箱地址]
主题
内容
Ctrl-D结束
复制代码
对于 Debian / Ubuntu,使用 APT-GET 命令或 APT 命令安装。
sudo apt install fail2ban
复制代码
配置Fail2Ban
默认状况下,Fail2Ban 将全部配置文件保存在 /etc/fail2ban/
目录中。 主配置文件是 jail.conf
,它包含一组预约义的过滤器。 因此,不要编辑该文件,这是不可取的,由于只要有新的更新,配置就会重置为默认值。
只需在同一目录下建立一个名为 jail.local
的新配置文件,并根据您的意愿进行修改。
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
复制代码
默认状况下,大多数选项都已经配置的很完美了,若是要启用对任何特定 IP 的访问,则能够将 IP 地址添加到 ignoreip
区域,对于多个 IP 的状况,用空格隔开 IP 地址。
配置文件中的 DEFAULT
部分包含 Fail2Ban 遵循的基本规则集,您能够根据本身的意愿调整任何参数。
# nano /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.100/24
bantime = 600
findtime = 600
maxretry = 3
destemail = mhecy98@gmail.com
复制代码
ignoreip
:本部分容许咱们列出 IP 地址列表,Fail2Ban 不会禁止与列表中的地址匹配的主机 bantime
:主机被禁止的秒数 findtime
:若是在最近 findtime 秒期间已经发生了 maxretry 次重试,则主机会被禁止 maxretry
:是主机被禁止以前的失败次数
如何配置服务
Fail2Ban 带有一组预约义的过滤器,用于各类服务,如 ssh、apache、nginx、squid、named、mysql、nagios 等。 咱们不但愿对配置文件进行任何更改,只需在服务区域中添加 enabled = true
这一行就能够启用任何服务。 禁用服务时将 true
改成 false
便可。
# SSH servers
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
复制代码
enabled
: 肯定服务是打开仍是关闭。 port
:指明特定的服务。 若是使用默认端口,则服务名称能够放在这里。 若是使用非传统端口,则应该是端口号。 logpath
:提供服务日志的位置 backend
:指定用于获取文件修改的后端。
重启 Fail2Ban
进行更改后,从新启动 Fail2Ban 才能生效。
[For SysVinit Systems]
# service fail2ban restart
[For systemd Systems]
# systemctl restart fail2ban.service
复制代码
验证 Fail2Ban iptables
规则
你可使用下面的命令来确认是否在防火墙中成功添加了Fail2Ban iptables
规则。
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-apache-auth tcp -- anywhere anywhere multiport dports http,https
f2b-sshd tcp -- anywhere anywhere multiport dports 1234
ACCEPT tcp -- anywhere anywhere tcp dpt:1234
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-apache-auth (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain f2b-sshd (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
复制代码
查看启用的监狱列表,请运行如下命令。
# fail2ban-client status
Status
|- Number of jail: 2 `- Jail list: apache-auth, sshd 复制代码
经过运行如下命令来获取禁止的 IP 地址。
# fail2ban-client status ssh
Status for the jail: ssh
|- filter | |- File list: /var/log/auth.log | |- Currently failed: 1 | `- Total failed: 3 `- action
|- Currently banned: 1 | `- IP list: 192.168.1.115 `- Total banned: 1
复制代码
要从 Fail2Ban 中删除禁止的 IP 地址,请运行如下命令。
# fail2ban-client set ssh unbanip 192.168.1.115
复制代码
下载源代码
weget https://www.itkylin.com/download/portsentry-1.2.tar.gz
复制代码
解压、编译安装portsentry
tar -xpf portsentry-1.2.tar.gz
cd portsentry_beta
make linux
make install
复制代码
编辑配置文件
sudo vim /usr/local/psionic/portsentry/portsentry.conf
复制代码
找到RESOLVE_HOST
,将其修改成RESOLVE_HOST = 0
启动PortSentry的TCP/UDP高级秘密扫描侦测模式
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -audp
复制代码
设置随系统启动自动运行
执行以下命令
sudo vim /etc/rc.local
复制代码
将下面这两条命令写进去
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -audp
复制代码
查询阻止的恶意扫描
portsentry阻档的全部恶意扫描记录会实时写入到/var/log/syslog
文件,因此咱们只须要用tail
命令就能实时的查询已阻止的恶意扫描,命令以下
tail -f /var/log/syslog
复制代码
被阻止的IP将会放入/etc/hosts.deny
,如果有误判,能够编辑此文件删除便可。你也能够编辑/usr/local/psionic/portsentry/portsentry.ignore
此文件,将误判的IP或要忽略的IP加入portsentry.ignore文件,它就至关因而白名单。
如今,你会感受你的服务器基本上已经安全了,能够惬意的喝杯咖啡吧!