『壹』 如何在linux中给一块网卡绑定两个IP地址
Linux的网络设备配置文件存放在/etc/sysconfig/network-scripts里面,对于以太网的第一个网络设备,配版置文件名一般为 ifcfg-eth0 如果需权要为第一个网络设备绑定多一个IP地址,只需要在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:0的文件,内容样例为: DEVICE="eth0:0" IPADDR="211.100.10.11Array" NETMASK="255.255.255.0" ONBOOT="yes" 其中的DEVICE为设备的名称,IPADDR为此设备的IP地址,NETMASK为子网掩码,ONBOOT表示在系统启动时自动启动。 如果需要再绑定多一个IP地址,只需要把文件名和文件内的DEVICE中的eth0:x加一即可。
『贰』 linux ip配置在哪个文件中
配置在你的/etc/sysconfig/network-scripts/ifcfg-ethx文件中,x表示你的第几块网卡。配置完以后重启动服务.,p地址就配置好了内
『叁』 如何修改linux系统banner信息
Linux下登录提示是记录在/etc/issue和/etc/motd中,这两者的区别是,前者是在用户登录前就显示,而后者则是在用户登录后显示。我们当然需要更改/etc/issue中的内容。而Linux在重新启动过程中会执行一系列脚本,使更改的Banner恢复脚本定议的内容,用户可以用#注释掉相关脚本,用户也可以在rc.local脚本中添加内容,这样就可以在启动过程中执行。在Arch上rc.local位于/etc/rc.local,而在Slackware中,其位于/etc/rc.d/rc.local。
知道了以上的信息后就不难办了。使用管理员权限修改rc.local文件的内容如下所示:
#!/bin/bash
ipaddr=$(ifconfig | sed -ne 's/ *inet
addr:([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}) *B.*/1/p')
echo $'x1bx5bx48x1bx5bx32x4ax0a'圆枝'Arch
Linux ['$ipaddr'] ( ) (l)' > /etc/issue
以上需要说明的是第二行,是通过正则获取ifconfig命令输出的ip地址,最后一行是输出信息到issue文件。
最后一行中前边的字符串是用来清除终端显示的,而issue文件中转义字符也有不同的含义,可以通过man
agetty 8来获取所有转义字符的含义。
一,ftp服务Linux
Banner修改法:
wu-ftp修改
用十六进制文本编辑器修改/usr/sbin/in.ftpd文件,找到如下几行:
/var/log/lastlog
Could
not write %.100s:%.100s
Version wu-2.6.1-16
改成:
Microsoft FTP
Service(Version.6.0)
或者:
Serv-U FTP Server v6.4 for WinSock ready...
通过上面的方法将自己的WU-FTP修改成SERV-U或IIS自带的FTP,从而达到迷惑黑客的目的。
vsftpd的修改 编辑配置文件 vsftpd.conf 找到这行#ftpd_banner= 将#号删除,把=号贺郑后面的修改成你要的名称
我这里修改成了 ftpd_banner=Serv-U FTP Server v6.4 for WinSock ready...
二,Telnet Linux
Banner修改法:
编辑文件/etc/issue.net,找到类似这几行(不同版本的Linux内容不太一样):
Red
Hat Linux release 8.0(Psyche)
Kernel on an m
改成:
Microsoft Windows
Version 5.00(Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server
Build
5.00.99206.1
由于issue.net重启后会自动恢复,为了保护这些伪造的信息,还需要编辑文件/etc/rc.local,
在这些行前加“#”号,注释掉恢复的功能:
#echo””>/etc/issue
#echo”$R”>>/etc/issue
#echo
“Kernel $(uname –r) on $a $SMP$(umame
–m)”>>/etc/issue
#cp-f/etc/issue/etc/issue.net
#echo>>/etc/issue通过上面的方禅腔颂法将自己linux系统下的telnet服务修改成windows下的telnet服务,从而达到迷惑黑客的目的。
三,Apache Linux
Banner修改法:
在安装Apache前,在源文件/src/include目录下找到httpd.h头文件。此文件定义了Apache的版本信息,Apache安装时需要调用它。编辑http.h文件,找到如下几行:
#define
Server_BASEVENDOR “Apache Group”
#define Server_BASEPRODUCT
“Apache”
#define Server_BASEREVISION
“1.3.20”
可以根据自己的意愿改成其他信息,笔者改的是Microsoft-IIS/5.0。
编辑文件/etc/ssh/sshd_config,找到这行:
Banner/etc/issue.net
在此行前加#进行注释就可以不显示SSH的Banner了。通过上面的方法将自己的APACHE
banner修改成windows下的IIS,从而达到迷惑黑客的目的。
四,Sendmail Linux
Banner修改法:
在sendmail.mc文件中去掉$v、$z这两个宏,并包含下面的内容:
define(confSMTP_LOGIN_MSG’,$j
Sendmail
Sencure/Recure/Rabid;$b)
然后生成sendmail.cf文件
#m4/etc/mail/sendmail.mc>/etc/sendmail.cf
如果sendmail.mc中没有include(‘/usr/share/sendmail.cf/m4/cf.m4’)这一行就需要
和Sendmail
提供的预设的配置文件cf.m4一起使用来生成文件sendmail.cf:
#m4 /usr/share/sendmail-cf/m4/cf.m4
/etc/mail/sendmail.mc>/etc/sendmail.cf通过上面的方法有效的对sendmail服务的banner进行修改,从而达到迷惑黑客的目的。
五,修改linux机器的ttl值运行
echo 128 >
/proc/sys/net/ipv4/ip_default_ttl 将数字128写入ip_default_ttl文件,128段通常为windows系统
可以将此语句写入启动,/etc/rc.local 这样开机有自动修改了ttl数值了,保护了linux安全
总结:
经过上述的几个步骤,Linux系统的基本安全性能就得到了很大的增强。我们成功的将黑客阻挡在入侵之外。当然要得到最大化的安全性能,当然还要根据实际需求配置Apache等,由于篇幅所限,这里就不详细介绍了。
『肆』 怎么让Uboot中设置的IP能够在Linux启动后读到
U-boot会给LinuxKernel传递很多参数,如:串口,RAM,videofb等。而Linuxkernel也会读取和处理这些参数。两者之间通过structtag来传递参数。U-boot把要传递给kernel的东西保存在structtag数据结构中,启动kernel时,把这个结构体的物理地址传给kernel;Linuxkernel通过这个地址,用parse_tags分析出传递过来的参数。本文主要以U-boot传递RAM和Linuxkernel读取RAM参数为例进行说明。1、u-boot给kernel传RAM参数./common/cmd_bootm.c文件中(指Uboot的根目录),bootm命令对应的do_bootm函数,当分析uImage中信息发现OS是Linux时,调用./lib_arm/bootm.c文件中的do_bootm_linux函数来启动Linuxkernel。在do_bootm_linux函数中:voiddo_bootm_linux(cmd_tbl_t*cmdtp,intflag,intargc,char*argv[],\ulongaddr,ulong*len_ptr,intverify){#ifdefined(CONFIG_SETUP_MEMORY_TAGS)||\defined(CONFIG_CMDLINE_TAG)||\defined(CONFIG_INITRD_TAG)||\defined(CONFIG_SERIAL_TAG)||\defined(CONFIG_REVISION_TAG)||\defined(CONFIG_LCD)||\defined(CONFIG_VFD)setup_start_tag(bd);//初始化tag结构体开始#ifdefCONFIG_SERIAL_TAGsetup_serial_tag(¶ms);#endif#ifdefCONFIG_REVISION_TAGsetup_revision_tag(¶ms);#endif#ifdefCONFIG_SETUP_MEMORY_TAGSsetup_memory_tags(bd);//设置RAM参数#endif#ifdefCONFIG_CMDLINE_TAGsetup_commandline_tag(bd,commandline);#endif#ifdefCONFIG_INITRD_TAGif(initrd_start&&initrd_end)setup_initrd_tag(bd,initrd_start,initrd_end);#endif#ifdefined(CONFIG_VFD)||defined(CONFIG_LCD)setup_videolfb_tag((gd_t*)gd);#endifsetup_end_tag(bd);//初始化tag结构体结束#endiftheKernel(0,machid,bd->bi_boot_params);//传给Kernel的参数=(structtag*)型的bd->bi_boot_params//bd->bi_boot_params在board_init函数中初始化,如对于at91rm9200,初始化在at91rm9200dk.c的board_init中进行:bd->bi_boot_params=PHYS_SDRAM+0x100;//这个地址也是所有taglist的首地址,见下面的setup_start_tag函数}对于setup_start_tag和setup_memory_tags函数说明如下。函数setup_start_tag也在此文件中定义,如下:staticvoidsetup_start_tag(bd_t*bd){params=(structtag*)bd->bi_boot_params;//初始化(structtag*)型的全局变量params为bd->bi_boot_params的地址,之后的setuptags相关函数如下面的setup_memory_tags就把其它tag的数据放在此地址的偏移地址上。params->hdr.tag=ATAG_CORE;params->hdr.size=tag_size(tag_core);params->u.core.flags=0;params->u.core.pagesize=0;params->u.core.rootdev=0;params=tag_next(params);}RAM相关参数在bootm.c中的函数setup_memory_tags中初始化:staticvoidsetup_memory_tags(bd_t*bd){inti;for(i=0;ihdr.tag=ATAG_MEM;params->hdr.size=tag_size(tag_mem32);params->u.mem.start=bd->bi_dram[i].start;params->u.mem.size=bd->bi_dram[i].size;params=tag_next(params);}//初始化内存相关tag}2、Kernel读取U-boot传递的相关参数对于LinuxKernel,ARM平台启动时,先执行arch/arm/kernel/head.S,此文件会调用arch/arm/kernel/head-common.S和arch/arm/mm/proc-arm920.S中的函数,并最后调用start_kernel:bstart_kernelinit/main.c中的start_kernel函数中会调用setup_arch函数来处理各种平台相关的动作,包括了u-boot传递过来参数的分析和保存:start_kernel(){setup_arch(&command_line);}其中,setup_arch函数在arch/arm/kernel/setup.c文件中实现,如下:void__initsetup_arch(char**cmdline_p){structtag*tags=(structtag*)&init_tags;structmachine_desc*mdesc;char*from=default_command_line;setup_processor();mdesc=setup_machine(machine_arch_type);machine_name=mdesc->name;if(mdesc->soft_reboot)reboot_setup("s");if(__atags_pointer)//指向各种tag起始位置的指针,定义如下://unsignedint__atags_pointer__initdata;//此指针指向__initdata段,各种tag的信息保存在这个段中。tags=phys_to_virt(__atags_pointer);elseif(mdesc->boot_params)tags=phys_to_virt(mdesc->boot_params);if(tags->hdr.tag!=ATAG_CORE)convert_to_tag_list(tags);if(tags->hdr.tag!=ATAG_CORE)tags=(structtag*)&init_tags;if(mdesc->fixup)mdesc->fixup(mdesc,tags,&from,&meminfo);if(tags->hdr.tag==ATAG_CORE){if(meminfo.nr_banks!=0)squash_mem_tags(tags);save_atags(tags);parse_tags(tags);//处理各种tags,其中包括了RAM参数的处理。//这个函数处理如下tags:__tagtable(ATAG_MEM,parse_tag_mem32);__tagtable(ATAG_VIDEOTEXT,parse_tag_videotext);__tagtable(ATAG_RAMDISK,parse_tag_ramdisk);__tagtable(ATAG_SERIAL,parse_tag_serialnr);__tagtable(ATAG_REVISION,parse_tag_revision);__tagtable(ATAG_CMDLINE,parse_tag_cmdline);}init_mm.start_code=(unsignedlong)&_text;init_mm.end_code=(unsignedlong)&_etext;init_mm.end_data=(unsignedlong)&_edata;init_mm.brk=(unsignedlong)&_end;memcpy(boot_command_line,from,COMMAND_LINE_SIZE);boot_command_line[COMMAND_LINE_SIZE-1]='\0';parse_cmdline(cmdline_p,from);//处理编译内核时指定的cmdline或u-boot传递的cmdlinepaging_init(&meminfo,mdesc);request_standard_resources(&meminfo,mdesc);#ifdefCONFIG_SMPsmp_init_cpus();#endifcpu_init();init_arch_irq=mdesc->init_irq;system_timer=mdesc->timer;init_machine=mdesc->init_machine;#ifdefCONFIG_VT#ifdefined(CONFIG_VGA_CONSOLE)conswitchp=&vga_con;#elifdefined(CONFIG_DUMMY_CONSOLE)conswitchp=&mmy_con;#endif#endifearly_trap_init();}对于处理RAM的tag,调用了parse_tag_mem32函数:staticint__initparse_tag_mem32(conststructtag*tag){arm_add_memory(tag->u.mem.start,tag->u.mem.size);}__tagtable(ATAG_MEM,parse_tag_mem32);上述的arm_add_memory函数定义如下:staticvoid__initarm_add_memory(unsignedlongstart,unsignedlongsize){structmembank*bank;size-=start&~PAGE_MASK;bank=&meminfo.bank[meminfo.nr_banks++];bank->start=PAGE_ALIGN(start);bank->size=size&PAGE_MASK;bank->node=PHYS_TO_NID(start);}如上可见,parse_tag_mem32函数调用arm_add_memory函数把RAM的start和size等参数保存到了meminfo结构的meminfo结构体中。最后,在setup_arch中执行下面语句:paging_init(&meminfo,mdesc);对没有MMU的平台上调用arch/arm/mm/nommu.c中的paging_init,否则调用arch/arm/mm/mmu.c中的paging_init函数。这里暂不分析mmu.c中的paging_init函数。3、关于U-boot中的bd和gdU-boot中有一个用来保存很多有用信息的全局结构体--gd_t(globaldata缩写),其中包括了bd变量,可以说gd_t结构体包括了u-boot中所有重要全局变量。最后传递给内核的参数,都是从gd和bd中来的,如上述的setup_memory_tags函数的作用就是用bd中的值来初始化RAM相应的tag。对于ARM平台这个结构体的定义大致如下:include/asm-arm/global_data.htypedefstructglobal_data{bd_t*bd;unsignedlongflags;unsignedlongbaudrate;unsignedlonghave_console;/*serial_init()wascalled*/unsignedlongreloc_off;/*RelocationOffset*/unsignedlongenv_addr;/*AddressofEnvironmentstruct*/unsignedlongenv_valid;/*ChecksumofEnvironmentvalid?*/unsignedlongfb_base;/*baseaddressofframebuffer*/void**jt;/*jumptable*/}gd_t;在U-boot中使用gd结构之前要用先用宏DECLARE_GLOBAL_DATA_PTR来声明。这个宏的定义如下:include/asm-arm/global_data.h#defineDECLARE_GLOBAL_DATA_PTRregistervolatilegd_t*gdasm("r8")从这个宏的定义可以看出,gd是一个保存在ARM的r8寄存器中的gd_t结构体的指针。说明:本文的版本为U-boot-1.3.4、Linux-2.6.28,平台是ARM。