Iptables 是标准的 Linux防火墙应用程序,在没有硬件防火墙的情况下,使用iptables也是一种简单经济的解决方案。本例中如何通过使用iptables限制客户端访问ftp和ssh端口
<pre>
service iptables start
service iptables stop
service iptables save
service iptables restart
service iptables reload
service iptables status
chkconfig --list iptables
</pre>
备注:调整防火墙随时可能导致不能从远端连接到服务器,所以一定要小心,比较可行的方法是在调试阶段设置一个crontab任务,每隔一段时间关闭防火墙。及时网络不通了,一段时间后又恢复了.
规则管理命令
<pre>
-A:追加,在当前链的最后新增一个规则
-I num : 插入,把当前规则插入为第几条。
-I 3 :插入为第三条
-R num:Replays替换/修改第几条规则
格式:iptables -R 3 …………
-D num:删除,明确指定删除第几条规则
</pre>
查看管理命令 “-L”
<pre>
附加子命令
-n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。
-v:显示详细信息
-vv
-vvv :越多越详细
-x:在计数器上显示精确值,不做单位换算
--line-numbers : 显示规则的行号
-t nat:显示所有的关卡的信息
</pre>
查看当前的防火墙设置
iptables -L INPUT -n --line-numbers ,通过命令iptables -L也可以查看,本例开通了
<pre>
[root@log1 ~]# iptables -L INPUT -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
</pre>
删除一条策略,例如第4行策略
iptables -D INPUT 4
设置策略为drop,默认是accept
<pre>
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
</pre>
本质上iptables的配置是报错在相关配置文件中
<pre>
[root@log1 ~]# cat /etc/sysconfig/iptables
Generated by iptables-save v1.4.7 on Thu Nov 21 09:36:20 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.9.0/24 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.9.0/24 -p tcp -m tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
</pre>
简单应用的小例子
开通ssh
<pre>
iptables -A INPUT -p tcp -s 192.168.9.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
</pre>
开通ftp端口
--备注,未支持ftp,由于ftp特殊的联系方法,需要设置特殊的端口和开启相关的服务
<pre>
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
Allow Passive FTP Connections
iptables -A INPUT -p tcp -s 192.168.9.0/24 --dport 1024 -m state --state NEW,ESTABLISHED -j ACCEPT
Allow Active FTP Connections
iptables -A INPUT -p tcp -s 192.168.9.0/24 --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
Allow FTP connections @ port 21
iptables -A INPUT -p tcp -s 192.168.9.0/24 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
</pre>
修改配置
vim /etc/sysconfig/iptables
然后进去修改即可,修改完了怎么办?这里很多人会想到/etc/rc.d/init.d/iptables save指令,但是一旦你这么干了你刚才的修改内容就白做了!
具体方法是:
只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables restart,然后才调用/etc/rc.d/init.d/iptables save,
因为/etc/rc.d/init.d/iptables save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables save那么你的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了,这点必须注意!!!
部分转载自:http://blog.csdn.net/hijk139/article/details/16966601
部分转载自:http://blog.csdn.net/guochunyang/article/details/49865441
部分转载自:http://blog.chinaunix.net/uid-26495963-id-3279216.html