ipfw

今さらながら、やっとipfwを導入。きっかけは、DDoS攻撃を受けたこと。

導入のきっかけ

さくらからの通信遮断の連絡

さくらインターネットから、DoS攻撃を検知したため通信を遮断したとのメールがあった。

平素は弊社サービスをご利用いただき、誠にありがとうございます。
お客様ご利用の以下IPアドレスに対して、外部からDoSアタックを受けている状態を検知いたしました。
IPアドレス :xxx.xxx.xxx.xxx
この影響により、他のお客様のサービスが正常にご利用できない状態となる恐れがございましたため、上記のIPアドレス通信を遮断いたしました。
DoSアタック検知時刻 :2017年04月16日 21時14分48秒
通信遮断時刻 :2017年04月16日 21時15分16秒
現在は xxx.xxx.xxx.xxx に対しての通信の疎通性が取れない状態となっております。
通信遮断処理の解除につきましては、弊社にてDoSアタックの収束を確認後に実施いたします。設定の解除後に再度メールにてご報告差し上げます。
緊急の措置でございましたため、事後のご報告となりましたこと深くお詫び
申し上げます。

これは何とかしないと。

攻撃元は中国

さくらからのメールには、通信ログも添付されていた。それによると、攻撃対象のポートは443 (HTTPS)、攻撃元はすべて中国。

[2017年04月16日 21時15分16秒] (フィルタリング設定時間)

srcip               mbps     pps    asn  cc
1.1.1.1              2.1    4096     -1  AU
218.24.224.246       0.5     819   4837  CN
27.11.152.65         0.4     819   4837  CN
27.19.22.240         0.4     819   4134  CN
27.19.81.25          0.4     819   4134  CN
27.19.111.124        0.4     819   4134  CN
27.19.203.220        0.4     819   4134  CN
39.82.209.11         0.4     819   4837  CN
39.87.222.83         0.4     819   4837  CN
39.89.103.228        0.4     819   4837  CN
39.91.187.191        0.4     819   4837  CN
39.175.137.70        0.4     819  56041  CN
42.53.132.22         0.4     819   4837  CN
42.53.228.109        0.4     819   4837  CN
42.53.255.57         0.4     819   4837  CN
42.179.98.187        0.4     819   4837  CN
42.179.127.116       0.4     819   4837  CN
42.180.126.110       0.4     819   4837  CN
42.180.199.25        0.4     819   4837  CN
42.181.88.22         0.4     819   4837  CN
42.181.113.209       0.4     819   4837  CN
42.181.142.122       0.4     819   4837  CN
42.183.189.244       0.4     819   4837  CN
42.204.51.95         0.4     819   7641  CN
42.205.250.251       0.4     819   7641  CN
42.206.142.34        0.4     819   7641  CN
58.128.208.183       0.4     819   4847  CN
59.211.244.123       0.4     819     -1  CN
101.89.190.179       0.4     819   4812  CN
101.90.11.188        0.4     819   4812  CN
101.94.217.196       0.4     819   4812  CN
101.242.115.246      0.4     819  17429  CN
101.252.163.96       0.4     819   7497  CN
106.14.129.26        0.4     819  37963  CN
106.34.66.234        0.4     819   4134  CN
106.91.98.89         0.4     819   4134  CN
110.220.245.40       0.4     819   9394  CN
110.221.244.230      0.4     819   9394  CN
111.33.156.166       0.4     819  38019  CN
111.140.25.42        0.4     819   9394  CN
112.35.35.109        0.4     819   9808  CN
112.40.74.223        0.4     819   9808  CN
112.88.186.214       0.4     819  17816  CN
112.89.137.180       0.4     819  17816  CN
112.126.137.43       0.4     819  37963  CN
112.128.108.81       0.4     819   7641  CN
112.128.191.71       0.4     819   7641  CN
112.131.112.215      0.4     819   7641  CN
113.48.11.180        0.4     819   9389  CN
113.50.152.95        0.4     819   9389  CN
113.50.187.202       0.4     819   9389  CN
113.205.133.166      0.4     819   4837  CN
113.205.170.45       0.4     819   4837  CN
113.206.90.111       0.4     819   4837  CN
113.206.238.1        0.4     819   4837  CN
113.207.137.26       0.4     819   9929  CN
114.253.43.109       0.4     819   4808  CN
114.253.236.136      0.4     819   4808  CN
115.33.93.212        0.4     819  17964  CN
115.182.144.86       0.4     819   4847  CN
115.183.129.128      0.4     819   4847  CN
115.183.214.18       0.4     819   4847  CN
115.190.254.3        0.4     819   7497  CN
115.191.229.35       0.4     819   7497  CN
116.76.94.122        0.4     819  17962  CN
116.77.62.58         0.4     819  17962  CN
116.153.4.225        0.4     819     -1  CN
117.114.17.34        0.4     819   4847  CN
117.114.20.116       0.4     819   4847  CN
117.114.39.251       0.4     819   4847  CN
117.114.212.85       0.4     819   4847  CN
117.116.142.114      0.4     819   4847  CN
118.133.46.186       0.4     819   9812  CN
118.134.127.24       0.4     819   9812  CN
118.135.2.207        0.4     819   9812  CN
119.33.1.167         0.4     819  17622  CN
119.33.24.219        0.4     819  17622  CN
119.33.130.172       0.4     819  17622  CN
119.34.31.79         0.4     819  17622  CN
119.34.52.254        0.4     819  17622  CN
119.118.172.2        0.4     819   4837  CN
119.119.63.122       0.4     819   4837  CN
120.76.54.2          0.4     819  37963  CN
120.77.11.139        0.4     819  37963  CN
120.77.79.240        0.4     819  37963  CN
120.77.106.24        0.4     819  37963  CN
120.78.184.110       0.4     819  37963  CN
120.232.85.17        0.4     819   9808  CN
121.38.58.203        0.4     819   9389  CN
121.39.46.76         0.4     819   9389  CN
125.97.139.162       0.4     819   9814  CN
139.226.54.89        0.4     819  17621  CN
171.46.209.198       0.4     819     -1  CN
171.85.170.111       0.4     819   4847  CN
171.209.78.127       0.4     819   4134  CN
175.47.144.212       0.4     819  17968  CN
180.163.168.16       0.4     819   4812  CN
183.85.232.114       0.4     819   4808  CN
183.172.51.33        0.4     819   4538  CN
183.172.112.215      0.4     819   4538  CN
(上位100件のみ表示)

