總結幾個經常使用的系統安全設置(含DenyHosts)

 

1)禁止系統響應任何從外部/內部來的ping請求攻擊者通常首先經過ping命令檢測此主機或者IP是否處於活動狀態
若是可以ping通 某個主機或者IP,那麼攻擊者就認爲此係統處於活動狀態,繼而進行攻擊或破壞。若是沒有人能ping通機器並收到響應,那麼就能夠大大加強服務器的安全性,
linux下能夠執行以下設置,禁止ping請求:
[root@localhost ~]# echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_allhtml

默認狀況下"icmp_echo_ignore_all"的值爲"0",表示響應ping操做。
能夠加上面的一行命令到/etc/rc.d/rc.local文件中,以使每次系統重啓後自動運行。node

2)禁止Control-Alt-Delete組合鍵重啓系統
在linux的默認設置下,同時按下Control-Alt-Delete鍵,系統將自動重啓,這是很不安全的,所以要禁止Control-Alt-Delete組合鍵重啓系統,查看/etc/inittab文件:
[root@localhost ~]# cat /etc/inittab
.......
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
.......python

[root@localhost ~]# cat /etc/init/control-alt-delete.conf
# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed. Usually used to shut down the machine.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file control-alt-delete.override and put your changes there.linux

start on control-alt-deleteshell

exec /sbin/shutdown -r now "Control-Alt-Delete pressed"vim

能夠將/etc/init/control-alt-delete.conf文件刪除或移走或改名。
[root@localhost ~]# mv /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.conf.bakcentos

或者將/etc/init/control-alt-delete.conf文件裏的內容註釋掉!api

3)限制Shell記錄歷史命令大小
默認狀況下,bash shell會在文件$HOME/.bash_history中存放多達1000條命令記錄(根據系統不一樣,默認記錄條數不一樣)。系統中每一個用戶的主目錄下都有一個這樣的文件。
這麼多的歷史命令記錄,確定是不安全的,所以必須限制該文件的大小。
能夠編輯/etc/profile文件,修改其中的選項以下:
[root@localhost ~]# vim /etc/profile
.......
HISTSIZE=1000
.......安全

默認Shell記錄歷史命令的條數是1000,能夠修改成100條,即HISTSIZE=1000,表示在文件$HOME/.bash_history中記錄最近的30條歷史命令。
若是將"HISTSIZE"設置爲0,則表示不記錄歷史命令,那麼也就不能用鍵盤的上下鍵查找歷史命令了。bash

4)設定tcp_wrappers防火牆
Tcp_Wrappers是一個用來分析TCP/IP封包的軟件,相似的IP封包軟件還有iptables,linux默認都安裝了此軟件,做爲一個安全的系統,Linux自己有兩層安全防火牆,經過IP
過濾機制的iptables實現第一層防禦,iptables防火牆經過直觀地監視系統的運行情況,阻擋網絡中的一些惡意攻擊,保護整個系統正常運行,免遭攻擊和破壞。
若是經過了iptables的第一層防禦,那麼下一層防禦就是tcp_wrappers了,經過Tcp_Wrappers能夠實現對系統中提供的某些服務的開放與關閉、容許和禁止,從而更有效地保
證系統安全運行。
4.1)Tcp_Wrappers的使用很簡單,僅僅兩個配置文件:/etc/hosts.allow和/etc/hosts.deny查看系統是否安裝了Tcp_Wrappers:
[root@localhost ~]# rpm -q tcp_wrappers
tcp_wrappers-7.6-58.el6.x86_64
若是有上面的相似輸出,表示系統已經安裝了tcp_wrappers模塊。若是沒有顯示,多是沒有安裝,能夠從linux系統安裝盤找到對應RPM包進行安裝。

4.2)tcp_wrappers防火牆的侷限性
系統中的某個服務是否可使用tcp_wrappers防火牆,取決於該服務是否應用了libwrapped庫文件,若是應用了就可使用tcp_wrappers防火牆,系統中默認的一些服務如:
sshd、portmap、sendmail、xinetd、vsftpd、tcpd等均可以使用tcp_wrappers防火牆。

