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
これでしばらく様子を見てみる。