0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Centos Stream 9:firewall + ipsetでメールサーバーへのアクセス制御

Posted at
初めに

/var/log/maillogから「connect from unknown」の行の中のIPを取り出し、そのIPを firewall-cmd コマンドでドロップする..という方法です。日に一回、以下のシェルスクリプトを実行させることで段々と減少しているのが分かります。合わせて postfix におけるアクセス制御(smtpd_recipient_restrictions 等)と組み合わせて作動させれば効果は増すものと思われます。

ipset とは?

IPアドレスやネットワークアドレスをまとめてインポートすることができる、IPテーブルの補助的役割を持っています。
ipsetはfirewalldに統合されており firewall-cmd で操作可能です。よって、ipset に登録されているアドレスを、firewall-cmd で一括してブロックする事ができます。
ここのサイトを参考にしました。ipsetで大量のBlock指定を行う

手順

1: maillog より「connect from unknown」のある行のIPを抽出し/var/log/blacklist-file に書き込み( /var/log/blacklist-file は任意の場所.任意名)

#「connect from unknown」のある行のIPを抽出
  cat /var/log/maillog | grep 'connect from unknown' | egrep -o -e '\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\]' | sed -e 's/^\[\(.*\)\]$/\1/g' | sort | uniq -c | awk '$1 > 1 {print $2}' >> /var/log/blacklist-file
# 特定の IP を除く(ネットワーク内のクライアントのIP等)
  cat /var/log/blacklist-file | grep -v "192.168.*.*" >> /var/log/black_ma-file

2: blacklist-file(IP アドレス) を昇順にソート, 重複行を削除し、blacklist-fileを更新

  sort -V /var/log/black_ma-file > /var/log/blacklist-sort_file
  uniq /var/log/blacklist-sort_file /var/log/blacklist-sort_file2
  rm -f /var/log/blacklist-file
  cp -p /var/log/blacklist-sort_file2 /var/log/blacklist-file
# 不要ファイルを削除
  rm -f /var/log/black_ma-file
  rm -f /var/log/blacklist-sort_file
  rm -f /var/log/blacklist-sort_file2

3: firewalldを停止

  systemctl stop firewalld.service

4: 旧 ipset のデータを削除します

  ipset destroy
  rm -f /etc/firewalld/ipsets/BLACKLIST.xml
  rm -f /etc/firewalld/ipsets/BLACKLIST.xml.old
  rm -f /etc/firewalld/zones/drop.xml  

5: firewalldを再開

  systemctl start firewalld.service

6: ipsetを新たに作成(セット名をBLACKLISTとする)

  firewall-cmd --permanent --new-ipset=BLACKLIST --type=hash:net
# これにより /etc/firewalld/ipsets に blacklist.xmlファイルが作成される

7: 作成したipsetがruntime状態にて利用可能にする

   firewall-cmd --reload
   systemctl reload firewalld.service

8: 作成した blacklist-file を /etc/firewalld にコピー

  rm -f /etc/firewalld/blacklist-file
  cp -p /var/log/blacklist-file /etc/firewalld/blacklist-file 

9: blacklist-fileに記述されているipアドレスを以下の要領で BLACKLISTに登録する

 #旧 BLACKLIST 削除
   firewall-cmd --permanent --ipset=BLACKLIST --remove-entries-from-file=/etc/firewalld/blacklist-file
 #新 BLACKLIST 登録
   firewall-cmd --permanent --ipset=BLACKLIST --add-entries-from-file=/etc/firewalld/blacklist-file

10: ipset blacklistに登録されているアドレスを一括してブロック

    firewall-cmd --permanent --zone=drop --add-source=ipset:BLACKLIST

11: 以上の手続きを有効にするため、以下のコマンドでxmlの内容をreload

    firewall-cmd --reload
    systemctl restart firewalld.service 

12:整理して postfix dovecot を再起動

 cd /var/log
  : > maillog
  : > secure
  : > messages  
 cd

 postmap /etc/postfix/reject_sender
 postfix reload
 systemctl restart postfix dovecot   
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?