4.3)tcp_wrappers設定的規則(使用例子能夠參考:http://www.cnblogs.com/kevingrace/p/6245859.html
tcp_wrappers防火牆的實現是經過/etc/hosts.allow和/etc/hosts.deny兩個文件來完成的,首先看一下設定的格式:
service:host(s) [:action]

service:表明服務名,例如sshd、vsftpd、sendmail等。
host(s):主機名或者IP地址,能夠有多個,例如192.168.60.0、www.ixdba.netl action:動做, 符合條件後所採起的動做。
幾個關鍵字:
ALL:全部服務或者全部IP。
ALL EXCEPT:全部的服務或者全部IP除去指定的。

例如:ALL:ALL EXCEPT 192.168.60.132
表示除了192.168.60.132這臺機器,任何機器執行全部服務時或被容許或被拒絕。
瞭解了設定語法後,下面就能夠對服務進行訪問限定。

例如:互聯網上一臺linux服務器,實現的目標是:僅僅容許222.90.66.四、61.185.224.66以及域名softpark.com經過SSH服務遠程登陸到系統,設置以下:
首先設定容許登陸的計算機,即配置/etc/hosts.allow文件,設置很簡單,只要修改/etc/hosts.allow(若是沒有此文件,請自行創建)這個文件便可。
只需將下面規則加入/etc/hosts.allow便可。
sshd: 222.90.66.4 61.185.224.66 softpark.com
接着設置不容許登陸的機器,也就是配置/etc/hosts.deny文件了。
通常狀況下,linux會首先判斷/etc/hosts.allow這個文件,若是遠程登陸的計算機知足文件/etc/hosts.allow設定的話,就不會去使用/etc/hosts.deny文件了,相反,若是
不知足hosts.allow文件設定的規則的話,就會去使用hosts.deny文件了,若是知足hosts.deny的規則,此主機就被限制爲不可訪問linux服務器,若是也不知足hosts.deny的
設定,此主機默認是能夠訪問linux服務器的,所以,當設定好/etc/hosts.allow文件訪問規則以後,只需設置/etc/hosts.deny爲"全部計算機都不能登陸狀態"便可。
sshd:ALL

這樣,一個簡單的tcp_wrappers防火牆就設置完畢了。

5)網絡安全選項的設定
編輯 "/etc/sysctl.conf" 檔案,並加入下面幾行,
[root@localhost ~]# vim /etc/sysctl.conf  
# Enable ignoring broadcasts request(讓系統對廣播沒有反應) 
net.ipv4.icmp_echo_ignore_broadcasts = 1   

# Disables IP source routing(取消 IP source routing)   
net.ipv4.conf.all.accept_source_route = 0   

# Enable TCP SYN Cookie Protection(開啓 TCP SYN Cookie 保護)   
net.ipv4.tcp_syncookies = 1   

# Disable ICMP Redirect Acceptance(取消 ICMP 接受 Redirect)   
net.ipv4.conf.all.accept_redirects = 0   

# Enable bad error message Protection(開啓錯誤訊息保護)   
net.ipv4.icmp_ignore_bogus_error_responses = 1   

# Enable IP spoofing protection, turn on Source Address Verification(開啓 IP 欺騙保護)   
net.ipv4.conf.all.rp_filter = 1   

# Log Spoofed Packets, Source Routed Packets, Redirect Packets(記錄Spoofed Packets, Source Routed Packets, Redirect Packets)   
net.ipv4.conf.all.log_martians = 1  

最後從新啓動network  
[root@localhost ~]# /etc/rc.d/init.d/network restart 

或者sysctl –p 生效  
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

6)系統文件和日誌的安全
更改各類服務啓動腳本目錄的訪問權限: 
[root@localhost ~]# chmod -R 700 /etc/rc.d/  

