1. 程式人生 > >Iptables構建ssh安全一例

Iptables構建ssh安全一例

iptables制定ssh安全一例

這兩天對iptables這塊做溫習,受其他網友的啟發,發現recent這個模塊在線上的環境做ssh防護還是挺受用的。

recent的使用實際也很簡單,咱們先來看看其各個常用的參數

--name #設定列表名稱,默認DEFAULT。
--rsource #源地址,此為默認。
--rdest #目的地址
--seconds #指定時間內
--hitcount #命中次數
--set #將地址添加進列表,並更新信息,包含地址加入的時間戳。
--rcheck #檢查地址是否在列表,以第一個匹配開始計算時間。


--update #和rcheck類似,以最後一個匹配計算時間。
--remove #在列表裏刪除相應地址,後跟列表名稱及地址。


ok,廢話不多說,咱們直接以實例來看下相應的效果。

一.圖解

1.服務器端進行recent模塊規則定義

技術分享

(1). 指定一個基於recent的規則。

iptables -t filter -A INPUT -p icmp --icmp-type 8 -m length --length 128 -m recent --set --name SSH_ALLOW -j ACCEPT

###制定一個規則,當一個請求是基於icmp協議且其長度是128的請求時會將“source-ip”放入到 ###--name所指定的規則容器中。

(2). 將ssh進行recent規則認證

iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent ! --rcheck --name SSH_ALLOW --seconds 15 -j REJECT

### 使用--rcheck對ssh的新連接進行認證,即會將發起請求的source-ip與--name容器中的Ip進行比 ###對,如果存在返回True,則在--seconds所定義的時間內(單位秒)允許ssh登陸連接


2.在客戶端未實現recent認證的情況下,直接telnet ssh端口顯示失敗;隨後借助ping進行recent模塊的icmp認證

技術分享

註:本處ping指定-l(長度)為100 是由於包頭中 ip頭部占用了20個字節,而icmp包頭占用了8個字節。

3.再次telnet ssh端口,已經可以正常接入

技術分享


二。優點

(1).隱藏ssh端口,只有當滿足特定條件,並且在一定時間內才允許ssh操作

(2).不需要限定特定的source-ip地址。

Iptables構建ssh安全一例