ssh命令用於遠程登錄上Linux主機。
常用格式:ssh [-l login_name] [-p port] [user@]hostname
更詳細的可以用ssh -h查看。
不指定用戶:
ssh 192.168.0.11
指定用戶:
ssh -l root 192.168.0.11
ssh root@192.168.0.11
如果修改過ssh登錄端口的可以:
ssh -p 12333 192.168.0.11
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
1、禁用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
2、只使用SSH v2
打開sshd_config配置文件,如果沒有就增加下面這一行設置:Protocol 2
3、限制用戶的SSH訪問
假設我們只要root,vivek和jerry用戶能通過SSH使用系統,向sshd_config配置文件中添加:AllowUsers root vivek jerry
另外,你還可以允許所有用戶通過SSH登錄,但拒絕一部分用戶,這時就需要向sshd_config配置文件中添加:DenyUsers saroj anjali foo
4、配置空閑超時退出時間間隔
sshd_config配置文件,確保有如下的配置項:
ClientAliveInterval 300
ClientAliveCountMax 0
上面的例子設置的空閑超時時間間隔是300秒,即5分鍾,過了這個時間后,空閑用戶將被自動踢出出去(可以理解為退出登錄/注銷)。
5、禁用.rhosts文件
不要讀取用戶的~/.rhosts和~/.shosts文件,使用下面的設置更新sshd_config配置文件:
IgnoreRhosts yes
6、禁用基於主機的身份驗證
HostbasedAuthentication no
7、禁用root通過SSH登錄
PermitRootLogin no
8、啟用警告橫幅
Banner /etc/issue
8、防火牆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 -
9、使用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/。
10、禁用空密碼
你需要明確禁止密碼為空的用戶遠程登錄,使用下面的設置更新sshd_config配置文件:
PermitEmptyPasswords no |
11、使用日志分析器
使用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 |