Linux – iptables won’t load with iptables-restore

arch-linuxiptableslinux

I have made the following iptables rules file :

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:sshguard - [0:0]

-A INPUT -i enp3s0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow incoming SSH"
-A INPUT -i enp3s0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT -m comment --comment "Allow outgoing SSH"
-A INPUT -i enp3s0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow incoming HTTP"
-A INPUT -i enp3s0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow incoming HTTPS"
-A INPUT -i enp3s0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT -m comment --comment "Allow outgoing HTTP"
-A INPUT -i enp3s0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT -m comment --comment "Allow outgoing HTTPS"
-A INPUT -i enp3s0 -p udp --sport 53 -j ACCEPT -m comment --comment "Allow outgoing DNS"

-A INPUT -i lo -j ACCEPT -m comment --comment "Allow ALL from localhost"

-A INPUT -p icmp --icmp-type echo-request -j ACCEPT -m comment --comment "Allow incoming ping"
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT -m comment --comment "Allow outgoing ping"
-A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT -m comment --comment "Prevent DoS attacks"
-A INPUT -p tcp --dport 443 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT -m comment --comment "Prevent DoS attacks"
-A INPUT -p tcp -m tcp --dport 22 -j sshguard -m comment --comment "SSH access protection"
COMMIT

But when i try to load it with iptables-restore < iptables.rules, i have this error :

iptables-restore: line 22 failed

Did I made something wrong ?

EDIT :

  • my linux version is : linux44 4.4.48-1
  • my iptables version is :
    iptables 1.6.0-1
  • uname : Linux ARCH 4.4.41-1-MANJARO #1 SMP PREEMPT
    Mon Jan 9 12:43:09 UTC 2017 i686 GNU/Linux

EDIT 2:
After muliple tests, it seems that the ipt_state.ko.gz and ipt_comment.ko.gz modules are missing in the directory /lib/modules/4.4.48-1-MANJARO/kernel/net/ipv4/netfilter

Does anyone know how to add these modules ?

Best Answer

Okay so following that forum : https://bbs.archlinux.org/viewtopic.php?id=195108, I realized that my kernel was recently updated from -41 to -48, and the module discovering is based on the uname (wich was outdated), that's why the modules couldn't load. A simple reboot fixed all issues :D

Related Topic