-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Two new firewalld actions #1367
Changes from all commits
4e8974c
c9efc1a
1fd29f6
f6e3482
d8e5626
100821e
30cb656
a211f23
bdbb50c
cf0f002
d62fe2b
dd5e643
46d7d3a
7ef4449
a88dd88
6b3912f
2861c8e
a72895d
77262af
8f43560
107da73
d088d0e
c82a91b
9bbdba0
307352e
4689da5
7ff3f08
4f8aa45
9444010
ed20d28
bb6283e
221fef2
8e24915
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,17 +3,18 @@ | |
# Author: Donald Yandt | ||
# Because of the --remove-rules in stop this action requires firewalld-0.3.8+ | ||
|
||
|
||
[INCLUDES] | ||
|
||
before = iptables-blocktype.conf | ||
before = iptables-common.conf | ||
|
||
[Definition] | ||
|
||
actionstart = firewall-cmd --direct --add-chain ipv4 filter f2b-<name> | ||
firewall-cmd --direct --add-rule ipv4 filter f2b-<name> 1000 -j RETURN | ||
firewall-cmd --direct --add-rule ipv4 filter <chain> 0 -m state --state NEW -p <protocol> -m multiport --dports <port> -j f2b-<name> | ||
firewall-cmd --direct --add-rule ipv4 filter <chain> 0 -m conntrack --ctstate NEW -p <protocol> -m multiport --dports <port> -j f2b-<name> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Would this new form be compatible with older versions of the firewall-cmd? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I could be wrong but this is what I've gathered on nf_conntrack support:
with that stated and module "state" being depreciated I suggest we move to nf_conntrack. |
||
|
||
actionstop = firewall-cmd --direct --remove-rule ipv4 filter <chain> 0 -m state --state NEW -p <protocol> -m multiport --dports <port> -j f2b-<name> | ||
actionstop = firewall-cmd --direct --remove-rule ipv4 filter <chain> 0 -m conntrack --ctstate NEW -p <protocol> -m multiport --dports <port> -j f2b-<name> | ||
firewall-cmd --direct --remove-rules ipv4 filter f2b-<name> | ||
firewall-cmd --direct --remove-chain ipv4 filter f2b-<name> | ||
|
||
|
@@ -35,20 +36,16 @@ chain = INPUT_direct | |
# Could also use port numbers separated by a comma. | ||
port = 1:65535 | ||
|
||
|
||
# Option: protocol | ||
# Values: [ tcp | udp | icmp | all ] | ||
|
||
protocol = tcp | ||
|
||
|
||
|
||
# DEV NOTES: | ||
# | ||
# Author: Donald Yandt | ||
# Uses "FirewallD" instead of the "iptables daemon". | ||
# | ||
# | ||
# Output: | ||
# actionstart: | ||
# $ firewall-cmd --direct --add-chain ipv4 filter f2b-apache-modsecurity | ||
|
@@ -60,4 +57,3 @@ protocol = tcp | |
# actioncheck: | ||
# $ firewall-cmd --direct --get-chains ipv4 filter f2b-apache-modsecurity | sed -e 's, ,\n,g' | grep -q '^f2b-apache-modsecurity$' | ||
# f2b-apache-modsecurity | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# Fail2Ban configuration file | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Might be worth adding short description what is so special about this rich one |
||
# | ||
# Author: Donald Yandt | ||
# | ||
# Because of the rich rule commands requires firewalld-0.3.1+ | ||
# This action uses firewalld rich-rules which gives you a cleaner iptables since it stores rules according to zones and not | ||
# by chain. So for an example all deny rules will be listed under <zone>_deny and all log rules under <zone>_log. | ||
# | ||
# Also this action logs banned access attempts so you can filter that and increase ban time for offenders. | ||
# | ||
# If you use the --permanent rule you get a xml file in /etc/firewalld/zones/<zone>.xml that can be shared and parsed easliy | ||
# | ||
# Example commands to view rules: | ||
# firewall-cmd [--zone=<zone>] --list-rich-rules | ||
# firewall-cmd [--zone=<zone>] --list-all | ||
# firewall-cmd [--zone=zone] --query-rich-rule='rule' | ||
|
||
[Definition] | ||
|
||
actionstart = | ||
|
||
actionstop = | ||
|
||
actioncheck = | ||
|
||
# you can also use zones and/or service names. | ||
# | ||
# zone example: | ||
# firewall-cmd --zone=<zone> --add-rich-rule="rule family='ipv4' source address='<ip>' port port='<port>' protocol='<protocol>' log prefix='f2b-<name>' level='<level>' limit value='<rate>/m' <blocktype>" | ||
# service name example: | ||
# firewall-cmd --zone=<zone> --add-rich-rule="rule family='ipv4' source address='<ip>' service name='<service>' log prefix='f2b-<name>' level='<level>' limit value='<rate>/m' <blocktype>" | ||
# Because rich rules can only handle single or a range of ports we must split ports and execute the command for each port. Ports can be single and ranges seperated by a comma or space for an example: http, https, 22-60, 18 smtp | ||
|
||
actionban = ports="<port>"; for p in $(echo $ports | tr ", " " "); do firewall-cmd --add-rich-rule="rule family='ipv4' source address='<ip>' port port='$p' protocol='<protocol>' log prefix='f2b-<name>' level='<level>' limit value='<rate>/m' <blocktype>"; done | ||
|
||
actionunban = ports="<port>"; for p in $(echo $ports | tr ", " " "); do firewall-cmd --remove-rich-rule="rule family='ipv4' source address='<ip>' port port='$p' protocol='<protocol>' log prefix='f2b-<name>' level='<level>' limit value='<rate>/m' <blocktype>"; done | ||
|
||
[Init] | ||
|
||
name = default | ||
|
||
# log levels are "emerg", "alert", "crit", "error", "warning", "notice", "info" or "debug" | ||
level = info | ||
|
||
# log rate per minute | ||
rate = 1 | ||
|
||
zone = public | ||
|
||
# use command firewall-cmd --get-services to see a list of services available | ||
# | ||
# Examples: | ||
# | ||
# amanda-client amanda-k5-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps | ||
# freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kadmin kerberos | ||
# kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s | ||
# postgresql privoxy proxy-dhcp puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp squid ssh synergy | ||
# telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server | ||
|
||
service = ssh | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is service entry a mere label or it points to the ports? |
||
|
||
# reject types: 'icmp-net-unreachable', 'icmp-host-unreachable', 'icmp-port-unreachable', 'icmp-proto-unreachable', | ||
# 'icmp-net-prohibited', 'icmp-host-prohibited', 'icmp-admin-prohibited' or 'tcp-reset' | ||
|
||
blocktype = reject type='icmp-port-unreachable' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
# Fail2Ban configuration file | ||
# | ||
# Author: Donald Yandt | ||
# | ||
# Because of the rich rule commands requires firewalld-0.3.1+ | ||
# This action uses firewalld rich-rules which gives you a cleaner iptables since it stores rules according to zones and not | ||
# by chain. So for an example all deny rules will be listed under <zone>_deny. | ||
# | ||
# If you use the --permanent rule you get a xml file in /etc/firewalld/zones/<zone>.xml that can be shared and parsed easliy | ||
# | ||
# Example commands to view rules: | ||
# firewall-cmd [--zone=<zone>] --list-rich-rules | ||
# firewall-cmd [--zone=<zone>] --list-all | ||
# firewall-cmd [--zone=zone] --query-rich-rule='rule' | ||
|
||
[Definition] | ||
|
||
actionstart = | ||
|
||
actionstop = | ||
|
||
actioncheck = | ||
|
||
#you can also use zones and/or service names. | ||
# | ||
# zone example: | ||
# firewall-cmd --zone=<zone> --add-rich-rule="rule family='ipv4' source address='<ip>' port port='<port>' protocol='<protocol>' <blocktype>" | ||
# service name example: | ||
# firewall-cmd --zone=<zone> --add-rich-rule="rule family='ipv4' source address='<ip>' service name='<service>' <blocktype>" | ||
# Because rich rules can only handle single or a range of ports we must split ports and execute the command for each port. Ports can be single and ranges seperated by a comma or space for an example: http, https, 22-60, 18 smtp | ||
|
||
actionban = ports="<port>"; for p in $(echo $ports | tr ", " " "); do firewall-cmd --add-rich-rule="rule family='ipv4' source address='<ip>' port port='$p' protocol='<protocol>' <blocktype>"; done | ||
|
||
actionunban = ports="<port>"; for p in $(echo $ports | tr ", " " "); do firewall-cmd --remove-rich-rule="rule family='ipv4' source address='<ip>' port port='$p' protocol='<protocol>' <blocktype>"; done | ||
|
||
[Init] | ||
|
||
name = default | ||
|
||
zone = public | ||
|
||
# use command firewall-cmd --get-services to see a list of services available | ||
# | ||
# Examples: | ||
# | ||
# amanda-client amanda-k5-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps | ||
# freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kadmin kerberos | ||
# kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s | ||
# postgresql privoxy proxy-dhcp puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp squid ssh synergy | ||
# telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server | ||
|
||
service = ssh | ||
|
||
# reject types: 'icmp-net-unreachable', 'icmp-host-unreachable', 'icmp-port-unreachable', 'icmp-proto-unreachable', | ||
# 'icmp-net-prohibited', 'icmp-host-prohibited', 'icmp-admin-prohibited' or 'tcp-reset' | ||
|
||
blocktype = reject type='icmp-port-unreachable' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is a default name for the fail2ban chain ;-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll fix that. I don't know why I got the input chain mixed up with the f2b chains.