ConoHa の CentOS8 nftablesで ipアドレス直指定でブラックリストを作成しアクセスをはじく
習慣化6日目
SSHしてくるIPアドレスをブラックリストではじきたい
下記ページでConoHa立ち上げ時に中国からのアクセス制限を実施していた。
しかし、しばらくしたら国内IPからのSSHを試みるアクセスが来るようになった。
これを nftables ではじくように設定する。
アクセス量に応じて遮断する方法もあると思うが、今回はIPアドレス直指定ではじくことにした。
対応方法
実施した内容がメモしていなかったのか、どこかにいってしまったのか、とにかく見つからないので、
過去の history を見ながら書き出した。
抜けている部分があるかもしれない。
コマンドのみ抜粋版
# cd /etc/nftables/ # cp -ip country_whitelist drop_iplist # cp -ip /etc/sysconfig/nftables.conf ~/BACKUP/nftables.conf.2020040701 # vi /etc/sysconfig/nftables.conf # diff -u BACKUP/nftables.conf.2020040701 /etc/sysconfig/nftables.conf # nft list ruleset > ~/BACKUP/before.2020060901 # at -l # echo "nft flush ruleset" | at now + 10min # at -l # systemctl status nftables.service # systemctl restart nftables # systemctl status nftables.service # nft list ruleset > ~/BACKUP/after.2020060901 # at -l # atrm 99 # tail -f /var/log/secure
実施内容
◆drop_iplistを作成 ============================== 以前作成した country_whitelist を複製して準備する # cd /etc/nftables/ # cp -ip country_whitelist drop_iplist ◆nftables.confをバックアップ ============================== # cp -ip /etc/sysconfig/nftables.conf ~/BACKUP/nftables.conf.2020040701 ◆nftables.confを編集 ============================== # vi /etc/sysconfig/nftables.conf # diff -u BACKUP/nftables.conf.2020040701 /etc/sysconfig/nftables.conf --- BACKUP/nftables.conf.2020040701 2020-03-16 07:44:34.086000000 +0900 +++ /etc/sysconfig/nftables.conf 2020-04-09 07:59:03.181000000 +0900 @@ -16,6 +16,7 @@ flush ruleset include "/etc/nftables/country_whitelist" +include "/etc/nftables/drop_iplist" table ip filter { @@ -23,6 +24,10 @@ type ipv4_addr; flags interval; elements = $country_whitelist } + set drop_ip { + type ipv4_addr; flags interval; + elements = $drop_iplist + } chain INPUT { type filter hook input priority 0; policy drop; @@ -31,6 +36,8 @@ ct state established,related counter accept + ip saddr @drop_ip drop + ct state new tcp dport 80 ip saddr @country_accept counter accept ct state new tcp dport 443 ip saddr @country_accept counter accept ct state new tcp dport 22 ip saddr @country_accept counter accept ◆変更前の設定を出力 ============================== # nft list ruleset > ~/BACKUP/before.2020060901 ◆10分後にnftablesが停止するように設定 ============================== 作業にミスがありログイン出来なくなった時のため # at -l # echo "nft flush ruleset" | at now + 10min # at -l ◆nftables再起動 ============================== # systemctl status nftables.service # systemctl restart nftables # systemctl status nftables.service ◆変更前後で差分を確認 ============================== # nft list ruleset > ~/BACKUP/after.2020060901 ◆問題なければatコマンドを削除しておく ============================== # at -l # atrm 99 数値は実施時ごとに異なる ◆しばらく経過観察 ============================== tail -f /var/log/secure
はじくIPアドレスを追加する
しばらくしたら、またSSHを試みるアドレスが増えていたので、アクセス不可対象に追加する。
コマンドのみ抜粋版
# cd /etc/nftables/ # cp -ip drop_iplist ~/BACKUP/drop_iplist.2020060901 # vi drop_iplist # diff -u ~/BACKUP/drop_iplist.2020060901 drop_iplist # nft list ruleset > ~/BACKUP/before.2020060901 # at -l # echo "nft flush ruleset" | at now + 10min # at -l # systemctl status nftables.service # systemctl restart nftables # systemctl status nftables.service # nft list ruleset > ~/BACKUP/after.2020060901 # diff -u ~/BACKUP/before.2020060901 ~/BACKUP/after.2020060901 # at -l # atrm 99 # at -l # tail -f /var/log/secure
実施内容
◆drop_iplistに対象のipアドレスを追加する ============================== # cd /etc/nftables/ # cp -ip drop_iplist ~/BACKUP/drop_iplist.2020060901 # vi drop_iplist # diff -u ~/BACKUP/drop_iplist.2020060901 drop_iplist --- /root/BACKUP/drop_iplist.2020060901 2020-04-09 07:48:15.177000000 +0900 +++ drop_iplist 2020-06-09 08:10:57.428000000 +0900 @@ -1,3 +1,5 @@ define drop_iplist = { 118.27.13.183, + 118.27.10.103, + 118.27.6.66, } ◆変更前の設定を出力 ============================== # nft list ruleset > ~/BACKUP/before.2020060901 ◆10分後にnftablesが停止するように設定 ============================== 作業にミスがありログイン出来なくなった時のため # at -l # echo "nft flush ruleset" | at now + 10min # at -l ◆nftables再起動 ============================== # systemctl status nftables.service # systemctl restart nftables # systemctl status nftables.service ◆変更前後で差分を確認 ============================== # nft list ruleset > ~/BACKUP/after.2020060901 # diff -u ~/BACKUP/before.2020060901 ~/BACKUP/after.2020060901 --- /root/BACKUP/before.2020060901 2020-06-09 07:55:20.186000000 +0900 +++ /root/BACKUP/after.2020060901 2020-06-09 08:13:24.567000000 +0900 @@ -1440,19 +1440,20 @@ set drop_ip { type ipv4_addr flags interval - elements = { 118.27.13.183 } + elements = { 118.27.6.66, 118.27.10.103, + 118.27.13.183 } } ◆問題なければatコマンドを削除しておく ============================== # at -l # atrm 99 数値は実施時ごとに異なる # at -l ◆しばらく経過観察 ============================== # tail -f /var/log/secure
これでしばらく様子を見てみる。