前提准备
查看防火墙 selinux 配置静态IP 本地yum源
[root@pan ~]# iptables F #关闭防火墙
[root@pan ~]# /etc/init.d/iptables save
[root@pan ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 #修改IP地址如下所示
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.15.102
NETMASK=255.255.255.0
GATEWAY=192.168.15.1
[root@pan ~]#[root@pan ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=pan.com
[root@pan ~]# vim !$
vim /etc/sysconfig/network # 修改HOSTNAME=pan-S.com后reboot
[root@pan-S ~]# cat /etc/yum.repos.d/rhel-source.repo #配置本地yum源如下所示
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///mnt/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@pan-S ~]#yum clean all
[root@pan-S ~]#yum list
概述:
1、sshd服务
SSH协议:安全外壳协议,为secure shell 的缩写,ssh为建立在应用层和传输层基础上的安全协议,可以用来远程控制和传输文件 Openssh软件包提供了服务端后台程序和客户端工具,加密远程控制和文件传输数据。
2、openssh软件包
/etc/ssh_config #客户端配置文件
/etc/sshd_config #服务端配置文件
3、服务启动
[root@pan-S ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@pan-S ~]# /etc/init.d/sshd restart #同上相同效果
[root@pan-S ~]# chkconfig --list sshd #开机启动 chkconfig sshd on
sshd 0:off1:off2:on3:on4:on5:on6:off
[root@pan-S ~]# netstat -an | grep :22 #查看端口号22是否监听状态
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
4、登陆
[root@pan-S Desktop]# cd
[root@pan-S ~]# ssh 192.168.15.64 # ssh l login_name IP / ssh @login_name IP
The authenticity of host '192.168.15.64 (192.168.15.64)' can't be established.
RSA key fingerprint is 31:12:26:e1:41:27:a8:58:68:1f:cb:8e:cd:f6:35:1f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.15.64' (RSA) to the list of known hosts.
[email protected]'s password:
Last login: Fri Mar 6 16:35:27 2015
[root@pan-S ~]# cat /root/.ssh/known_hosts #系统将远程服务器信息写入用户主目录下的文件
解说:
[root@pan-S ~]#vim /etc/ssh/sshd_conf # 主配置文件说明
# 1. 关于 SSH Server 的整体设定
Port 22 # SSH 预设使用 22 port,建议更改sshd的监听端口,选择5位以上的陌生数字端口
Protocol 2 # 选择的 SSH 协议版本 ssh1版本有缺陷和漏洞因此这里选择Protocol2.
#ListenAddress 0.0.0.0# 监听的IP地址!如果不使用设定的话,则预设所有接口均接受
ListenAddress 192.168.15.100 # 只监听来自 192.168.15.100
PidFile /var/run/sshd.pid # 可以放置 SSHD 这个 PID 的档案
LoginGraceTime 600 # 当使用者连上 SSH server 之后,多长时间内没有成功连上就中断,时间为秒
Compression yes # 是否可以使用压缩指令,建议选择yes
# 2. 说明主机的 Private Key 放置的档案,预设使用下面的档案即可!
HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私钥
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私钥放置的路径
HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私钥放置的路径
# 2.1 关于 version 1 的一些设定!
KeyRegenerationInterval 3600 # 由前面联机的说明可以知道, version 1 会使用server 的 Public Key ,那么如果这个 Public Key 丢失或者被盗用就不安全了所以需要每隔一段时间来重新建立一次,时间为秒
ServerKeyBits 768 # Server key 的长度
# 3. 关于登录文件的讯息数据放置与 daemon 的名称!
SyslogFacility AUTHPRIV # "SyslogFacility"用来设定在记录来自sshd消息的时候是否给出"Facility code"
#/var/log/secure 为什么sshd配置文件中没有指定日志,但日志文件却存放在了/var/log/secure? Vim /etc/rsyslog.conf 查看 authpriv.* /var/lof/secure # 其它可用的 daemon name 为:DAEMON,USER,AUTH,
# LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,
LogLevel INFO # 登录记录的等级
# 4. 安全设定项目
# 4.1 登入设定部分
PermitRootLogin no # 是否允许 root 登入!预设是允许的,但是建议设定成 no!
UserLogin no # 在 SSH 底下本来就不接受 login 这个程序的登入!
StrictModes yes # 用来设定ssh在接受登陆请求之前是否检查用户根目录和rhosts文件的权限和所有权,建议将此选项设置为yes
#RSAAuthentication yes # 是否使用仅 RSA 认证,仅针对 version 1
PubkeyAuthentication yes # 是否允许 Public Key 适用于version 2,开启此选项
AuthorizedKeysFile .ssh/authorized_keys
#存放用户使用RSA/DSA私钥登陆时所对应的公钥文件
# 4.2 认证部分
RhostsAuthentication no # 仅用于ssh-1版本 ,是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)本机系统不止使用 .rhosts ,因为仅使用 .rhosts 太不安全了,所以这里一定要设定为 no
IgnoreRhosts yes # 是否使用 ~/.ssh/.rhosts 和~/.shosts文件
RhostsRSAAuthentication no # 这个选项是专门给 version 1 用的,使用 rhosts 档案在
# /etc/hosts.equiv配合 RSA 演算方式来进行认证!不要使用
HostbasedAuthentication no # 这个项目与上面的项目类似,不过是给 version 2 使用的!
IgnoreUserKnownHosts no # 在进行RhostsRSAAuthentication 安全验证时是否忽略"$HOME/.ssh/known_hosts"文件
PasswordAuthentication yes # 是否开启密码验证,建议开启公钥验证
PermitEmptyPasswords no # 若上面那一项如果设定为 yes 的话,这一项必须为 no ,这个项目在是否允许以空的密码登入
ChallengeResponseAuthentication yes # 挑战任何的密码认证!所以,任何 login.conf 规定的认证方式,均可适用!
#PAMAuthenticationViaKbdInt yes # 是否启用其它的 PAM 模块!启用这个模块将会导致 PasswordAuthentication 设定失效!
# 4.3 与 Kerberos 有关的参数设定
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosTgtPassing no
# 4.4 底下是有关在 X-Window 底下使用的相关设定!
X11Forwarding yes #是否允许进行X11转发
#X11DisplayOffset 10 #X11转发第一个可用显示区(display)数字 默认为10
#X11UseLocalhost yes #是否应当将X11转发服务器绑定到本地loopback地址 默认是yes
# 4.5 登入后的项目:
PrintMotd no # 登入后是否显示警告信息 /etc/motd文件的内容信息
为了安全,可以考虑改为 no
PrintLastLog yes # 显示上次登入的信息
KeepAlive yes #选择"yes"防止死连接
UsePrivilegeSeparation yes # 是否让sshd通过创建非特权子进程处理接入请求的方法来进行权限分离。默认为yes 此时,认证成功后,将以改认证用户的身份创建另一个子进程。其目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。
MaxStartups 10 # 同时允许几个尚未登入的联机画面?当我们连上 SSH但是尚未输入密码时,这个时候就是我们所谓的联机画面,为了保护主机,所以需要设定最大值,
# 4.6 关于使用者抵挡的设定项目:
DenyUsers * # 设定受抵挡的使用者名称,如果是全部的使用者,那就是全部
DenyUsers test
DenyGroups test # 与 DenyUsers 相同!仅抵挡几个群组而已!
# 5. 关于 SFTP 服务的设定项目!
Subsystem sftp /usr/lib/ssh/sftp-server
5、通过秘钥进行sshd服务认证登陆
[root@pan-C ~]# ssh-keygen #生成密钥对存放位置在/root/.ssh/下分别为公钥和私钥
[root@pan-C ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] #发布到远程服务器位置在/root/.ssh/下的authorized_keys 文件
[root@pan-C ~]# ssh 192.168.15.102 #无需输入密码直接登陆
Last login: Wed Jun 17 11:11:09 2015 from 192.168.15.64
6、两台linux服务器之间复制数据
scp 基于ssh登陆并复制数据
[root@pan-S ~]# scp 192.168.15.64:/etc/passwd /opt #将客户端64上的/etc/passwd文件复制到本机的/opt下。
passwd 100% 1731 1.7KB/s 00:00
[root@pan-S ~]# scp r /etc [email protected]:/opt #将本机的/etc目录复制到远端192.168.15.64下的/opt下
七、实战sshd服务防止暴力破解
1、密码足够复杂 8-14位
2、修改端口号
3、不使用root用户名登陆 (不能禁止root身份登陆,判断的依据UID = 0)
root:x:0:0:root:/root:/sbin/nologin
pan:x:0:0::/home/pan:/bin/bash
4、[root@pan-S ~]# ll -h /var/log/btmp
-rw-------. 1 root utmp 1.2K Jun 17 16:01 /var/log/btmp
5、fail2ban安装
[root@pan-S ~]# tar -zxvf fail2ban-0.8.14.tar.gz
[root@pan-S ~]# cd fail2ban-0.8.14
[root@pan-S fail2ban-0.8.14]# ls
build client config DEVELOP fail2ban-client fail2ban-server fail2ban-testcases-all FILTERS man README.md server setup.py THANKS
ChangeLog common COPYING doc fail2ban-regex fail2ban-testcases files kill-server MANIFEST README.Solaris setup.cfg testcases TODO
[root@pan-S fail2ban-0.8.14]# vim README.md #查看说明书了解安装过程
[root@pan-S fail2ban-0.8.14]# python V #查看本机python版本
Python 2.6.6
[root@pan-S fail2ban-0.8.14]# python