proto  dstport     length     mbps      pps
icmp         1      ~  99      0.5      819
tcp         80      ~  99      0.8     1638
tcp        443      ~  99     47.0    91750

proto  srcport     length     mbps      pps
icmp         5      ~  99      0.5      819
tcp        908      ~  99      0.4      819
tcp       1966      ~  99      0.4      819
tcp       2458      ~  99      0.4      819
tcp       3774      ~  99      0.4      819
tcp       4047      ~  99      0.4      819
tcp       4956      ~  99      0.4      819
tcp       5582      ~  99      0.4      819
tcp       5840      ~  99      0.4      819
tcp       6020      ~  99      0.4      819
tcp       7379      ~  99      0.4      819
tcp       8580      ~  99      0.4      819
tcp       9550      ~  99      0.4      819
tcp      10538      ~  99      0.4      819
tcp      10785      ~  99      0.4      819
tcp      11115      ~  99      0.4      819
tcp      12354      ~  99      0.4      819
tcp      12965      ~  99      0.4      819
tcp      13170      ~  99      0.4      819
tcp      13588      ~  99      0.4      819
tcp      14585      ~  99      0.4      819
tcp      14605      ~  99      0.4      819
tcp      15956      ~  99      0.4      819
tcp      16127      ~  99      0.4      819
tcp      16150      ~  99      0.4      819
tcp      16182      ~  99      0.4      819
tcp      16262      ~  99      0.4      819
tcp      16512      ~  99      0.4      819
tcp      16855      ~  99      0.4      819
tcp      17100      ~  99      0.4      819
tcp      17317      ~  99      0.4      819
tcp      17543      ~  99      0.4      819
tcp      18075      ~  99      0.4      819
tcp      18365      ~  99      0.4      819
tcp      19808      ~  99      0.4      819
tcp      20529      ~  99      0.4      819
tcp      20953      ~  99      0.4      819
tcp      22024      ~  99      0.4      819
tcp      22996      ~  99      0.4      819
tcp      23587      ~  99      0.4      819
tcp      24746      ~  99      0.4      819
tcp      25512      ~  99      0.4      819
tcp      27222      ~  99      0.4      819
tcp      27248      ~  99      0.4      819
tcp      27851      ~  99      0.4      819
tcp      28373      ~  99      0.4      819
tcp      29416      ~  99      0.4      819
tcp      29718      ~  99      0.4      819
tcp      30402      ~  99      0.4      819
tcp      30899      ~  99      0.4      819
tcp      31144      ~  99      0.4      819
tcp      31249      ~  99      0.4      819
tcp      31329      ~  99      0.4      819
tcp      31457      ~  99      0.4      819
tcp      31937      ~  99      0.4      819
tcp      32594      ~  99      0.4      819
tcp      33179      ~  99      0.4      819
tcp      33491      ~  99      0.4      819
tcp      33656      ~  99      0.4      819
tcp      36130      ~  99      0.4      819
tcp      36977      ~  99      0.4      819
tcp      37225      ~  99      0.4      819
tcp      37437      ~  99      0.4      819
tcp      38376      ~  99      0.4      819
tcp      38517      ~  99      0.4      819
tcp      39101      ~  99      0.4      819
tcp      39532      ~  99      0.4      819
tcp      40002      ~  99      0.4      819
tcp      40242      ~  99      0.4      819
tcp      41065      ~  99      0.4      819
tcp      41709      ~  99      0.4      819
tcp      41804      ~  99      0.4      819
tcp      42545      ~  99      0.4      819
tcp      42922      ~  99      0.4      819
tcp      44301      ~  99      0.4      819
tcp      45470      ~  99      0.4      819
tcp      45967      ~  99      0.4      819
tcp      46006      ~  99      0.4      819
tcp      46076      ~  99      0.4      819
tcp      46313      ~  99      0.4      819
tcp      46975      ~  99      0.4      819
tcp      47436      ~  99      0.4      819
tcp      47465      ~  99      0.4      819
tcp      47802      ~  99      0.4      819
tcp      48092      ~  99      0.4      819
tcp      48351      ~  99      0.4      819
tcp      48365      ~  99      0.4      819
tcp      48572      ~  99      0.4      819
tcp      48893      ~  99      0.4      819
tcp      49565      ~  99      0.4      819
tcp      49699      ~  99      0.4      819
tcp      50051      ~  99      0.4      819
tcp      50595      ~  99      0.4      819
tcp      52703      ~  99      0.4      819
tcp      53205      ~  99      0.4      819
tcp      54681      ~  99      0.4      819
tcp      54713      ~  99      0.4      819
tcp      55617      ~  99      0.4      819
tcp      55902      ~  99      0.4      819
tcp      56094      ~  99      0.4      819
(上位100件のみ表示)

