摘要
samba,ftp,apache,ipchains(2002-07-19 16:18:41)
--------------------------------------------------------------------------------
1.使用ipchains作防火墙和路由(包过滤和tcp/ip参考知识)
ipchains适用于2.2内核和2.4内核
1.1 与ipchains防火墙相关的内核选项(2.2内核)
CONFIG_FIREWALL
CONFIG_IP_FIREWALL 激活IP包过滤
CONFIG_IP_MASQUERADE 路由器 MASQ
CONFIG_IP_MASQUERADE_IMCP
CONFIG_IP_ADVANCED_ROUTER 高级路由
CONFIG_IP_TRANSPARENT_PROXY 将指向远程主机的局域网流量重
定向到本地端口的代理服务起
(PROXY)REDIRECT
注意:IPCHAINS规则只适用于tcp/ip,无法阻止同一个接口上基于ipx或者appletack的攻击
1.2 理解IPCHAINS的七个对象
ACCEPT,DENY,REJECT,MASQ,RETURN(相当于链的子程序调用的回归),user chain
1.3 ipchains基本参数
-A,-D,-R,-I,-L,-F,-N,-X,-P,-C
实例 动手操作
#ipchains -A input -s 0/0 -d 192.168.0.1 -j ACCEPT
#ipchains -R input 1 -s 192.168.0.2 -d 192.168.0.1 -j DENY
#ipchains -I input 1 -s 0/0 -d 0/0 -j REJECT
如果是远程登陆,会出现。。。断线的情况
#ipchains -nL
#ipchains -N mychain
#ipchains -F input
#ipchains -F
#ipchains -X
#ipchains -P input DENY
#ipchains -C input -i eth0 -s 192.168.1.2 www -d 192.168.1.1 www -p tcp
#ipchains -D input 1
1.4 ipchains基本选项
-p [!]protocol
-s [!]addr [[!]port]
-d [!]addr [[!]port]
-i [!]interface
-j target
-l 当匹配时,该规则纪录有关包的信息
[!]-y 该规则应该仅匹配正在初始化连接的tcp包。
1.5 example
a.关于domain的设置注意tcp和udp
#ipchains -A input -p tcp -s $DNS domain -j ACCEPT
#ipchains -A input -p udp -s $DNS domain -j ACCEPT
b.设置ip masquerade时不要忘记打开ip转发
可以在/etc/rc.d/rc.local脚本中写入 #echo 1 > /proc/sys/net/ipv4/ip_forward,否则重起后,ip_forward又变成0
#ipchains -A input -i eth1 -s $INT -j ACCEPT
#ipchains -A forward -s $INT -j MASQ
#ipchains -A forward -j DENY -l 禁止并纪录其他转发企图
注意$INT的范围:92.168.1.0/24 (192.168.1.1-192.168.1.254);主机为192.168.1.1、192.168.0.0/16(192.168.1.1-192.168.255.254)
c.允许内部网络访问外部ftp服务
#ipchains -A input -p tcp -s 0/0 ftp-data -j ACCEPT
#ipchains -A input -p tcp -s 0/0 ftp -j ACCEPT
介绍:port forwarding端口转发,允许到达外部接口的网络接口的数据包转发到内部网相同端口的 一种方法,
允许在防火墙后面提供网络服务。可以通过ipchains和ipmasqadm(ip伪装工具管理)来实现。
语法为:ipmasqadm portfw -a -P tcp -L $myip port -R server_ip port
具体为:#ipmasqadm portfw -a -P tcp -L $myip 80 -R 192.168.1.2 80
2.保护Apache,Ftp,Samba服务
2.1 核心配置文件的位置
/etc/httpd/conf/httpd.conf、resourceconfig、conf/srm.conf、accessconfig
conf/access.conf定义了配置文件的位置,现在已经不使用了;
maxclients 100
不可以太大,也不可以太小,根据服务器配置和客户数量综合决定
port 80
修改为别的端口时,最好不要与/etc/services中的端口重复
user
apache
group
apache
指定运行httpd进程的用户和组的所有权,不要以root身份运行httpd进程
userdir public_html
userdir disabled root
如果只允许少数用户的web空间,如下作
userdir disabled
userdir enabled kim ben jack
userdir disabled
例如如下配置:
userdir public_html
#userdir disabled
#userdir enabled ben
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes
SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
Order deny,allow
Deny from all
注意修改/home/*的目录属性为711
2.2 全局日志指令
好的日志对于好的安全性非常关键,尤其是高流量的服务器时。
ErrorLog logs/error_log
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
#产生最少的日志流量,不会错过任何危险的情况
LogFormat "%h %l %u %t "%r" %>s %b" common
#logformat的特殊值
#
%a 远程用户ip,
#
%A 本地httpd服务器的ip,
#
%f 传送的文件名,
#
%h 远程主机,
#
%m 请求方式
#
%l identd给出的远程名,
#
%p连接httpd的端口,
#
%P 请求的httpd进程,
#
%t 时间,
#
%T 服务请求时间
CustomLog logs/access_log combined
2.3 作用域和其他作用域
order deny,allow
deny from all
#例外如下
order allow,deny
allow from all
#例如:allow from all,
#
allow from 10.0.0.0/8,
#
allow from 10. ,
#
allow from .china.com
# 如果把private.txt改成index.html会怎么样?
order deny,allow
deny from all
a.4 验证
authtype basic
authname "private areas"
authuserfile /etc/httpd/conf/privatepasswd
require valid-user
创建验证数据库
#htpasswd -bc /etc/httpd/conf/privatepasswd ben ben
#htpasswd -b /etc/httpd/conf/privatepasswd kim
新密码:kim
重新输入密码:kim
还有一种方式创建.htaccess文件,使用accessfilename .htaccess选项,格式为:
authtype basic
authname "student club"
authuserfile /etc/httpd/conf/studentclub
require valie-user
另外:用mysql+php来验证网络服务,学有余力的学员可以try
3.ftp服务属于xinetd服务
3.1 禁止你名ftp登陆
/etc/passwd和/etc/shadow中删除ftp
/etc/ftpusers中加入ftp或者anonymous
3.2 /etc/ftpaccess配置文件
loginfails 3
greeting brief
# 显示简短的消息给用户,忽略了版本信息
# 220 liwei FTP server (Version wu-2.6.1-1icon_cool.gif ready.
# Turn on logging to /var/log/xferlog
log transfers anonymous,guest,real inbound,outbound
# 纪录所有种类的用户初始化传输
log commands anonymous,guest,real
# 纪录所有种类的用户输入的所有命令
chmod no anonymous,guest
delete no anonymous,guest
overwrite no anonymous,guest
rewrite no anonymous,guest
umask no anonymous,guest
passwd-check rfc822 enforce
# 强制使用合法的email账号作为匿名ftp登陆的密码
noretrieve /etc/ /home/*/.htaccess core
# 以下内容为复习
class all real,guest,anonymous *
limit all 20 Any /etc/mesg
upload /var/ftp * no
upload /var/ftp /pub/imcoming yes ftp daemon 0600 dirs
alias inc /pub/incoming
email admin@localhost
restricted-uid %501-510
# 流量限制自己。。。
throughput /var/ftp * * oo - *
throughput /var/ftp /pub* * 2000 0.5 *
throughput /var/ftp /pub* readme oo - *
throughput /var/ftp /pub* * oo - *.fudan.edu.cn
cdpath /pub
# 指定优先搜寻路经,例如cd abc,会优先寻找/pub下的abc
cdpath /
# 然后再是/目录下的abc
3.3命令(客户端命令略)
ftpshut now
ftpshut 1001
ftpshut +20
ftpshut -l 30 -d 10 1700 "ftp is shutting down "
ftprestart
对/etc/shutmsg和/var/ftp/shutmsg文件删除操作
ftpwho
ftpcount
匿名上传目录权限位chmod 733 incoming
4.samba的安全
不属于xinetd服务,但是samba的管理工具swat属于xinetd服务
swat(samba web administration tool) 启动swat不必启动apache服务器,swat有自己的内嵌的web服务器
因为samba不使用加密连接,所以不要远程使用swat工具
包过滤
#grep netbios /etc/services
允许外部某个主机访问内部samba服务,通过ipchains建立如下规则
#ipchains -A input -p tcp -s trusted.ext.system.ip
-d myip 137:139 -j ACCEPT
#ipchains -A input -p udp -s trusted.ext.system.ip
-d myip 137:139 -j ACCEPT
#ipchains -A input -i !lo -d myip 137:139 -j DENY -l
通过iptable实现如下(略)
#iptables -t filter -A INPUT -p tcp -s trusted.ext.system.ip
-d myip 137:139 -j ACCEPT
#iptables -t filter -A INPUT -p udp -s trusted.ext.system.ip
-d myip 137:139 -j ACCEPT
#iptables -t filter -A INPUT -i !lo -d myip 137:139 -j DROP