1.Netfilter |
TCP Wrappers就是通过/etc/hosts.allow、/etc/hosts.deny来管理的,但要满足下面这两个程序才可能用这个来管理:
1:由Super Deamon(Xinetd)所管理的服务
2:支持libwrap.so模块的服务
[root@szm ~]# chkconfig xinetd on这个一定要打开,下面的命令才有Xinetd的内容
[root@szm ~]# chkconfig --list
................省略......
xinetd based services:
chargen-dgram: off
chargen-stream: off
cvs: off
daytime-dgram: off
daytime-stream: off
discard-dgram: off
discard-stream: off
echo-dgram: off
echo-stream: off
rsync: off
tcpmux-server: off
telnet: on
time-dgram: off
time-stream: off
rsyslogd、httpd这两个程序不支持; sshd、xinetd支持; |
查看顺序:
1./etc/hosts.allow
2./etc/hosts.deny
3.两个都没有就放行
查找rsync的服务启动文件名:(因为TCP Wrappers是通过启动服务的文件名来管理的)
[root@szm ~]# cat /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = yes
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
允许127.0.0.1,192.168.179.0,10.0.0.100 其他的地方不允许; |
iptables:由Linux内核所提供的,所以速度快 Linux的iptables至少就有3个表格, 1.包括管理本机进出的Filter(INPUT,OUTPUT,FORWARD) 2.管理后端(防火墙内部的其他计算机)的NAT(PREROUTING,POSTROUTING,OUTPUT) 3.管理特殊标志使用的Mangle(PREROUTING,OUTPUT,INPUT,FORWORD) 如果Iptables只是用来保护Linux主机本身的话,根本就不需要理NAT规则,直接设置为开放即可。 |
[root@szm ~]# iptables -L -n默认查看Filter表
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0---------这里没有标识接口lo
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@szm ~]# iptables-save
# Generated by iptables-save v1.4.7 on Mon Mar 25 08:18:52 2013
*nat
:PREROUTING ACCEPT [69:5769]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Mon Mar 25 08:18:52 2013
# Generated by iptables-save v1.4.7 on Mon Mar 25 08:18:52 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [218:19174]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT本机主动向外发出请求
-A INPUT -p icmp -j ACCEPT所有ICMP
-A INPUT -i lo -j ACCEPT所有本机进程数据通信
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPTssh
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon Mar 25 08:18:52 2013
-F:清除所有已制定规则 -X:除掉所有用户自定义的Tables -Z:将所有的Chain的计数与流量统计都归零 |
[root@szm ~]# iptables -P INPUT DROP
[root@szm ~]# iptables -P OUTPUT ACCEPT
[root@szm ~]# iptables -P FORWARD ACCEPT
[root@szm ~]# iptables -t nat -P PREROUTING ACCEPT
[root@szm ~]# iptables-save
# Generated by iptables-save v1.4.7 on Mon Mar 25 14:15:07 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [31:2076]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -s 192.168.179.0/24 -i eth0 -j ACCEPT----规则设置有问题
-A INPUT -s 192.168.179.2/32 -i eth0 -j ACCEPT
-A INPUT -s 192.168.179.222/32 -i eth0 -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon Mar 25 14:15:07 2013
-A:增加 -I:插入 -i:Input -o:Output -p:协议 -s:源 -d:目的 -j:操作(ACCEPT,Drop,Reject,Log) |
TCP、UDP规则:
[root@szm ~]# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
[root@szm ~]# iptables -A INPUT -i eth0 -p udp --dport 137:138 -j ACCEPT
[root@szm ~]# iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
[root@szm ~]# iptables -A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT
[root@szm ~]# iptables -A INPUT -i eth0 -p tcp -s 192.168.179.44/24 --sport 1024:65534 --dport ssh -j DROP
注意要加上-p这个参数 |
[root@szm ~]# iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 --syn -j DROP
状态检测包过滤: |
[root@szm ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@szm ~]# iptables -A INPUT -m state --state INVALID -j DROP
[root@szm ~]# iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
1
当启动SYN Cookie时,主机在改善SYN/ACK确认数据前,会要求Clinet端在短时间内回复一个序号,这个序号包含许多原SYN数据包内的信息,包括IP、port等。若Client端可以回复正确的序号,那么主机就确定该数据包为可信的,因此会发送SYN/ACK数据包,否则就不理会以此数据包。 |
[root@szm ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
1
逆向路由过滤,可以根据路由表来判断IP的来源是否可靠; |
[root@szm ~]# cat /proc/sys/net/ipv4/conf/eth0/log_martians
0
记录不合法IP事件,建议为1 |
[root@szm ~]# cat /proc/sys/net/ipv4/conf/eth0/accept_source_route
0
来源路由;建议为0 |
[root@szm ~]# cat /proc/sys/net/ipv4/conf/eth0/accept_redirects
1
建议关闭0,ICMP重定向 |
[root@szm ~]# cat /proc/sys/net/ipv4/conf/eth0/send_redirects
1
建议关闭0 |
[root@szm ~]# /etc/init.d/iptables save 这条命令会写配置文件:/etc/sysconfig/iptables |
开机启动脚本:
1.NAT tables 的PREROUTING(修改目标IP)DNAT------DMZ,发布内部服务 |
SNAT配置:
如果外网接口取得IP的方式是拨号时,对于配置文件/etc/sysconfig/network和ifcfg-eth0,不要设置GateWay,否则会出现两个Default Gateway的情况。 |
[root@szm ~]# cat /proc/sys/net/ipv4/ip_forward
1
静态NAT:[root@szm ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100
动态NAT:[root@szm ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100-192.168.1.200
DNAT配置:eth1为Public IP
[root@szm ~]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.179.10:80
高级设置:[root@szm ~]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 8080