更改系統文件的訪問權限:             
[root@localhost ~]# chmod 700 /etc/services 
[root@localhost ~]# chmod 700 /etc/xinetd.conf   
[root@localhost ~]# chmod 700 /etc/inittab 

更改日誌的訪訪權限:                 
[root@localhost ~]# chmod 700 /var/log/secure*                                         
[root@localhost ~]# chmod 700 /var/log/messages* 

7)系統登錄的設定
每次登錄退出時,清除所用過命令的歷史紀: 在.bash_logout文檔中增長一行:
[root@localhost ~]# vim /root/.bashrc
......
history –c 

設置系統全局環境變量文件/etc/profile 增長一行:
[root@localhost ~]# vim /etc/profile
......
TMOUT=600 

單位爲秒,表示若是在600秒(10分鐘)以內沒有作任何的操做,登錄終端將自動註銷。 3.資源限制 
 
編輯/etc/security/limits.conf 加入:
[root@localhost ~]# vim /etc/security/limits.conf
......
* hard core 0     
* hard rss 5000   
* hard nproc 20  

同時必須編輯/etc/pam.d/login文件加/檢查下面這一行的存在:
[root@localhost ~]# vim /etc/pam.d/login
.......
session required /lib/security/pam_limits.so 

上面的命令分別是禁止建立core文件,其餘用戶(除root)最多使用5M內存,限制最多進程數爲20

8)vsftp配置 
vsftpd的配置文件有三個,分別是: 
/etc/vsftpd/vsftpd.conf 
/etc/ vsftpd/vsftpd.ftpusers 
/etc/ vsftpd/vsftpd.user_list 

其中:
/etc/vsftpd.conf是主配置文件
/etc/vsftpd.ftpusers中指定了哪些用戶不能訪問FTP服務器
/etc/vsftpd.user_list中指定的用戶默認狀況下(即在/etc/vsftpd.conf中設置了userlist_deny= YES)不能訪問FTP服務器

當在/etc/vsftpd.conf中設置了userlist_deny=NO時,僅僅容許/etc/vsftpd.user_list中指定的用戶訪問FTP服務器。 
通常要在/etc/vsftpd.conf中設置userlist_deny=NO,經過/etc/vsftpd.user_list嚴格控制FTP用戶。

配置基本的性能和安全選項 
//禁止匿名登錄 
anonymous_enable=NO (默認爲YES) 
 
//設置空閒的用戶會話的中斷時間 例以下面的配置: 
idle_session_timeout=600 
將在用戶會話空閒10分鐘後被中斷。  

//設置空閒的數據鏈接的的中斷時間 例以下面的配置: 
data_connection_timeout=120 
將在數據鏈接空閒2分鐘後被中斷。  

//設置客戶端空閒時的自動中斷和激活鏈接的時間 例以下面的配置: accept_timeout=60 connect_timeout=60 
將使客戶端空閒1分鐘後自動中斷鏈接,並在中斷1分鐘後自動激活鏈接  

//設置最大傳輸速率限制 例以下面的配置:(傳輸速率可根據實際狀況自行修改) local_max_rate=50000 anon_max_rate=30000 
將使本地用戶的最大傳輸速率爲50kbytes / sec,匿名用戶的 傳輸速率爲30 kbytes / sec。
  
//設置客戶端鏈接時的端口範圍 例以下面的配置: pasv_min_port=50000 pasv_max_port=60000 
將使客戶端鏈接時的端口範圍在50000和60000之間。這提升了系統的安全性 

截短歷史命令 "~/.bash_history"文件,這個文件中保存着之前使用的命令列表。截短這個文件可使您之前執行過的命令暴露在別人眼光下的機會減少.
(在您的命令中極可能包括象密碼信息這樣的保密信息)。經過編輯/etc/profile的下面兩項能夠作到這一點: 
HISTFILESIZE=20 

經過下面的措施能夠防止任何人均可以su爲root: 
編輯su文件(vi /etc/pam.d/su)在文件的頭部加入下面兩行: 
auth sufficient /lib/security/pam_rootok.so debug 
auth required /lib/security/pam_wheel.so group=wheel 

