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

 

查看ufw命令帮助
$ sudo ufw --help

 



 
 
 
 
posted @ 2019-12-11 11:11  逐梦客!  阅读(536)  评论(0)    收藏  举报