I want to make changes to an iptables configuration. How to do I Save and Restore an iptables Configuration in Ubuntu Linux server?
If you want to make changes to an iptables configuration, it is always good idea to save the current configuration by typing the following commands:
$ sudo -s
$ iptables-save > /root/working.iptables.rules
Now, you can make any changes using command line.
To restore it use the command iptables-restore, enter:
# iptables-restore < /root/working.iptables.rules
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop














{ 8 comments… read them below or add one }
Thanks for the tip!
Not only useful for Ubuntu users!
Thanks
Here’s another little tip. If you add a shebang line to the top of the saved iptables file like “#!/usr/bin/env iptables-restore” and make it executable (chmod +x) you can then just execute the saved firewall rules like so ./my-firewall
@Mike, Excellent tip. I never thought about it.
@Michael, yes it works on all Linux distro.
Appropriate your posts!
Be carefull if you change your iptables file remotely (via ssh). A mistake might lock you out.
In that case it is safer to use iptables-apply. It changes the iptables, but gives you a prompt to confirm the change. If the change locked you out, it will revert to the previous ruleset.
So change the /root/working.iptables.rules file, and use:
iptables-apply -t 15 /root/working.iptables.rules
You have 15 seconds to accept the change.
Only works on newer versions of iptables (Ubuntu jaunty in my case).
tip:
iptables auto on/off
1.)
Run in terminal the next command:
sudo iptables-save > /etc/iptables.rules
2.) Edit /etc/network/interfaces file and add this two line to interface configuration:
pre-up iptables-restore /etc/iptables.rules
To sum:
auto eth1
iface eth1 inet static
address 192.168.2.1
network 255.255.255.0
broadcast 192.168.2.255
pre-up iptables-restore /etc/iptables.rules
3.) Save and test (reboot)
One other way of safeguarding yourself when you modify iptables via ssh is (before you start fiddling around ;-) )to set a cron job to reset the firewall rules every say 15 minutes. That way you only have to wait at most 15 minutes to get back into your machine. Don’t forget to disable the cron job when you are finished. This presumes that you have root/sudo access to be able to set the cron and run iptables-restore as super user.
Thanks for the info.
budacsik:
You made a little mistake in the line:
pre-up iptables-restore /etc/iptables.rules
it must be:
pre-up iptables-restore < /etc/iptables.rules
Salvador:
You are right! Sorry for mistake.
(I’m sorry, but I can’t edit it.)