9)使用DenyHosts阻止SSH暴力破解(同時能夠保護FTP)
當你的Linux服務器暴露在互聯網之中,該服務器將會遭到互聯網上的掃描軟件進行掃描,並試圖猜想SSH登陸口令,不可避免的有病毒或無聊的人會嘗試攻擊SSH。。你會發現,天天會有多條SSH登陸失敗紀錄。那些掃描工具將對你的服務器構成威脅,你必須設置複雜登陸口令,並將嘗試屢次登陸失敗的IP給阻止掉,讓其在一段時間內不能訪問該服務器。DenyHosts是Python語言寫的一個程序,用DenyHosts能夠阻止試圖猜想SSH登陸口令,它會分析/var/log/secure等日誌文件,當發現有重複的IP在進行屢次SSH密碼嘗試時就會記錄IP到/etc/hosts.deny文件,從而達到自動屏蔽該IP的目的。

下載DenyHosts-2.6.tar.gz安裝包如下是安裝記錄:
[root@localhost ~]# wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz
[root@localhost ~]# tar -zxvf DenyHosts-2.6.tar.gz
[root@localhost ~]# cd DenyHosts-2.6
[root@localhost DenyHosts-2.6]# python setup.py install

默認是安裝到/usr/share/denyhosts/目錄的。 
[root@localhost DenyHosts-2.6]# cd /usr/share/denyhosts/ 
[root@localhost denyhosts]# cp denyhosts.cfg-dist denyhosts.cfg 
[root@localhost denyhosts]# cp daemon-control-dist daemon-control 
[root@localhost denyhosts]# vim daemon-control 
DENYHOSTS_BIN   = "/usr/bin/denyhosts.py" 
DENYHOSTS_LOCK  = "/var/lock/subsys/denyhosts" 
DENYHOSTS_CFG   = "/usr/share/denyhosts/denyhosts.cfg" 

[root@localhost denyhosts]# chown root daemon-control 
[root@localhost denyhosts]# chmod 700 daemon-control

完了以後執行daemon-contron start就能夠了(重啓是restart)。 
[root@localhost denyhosts]# ./daemon-control start                 //或者執行"service denyhosts start"命令來啓動

若是要使DenyHosts每次重起後自動啓動還需作以下設置: 
[root@localhost denyhosts]# cd /etc/init.d 
[root@localhost denyhosts]# ln -s /usr/share/denyhosts/daemon-control denyhosts 
[root@localhost denyhosts]# chkconfig --add denyhosts 
[root@localhost denyhosts]# chkconfig --level 2345 denyhosts on 

或者修改/etc/rc.local文件: 
[root@localhost denyhosts]# vim /etc/rc.local      //加入下面這條命令 
/usr/share/denyhosts/daemon-control start 

DenyHosts配置文件說明: 
[root@localhost denyhosts]# vim denyhosts.cfg 
#這裏根據本身須要進行相應的配置  
SECURE_LOG = /var/log/secure 
#sshd日誌文件,它是根據這個文件來判斷的,不一樣的操做系統,文件名稍有不一樣。  
HOSTS_DENY = /etc/hosts.deny   #控制用戶登錄的文件  
PURGE_DENY = 5m 
#過多久後清除已經禁止的  
BLOCK_SERVICE = sshd 
BLOCK_SERVICE = vsftpd     #(若是啓用FTP服務,務必加上這一行) ,禁止的服務名  
DENY_THRESHOLD_INVALID = 1    #容許無效用戶失敗的次數

DENY_THRESHOLD_VALID = 10    #容許普通用戶登錄失敗的次數  
DENY_THRESHOLD_ROOT = 5    #容許root登錄失敗的次數  
HOSTNAME_LOOKUP=NO    #是否作域名反解  
DAEMON_LOG = /var/log/denyhosts    #DenyHosts的日誌文件

DenyHosts防SSH暴力破解測試:

192.168.10.200服務器按照上面步驟安裝並啓動了DenyHosts
如今在另外一臺服務器192.168.10.205上用ssh工具鏈接192.168.10.200,用錯誤的密碼嘗試幾回:
[root@host-205 ~]# ssh -p22 root@192.168.10.200
root@192.168.10.200's password: 
Permission denied, please try again.
root@192.168.10.200's password: 
Permission denied, please try again.
root@192.168.10.200's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@host-205 ~]# ssh -p22 root@192.168.10.200
root@192.168.10.200's password: 
Permission denied, please try again.
root@192.168.10.200's password: 
Permission denied, please try again.
root@192.168.10.200's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@host-205 ~]# ssh -p22 root@192.168.10.200
ssh_exchange_identification: Connection closed by remote host

[root@host-205 ~]# ssh -p22 root@192.168.10.200
ssh_exchange_identification: Connection closed by remote host

發如今192.168.10.205上使用錯誤密碼去ssh鏈接192.168.10.200機器失敗多數後,就是禁止205這臺機器去ssh鏈接200機器了。

查看192.168.10.200機器的/var/log/denyhosts,能夠發現以下信息:
[root@host-200 ~]# tail -f /var/log/denyhosts
......
2018-02-12 00:59:59,320 - denyhosts   : INFO     monitoring log: /var/log/secure
2018-02-12 00:59:59,320 - denyhosts   : INFO     sync_time: 3600
2018-02-12 00:59:59,320 - denyhosts   : INFO     purging of /etc/hosts.deny is disabled
2018-02-12 00:59:59,320 - denyhosts   : INFO     denyhosts synchronization disabled
2018-02-12 01:16:00,203 - denyhosts   : INFO     new denied hosts: ['192.168.10.205']

同時,/etc/hosts.deny中也會加入192.168.10.205,即禁止這臺機器使用ssh來鏈接:
[root@host-200 ~]# cat  /etc/hosts.deny
#
# hosts.deny  This file contains access rules which are used to
#   deny connections to network services that either use
#   the tcp_wrappers library or that have been
#   started through a tcp_wrappers-enabled xinetd.
#
#   The rules in this file can also be set up in
#   /etc/hosts.allow with a 'deny' option instead.
#
#   See 'man 5 hosts_options' and 'man 5 hosts_access'
#   for information on rule syntax.
#   See 'man tcpd' for information on tcp_wrappers
#
sshd: 192.168.10.205

若要手動容許該IP經過ssh訪問,請把對應的IP從/etc/hosts.deny中刪掉,而後,重啓denyhosts服務便可。

除了上面源碼方式安裝,還能夠採用yum安裝DenyHosts

1)yum 安裝 denyhosts
[root@denyhosts ~]# yum search denyhosts
[root@denyhosts ~]# yum install denyhosts
[root@denyhosts ~]# rpm -ql denyhosts

2)denyhosts幾個比較重要的目錄
該目錄中主要存放計劃任務,日誌壓縮 以及 chkconfig 和 service 啓動的文檔
/etc/cron.d/denyhosts
/etc/denyhosts.conf
/etc/logrotate.d/denyhosts
/etc/rc.d/init.d/denyhosts
/etc/sysconfig/denyhosts

該目錄中主要存放 denyhosts 所拒絕及容許的一些主機信息
/var/lib/denyhosts/allowed-hosts
/var/lib/denyhosts/allowed-warned-hosts
/var/lib/denyhosts/hosts
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/offset
/var/lib/denyhosts/suspicious-logins
/var/lib/denyhosts/sync-hosts
/var/lib/denyhosts/users-hosts
/var/lib/denyhosts/users-invalid
/var/lib/denyhosts/users-valid
/var/log/denyhosts

3)來看看 /etc/denyhosts.conf 中的配置參數
[root@denyhosts ~]# egrep -v "(^$|^#)" /etc/denyhosts.conf 
############ THESE SETTINGS ARE REQUIRED ############
# 系統安全日誌文件,主要獲取ssh信息
SECURE_LOG = /var/log/secure