なぜこんな個人サイトが狙い撃ちなのか…。と思ったら、別にうちだけじゃなかった。さくらの障害情報に「外部からのDoSと思われるトラフィックによる通信障害」が。でも、うちのサイトのIPは一覧になし。うちだって外部からのDoSによる通信障害だったんだけど。お知らせを出したり出さなかったりする基準は、何なんだろう。

SYN flood攻撃

結果から言うと、SYN flood攻撃だった。初めて見た。

netstatコマンドを叩いてみると、SYN_RECVの行がぞろぞろと表示される。これはアプリケーションでは対策のしようがないので、やっと重い腰を上げてipfwを設定することに。

ipfwの導入手順

/etc/rc.confを編集

/etc/rc.confに次の行を追加。昔のFreeBSDではカーネルを再構築したりする必要があったらしいけれども、現在のバージョンでは標準で組み込まれている。

firewall_enable="YES"
firewall_logging="YES"
firewall_script="/etc/rc.firewall"
firewall_interface="em0"
firewall_type="open"

firewall_interfaceに設定する値は、ifconfig -aで確認する。

解放するポート

ポート番号内容
21, 22ftp, ftp-data
22ssh
25sendmail
42, 53dns (UDPのみ)
80http
110pop3
123ntp (UDPのみ)
137-139netbios (samba)
143imap
280http-mgmt
443https
445microsoft-ds (samba)
578mailサブミッション
900swat
5999csup
3306MySQLレプリケーション
11022ssh代替(※自分で割り当てたもの)

