Ubuntu18.04 系统安全入门
SSH 安全防护
SSH暴力破解参考:
https://www.jianshu.com/p/6a40bea8a702
https://www.freebuf.com/sectool/159488.html
SSH暴力破解防护:
- 更改ssh默认22端口,但是攻击者可以使用端口扫描工具(如nmap)重新找到你的ssh登陆端口;
- 可以限制root账户远程登陆,自己需要使用root身份时执行su -或sudo,这个办法还行,能够有效防止;
- 但有时候,攻击者使用大量肉鸡来暴力破解会对主机网络造成一定影响,可以将攻击来源IP加入/etc/hosts.deny中来拒绝该IP尝试登陆。
禁止Root用户远程登录
查看ssh服务器是否安装并启动
#sudo ps -e | grep ssh
安装ssh服务器
#sudo apt-get install openssh-server
配置sshd文件
sudo vi /etc/ssh/sshd_config
- PermitRootLogin yes # 允许Root账户登录
- PermitRootLogin prohibit-password # 禁止Root用户远程登录
重启服务器
service ssh restart
修改ssh的连接端口,增加破解难度
vi /etc/ssh/sshd_config
找到Port 22这一行,将注释解开,并修改保存,保存退出,重启ssh
systemctl restart sshd.service
然后尝试用修改后的端口进行连接,如果连接不上,可以添加防火墙规则:
iptables -A INPUT -p tcp --dport 2333 -j ACCEPT service iptables save
用/etc/hosts.allow 和/etc/hosts.deny来控制
作者:桐间纱路 来源:简书
链接:https://www.jianshu.com/p/fc41ad4399d9
思路:我们可以写一个脚本,通过/var/log/secure中,通过统计访问失败的ip,超过四次就将他加入到/etc/hosts.deny中,加入之后就不能登录到服务器了,即使密码正确,必须要管理员来把他删掉才可以进入。把这个脚本加入crontab里。
先写/etc/hosts.allow。这个很关键。可以把我们日常登录的ip都写上,以免登录出错多了,登录不进去。
方法一
收集 /var/log/secure 里面的信息,若是某个IP 链接次数超过一定次数 ,则把此ip记录到/etc/hosts.deny里面。
先把始终允许的IP填入 /etc/hosts.allow这很重要!比如:
sshd:19.16.18.1:allow sshd:19.16.18.2:allow
创建脚本,vi /usr/local/bin/secure_ssh.sh
#! /bin/bash cat /var/log/auth.log|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /home/xxx/secure_ssh.log for i in `cat /home/xxx/secure_ssh.log` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ $NUM -gt 1 ]; then grep $IP /etc/hosts.deny > /dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" >> /etc/hosts.deny fi fi done
通过crontab来执行,每天的1点1分执行一次。
chmod u+x secure_ssh.sh vim /etc/crontab #在末尾加上自动任务,一小时执行一次 01 * * * * root /home/xxx/secure_ssh.sh > /home/xxx/cron.log
开启Crontab日志
ubuntu默认没有开启cron日志记录
1. 修改rsyslog
sudo vim /etc/rsyslog.d/50-default.conf cron.* /var/log/cron.log #将cron前面的注释符去掉
2.重启rsyslog
sudo service rsyslog restart
3.查看crontab日志
less /var/log/cron.log
方法二
DenyHosts官方网站为:http://denyhosts.sourceforge.net
安装
tar -zxvf DenyHosts-2.6.tar.gz cd DenyHosts-2.6 python setup.py install
默认是安装到/usr/share/denyhosts目录的。
配置
cd /usr/share/denyhosts/ cp denyhosts.cfg-dist denyhosts.cfg vi denyhosts.cfg
配置参数详情
PURGE_DENY = 50m #过多久后清除已阻止IP HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny BLOCK_SERVICE = sshd #阻止服务名 DENY_THRESHOLD_INVALID = 1 #允许无效用户登录失败的次数 DENY_THRESHOLD_VALID = 10 #允许普通用户登录失败的次数 DENY_THRESHOLD_ROOT = 5 #允许root登录失败的次数 WORK_DIR = /usr/local/share/denyhosts/data #将deny的host或ip纪录到Work_dir中 DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹 LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。 HOSTNAME_LOOKUP=NO #是否做域名反解 ADMIN_EMAIL = #设置管理员邮件地址 DAEMON_LOG = /var/log/denyhosts #自己的日志文件 DAEMON_PURGE = 10m #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间。
设置启动脚本
cp daemon-control-dist daemon-control chown root daemon-control chmod 700 daemon-control ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts chkconfig --add denyhosts chkconfig denyhosts on service denyhosts start
Ubuntu防火墙防护
ufw入门教程:https://www.cnblogs.com/zhumengke/articles/10273000.html
扫描本地端口对外开放情况
$ nmap 127.0.0.1 Starting Nmap 7.60 ( https://nmap.org ) at 2019-12-25 16:17 CST Nmap scan report for localhost (127.0.0.1) Host is up (0.000088s latency). Not shown: 992 closed ports PORT STATE SERVICE 22/tcp open ssh
查看防火墙状态
$ sudo ufw status Status: inactive
$ sudo ufw --help

浙公网安备 33010602011771号