# 拒絕寫入IP文件 hosts.deny
HOSTS_DENY = /etc/hosts.deny

# 過多久後清除已經禁止的,其中w表明周,d表明天,h表明小時,s表明秒,m表明分鐘
PURGE_DENY = 4w

# denyhosts所要阻止的服務名稱
BLOCK_SERVICE  = sshd

# 容許無效用戶登陸失敗的次數
DENY_THRESHOLD_INVALID = 3

# 容許普通用戶登陸失敗的次數
DENY_THRESHOLD_VALID = 10

# 容許ROOT用戶登陸失敗的次數
DENY_THRESHOLD_ROOT = 6

# 設定 deny host 寫入到該資料夾
DENY_THRESHOLD_RESTRICTED = 1

# 將deny的host或ip紀錄到Work_dir中 
WORK_DIR = /var/lib/denyhosts

SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES

# 是否作域名反解
HOSTNAME_LOOKUP=YES

# 將DenyHOts啓動的pid紀錄到LOCK_FILE中,已確保服務正確啓動,防止同時啓動多個服務
LOCK_FILE = /var/lock/subsys/denyhosts

############ THESE SETTINGS ARE OPTIONAL ############
# 管理員Mail地址(能夠不用設置)
ADMIN_EMAIL = root
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]

# 有效用戶登陸失敗計數歸零的時間
AGE_RESET_VALID=5d

# ROOT用戶登陸失敗計數歸零的時間
AGE_RESET_ROOT=25d

# 用戶的失敗登陸計數重置爲0的時間(/usr/share/denyhosts/restricted-usernames)
AGE_RESET_RESTRICTED=25d

# 無效用戶登陸失敗計數歸零的時間
AGE_RESET_INVALID=10d

   ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########
# denyhosts log文件
DAEMON_LOG = /var/log/denyhosts

DAEMON_SLEEP = 30s

# 該項與PURGE_DENY 設置成同樣,也是清除hosts.deniedssh 用戶的時間
DAEMON_PURGE = 1h

4)啓動 denyhosts 服務並查看狀態
[root@denyhosts ~]# service denyhosts status
denyhosts.py is stopped
[root@denyhosts ~]# service denyhosts start
Starting denyhosts:                                        [  OK  ]
[root@denyhosts ~]# service denyhosts status
denyhosts.py (pid  19784) is running...

5)經過測試 invalid、valid、root 等用戶設置不一樣的ssh鏈接失敗次數,來測試 denyhosts。

這裏只測試使用系統中不存在的用戶進行失敗登陸嘗試~
這裏容許 invalid 用戶只能失敗4次、ROOT 用戶失敗7次、valid用戶失敗10次
DENY_THRESHOLD_INVALID = 4 
DENY_THRESHOLD_VALID = 10 
DENY_THRESHOLD_ROOT = 7

測試:
在客戶機(192.168.10.204)上使用一個沒有建立的用戶失敗登陸denyhosts機器(192.168.10.202)四次
[root@centos6-06 ~]# ssh -p22 haha@192.168.10.202
.......
屢次嘗試登錄失敗後,就會發現客戶機就不能使用ssh登錄denyhosts服務器了
[root@centos6-06 ~]# ssh -p22 haha@192.168.10.202   
ssh_exchange_identification: Connection closed by remote host

查看denyhosts服務器的/etc/hosts.deny
[root@denyhosts ~]# echo -n ""  > /var/log/secure
[root@denyhosts ~]# tail -f /var/log/secure
Feb 12 01:47:14 ceph-node3 sshd[19885]: refused connect from 192.168.10.204 (192.168.10.204)
[root@denyhosts ~]# tail -f /etc/hosts.deny
#
#   The rules in this file can also be set up in
#   /etc/hosts.allow with a 'deny' option instead.
#
#   See 'man 5 hosts_options' and 'man 5 hosts_access'
#   for information on rule syntax.
#   See 'man tcpd' for information on tcp_wrappers
#
# DenyHosts: Mon Feb 12 01:44:48 2018 | sshd: 192.168.10.204
sshd: 192.168.10.204