Samba関連のポートは、使わなくなったので削除。

/etc/rc.firewallを編集

/etc/rc.firewallのsetup_loopbackの部分のみ編集。

# For loopback communications
ipfw -q add 50015 allow ip from any to any via lo0

# Deny Martian IP Address
ipfw -q add 50020 deny ip from 0.0.0.0/8 to any
ipfw -q add 50022 deny ip from 172.16.0.0/16 to any
ipfw -q add 50023 deny ip from 224.0.0.0/4 to any
ipfw -q add 50024 deny ip from 240.0.0.0/4 to any

# Allow connections in use
ipfw -q add 50030 check-state
ipfw -q add 50031 allow tcp from any to any established
ipfw -q add 50032 allow all from any to any out keep-state
ipfw -q add 50033 allow icmp from any to any

# SSH
ipfw -q add 50110 allow tcp from any to any 10022 in
ipfw -q add 50111 allow tcp from any to any 10022 out

# DNS
ipfw -q add 50120 allow tcp from any to any 53 in
ipfw -q add 50121 allow tcp from any to any 53 out
ipfw -q add 50123 allow udp from any to any 53 in
ipfw -q add 50124 allow udp from any to any 53 out

# FTP
ipfw -q add 50130 allow tcp from any to any 21 in
ipfw -q add 50131 allow tcp from any to any 21 out
ipfw -q add 50132 allow tcp from any to any 22 in
ipfw -q add 50133 allow tcp from any to any 22 out
ipfw -q add 50134 allow tcp from any to any 4000-4009 in
ipfw -q add 50135 allow tcp from any to any 4000-4009 out

# HTTP/HTTPS
ipfw -q add 50140 allow all from any to any 80 in
ipfw -q add 50141 allow all from any to any 80 out
ipfw -q add 50142 allow all from any to any 443 in
ipfw -q add 50143 allow all from any to any 443 out

# NTP
ipfw -q add 50150 allow tcp from any to any 123 in
ipfw -q add 50151 allow tcp from any to any 123 out

# SMTP
ipfw -q add 50170 allow all from any to any 25 in
ipfw -q add 50171 allow all from any to any 25 out
ipfw -q add 50172 allow all from any to any 587 in
ipfw -q add 50172 allow all from any to any 587 out

# IMAP
ipfw -q add 50180 allow all from any to any 143 in
ipfw -q add 50181 allow all from any to any 143 out

# rsync
ipfw -q add 50190 allow all from any to any 873 in
ipfw -q add 50190 allow all from any to any 873 out

# Mysql replication
ipfw -q add 50200 allow all from any to any 3306 in
ipfw -q add 50201 allow all from any to any 3306 out

# Deny all the other connections
ipfw -q add 60000 deny log tcp from any to any setup
ipfw -q add 50151 allow tcp from any to any 123 out

# Deny all the other connections
ipfw -q add 60000 deny log tcp from any to any setup

cf. 「ipfw」(FreeBSD日本語検索)
cf. 「ipfw でフィルタリング

参考資料

タイトルとURLをコピーしました