Linuxパケットフィルタリング型のファイアウォール機能「iptable」を用いた、DoS/DDoS攻撃対策を行います。ICMP,DNS,SSHをブロックする設定には、応答回数を制限する「hashlimit」を応用します。(2015/12/23作成)
Unsplash / Pixabay
DoS/DDoS攻撃とは
DoS(Denial of Service:サービス妨害)攻撃は、正常なサービスの運営を妨害する攻撃で>す。F5キーを押し続けて大量のリクエストをし続けてサーバーをパンクさせるとか、考えられる全てのパスワードをチャレンジする総当り攻撃などとても怖いです。また、単一のクライアントからの攻撃だけでなく、トロイの木馬で感染させられた大量の端末を用いて総攻撃を掛けるDDoS(Distributed Denial of Service:分散サービス妨害)攻撃は、十分と思われる対策が施された大手Webサイトもパンクするような攻撃力を持っています。(出典:Developers.IO)
0.環境
$ cat /etc/redhat-release CentOS release 5.11 (Final) $ sudo /sbin/iptables --version iptables v1.3.5
1.設定
iptableの初期化 /sbin/iptables -P INPUT ACCEPT /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -F ローカルループバックI/Fからのパケットを許可 /sbin/iptables -A INPUT -i lo -j ACCEPT stateな通信(接続済みの通信)を許可 /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 特定の「許可するIPアドレス」を追加する場合 /sbin/iptables -A INPUT -s {許可IP} -j ACCEPT 特定の「拒否するIPアドレス」を追加する場合 /sbin/iptables -A INPUT -s {拒否IP} -j DROP サービスポートを許可(例:80番/443番) /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT ICMP対策 /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name ping_of_death --hashlimit 1/s --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 300000 -j ACCEPT DNS対策 /sbin/iptables -I INPUT -p udp -m state --state NEW --dport 53 -m hashlimit --hashlimit-burst 5 --hashlimit 1/m --hashlimit-mode srcip --hashlimit-htable-expire 120000 --hashlimit-name named-limit -j ACCEPT SSH対策 /sbin/iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m hashlimit --hashlimit-name t_sshd --hashlimit 1/m --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT 他INPUTポートをすべて拒否 /sbin/iptables -P INPUT DROP
2.保存/反映
/etc/init.d/iptables save /etc/init.d/iptables restart
3.確認
/sbin/iptables -L
以上