iptables

iptables

Reset default to ACCEPT and flush

1
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

99% des mails sortent par 89.89.89.89
1% des mails sortent via 31.31.31.31

1
iptables -t nat -I POSTROUTING 1 -m state --state NEW --source 10.0.0.4 -p tcp --dport 25 ! -d 10.0.0.0/24 -o eth0 -m statistic --mode random --probability .99 -j SNAT --to-source 89.89.89.89

iptables -t nat -I POSTROUTING 1 -m state --state NEW --source 10.0.0.4 -p tcp --dport 25 ! -d 10.0.0.0/24 -o eth0 -j SNAT --to-source 31.31.31.31

Anti flood

1
iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 10 -j DROP


iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 20 -j DROP

Drop by pattern

1
iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /toto.php' -j DROP

Log

1
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP

Fail2ban

bloquer les bruteforce web

/etc/fail2ban/jail.conf:

1
ignoreip = 127.0.0.1/8 89.31.146.164 89.31.146.163 89.31.149.185


[apache-wp-login]

enabled = true
filter = apache-wp-login
#action = iptables-multiport [name = apache-wp-login, port = "http, https" protocol = tcp]
port = http,https
logpath = /var/log/apache2/*/*.access.*.log
maxretry = 5
findtime = 60
bantime = 86400

/etc/fail2ban/filter.d/apache-wp-login.conf:

1
[INCLUDES]

before = common.conf

[Definition]
failregex = ^<HOST> -.*POST /wp-login.php HTTP.*
ignoreregex =

Unban

1
fail2ban-client set ssh unbanip 192.168.0.105