Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1197618
  • 博文数量: 116
  • 博客积分: 2889
  • 博客等级: 少校
  • 技术积分: 1337
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-29 09:35
个人简介

IT运维工程师、律师 IT相关技术支持、法律咨询

文章分类

全部博文(116)

文章存档

2015年(1)

2014年(2)

2013年(5)

2012年(12)

2011年(4)

2010年(12)

2009年(21)

2008年(37)

2007年(22)

分类: LINUX

2008-09-08 16:32:48

1.mysql 在系统root权限下修改数据库访问root口令:
/usr/local/mysql/bin/mysqladmin -u root -p password 新密码
回车后会提示输入口令,这里输入的是旧的ROOT的口令,口令正确后,回车完成,无任何错误提示口令修改成功。

2.iptables 的总结
(1)清空旧规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
service iptables save --保存,以前一直不知道怎么保存,用iptables-save也不起作用,这样整个iptables处于最原始状态。

(2)按需求增加规则

我的服务器的iptabls 的配置
iptables -A INPUT -p tcp -s 192.168.0.1/24 --dports 80 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,3306  -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptalbes -A INPUT -p icmp -j ACCEPT
iptables -P INPUT DROP
service iptables save
------------------------------------------------------------------------
以下是显示的结果
[root@changyu mysql]# /sbin/service iptables status

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  192.168.0.0/24       0.0.0.0/0           tcp dpt:80
ACCEPT     tcp  --  192.168.1.0/24       0.0.0.0/0           tcp dpt:80
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           multiport dports 22,3306
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination



备注:(摘录的一些知识)

防止别人用ACK、SYN、FIN等等的封包来扫瞄 Linux

iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP


NAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE  

不过此时 ftp 会无法正常运作,必须另外再加上

modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

另外可以配合 proxy server,强制每台 client 端均透过 proxy 连线

iptables -t nat -I PREROUTING -i eth0 -p tcp -s 192.168.0.0/255.255.255.0 -d 192.168.0.113 --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.0.0/24 --dport 80 -j REDIRECT --to-port 3128  

 

 
限制连线条件

iptables -A FORWARD -p TCP -s 11.22.33.44 -d 44.33.22.11 -j DROP  

从 11.22.33.44 的 port 1024-65535 连线到 44.33.22.11 的 port 80 ,一律档掉!!

iptables -A FORWARD -p TCP -s 11.22.33.44 --sport 1024:65535 -d 44.33.22.11 --dport www -j DROP 



防止 port scan

# NMAP FIN/URG/PSH
iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

# Xmas Tree
iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP

# Another Xmas Tree
iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

# Null Scan(possibly)
iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP

# SYN/RST
iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# SYN/FIN -- Scan(possibly)
iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP



防止 sync flood 攻击的设定:

iptables -N synfoold
iptables -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN
iptables -A synfoold -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m state --state NEW -j synfoold


不过流量一大就不太好了!!

所以可以调整时间与次数的触发值

iptables -N ping
iptables -A ping -p icmp --icmp-type echo-request -m limit --limit 1/second -j RETURN
iptables -A ping -p icmp -j REJECT
iptables -I INPUT -p icmp --icmp-type echo-request -m state --state NEW -j ping

关闭主机的 icmp echo request

