lyx

  • 嵌入式
  • 运维
  • 笔记
  • 关于
所有文章 友链 关于我

lyx

  • 嵌入式
  • 运维
  • 笔记
  • 关于

SSH服务

2017-03-15

Linux运维笔记(就老男孩运维28期、马哥教育、学神IT、老段带你学Linux、Linux-Cast整理而来)

声明

  • “-“ 后面接的是段落小节标题
  • 笔记按照服务一般配置整理
  • 本文采用软件为 MarkdownPad2进行编辑
  • 本文记录时间 2017-02-27 10:24:24
  • 请将本文ip替换成自己的ip

本文大纲

1.开篇的话
2.SSH服务
3.排错
4.SSH调优

1.开篇的话

学习Linux服务的大体流程如下

    了解服务的作用:名称,功能,特点
    安装
    配置文件位置,端口
    服务启动关闭的脚本
    此服务的使用方法
    修改配置文件,实战举例
    排错(从下到上,从内到外)

2.SSH服务

- 了解服务

SSHD服务,在我们的linux服务器上经常用到,很重要,涉及到服务器的安全,对这个服务的安全配置要高度重视

SSH 协议:安全外壳协议。为 Secure Shell 的缩写。SSH 为建立在应用层和传输层基础上的安全

sshd服务使用SSH协议可以用来进行远程控制, 或在计算机之间传送文件相比较之前用telnet方式来传输文件要安全很多,因为telnet使用明文传输,是加密传输。

- 服务安装

第一步 : 准备安装的软件包
        openssh-5.3p1-114.el6_7.x86_64:包含OpenSSH 服务器及客户端需要的核心文件
        openssh-clients-5.3p1-114.el6_7.x86_64:OpenSSH 客户端软件包
        openssh-server-5.3p1-114.el6_7.x86_64:OpenSSH 服务器软件包
        openssh-askpass-5.3p1-114.el6_7.x86_64:支持对话框窗口的显示,是一个基于X 系统的密码诊断工具

第二步 :安装软件
        1.使用yum安装
            yum list all | grep openssh         # 查看是否有需要的软件包
            yum install openssh* -y             # 安装
        2.使用rpm安装
            rpm -ivh /media/cdrom/Packages/openssh*.rpm

        这里推荐使用yum安装

第三步: 检查软件是否安装
        rpm -qa | grep openssh                     #查看软件包
        rpm -ql openssh                         #查看软件安装目录
        netstat -ntulp | grep 22                #通过端口查看软件是否开启

第四步: 启动服务
        service sshd restart                    #重启服务
        chkconfig sshd on                         #加入开机自启
        chkconfig --list sshd                    #查看是否配置开机自启成功



第五步: 远程登陆
        1.ssh  [远程主机用户名] @[远程服务器主机名或IP地址]
            ssh 192.168.200.100
            ssh root@192.168.200.100
            ssh root@192.168.200.100 -p 22
            ssh -l root 192.168.200.100            #注意没有@符号
        2.第一次登录服务器时系统没有保存远程主机的信息,为了确认该主机身份会提示用户是否续连接,输入yes 后登录这时系统会将远程服务器信息写入用户主目录下的$HOME/.ssh/known_hosts 文件中,下次再进行登录时因为保存有该主机信息就不会再提示了

        3.远程登录以普通用户登陆
            useradd cat && echo 123456 | passwd --stdin cat
            ssh -l cat 192.168.200.100

- 配置文件

OpenSSH 配置文件
    OpenSSH 常用配置文件有两个 /etc/ssh/ssh_config 和 /etc/sshd_config
        ssh_config 为客户端配置文件
        sshd_config 为服务器端配置文件

服务脚本 线上一般配置(实战)

常用的启动脚本主要有以下两个
    /etc/init.d/sshd restart/stop/start/status
    service sshd restart/stop/start/status

注意事项

1.参数前面有#,表示是默认值。当然#号也表示注释
2.登录系统的默认日志存放在哪?
    sshd服务日志存放在: /var/log/secure
    由于这个文件/etc/rsyslog.conf  定义的sshd服务的日志存放位置?
        # The authpriv file has restricted access.
        authpriv.*                                              /var/log/secure
3.修改配置文件要重启服务

/etc/ssh/sshd_config 配置文件

1.Port 22  ->  设置sshd 监听端口号
    # SSH 预设使用 22 这个port,也可以使用多个port,即重复使用 port 这个设定项目!
    # 例如想要开放 sshd 端口为 22和 222 ,则多加一行内容为: Port 222  即可
    # 然后重新启动 sshd 这样就好了。 建议大家修改 port number 为其它端口。防止别人暴力破解。