/var/log/secure 日誌信息:
[root@denyhosts ~]# tail -f /var/log/secure
.......
Feb 12 01:48:15 ceph-node3 sshd[19892]: Invalid user haha from 192.168.10.204
Feb 12 01:48:15 ceph-node3 sshd[19893]: input_userauth_request: invalid user haha
Feb 12 01:48:17 ceph-node3 sshd[19892]: pam_unix(sshd:auth): check pass; user unknown
Feb 12 01:48:17 ceph-node3 sshd[19892]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.204 
Feb 12 01:48:17 ceph-node3 sshd[19892]: pam_succeed_if(sshd:auth): error retrieving information about user haha
Feb 12 01:48:18 ceph-node3 sshd[19892]: Failed password for invalid user haha from 192.168.10.204 port 60196 ssh2
Feb 12 01:48:19 ceph-node3 sshd[19892]: pam_unix(sshd:auth): check pass; user unknown
Feb 12 01:48:19 ceph-node3 sshd[19892]: pam_succeed_if(sshd:auth): error retrieving information about user haha
Feb 12 01:48:22 ceph-node3 sshd[19892]: Failed password for invalid user haha from 192.168.10.204 port 60196 ssh2
Feb 12 01:48:23 ceph-node3 sshd[19892]: pam_unix(sshd:auth): check pass; user unknown
Feb 12 01:48:23 ceph-node3 sshd[19892]: pam_succeed_if(sshd:auth): error retrieving information about user haha
Feb 12 01:48:25 ceph-node3 sshd[19892]: Failed password for invalid user haha from 192.168.10.204 port 60196 ssh2
Feb 12 01:48:25 ceph-node3 sshd[19893]: Connection closed by 192.168.10.204
Feb 12 01:48:25 ceph-node3 sshd[19892]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.204 
Feb 12 01:48:27 ceph-node3 sshd[19899]: refused connect from 192.168.10.204 (192.168.10.204)

關於DenyHosts中清除及添加可信主機記錄

DenyHosts會讀取多個記錄確保沒有漏網之魚,若是想刪除一個或多個已經禁止的主機IP,僅清空/var/log/secure和/etc/hosts.deny並不能完美解除已被鎖定的IP, 
很快就會被DenyHosts從新鎖定,這也是DenyHosts強大的地方!!須要進入 /var/lib/denyhosts 目錄,進入如下操做:

針對源碼方式安裝DenyHosts後的解鎖ip的措施:
1)中止DenyHosts服務:service denyhosts stop
2)在下列文件中找到想解鎖的IP記錄並刪除(一般只修改前兩個文件就OK了)。不推薦這種方法,由於用vim在下面的文件中找到解鎖IP是很是費時費力的.
/var/log/secure              
/etc/hosts.deny               
/usr/share/denyhosts/data/hosts
/usr/share/denyhosts/data/hosts-restricted
/usr/share/denyhosts/data/hosts-root
/usr/share/denyhosts/data/hosts-valid

若是不在意上面的記錄文件, 推薦清空上面幾個Linux系統日誌而後從新開啓DennyHosts. 清空這些Linux系統日誌不會影響任何功能. 
若是你以爲這幾個文件記錄對你很重要(真的?), 請不要隨意清空, 老老實實使用上面的方法.
清空上面幾個Linux系統日誌很簡單, 在SSH中敲入下面的命令:
cat /dev/null > /var/log/secure
cat /dev/null > /etc/hosts.deny
cat /dev/null > /usr/share/denyhosts/data/hosts
cat /dev/null > /usr/share/denyhosts/data/hosts-restricted
cat /dev/null > /usr/share/denyhosts/data/hosts-root
cat /dev/null > /usr/share/denyhosts/data/hosts-valid
cat /dev/null > /usr/share/denyhosts/data/offset
cat /dev/null > /usr/share/denyhosts/data/suspicious-logins
cat /dev/null > /usr/share/denyhosts/data/users-hosts
cat /dev/null > /usr/share/denyhosts/data/users-invalid
cat /dev/null > /usr/share/denyhosts/data/users-valid