或者是直接设定主机不回应 echo request

  /proc/sys/net/ipv4/icmp_echo_ignore_all




  其他 iptables 的 sample


  # 挂入相关 module
  modprobe ip_tables
  modprobe ip_conntrack
  modprobe ip_conntrack_ftp
  modprobe ip_conntrack_irc

  # 先清成空白
  iptables -F
  iptables -X
  iptables -F -t nat
  iptables -X -t mangle

  # 把 FORWARD 关闭
  iptables -P FORWARD DROP

  # 这是打开让自己网域可以方便连结,也就是该网域不设防

  iptables -A INPUT -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT

  # 允许相关连结服务

  iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
  iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
  iptables -A INPUT -i eth0 -p tcp --dport 113 -j ACCEPT

  iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
  iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP

  上面是打开允许 port 20、21、22、23、25、53、110、113 等服务才能够
  被外面所连线。

  port 20、21 : ftp 使用的。
  port 22 : ssh 连线
  port 23 : telnet 连线。方便使用,其实不开放比较安全。
  port 25 : sendmail 使用。让信件可以寄进来。
  port 53 : dns 使用。dns 需要打开 udp 使用。
  port 110 : pop3 使用
  port 113 : auth 身份确认。打开是让一些使用该 113 确认身份的主机
             不至于反查时会卡住很久。

  最后一行是对于主动连线或者是不合法连线,一律通通拒绝掉。

  这个 script 内容,很适用只允许外面连结特定的 port 服务,剩下的其余
  port 就拒绝外面主动建立的连线。

 

(以上部分转载自网路上的 news ,来自小州兄的大作,可惜小编一直抽不出时间完整的整理 iptables ...残廿...)

 

以下是小编针对单一防护型的 server , 所撰写的 iptables ,其目的只有防护自己,如果您的情形也是如此,可以直接採用,只需要修改哪些 port 要开放就可以了!!

#!/bin/sh
# Sep,30,2002 Mon Anderson add for testing

# load modules if necessary
modprobe ip_tables
# modprobe ip_conntrack
# modprobe ip_conntrack_ftp
# modprobe ip_conntrack_irc

# disable all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F

# define default policy
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

# allow all localhost
iptables -A INPUT -i lo -j ACCEPT

# allow ssh
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -d 192.168.0.229 -j ACCEPT

# log
# iptables -A INPUT -p tcp -d 0.0.0.0/24 -j LOG --log-prefix "DROP_AAA__ " --log-level info
# iptables -A INPUT -p tcp --dport 1:65535 -j LOG --log-prefix "DROP_BBB__ " --log-level info

# allow old connection and deny new connection
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP

如果用 iptables -L ,会得到以下结果

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere state INVALID,NEW

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Lokkit-0-50-INPUT (0 references)
target prot opt source destination  

另外,使用 iptables -t nat -L ,会得到以下结果

Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination  

以上的 script , 用来保护单机型的 server ,应该是足够了!!


--------------------------------------------------------------------------------

将 Server 藏在 LAN 中--DNAT 的实作

  看完单机型的 firewall , 接着就来看看如何利用 iptables 实作 firewall , 将需要保护的 server 藏到 LAN , 透过 firewall 实作 DNAT 的方式来保护!!

架构图如下 :



 

将 WWW Server 藏到 192.168.0.1 , 但是希望 Internet 的其他 user ,输入 能够看到 192.168.0.1 的网页内容

 

#!/bin/sh
# Dec,11,2002 Wed Anderson add for testing

# load modules if necessary
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

# disable all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F

# disable forward chain
# iptables -P FORWARD DROPecho "1" > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

# alloe all localhost
iptables -A INPUT -i lo -j ACCEPT

# allow specical IP
# iptables -A INPUT -p tcp -d 192.168.0.1 -j ACCEPT

# allow ssh
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT

# allow http
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT

# allow old connection and deny new connection
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
iptables -A INPUT -i eth1 -m state --state NEW,INVALID -j DROP

# setup DMZ -- DNAT
iptables -A PREROUTING -t nat -i eth0 -p tcp -d 11.22.33.44 --dport 80 -j DNAT --to-destination 192.168.0.1:80

# open DMZ goto Internet
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
 

 

至于 WWW Server , 只要将 Default Gateway 指向 192.168.0.254 即可以,此时就可以从 Internet 上,输入 连结到 LAN 上的 WWW Server 了!!

其他如果需要 FTP Server, Mail Server,则依照需要的 port 开放就可以了!





阅读(1698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~