ssh命令用于远程登陆上Linux主机。vim
经常使用格式:ssh [-l login_name] [-p port] [user@]hostname
更详细的能够用ssh -h查看。安全
不指定用户:服务器
ssh 192.168.0.11网络
指定用户:app
ssh -l root 192.168.0.11ssh
ssh root@192.168.0.11tcp
若是修改过ssh登陆端口的能够:工具
ssh -p 12333 192.168.0.11spa
ssh -l root -p 12333 216.230.230.114操作系统
ssh -p 12333 root@216.230.230.114
另外修改配置文件/etc/ssh/sshd_config,能够改ssh登陆端口和禁止root登陆。改端口能够防止被端口扫描。
编辑配置文件:
vim /etc/ssh/sshd_config
找到#Port 22,去掉注释,修改为一个五位的端口:
Port 12333
找到#PermitRootLogin yes,去掉注释,修改成:
PermitRootLogin no
重启sshd服务:
service sshd restart
默认配置文件和SSH端口
/etc/ssh/sshd_config:OpenSSH服务器配置文件;
/etc/ssh/ssh_config:OpenSSH客户端配置文件;
~/.ssh/:用户SSH配置目录;
~/.ssh/authorized_keys:用户公钥(RSA或DSA);
/etc/nologin:若是存在这个文件,sshd会拒绝除root用户外的其它用户登陆;
/etc/hosts.allow和/etc/hosts.deny:定义tcp-wrapper执行的访问控制列表;
SSH默认端口:22
一、禁用OpenSSH服务器
工做站和笔记本电脑能够不用OpenSSH服务器,若是你不须要提供SSH远程登陆和文件传输功能,能够禁用并删除SSHD服务器,CentOS / RHEL / Fedora Linux用户能够使用下面的yum命令禁用和删除openssh-server:
# chkconfig sshd off
# yum erase openssh-server
Debian / Ubuntu Linux用户能够使用下面的apt-get命令禁用和删除openssh-server:
# apt-get remove openssh-server
你可能须要更新你的iptables脚本,移除ssh例外规则,在CentOS / RHEL / Fedora下,打开etc/sysconfig/iptables和/etc/sysconfig/ip6tables文件,删掉与ssh相关的例外规则,而后使用下面的命令重启iptables:
# service iptables restart
# service ip6tables restart
二、只使用SSH v2
打开sshd_config配置文件,若是没有就增长下面这一行设置:Protocol 2
三、限制用户的SSH访问
假设咱们只要root,vivek和jerry用户能经过SSH使用系统,向sshd_config配置文件中添加:AllowUsers root vivek jerry
另外,你还能够容许全部用户经过SSH登陆,但拒绝一部分用户,这时就须要向sshd_config配置文件中添加:DenyUsers saroj anjali foo
四、配置空闲超时退出时间间隔
sshd_config配置文件,确保有以下的配置项:
ClientAliveInterval 300
ClientAliveCountMax 0
上面的例子设置的空闲超时时间间隔是300秒,即5分钟,过了这个时间后,空闲用户将被自动踢出出去(能够理解为退出登陆/注销)。
五、禁用.rhosts文件
不要读取用户的~/.rhosts和~/.shosts文件,使用下面的设置更新sshd_config配置文件:
IgnoreRhosts yes
六、禁用基于主机的身份验证
HostbasedAuthentication no
七、禁用root经过SSH登陆
PermitRootLogin no
八、启用警告横幅
Banner /etc/issue
八、防火墙SSH端口:22
更新/etc/sysconfig/iptables(Red Hat及基于Red Hat的系统)文件,只接受来自192.168.1.0/24和202.54.1.5/29的链接,配置以下:
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 22 -
九、使用TCP Wrapper
TCP Wrapper是一个基于主机的网络ACL系统,用于过滤到互联网的网络访问,OpenSSH支持TCP Wrapper,只须要更新你的/etc/hosts.allow文件,下面的例子表示仅容许来自192.168.1.2 和172.16.23.12的ssh访问:
192.168.1.2 172.16.23.12 |
关于如何在Linux / Mac OS X 和UNIX类操做系统上安装和配置TCP Wrapper,请访问http://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/。
十、禁用空密码
你须要明确禁止密码为空的用户远程登陆,使用下面的设置更新sshd_config配置文件:
PermitEmptyPasswords no |
十一、使用日志分析器
使用logwatch或logcheck读取你的日志,这些工具让你更容易阅读日志内容,它们能够遍历给定时间范围内的日志,并生成明了的报告,请确保sshd_config配置文件中将LogLevel设置为INFO或DEBUG了。
LogLevel INFO |
Other
# 开启特权隔离
UsePrivilegeSeparation yes
# 防止使用不安全的home目录和密钥权限
StrictModes yes
# 开启反向名称检查
VerifyReverseMapping yes
# 设置是否须要端口转发
AllowTcpForwarding no
X11Forwarding no
# 指定是否容许密码验证,默认是yes
PasswordAuthentication no
最后警告你们,在重启或从新载入修改以前,先使用下面的命令验证一下sshd_config配置文件是否无误:
# /usr/sbin/sshd -t |