Как правильно отбиваться от ddos?
udp flood. Самый обычный и простой. На ваш ип приходят ... ну скажем 10 мбит потоки от нескольких тысяч источников. Даже если вы все эти источники перечислите у себя в фаерволе, оптимизируете его через ipset - это не даст ничего. Этот трафик будет все равно приходить к вам на порт, дропаться на вашем фаерволе, но канал останется забитым. Решение - обратиться к компаниям, предоставляющим ddos защиту.
Если вас досят запросами на ваш сайт по http постоянными - то тут вы можете использовать фаервол. Но рекомендую использовать ipset для организации списков блокируемых адресов. 20к правил в фаерволе - это много.
Обычно, ddos делают с публичных прокси, и зачастую не российских.  Попробуй поставить правила, по запросам. Например, больше 3 запросов в секунду,  бан по ip на 5 минут. Очень много панелей управления позволяют устанавливать такие правила.