setup-rules 767 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env perl
  2. use strict;
  3. use warnings;
  4. use Data::Dumper;
  5. my $DRY_RUN = $ARGV[0] ? 1 : 0;
  6. # Build rules, apply rules.
  7. # Enable every available service.
  8. # Don't use tCMS on hosts that do anything else with.
  9. my $list = qx{ufw app list};
  10. my @apps = split(/\n/, $list);
  11. shift @apps;
  12. @apps = map { s/^\s+//; $_ } @apps;
  13. # Sane defaults
  14. my @rules = (
  15. [qw{enable}],
  16. [qw{default deny outgoing}],
  17. [qw{default deny incoming}],
  18. );
  19. # Allow, but rate limit
  20. foreach my $app (@apps) {
  21. push(@rules,
  22. ["allow", $app],
  23. ["limit", $app],
  24. );
  25. }
  26. @rules = map { unshift(@{$_}, '--dry-run'); $_ } @rules if $DRY_RUN;
  27. @rules = map { unshift(@{$_}, 'ufw'); $_ } @rules;
  28. print Dumper(\@rules);
  29. foreach my $rule (@rules) {
  30. system(@$rule);
  31. }