I am not directly familiar with iptables in CentOS 4.0 (hence these are general suggestions) but I think you can add the rules to the iptables configuration file in
/etc/sysconfig/iptables in order that they are automatically loaded.
e.g. You will need to modify your iptables files to match something like this;
# cat /etc/sysconfig/iptables
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1494682:129394658]
:RH-Firewall-1-INPUT - [0:0]
#add your rules here
-A INPUT -s 18.104.22.168 -j DROP
#end of your rules here
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
The 2nd issue appears to be that
service iptables save is not persisting your rules correctly. Hence I would suggest pasting some of your configs in to your question for more help. e.g.
and whether you are running
ufw or some other package or service that would likely make changes to your configuration automatically.