Linux 限制IP——/etc/hosts.allow和/etc/hosts.deny文件【轉】

就像是

  • 限制特定IP來訪

想法

  • 看起來一般的作法是利用hosts的拒絕設置,而它的設置是針對某一個具體的進程,具體的服務,在這裏就是sshd了
  • 看起來設置一個網段使用的是
x.x.x.0/24
後面加個24真是有趣,是保持全部的可能性嗎
  • 上面的方法看起來是子網匹配的方式
  • 若是更簡單一些看起來能夠直接保留前面一部分去
131.155. 能夠匹配後面是任何玩意的玩意,好比131.155.1.1
  • 除了做爲sshd限制,它看起來能限制一切玩意呢,這個就像是更特殊一點的hosts,只是hosts只是解析域名而已

經驗

  • 生效是當即發生的,可是對已經打開的shell無效,因此一邊留着shell設置,一邊再開shell
  • 它的語法頗有趣,最後一部分看起來能夠要也能夠不要
192.168.0.0/255.255.255.0:deny
  • 在每一條裏,[,]是分割多個ip,而[:]是分割它的處理
  • 噢見鬼的[255.255.255.0]看起來指的是局域網
  • 看起來all大小小寫均可以
  • 它的工做是實時的,修改後就生效了

困擾

  • allow和deny的優先是怎樣的呢

一個有效的IP段工做

  • 這樣看起來工做了
[root@li576-236 ~]# cat /etc/hosts.allow # # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. #   # for the shell sshd:11.8.,12.1.,18.3.:allow

有趣

  • 看起來.0這個ip是不存在的,它看起來是虛擬的
192.168.1.0

首次嘗試

限制sshd

hosts.deny

  • 直接進入編輯
vim /etc/hosts.deny
  • 加入這個玩意,拒絕一切
# no sshd
sshd : ALL

hosts.allow

  • 進入編輯
vim /etc/hosts.allow
  • 試試一個0.0的段落-遺憾沒法登錄!被屏蔽
# for the shell - 它什麼也沒作到
sshd : 101.11.0.0/24
  • 若是所有IP匹配呢?它能夠登錄,這說明了它工做了
# for the shell - 它能夠準確的容許這個ip,24起到做用了
sshd : 101.11.10.1/24
  • 那麼後面部分都去掉呢?-它工做了!
# for the shell - 它能夠容許這個ip段!哇喔
sshd : 101.11.
別的狀況
  • 這裏注意有個詭異的狀況!-若是省略最後的部分的話,必須徹底避開空格!空格也會做爲正則匹配的一部分
  • 在這個基礎上加個24的玩意呢?-它不工做
# for the shell - 它不能容許這個ip段,失敗
sshd : 101.11./24
  • 後面加個標籤什麼的呢?-它也工做
# for the shell - 後面的標籤看起來不礙事 
sshd : 101.11.: allow
  • 若是是任意的標籤呢?-不,它不幹了
# for the shell - 它如今什麼也不幹了,不認ip了- 可能有正則問題
sshd : 101.11. : hello
  • 若是再補回中間的allow呢?-不也不幹了
# for the shell - 依舊的啥也不幹- 可能有正則問題
sshd : 101.11.:allow : hello
  • 加上逗號,多個ip段呢?此次第二個沒工做,可能少了.的緣由
# for the shell - 逗號,此次工只工做了第一個,可能少了第二個的點-值得再嘗試
sshd : 101.11.,103.22:allow : hello
  • 帶上逗號,而後每一個都有最後的點,它工做了!
# for the shell - 逗號,所有工做了!必須最後帶點,並且看起來空格也不要依賴(最好了)
sshd:101.11.,103.22.:allow

想法

  • windows裏看起來也有這個文件呢

音頻想法


  • sshd的限制看起來並不複雜,它經過一個host的限制文件等命(命令?)於這樣的一個設置,來完成它的一大部分,而接着你能夠對它進行絕交(拒絕交談)設置,而與此有趣的是此項設置也能用在pptp的服務,由於看起來它限制的是一個hosts端的玩意(系統底層網絡服務?)