把日誌文件所有清空!要注意的是,清空後必定要 
# service rsyslog restart 重啓日誌記數器!
由於若是你不重啓服務,你會發現secure日誌文件會中止記錄一切活動了!那麼denyhosts也就無效了

而後從新開啓Deny Hosts
# service denyhosts start

最好重啓ssh服務和iptables防火牆(若是打開的話)
#service sshd restart
#service iptables restart

針對yum方式安裝DenyHosts後的解鎖ip的措施:
1)中止DenyHosts服務:service denyhosts stop
2)在 /etc/hosts.deny 中刪除你想取消的主機IP
3)編輯 DenyHosts 工做目錄的全部文件 /var/lib/denyhosts,而且刪除已被添加的主機信息。
/var/lib/denyhosts/hosts 
/var/lib/denyhosts/hosts-restricted 
/var/lib/denyhosts/hosts-root 
/var/lib/denyhosts/hosts-valid 
/var/lib/denyhosts/users-hosts 
/var/lib/denyhosts/users-invalid 
/var/lib/denyhosts/users-valid
4)添加你想容許的主機IP地址到 
/var/lib/denyhosts/allowed-hosts
5)啓動DenyHosts服務: service denyhosts start

經過郵件接收 denyhosts 所發送的信息

1)安裝sendmail郵件服務,請參考:http://www.cnblogs.com/kevingrace/p/6143977.html

2)denyhosts機器的主機名配置
[root@ceph-node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.202 ceph-node1.localdomain ceph-node1

[root@ceph-node1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ceph-node1

2)修改 /etc/denyhosts.conf文件中的mail配置,並重denyhosts 服務
[root@ceph-node1 ~]# cat /etc/denyhosts.conf
......
# 管理員Mail地址
ADMIN_EMAIL = wangshibo@kevin.com                     //如有ip被禁用發郵件通知
SMTP_HOST = ceph-node1                                //這個是mail機器的主機名。這裏我是在denyhosts本機部署的mail服務
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>              //郵件的發送發
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]      //郵件主題

[root@ceph-node1 ~]# /etc/init.d/denyhosts restart
Stopping denyhosts:                                        [  OK  ]
Starting denyhosts:                                        [  OK  ]

3)在客戶機(192.168.10.210)上經過ssh鏈接denyhosts部署機(192.168.10.202),ssh鏈接失敗次數到達denyhosts設置的失敗次數後,
192.168.10.210的ip就會被denyhosts機器自動屏幕,這時候就會觸發郵件發信動做。

注意:這裏僅僅是在denyhosts機器剛發現客戶機的ip被禁用的時候發送郵件,當已經禁用後,再次ssh鏈接失敗後就不會重複發送郵件了,及郵件只會發送一次!

[root@zabbix-server ~]# ssh -p22 root@192.168.10.202
The authenticity of host '192.168.10.202 (192.168.10.202)' can't be established.
RSA key fingerprint is fd:82:c3:2d:f1:3e:0f:69:39:bf:7e:f7:82:59:a3:cb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.202' (RSA) to the list of known hosts.
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@zabbix-server ~]# ssh -p22 root@192.168.10.202
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@zabbix-server ~]# ssh -p22 root@192.168.10.202
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@zabbix-server ~]# ssh -p22 root@192.168.10.202
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied, please try again.
root@192.168.10.202's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@zabbix-server ~]# ssh -p22 root@192.168.10.202
ssh_exchange_identification: Connection closed by remote host

此時,客戶機192.168.10.210的ip已經被denyhosts機器那邊給自動屏蔽掉了,也是在這個時候,通知郵件發出去了。
[root@ceph-node1 ~]# cat /etc/hosts.deny
.......
# DenyHosts: Mon Feb 12 04:34:10 2018 | sshd: 192.168.10.210
sshd: 192.168.10.210

相關文章
相關標籤/搜索