2.ListenAddress 0.0.0.0  ->  设置sshd监听ip地址
    # 设置sshd 服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址
    # 比如192.168.0.63 这个机器只允许0.64来远程登录,那么可以设置
    # ListenAddress 192.168.0.64
3.Protocol 2  ->  设置sshd的协议的版本号
    # 选择的 SSH 协议版本,可以是 1 也可以是 2 ,CentOS 5.x 预设是仅支援 V2。 安全考虑,设置为最新的协议版本
4.#HostKey /etc/ssh/ssh_host_key  ->  设置sshd登陆密钥文件
    # 设置包含计算机私人密匙的文件
5.SyslogFacility AUTHPRIV    ->    设置日志登陆信息
    # 当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV。
6.#LogLevel INFO
    # 登录记录的等级!INFO级别以上。
    [关于系统日志的文章](http://blog.csdn.net/beckdon/article/details/32696047 "Linux系统日志")

涉及到安全调优的配置选项

7.LoginGraceTime 2m       #grace 优雅
# 当使用者连上 SSH server 之后,会出现输入密码的画面,在该画面中,
# 在多久时间内没有成功连上 SSH server 就强迫断线!若无单位则默认时间为秒! 可以根据实际情况来修改实际

8.# PermitRootLogin yes
# 是否允许 root 登入!预设是允许的,但是建议设定成 no!真实的生产环境服务器,是不允许root账号登陆的!!!


9.PasswordAuthentication yes
# 密码验证当然是需要的!所以这里写 yes,也可以设置为no。在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆

10.# PermitEmptyPasswords no
# 若上面那一项如果设定为 yes 的话,这一项就最好设定为 no ,
# 这个项目在是否允许以空的密码登入!当然不许!

11.# PrintMotd yes
# 登入后是否显示出一些信息呢?例如上次登入的时间、地点等等,预设是 yes
# 亦即是打印出 /etc/motd 这个文档的内容。
例:给sshd服务添加一些警告信息
    cat /etc/motd
    echo 'Warning ! From now on, all of your operation has been 4record!'> /etc/motd
测试:
    ssh 192.168.0.64
    root@192.168.0.64's password:
    Last login: Thu Jun 23 14:02:38 2016 from 192.168.0.1
    Warning ! From now on, all of your operation has been record!

12.# PrintLastLog yes
    # 显示上次登入的信息!预设也是 yes  !
    例:
    ssh 192.168.0.63
    Last login: Tue Nov  4 19:57:31 2014 from 192.168.1.107  #就是这个信息

13.# UseDNS yes
     # 一般来说,为了要判断客户端来源是正常合法的,因此会使用 DNS 去反查客户端的主机名
     # 不过如果是在内网互连,这项目设定为 no 会让联机速度比较快。

3.排错

1.防火墙和selinux关闭
2.软件是否安装、服务是否开启以及端口是否在监听
3.配置文件是否修改  比如 端口号
4.分析日志文件

4.SSHD防止暴力破解

配置文件

1.通过修改配置文件,密码的长度最好大于20位密码复杂度要尽可能有数字、大小写字母和特殊符号混合组成(kepass软件记录软件)

2.修改默认端口号

3.不允许root用户登陆

4.不允许密码登陆,只能通过密钥登陆系统客户端生成密钥对,然后将公钥上传到服务器   ssh-keygen创建私钥默认放在 /root/.ssh/id_rsa,并且需要设置密码来保护客户端私钥的密码,公钥保存在/root/.ssh/id_rsa.pub

    >传输方法    ssh-copy-id -i 服务器
    >在服务器上,服务器会将其替换成了.ssh/authorized_keys和在客户端上的公钥一致

开源防护工具 fail2ban

fail2ban可以监视你的系统日志,然后匹配日志的错误系你想执行相应的屏蔽工作,而且可以发送e-mail通知系统管理员,工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 使用该软件iptables必须要开启,如果ssh配置文件中的端口号发生改变需要更改/etc/fail2ban/jail.conf以及/对应action.d/iptables.conf文件

注:重启iptables服务的话,所有DORP将重置。

fail2ban的安装、使用和配置

1.下载位置
    http://www.fail2ban.org

2.解压软件包和安装
     tar  -zxvf fail2ban-0.8.14.tar.gz -C /usr/local/src

3.执行安装,在安装之前首先检查一下python的版本
    python -V
    python setup.py install

4.目录解释,其配置文件为jail.conf
    /etc/fail2ban/action.d              #动作文件夹,内含默认文件。iptables以及mail等动作配置
    /etc/fail2ban/fail2ban.conf            #定义了fai2ban日志级别、日志位置及sock文件位置
    /etc/fail2ban/filter.d              #条件文件夹,内含默认文件。过滤日志关键内容设置
    /etc/fail2ban/jail.conf                #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

5.加入系统启动服务中
    cp files/redhat-initd  /etc/init.d/fail2ban
    chkconfig --add fail2ban  #开机自动启动

    查找一个软件中的启动脚本文件的小方法:
        grep chkconfig  ./* -R --color  #启动脚本文件都是含有chkconfig

6.实例文件/etc/fail2ban/jail.conf及说明
    [DEFAULT]               #全局设置
    ignoreip = 127.0.0.1/8       #忽略的IP列表,不受设置限制
    bantime  = 600               #屏蔽时间,单位:秒
    findtime  = 600              #这个时间段内超过规定次数会被ban掉
    maxretry = 3                 #最大尝试次数
    backend = auto               #日志修改检测机制(gamin、polling和auto这三种)

    #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。

    [sshd]
    enabled  = true              #是否激活此项(true/false)修改成 true
    filter   = sshd              #过滤规则filter的名字,对应filter.d目录下的sshd.conf
    action   = iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件
    sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]   #触发报警的收件人
    logpath  = /var/log/secure   #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath  = /var/log/sshd.log
    #5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
    bantime  = 3600     #禁止用户IP访问主机1小时
    findtime  = 300     #在5分钟内内出现规定次数就开始工作
    maxretry = 3        #3次密码验证失败

如果遇到不能发送邮件的首先要确定sendmail可以发送右键,测试代码如下
    echo "Hello World" | mail -s test xxx@xxx.com

如果遇到本机不能远程登陆,那么只需要将ssh的日志文件删除即可   也就是/var/log/secure文件内容清除
    > /var/log/secure

7.启动服务
    service fail2ban start

8.查看服务状态和防火墙是否设置了相关条目
    iptables -L -n
    fail2ban-client status                    #查看该软件是否工作
    #具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。相关代码如下
    fail2ban-client status ssh-iptables

xinetd服务

xinetd(eXtended InterNET services daemon)  扩展因特网服务守护进程,是新一代的网络守护进程服务程序,又叫超级Internet服务器
作用: 通过xinetd服务来管理多种轻量级Internet服务。如: telnet、rsync、 tftp服务等。并为这些服务提供安全访问控制功能。
赏

谢谢你请我吃糖果

支付宝
微信
  • CentOS6.8
  • SSH服务
  • oldLinux

扫一扫,分享到微信

微信分享二维码
自动化部署
markdown模板
© 2017 lyx
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • CentOS6.8
  • SSH服务
  • DHCP服务
  • 自动化部署
  • 互联网资源
  • IT
  • 运维
  • Linux
  • RSYNC服务
  • NTP服务
  • Postfix服务
  • DNS服务
  • NFS服务
  • Samba服务
  • FTP服务
  • Apache服务
  • CentOS7
  • Dokcer
  • Gitlab
  • 源码安装
  • Hadoop
  • 集群
  • Centos6.8
  • 文件共享
  • Haproxy
  • 存储系统
  • 高可用
  • 负载均衡
  • 编程
  • 程序员
  • LAMP
  • LNMP
  • WEB服务器
  • 博客
  • 编译
  • 内核
  • Linux命令
  • Linux基础
  • 笔记
  • 分布式系统
  • NFS
  • 认证服务
  • NIS
  • Nagios
  • 监控
  • 存储
  • RAID
  • WEB架构
  • 远程连接
  • SSH
  • Zabbix
  • 自动化
  • saltstack
  • cobbler
  • Centos7
  • ELKstack
  • Elasticsearch
  • Logstash
  • Heartbeat
  • MySQL
  • Nginx
  • puppet
  • markdown
  • 跨平台
  • Linux服务
  • 大学
  • 版权声明
  • STM32
  • 嵌入式
  • 邮件服务
  • 汉化
  • 网卡错误
  • 虚拟机
  • 分布式存储
  • Corosync
  • Pacemaker
  • DRBD
  • MooseFS

    缺失模块。
    1、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    2、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: true
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 阿里云
  • 鸿鹄论坛
  • 百度云搜索
  • Github搜索
  • PDF转换软件
  • TI公司WEBENCH
  • powershell教程
  • 七牛云
  • 有道云笔记
  • HTML5
  • 小马运维博客
  • 运维知识体系架构图
  • 云栖社区
  • ChinaUnix
<br>热爱技术<br>热爱开源<br> 2017年<br>