->....hosts.allow?目標..mac看起來仍是保留了它...win也拐彎的有了它..(c:/windows/driver/etc/hosts?)

見識

linux下的/etc/hosts.allow和/etc/hosts.deny文件_老遊愛你_百度空間 沿途見識[1]

linux下的/etc/hosts.allow和/etc/hosts.deny文件
/etc/hosts.allow和/etc/hosts.deny這兩個文件是tcpd服務器的配置文件,tcpd服務器能夠控制外部IP對本機服務的訪問。這兩個配置文件的格式以下:linux

  1. 服務進程名:主機列表:當規則匹配時可選的命令操做server_name:hosts-list[:command]

/etc/hosts.allow控制能夠訪問本機的IP地址,/etc/hosts.deny控制禁止訪問本機的IP。若是兩個文件的配置有衝突,以/etc/hosts.deny爲準。下面是一個/etc/hosts.allow的示例:
ALL:127.0.0.1 #容許本機訪問本機全部服務進程smbd:192.168.0.0/255.255.255.0 #容許192.168.0.網段的IP訪問smbd服務
ALL關鍵字匹配全部狀況,EXCEPT匹配除了某些項以外的狀況,PARANOID匹配你想控制的IP地址和它的域名不匹配時(域名假裝)的狀況。
今天用來禁止一些惡意的ip地址登錄到服務器。由於遠程登錄須要sshd進程,因此:
修改步驟以下:
1:修改「/etc/hosts.allow」文件,在最下面添加一行:
sshd:192.168.100.0/255.255.255.0        #容許局域網內全部機器訪問服務器上的sshd進程
sshd:60.28.160.244                                  #容許外網的60.28.160.244訪問這個服務器上的sshd進程
2:修改「/etc/hosts.deny」文件,在最後一行添加:
sshd:all                                                    #禁止全部
注: 1):修改前,請先修改「/etc/hosts.allow」文件,而且修改完畢以後切勿當即退出,應該作登錄測試
          2):文件修改後,當即生效,可是對於已經運行的程序則不生效。shell

 

鳥哥的 Linux 私房菜 -- 移除不要的服務 沿途見識[2]

察看是否具備 tcp_wrappers 套件:

要使連線電腦的設定啟動,以使用 /etc/hosts.allow 與 /etc/hosts.deny 檔案的話,須要這一套軟體『tcp_wrappers』,要察看你的 Linux 主機內是否有這一套軟體的話,請使用:
 
rpm -q tcp_wrappers 或者 rpm -qa | grep tcp

若是有這套軟體的話,天然就會顯示出來,若是沒有的話,請放入你的 Linux 光碟片,將 rpm 檔案裝上去吧!
 

設定允許登入的電腦(/etc/hosts.allow):

其實很簡單,只要修改 /etc/hosts.allow(若是沒有此檔,請自行以 vi 編輯)這這檔案便可,例如,我家裡的電腦中,個人內部網域(區域網路)是 192.168.1.0/255.255.255.0,這樣的網域表明電腦 IP 在於 192.168.1.1 - 192.168.1.255 之間!因此,我就將 /etc/hosts.allow 這個檔案的內容設定成為如此:
 
in.telnetd: 192.168.1.0/255.255.255.0, .ncku.edu.tw : Allow

加入 .ncku.edu.tw 的緣由是因為我人在成大,因此加入此行的話,可使我在成大連上我家裡的 Linux 主機。
 

設定不許登入的電腦(/etc/hosts.deny):

由於正常的情況下, Linux 會先判斷 hosts.allow 這個檔案,這個檔案中的電腦若是設定為可連線的話,則 hosts.deny 就不會被使用,所以,設定好了 hosts.allow 之後,將 /etc/hosts.deny 設定為『全部電腦都不許登入』的情況,以下所示:
 
in.telnetd: ALL : Deny

這樣一來,基本的防護措施就有了(不用從新開機就自動執行了!)。express

 

hosts.allow - Linux Command - Unix Command 沿途見識[3]

PATTERNS

