今さらながら、やっと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, 22 | ftp, ftp-data |
22 | ssh |
25 | sendmail |
42, 53 | dns (UDPのみ) |
80 | http |
110 | pop3 |
123 | ntp (UDPのみ) |
143 | imap |
280 | http-mgmt |
443 | https |
578 | mailサブミッション |
3306 | MySQLレプリケーション |
11022 | ssh代替(※自分で割り当てたもの) |
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 でフィルタリング」