あなたは累計 |
|
人目の訪問者です。 |
Fedoraではインストールするとファイヤーウォールは自動的にインストールされているはずです。
ここではIPSetを使って弾きたいIPアドレスを指定する方法を記載します。
以前はdropゾーンにIPアドレスを登録していたのですが、数が多くなるとタイムアウトが発生し正常に動作しなくなります。
そこで何か方法は無いかと思い調べたところ、IPSetを使う事で対応できそうです。
IPv4の場合だけを記載します。
IPSetの作成
IPSetの名前をdrop-v4として登録します。
# firewall-cmd --permanent --new-ipset=drop-v4 --type=hash:net
弾きたいIPアドレスをサブネット込みでテキストファイルに保存します。
後述するFail2BanでBANされたIPアドレスの国を調べ日本以外の場合は全て弾くようにします。
ちなみに私は日本国内からの不正アクセスはIPアドレスの管理元に連絡して不正アクセスしているユーザーがいますよと連絡しています。
「58.246.96.36」から不正アクセスがあった場合
whoisコマンドを使用して調べます。
# whois 58.246.96.36
netnum: 58.246.0.0 - 58.247.255.255
netname: UNICOM-SH
descr: CHINA UNICOM Shanghai network
descr: China Unicom
country: CN
admin-c: CH1302-AP
tech-c: YR194-AP
mnt-by: APNIC-HM
mnt-lower: MAINT-CNCGROUP-SH
mnt-routes: MAINT-CNCGROUP-RR
status: ALLOCATED PORTABLE
こんな感じで表示されますので、「country」を探します。
「CN」と表示されているので中国からのアクセスだと分かります。
サブネットマスク込みで記述するのでサブネットマスクを調べます。
私はこちらを利用しています。
サブネットマスクが「/15」だと言うことが分かったので、「drop.txt」と言うファイルにアドレスを追加して行きます。
58.246.0.0/15
89.188.72.0/21
119.96.0.0/13
193.142.146.0/24
このように1行に1つずつアドレスを記載してやります。今現在450件くらい登録していますが、特に問題は発生していません。
「drop.txt」を登録するのですが、「drop.txt」にアドレスを追加する度に複数のコマンドを実行してやる必要があるのでシェルを組みました。
「drop.sh」と言う名前で作成しています。
#!/bin/bash
firewall-cmd --permanent --ipset=drop-v4 --add-entries-from-file=/share/drop.txt
firewall-cmd --permanent --zone=drop --remove-source ipset:drop-v4
firewall-cmd --permanent --zone=drop --add-source ipset:drop-v4
firewall-cmd --reload
「--add-entries-from-file=」は「drop.txt」を置いている場所に合わせてパスは変更してください。
問題無ければ「success」が4回表示されるはずです。
「dorp.txt」の中のアドレス範囲が被っているとエラーになりますので、その時はサブネットを調整して修正してください。