The access control language implements the following patterns:vim

  • A string that begins with a `.' character. A host name is matched if the last components of its name match the specified pattern. For example, the pattern `.tue.nl' matches the host name `wzv.win.tue.nl'.
  • A string that ends with a `.' character. A host address is matched if its first numeric fields match the given string. For example, the pattern `131.155.' matches the address of (almost) every host on the Eindhoven University network (131.155.x.x).
  • A string that begins with an `@' character is treated as an NIS (formerly YP) netgroup name. A host name is matched if it is a host member of the specified netgroup. Netgroup matches are not supported for daemon process names or for client user names.
  • An expression of the form `n.n.n.n/m.m.m.m' is interpreted as a `net/mask' pair. An IPv4 host address is matched if `net' is equal to the bitwise AND of the address and the `mask'. For example, the net/mask pattern `131.155.72.0/255.255.254.0' matches every address in the range `131.155.72.0' through `131.155.73.255'.


SSH限制ip登錄 - Mr. Kang - 51CTO技術博客 沿途見識[4]

在/etc/hosts.allow輸入  
  (其中192.168.10.88是你要容許登錄ssh的ip,或者是一個網段192.168.10.0/24)  
  sshd:192.168.10.88:allow  
   
  在/etc/hosts.deny輸入(表示除了上面容許的,其餘的ip   都拒絕登錄ssh)  
  sshd:ALL
本文將講述一些能夠增強Unix,Linx服務器SSH訪問的安全性的一些措施。
我我的極力很是推薦的措施是:
1.限制性SSH訪問,將sshd綁定到一個ip地址,和容許全部ip地址是徹底不一樣的安全。
2.將sshd默認端口22改成其它端口。
步驟以下:
前提:
SSH 客戶端 - 我推薦使用 putty (搜索google,你會很快找到它)
SSH 服務已安裝
第一步: 以root身份SSH登陸到服務器。
第二步:在命令提示符下輸入:pico -w /etc/ssh/sshd_config
第三步:向下翻頁,在這個文件中找到像這樣的區域:windows

  1. Port 22
  2. Protocol 2, 1
  3. ListenAddress 0.0.0.0
  4. ListenAddress ::

第四步:取消註釋符號#,並修改
端口 #Port 22
像這樣修改它
Port 5678
(選擇你未被使用的4到5位數字組成的端口(49151是最高端口數))
協議 #Protocol 2, 1
改成這樣:
Protocol 2
監聽地址 #ListenAddress 0.0.0.0
改成這樣:
ListenAddress 125.121.123.15(這裏的地址改成你本身訪問服務器經常使用的客戶端ip地址)
第五步 若是你想禁用直接用root登陸,向下翻知道你看見安全

  1. PermitRootLogin yes

去掉前面的註釋符號#,修改成
PermitRootLogin no
按住Ctrl鍵保存修改,在按Ctrl + x組合鍵退出。
第六步 在命令提示符下輸入: /etc/rc.d/init.d/sshd restart
第七步 退出SSH,之後再登陸就必須使用新的端口號(如:49151),而且服務器限制只容許從一個指定的
IP地址(如:125.121.123.15)SSH登陸了。
注意事項:
若是修改後出現不能登陸或者其餘問題,你只須要爲服務器接上顯示器 或者 Telnet 到你的服務器,修改設置,而後再從新SSH登陸。Telnet 是一個很是不安全的協議,因此在你使用它以後最好是修改一下你的root密碼。
(the end)
 
或者
linux限制IP訪問ssh
 
在/etc/hosts.allow輸入  
(其中192.168.10.88是你要容許登錄ssh的ip,或者是一個網段192.168.10.0/24)  
sshd:192.168.10.88:allow  
   
在/etc/hosts.deny輸入(表示除了上面容許的,其餘的ip   都拒絕登錄ssh)  
sshd:ALL
 
更改端口
vi /etc/ssh/sshd_config
port 3333

最後一行加上ip
allowusers root@ip   ------------------容許某個ip用什麼賬戶登錄bash

轉自服務器

Linux 限制IP——/etc/hosts.allow和/etc/hosts.deny文件 - 生死看淡,不服就幹! - CSDN博客 https://blog.csdn.net/u013634961/article/details/39855543網絡

相關文章
相關標籤/搜索