サイトアイコン ex1-lab

IPv6を無効にする[OS,Apache,nginx]

rockylinux_logo

rockylinux_logo

最近、SYNフラッド攻撃を受けて高負荷になるWEBサーバーがあったので、その際にIPv6を無効にしましたので、その手順を説明します。

攻撃を受けたサーバのログには以下のようなメッセージが頻繁に出力されていました

kernel: TCPv6: Possible SYN flooding on port 443. Sending cookies.

IPv6を利用していませんが、無効にはしていなかったのでカーネルパラメータ,Apache,nginxので無効にしていきます

SYN Cookieが有効か確認する

SYN Cookieが有効になっているか確認するには下記のコマンドの結果が、1となっていればSYN Cookieが有効になっている。1でない場合は変更して下さい

$ cat /proc/sys/net/ipv4/tcp_syncookies
1

# 有効にするには、以下のように変更
$ sudo echo 1 > /proc/sys/net/ipv4/tcp_syncookies

カーネルパラメータでIPv6を無効にする

「/etc/sysctl.conf」にIPv6を無効にする設定を追加します

$ sudo vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

追加後は設定を反映します

$ sudo sysctl -p

IPv6が無効になっているか確認します

# RHEL系(CentOS等)  何も表示されない場合はIPv6が無効になっている
$ ip a | grep v6

# Ubuntu系  何も表示されない場合はIPv6が無効になっている
$ ip a | grep inet6

iptablesでSYNフラッド攻撃を無効にする

iptablesでiptablesでSYNフラッド攻撃対策のルールを追加します。
追加位置は「-A INPUT -j DROP」の手前に追加します。下記ではログ出力も設定しています

$ sudo vim /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "[IPTABLES INVALID SYN] : "
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -j DROP

# サービスの再起動
$ sudo service iptables restart

ApacheでIPv6を無効にする

Apacheで下記のような設定だと、IPv6の通信をIPv4にバインドする可能性があるので、明示的にIPv4のみの設定にします

# Listen 80 をコメントアウトして、Listen 0.0.0.0:80 に変更します
$ sudo vi /etc/httpd/conf/httpd.conf
# Listen 80
Listen 0.0.0.0:80

# Listen 443 https をコメントアウトして、Listen 0.0.0.0:443 https に変更します
$ sudo vi /etc/httpd/conf.d/ssl.conf
# Listen 443 https
Listen 0.0.0.0:443 https

設定変更後は、再起動を実施

$ sudo systemctl restart httpd

nginxでIPv6を無効にする

listen [::]:80;」、「listen [::]:443;」の箇所をコメントアウトするか、削除します

$ sudo vim /etc/nginx/sites-enabled/default 
server {
    listen 80;
    #    listen [::]:80;
    server_name nextcloud.m-yabe.com;

# 443でListenする箇所がある場合は同じように設定
server {
    listen 443 ssl http2;
    #    listen [::]:443 ssl http2;

設定変更後は再起動を実施

$ sudo systemctl restart nginx
モバイルバージョンを終了