一、只容許某個IP登陸,拒絕其餘全部IP
在 /etc/hosts.allow 寫:
sshd: 1.2.3.4
在 /etc/hosts.deny 寫:
sshd: ALL
用 iptables 也行:
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT
二、禁止某個用戶經過ssh登陸
在/etc/ssh/sshd_conf添加
AllowUsers 用戶名
或者
AllowGroups 組名
或者
DenyUsers 用戶名
三、設定登陸黑名單
vi /etc/pam.d/sshd
增長
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/sshd_user_deny_list onerr=succeed
全部/etc/sshd_user_deny_list裏面的用戶被拒絕ssh登陸
四、sshd_config配置
# 1. 關於 SSH Server 的總體設定,包含使用的 port 啦,以及使用的密碼演算方式
Port 22 # SSH 預設使用 22 這個 port,您也可使用多的 port !
# 亦即重複使用 port 這個設定項目便可!
Protocol 2,1 # 選擇的 SSH 協議版本,能夠是 1 也能夠是 2 ,
# 若是要同時支持二者,就必需要使用 2,1 這個分隔了!
#ListenAddress 0.0.0.0 # 監聽的主機適配卡!舉個例子來講,若是您有兩個 IP,
# 分別是 192.168.0.100 及 192.168.2.20 ,那麼只想要
# 開放 192.168.0.100 時,就能夠寫如同下面的樣式:
ListenAddress 192.168.0.100 # 只監聽來自 192.168.0.100 這個 IP 的SSH聯機。
# 若是不使用設定的話,則預設全部接口均接受 SSH
PidFile /var/run/sshd.pid # 能夠放置 SSHD 這個 PID 的檔案!左列爲默認值
LoginGraceTime 600 # 當使用者連上 SSH server 以後,會出現輸入密碼的畫面,
# 在該畫面中,在多久時間內沒有成功連上 SSH server ,
# 就斷線!時間爲秒!
Compression 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 AUTH # 當有人使用 SSH 登入系統的時候,SSH會記錄資
# 訊,這個信息要記錄在什麼 daemon name 底下?
# 預設是以 AUTH 來設定的,便是 /var/log/secure
# 裏面!什麼?忘記了!回到 Linux 基礎去翻一下
# 其它可用的 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 # 當使用者的 host key 改變以後,Server 就不接受聯機,
# 能夠抵擋部分的***程序!
#RSAAuthentication yes # 是否使用純的 RSA 認證!?僅針對 version 1 !
PubkeyAuthentication yes # 是否容許 Public Key ?固然容許啦!只有 version 2
AuthorizedKeysFile .ssh/authorized_keys
# 上面這個在設定若要使用不須要密碼登入的帳號時,那麼那個
# 帳號的存放檔案所在檔名!
# 4.2 認證部分
RhostsAuthentication no # 本機系統不止使用 .rhosts ,由於僅使用 .rhosts 太
# 不安全了,因此這裏必定要設定爲 no !
IgnoreRhosts yes # 是否取消使用 ~/.ssh/.rhosts 來作爲認證!固然是!
RhostsRSAAuthentication no # 這個選項是專門給 version 1 用的,使用 rhosts 檔案在
# /etc/hosts.equiv配合 RSA 演算方式來進行認證!不要使用
HostbasedAuthentication no # 這個項目與上面的項目相似,不過是給 version 2 使用的!
IgnoreUserKnownHosts no # 是否忽略家目錄內的 ~/.ssh/known_hosts 這個檔案所記錄
# 的主機內容?固然不要忽略,因此這裏就是 no 啦!
PasswordAuthentication yes # 密碼驗證固然是須要的!因此這裏寫 yes 囉!
PermitEmptyPasswords no # 若上面那一項若是設定爲 yes 的話,這一項就最好設定
# 爲 no ,這個項目在是否容許以空的密碼登入!固然不準!
ChallengeResponseAuthentication yes # 挑戰任何的密碼認證!因此,任何 login.conf
# 規定的認證方式,都可適用!
#PAMAuthenticationViaKbdInt yes # 是否啓用其它的 PAM 模塊!啓用這個模塊將會
# 致使 PasswordAuthentication 設定失效!
# 4.3 與 Kerberos 有關的參數設定!由於咱們沒有 Kerberos 主機,因此底下不用設定!
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosTgtPassing no
# 4.4 底下是有關在 X-Window 底下使用的相關設定!
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
# 4.5 登入後的項目:
PrintMotd no # 登入後是否顯示出一些信息呢?例如上次登入的時間、地點等
# 等,預設是 yes ,可是,若是爲了安全,能夠考慮改成 no !
PrintLastLog yes # 顯示上次登入的信息!能夠啊!預設也是 yes !
KeepAlive yes # 通常而言,若是設定這項目的話,那麼 SSH Server 會傳送
# KeepAlive 的訊息給 Client 端,以確保二者的聯機正常!
# 在這個狀況下,任何一端死掉後, SSH 能夠馬上知道!而不會
# 有殭屍程序的發生!
UsePrivilegeSeparation yes # 使用者的權限設定項目!就設定爲 yes 吧!
MaxStartups 10 # 同時容許幾個還沒有登入的聯機畫面?當咱們連上 SSH ,
# 可是還沒有輸入密碼時,這個時候就是咱們所謂的聯機畫面啦!
# 在這個聯機畫面中,爲了保護主機,因此須要設定最大值,
# 預設最多十個聯機畫面,而已經創建聯機的不計算在這十個當中
# 4.6 關於使用者抵擋的設定項目:
DenyUsers * # 設定受抵擋的使用者名稱,若是是所有的使用者,那就是所有
# 擋吧!如果部分使用者,能夠將該帳號填入!例以下列!
DenyUsers test
DenyGroups test # 與 DenyUsers 相同!僅抵擋幾個羣組而已!
# 5. 關於 SFTP 服務的設定項目!
Subsystem sftp /usr/lib/ssh/sftp-server