Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import subprocess
- import os
- def check_root():
- if os.getuid() != 0:
- print(".:: Please, run this program as root!")
- exit(1)
- def read_config():
- config_file = "/etc/antiflood.cfg"
- if not os.path.exists(config_file):
- print("\e[1;77m:: Creating Anti Flood config file (/etc/antiflood.cfg)... \e[0m")
- with open(config_file, "w") as f:
- f.write("antibrute=y\n")
- f.write("ports=21,22,23,25,110,143,443\n")
- f.write("seconds=60\n")
- f.write("hitcount=6\n")
- f.write("udpflood=y\n")
- f.write("icmp=y\n")
- f.write("chains=y\n")
- f.write("sourceip=y\n")
- f.write("rst=y\n")
- f.write("invalid=y\n")
- f.write("new=y\n")
- f.write("mss=y\n")
- f.write("sourceipsec=y\n")
- f.write("bogus=y\n")
- f.write("spoof=n\n")
- print("\e[1;92mDone\e[0m")
- def start():
- check_root()
- read_config()
- config = {}
- with open("/etc/antiflood.cfg") as f:
- for line in f:
- key, value = line.strip().split("=")
- config[key] = value
- if config.get("antibrute", "").lower() in ["y", "yes"] and subprocess.call(["/sbin/iptables", "-L"]) == 1:
- ports = config["ports"]
- seconds = config["seconds"]
- hitcount = config["hitcount"]
- subprocess.call(["/sbin/iptables", "-A", "INPUT", "-p", "tcp", "-m", "multiport", "--dports", ports, "-m", "conntrack", "--ctstate", "NEW", "-m", "recent", "--set", "--name", "antibrute"])
- subprocess.call(["/sbin/iptables", "-A", "INPUT", "-p", "tcp", "-m", "multiport", "--dports", ports, "-m", "conntrack", "--ctstate", "NEW", "-m", "recent", "--update", "--seconds", seconds, "--hitcount", hitcount, "-j", "DROP", "--name", "antibrute"])
- if config.get("udpflood", "").lower() in ["y", "yes"] and subprocess.call(["/sbin/iptables", "-L"]) == 1:
- subprocess.call(["/sbin/iptables", "-N", "udpflood"])
- subprocess.call(["/sbin/iptables", "-A", "INPUT", "-p", "udp", "-j", "udpflood"])
- subprocess.call(["/sbin/iptables", "-A", "udpflood", "-p", "udp", "-m", "limit", "--limit", "50/s", "-j", "RETURN"])
- subprocess.call(["/sbin/iptables", "-A", "udpflood", "-j", "DROP"])
- if config.get("icmp", "").lower() in ["y", "yes"] and subprocess.call(["/sbin/iptables", "-t", "mangle", "-L"]) == 1:
- subprocess.call(["/sbin/iptables", "-t", "mangle", "-A", "PREROUTING", "-p", "icmp", "-j", "DROP"])
- if config.get("chains", "").lower() in ["y", "yes"] and subprocess.call(["/sbin/iptables", "-t", "mangle", "-L"]) == 1:
- subprocess.call(["/sbin/iptables", "-t", "mangle", "-A", "PREROUTING", "-f", "-j", "DROP"])
- if config.get("sourceip", "").lower() in ["y", "yes"] and subprocess.call(["/sbin/iptables", "-L"]) == 1:
- subprocess.call(["/sbin/iptables", "-A", "INPUT", "-p", "tcp", "-m", "connlimit", "--connlimit-above", "111", "-j", "REJECT", "--reject-with", "tcp-reset"])
- if __name__ == "__main__":
- start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement