2018年 8月 の投稿一覧

CentOS7.2 fail2ban で DDos を防ぐ

毎回設定を忘れるのでメモ

filter

$ vi /etc/fail2ban/filter.d/apache-ddos.conf
[Definition]
failregex = <HOST>.*"(HEAD|GET|POST).*
ignoreregex = \.(?i)(jpe?g|gif|png|bmp|pdf|js|css|woff|eot|ttf|ico|txt|xml|swf|xlsx?|docx?|pptx?)
              \/wp-admin.*

banする条件

$ vi /etc/fail2ban/jail.d/local.conf

[apache-ddos]
enabled = true
port = http,https
# フィルタ名
filter = apache-ddos
# 監視するログ名
logpath = /var/log/httpd/ssl/www*_access_log

# 許容する接続回数
# 5回以上不正に接続するとBANされる
maxretry = 5
# 不正アクセスカウント時間
# 80秒(80)
findtime = 360
# BANした後、再び接続できるようになるまでの時間(秒)
# 86400秒 = 1日
bantime = 86400
backend = polling

自分のIPは除外

$ vi /etc/fail2ban/jail.conf

[DEFAULT]

#
# MISCELLANEOUS OPTIONS
#

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space (and/or comma) separator.
ignoreip = 127.0.0.1/8 xxx.xxx.xxx.xxx/32

設定の有効化・チェック

$ systemctl reload fail2ban
$ fail2ban-regex /var/log/httpd/ssl/www.example.com_access_log /etc/fail2ban/filter.d/apache-ddos.conf ← フィルターのチェック
$ fail2ban-client status apache-ddos ← banされたIPアドレスの確認
$ less /var/log/fail2ban.log ← fail2banのログの確認

Docker on Vagrant(CentOS7)でDockerから外部に出ていけない現象

結論

net.ipv4.conf.all.forwarding = 0になっているので、1にする。

$ sysctl net.ipv4.conf.all.forwarding
net.ipv4.conf.all.forwarding = 0

$ sudo sysctl net.ipv4.conf.all.forwarding=1
net.ipv4.conf.all.forwarding = 1
$ sysctl net.ipv4.conf.all.forwarding
net.ipv4.conf.all.forwarding = 1

事の発端

HostからVagrant経由で、Dockerにアクセスしてもなぜか繋がらなくなった。

docker-composeでビルドし直してみる。

$ docker-compose build --no-cache
....
 IPv4 forwarding is disabled. Networking will not work

apt-getでパッケージupdateしようとした所、外部に出ていけなくなっていた。

Vagrant上の、CentOSの、net.ipv4.conf.all.forwardingが 0 になっていて、外部に出れなくなっていた。

原因

ネットワークの再起動で、

sysctl -w net.ipv4.ip_forward=0 > /dev/null 2>&1

となっている。

対策

/etc/sysctl.conf

net.ipv4.ip_forward=1