Wednesday, June 16, 2010

Recompiling the Freebsd Kernel

This is a guide on how to compile your own custom freebsd kernel. Now some people say why would you want to do that. :p There may be two main reasons as to why you would want a custom kernel on your system: 1) You want to add some functionality to your system such as bluetooth or audio support, or 2) you may want to remove some unused drivers to conserve memory.

Either way, making a custom kernel will help your machine to be a faster box rather than using the GENERIC kernel.



Installation

We will want to use sysinstall to get the src:
# sysinstall

1. select Configure
2. select Distributions
3. select src
4. select sys (/usr/src/sys (FreeBSD Kernel))
5. press Enter
6. press Enter
7. select CDROM (Or choose FTP if you chose NOT to install from CDROM)
8. select Install

This will take a few minutes to install via CDROM.

Configuration

Once you have the source installed we can then start on the kernel customization:
# cd /usr/src/sys/i386/conf

This is where FreeBSD keeps its kernel configuration files for Intel computers. The generic kernel config is in the file GENERIC. All the possible kernel options can be found in the NOTES file. What we will want to do first is copy GENERIC to a new Kernel name.

Note: *NEVER* edit the GENERIC file.
# cp GENERIC MYKERNEL

A few notes about editing your new kernel file:

1) Here is an example line from the kernel
device ppbus # Parallel port bus (required)

Any line that says (required) means exactly that. Don’t comment it out or delete it. So in this example, you can delete everything below that section if you don’t have a Printer, TCP/IP over parallel, or a Parallel port interface device.

2) Don’t delete any lines. Comment them out with a # in the front.

3) Always change your ident line as follows

Scroll down the line that reads:
ident GENERIC

Change the line to read:
ident MYKERNEL

4) If you’re not sure what you have or don’t have for devices, you can check this in /var/log/messages (provided it hasn’t been forever since your last reboot).

This is a great example. There are a ton of Network Card drivers in the kernel and you really only need one. Let’s look in /var/log/messages for your Ethernet Card. I’ll use my NIC as an example:
fxp0: port 0xec00-0xec3f mem 0xdf100000-0xdf100fff,0xdf000000-0xdf0fffff irq 11 at device 9.0 on pci0

So if we edit MYKERNEL and scroll down to the PCI and make sure you keep the following lines in there and comment everything else in the PCI and ISA Network card sections:
device miibus # MII bus support
device fxp # Intel EtherExpress PRO/100B (82557, 82558)

So go ahead and make all the changes from there.

Once you are done, it’s time to compile the kernel.
#
# cd /usr/src
make buildkernel KERNCONF=MYKERNEL

If you get some errors you screwed up. Go fix it or copy GENERIC back to MYKERNEL and start over. If not, you can continue by installing the kernel.
# make installkernel KERNCONF=MYKERNEL

You are done! You should reboot to make the changes effective!

After the reboot you should see that you are on the new kernel.
# uname -a
FreeBSD beast.local x.x-XXXXX FreeBSD 6.X-XXXXX #0: Day Mon XX XX:XX:56 EDT 2006
USER@beast.local:/usr/obj/usr/src/sys/MYKERNEL i386

Saturday, June 12, 2010

Becoming a unix admin

Good Afternoon,

A friend of mine asked me, how can he becoming a unix admin, well there are many different ways to becoming anything in this world. but their is no substitute for hardwork and practice. i found this article which is called 10 steps to becoming a unix admin. I hope you get somthing out of this benny :) enjoy.


10 Steps to Becoming a UNIX Administrator
Not withstanding the level of coverage given to Windows NT by the popular press, UNIX systems stand at the core of most mid-sized and large organizations. These systems run everything from mission-critical database applications to dazzling Web sites. The task of keeping these systems humming falls on the shoulders of the UNIX systems administrator. While the job description for a UNIX systems administrator may vary between organizations, the job carries a fair degree of respect within the industry; is often harried, but satisfying; and is reasonably well-paid. Becoming a UNIX systems administrator is thus a career goal worth striving for. Getting there, however, can be a challenge. This article is dedicated to the casual or first-time reader of the magazine who has not yet reached wizard status, but could use a little help on how to get there.


UNIX system administration is one of the few master/apprentice jobs still in existence, much like the old apothecary in medieval times. Usually, on-the-job training for a new apprentice is about the only training offered. Most organizations cannot afford to have a sys admin out for a week of vacation, much less for several week-long training sessions. However, times are changing. UNIX administration is now being taught at schools and employers now emphasize academic credentials and certification. The apprenticeship method of training, however, has produced many skilled administrators in the market place. Employers are starting to realize that the background, self-training, and the expected job performance is difficult to maintain for any system administrator. System administration is starting to be considered a career path, and professional salaries are beginning to be more consistent with the level of the skills required.


For those who have not yet obtained the wizard's wand of a UNIX system administrator, here are 10 steps toward achieving that goal:

1. Learn UNIX Basics
Learn at least 80 basic commands of the UNIX system (for example, cp, and mv). Know the file system structure and where files and directories are located in the hierarchy and why. Learn how to create, modify, and store files using vi and the basics of customizing the UNIX user interface.

• Attend a 40-hour course on the fundamentals of UNIX, or
• Attend an Introduction to UNIX class taught at a local college
• Read UNIX System Administration Handbook by Evi Nemeth, Garth Snyder, Scott Seebass, and Trent R. Hein. Prentice Hall. ISBN 0131510517
• Read Life with UNIX: A Guide for Everyone by Don Libes and Sandy Ressler. Prentice Hall. ISBN 0135366577
• Read Learning the VI Editor (Nutshell Handbook) by Linda Lamb. O'Reilly and Associates. ISBN 0937175676
• Read Essential System Administration, 2nd Edition (Nutshell Handbook) by Æleen Frisch. O'Reilly and Associates. ISBN 1565921275

2. Go Beyond the Basics
Learn more about vi and more of the command set, including df, more, and rm. Learn the ksh and sh environment including .profile and .kshrc. Know the boot up and shutdown procedures as well as the backup and restore procedures, and learn the system administration tools on your system.
• Attend a 40-hour course on UNIX Operations/Administration taught by the vendor of the UNIX that you are using
• Read Learning the Korn Shell (Nutshell Handbook) by Bill Rosenblatt. O'Reilly and Associates. ISBN 1565920546
• Read The Korn Shell: User and Programming Manual by Anatole Olczak. Addison-Wesley Publishing Company. ISBN 0201176882
• Read all man pages on the UNIX system

3. Learn Shell and Shell-Language Programming
Learn how to write shell scripts, Use "for" loops and "if" statements; use awk, sed, ed,
cat, and grep commands and learn to pass information to and from shell variables.
• Attend a UNIX Shell programming class
• Read The AWK Programming Language by Alfred V. Aho, Brian W. Kernighan, and Peter Weinberger. Addison-Wesley Publishing Company. ISBN 020107981X
• Read UNIX Shell Programming (Hayden Books UNIX System Library) by Stephen G. Kochan and Patrick H. Wood. Hayden Books. ISBN 067248448X
• Read UNIX in a Nutshell: A Desktop Quick Reference for System V and Solaris 2.0 (Nutshell Handbook) by Daniel Gilly. O'Reilly and Associates. ISBN 1565920015
• Read Learning Perl, 2nd Edition (Nutshell Handbook) by Randal L. Schwartz and Tom Christiansen, Foreword by Larry Wall. O'Reilly and Associates. ISBN1565922840
• Read Advanced Perl Programming (Nutshell Handbook) by Sriram Srinivasan. O'Reilly and Associates. ISBN 1565922204

4. Become One with Your UNIX System
Install and configure a UNIX system from scratch. Make and mount file systems. Use cron to execute program or shell scripts, and configure UNIX for printing. Learn more about UNIX permissions. Learn what each daemon does that is running on your system. Learn Linux.
• Read all the UNIX manuals that come with your system

5. Learn DNS and BIND
Learn the Domain Name System (DNS) and Berkeley Internet Name Domain (BIND) and know how to use nslookup, whois, and dig.
Read DNS and BIND by Paul Albitz and Cricket Liu. O'Reilly and Associates. ISBN 1565922360

6. Become a Mail Master
Configure UNIX to dial out on a modem. Learn about sendmail, mail, and UUCP. Configure UNIX to send email to another system.
• Attend a sendmail class. http://www.harker.com has one of the best sendmail and DNS classes.
• Read Using & Managing UUCP (Nutshell Handbook) by Ed Ravin, Dale Dougherty, Grace Todino, and Tim O'Reilly. O'Reilly and Associates. ISBN 1565921534
• Read Sendmail (Nutshell Handbook) by Bryan Costales and Eric Allman. O'Reilly and Associates. ISBN 1565922220

7. Learn Networking
Learn the TCP/IP layers as well as the OSI model. Learn the applications telnet and ftp, and know what SNMP and SMTP are. Learn about routers and bridges, and how to configure subnet masking. Also read about arp, rarp, bootp, ip, icmp, rip, tcp, udp, bftp, and tftp.
• Attend a TCP/IP class
• Read Internetworking with TCP/IP: Design, Implemenation, and Internals, Vol. 2 by Douglas E. Comer and David L. Stevens. Prentice Hall. ISBN 0131255274
• Read Internetworking with TCP/IP: Principles, Protocols, and Architecture, Vol. 1 by Douglas E. Comer. Prentice Hall. ISBN 0132169878
• Read Advanced Programming in the UNIX Environment (Addison-Wesley Professional Computing Series) by W. Richard Stevens. Addison-Wesley Publishing Company. ISBN 0201563177
• Read TCP/IP Illustrated, Volume 1: The Protocols (Addison-Wesley Professional Computing Series) by W. Richard Stevens. Addison-Wesley Publishing Company. ISBN 0201633469

8. Learn the Ns (NFS and NIS) and Outs of UNIX
Learn NFS and NIS/NIS+; know how to use hard links and symbolic links. Learn rcp, rlogin, and rsh commands. Revisit shell programming and brush up on using and redirecting the standard-out and standard-error outputs of the UNIX shell.
• Read Managing NFS and NIS by Hal Stern and Mike Loukides (Editor). O'Reilly and Associates. ISBN 0937175757

9. System Tuning and Accounting
Learn about UNIX system performance tuning and how to make changes to, and rebuild, the kernel. Learn the accounting packages that come with your UNIX system.
• Read System Performance Tuning by Mike Loukides. O'Reilly and Associates. ISBN 0937175609
• Read Unix Performance Tuning (Sys Admin Essential Reference Series) by Sys Admin Magazine (Editor). Miller Freeman Books. ISBN 0879304707

10. C the Light
Learn C programming on UNIX; know how to use make. Port programs between UNIX systems.
• Attend a Beginning C class
• Attend an Advanced C class
• Attend a System Programming C class
• Read UNIX: Network Programming by W. Richard Stevens. Prentice Hall. ISBN 0139498761
• Reference Using C on the UNIX System (Nutshell Handbook) by D. Curry. O'Reilly and Associates. ISBN 0937175234
• Reference The C programming Language: ANSI C Version by Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall. ISBN 0131103628
• Reference Managing Projects with Make (Nutshell Handbook) by Andrew Oram and Steve Talbott. O'Reilly and Associates. ISBN 0937175900
These books can be found at http://www.amazon.com or http://www.ora.com.

Friday, June 11, 2010

Upgrading Perl on freebsd

Well its Friday and im back online doing some fun stuff ;). with perl. However before i can get to the fun stuff i have to upgrade from perl 5.8 to 5.10 on my freebsd box. So lets get to it. Let me start out by saying that for this upgrade im using the portupgrade command which can be downloaded through the freebsd ports tree. There is also another command called portmaster which im not familar with just yet. so here we go.


1. Run the pkgdb -Ff command. This command fixes any dependencies within the ports tree database.


2. Run env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.10 -f perl-5.8.\*. This will reinstall perl with the new version 5.10 in this case


3. Reinstall everything that depends on perl by running the following command: portupgrade -fr perl. NOTE: This will take a while to finish depending on the spec of your machine.


4. Enjoy your new version of perl.

Thursday, June 10, 2010

Getting good at Unix

I am in no way a unix master. i read this article on another blog and i feel the need to post it here. So this is for my personal motivation. enjoy :)




I recently got a question from a friend of mine that essentially said “I’d like to be awesome at UNIX, but I’m not sure where to start or what to do”. She’s a pretty nerdy woman who runs Linux on her laptop and has serious geek tendencies already, so I wrote up the following advice.

Here’s my 12 step program to become a nerdy UNIX master (or at least journeyman). It’s intended to be gone through twice. Each step has a “novice” level for the first time through and an “expert” level for the second time through. Also, throughout the process you should be brushing up on sh scripting and an interpreted scripting language of your choice (with the suggestions being perl, ruby and/or python). Use a shell script if you’re calling lots of external processes for information. Use perl/ruby/python if you’re doing any moderately complex control statements.

1) Install a version of UNIX on a computer. This could be any distro of Linux, FreeBSD, OpenSolaris or something else. You probably want to choose something you think will be useful at a future job. Right now, I’d suggest CentOS or Gentoo for server-based Linux distros or FreeBSD. The second time through the 12 steps, install a virtual server using Xen, jails or some similar virtualization technology and make the installation automated (eg. kickstart with a specific profile and, possibly, post-install scripts that set up users, point to network resources, etc).

2) Create users on your system. Configure the creation process so it uses skeleton files to create a usable user environment. The second time through these steps, set up an LDAP server that you can authenticate to. Set up your user directories so they auto-mount from a remote server.

3) Set up your essential host configuration files in RCS/CVS/git so you have versioning of the changes you make to your system.. Before making any major changes to the files, make sure you check them in using CVS/RCS/git. Also, check the files in after you’ve verified the file changes. The second time through, write a ‘cvsedit’ wrapper that does the check in automatically before calling vi on the file.

4) Learn regular expressions. You’ll use them with grep, perl, ruby, sed, awk and a lot of other applications. Knowing them will be your friend. This is something where you’ll keep picking things up as you go along. The second time through these 12 steps take some earlier scripts you wrote with regexps in them and do optimization on them and see how much you can increase search speed and reduce run time.

5) Set up a mail server that will send mail out. Make sure it doesn’t accept outgoing connections and only sends mail from local users/processes. Make sure you test this out by trying to connect from somewhere else and trying to relay through your system to make sure you did it right. The second time through, configure your mail server to accept external mail for delivery to local users. Feel free to set up anti-spam filtering and such as well. Also, feel free to try Postfix or qmail as an alternative mail server.

6) Install and configure a DBMS on the box. Mysql is a good choice. Postgresql is another choice if you want to take the road less traveled. Create some tables, write some queries, do some stuff with it (which you’ll likely really do next step). The second time through, install from source. Set up database replication between multiple hosts. Take archive/redo logs from an active server and use it to bring your second server up to date.

7) Install Apache or other httpd server. Set up some CGIs that provide dynamic results. Have the CGIs read, write and update the database tables. Feel free to install WordPress or something similar and see how they work and modify them to tweak how they work. The second time through the steps, install from source and use something like mod_ruby or mod_perl to improve performance. If you don’t mind doing some java, use an application server like tomcat, jboss or glassfish to mimic the traditional 3-tier web stack

8) Automate performance monitoring on the system. Put together something that makes MRTG graphs of disk usage, network usage, etc. The second time through these steps, set up SNMP and poll results from a remote system. Store the results in your database server. Run analyses to identify aberrations in the system and see if you can make any correlations to determine the cause (maintenance, holidays, software/config changes, etc).

9) Make sure the system has multiple disks in it and set up mirroring (LVM, Solaris Disk Suite, etc). Use this to mirror your root disk. The second time through these steps, migrate to a RAID 1 + 0 setup then to a RAID 5 setup and compare the performance results on reads and writes for small, medium and large files and understand what differences there are and why they’re there.

10) Install DNS and DHCP servers on your system. Use these to manage your LAN. Connect new systems and see if they get the proper IP addresses and network information you think they should. Make sure the clients point to your DNS server when they get the DHCP information. The second time through, have the DHCP clients set up to use your box as the default gateway. Set your system up to proxy and filter appropriate services, and reject the rest.

11) Write a network client that retrieves information from a server somewhere and does something with it. Retrieve an RSS feed from a remote web server and figure out if it’s been updated since the last time you polled it and send you an e-mail with whatever the recent changes are. The second time through, write a network server that you can query with a client to get some specific information. For bonus points, write a server appropriate to being called from inetd and another that does threading/fork-exec.

12) Secure your system from all the holes you’ve put into it in the past eleven steps. Lock it down so only people from certain networks or systems can access your system. Set up ipchains in such a way that you can do what you want to do, but other people are prevented. Set up tripwire to detect changes on the system. The second time through these steps, try to break into your system. Or have someone else you know try to break into the system while you’re watching them.

While you’re doing these steps, see if there’s any part you enjoy a lot more than the others. If you like the database stuff, maybe you want to be a DBA. Perl/Ruby and/or Java, maybe you want to be a programmer. DNS/DHCP/proxy gateway stuff, maybe you want to be a network engineer. As listed here, this will help you become a good UNIX generalist and give you a good grounding in what you need to move into whatever specialization you’d like.

So that’s your 12/24 step program for becoming a UNIX master.

Monday, June 7, 2010

How to Setup PostgreSQL database on Solaris 10

By default PostgreSQL comes with solaris 10. To check if PostgreSQL is installed in your Solaris instance you can use the following command:

$ svcs "*postgres*"
STATE STIME FMRI
disabled Feb_16 svc:/application/database/postgresql:version_81
disabled 16:11:25 svc:/application/database/postgresql:version_82

If you don't see any PosgreSQL instance in your Solaris box then proceed and install the following packages (the list may actually change over time):
* SUNWpostgr
* SUNWpostgr-contrib
* SUNWpostgr-devel
* SUNWpostgr-docs
* SUNWpostgr-jdbc
* SUNWpostgr-libs
* SUNWpostgr-pl
* SUNWpostgr-server
* SUNWpostgr-server-data
* SUNWpostgr-tcl


After installation, SMF services should be listed by (the output may depend on the actual PostgreSQL version you installed):

$ svcs "*postgres*"
STATE STIME FMRI
disabled Feb_16 svc:/application/database/postgresql:version_81
disabled 16:11:25 svc:/application/database/postgresql:version_82




PostgreSQL on Solaris uses RBAC to give users permissions over the database instance. When you install Solaris' PostgreSQL packages an RBAC role is setup for you:


[/etc/passwd]
postgres:x:90:90:PostgreSQL Reserved UID:/:/usr/bin/pfksh

This user is setup as an RBAC role in /etc/user_attr file:

[/etc/user_attr]
postgres::::type=role;profiles=Postgres Administration,All

Permission for the Postgres Administration profiles are setup in the /etc/security/exec_attr file:

[/etc/security/exec_attr]
Postgres Administration:solaris:cmd:::/usr/postgres/8.2/bin/initdb:uid=postgres
Postgres Administration:solaris:cmd:::/usr/postgres/8.2/bin/ipcclean:uid=postgres
Postgres Administration:solaris:cmd:::/usr/postgres/8.2/bin/pg_controldata:uid=postgres
Postgres Administration:solaris:cmd:::/usr/postgres/8.2/bin/pg_ctl:uid=postgres
Postgres Administration:solaris:cmd:::/usr/postgres/8.2/bin/pg_resetxlog:uid=postgres
Postgres Administration:solaris:cmd:::/usr/postgres/8.2/bin/postgres:uid=postgres
Postgres Administration:solaris:cmd:::/usr/postgres/8.2/bin/postmaster:uid=postgres

Starting PostgreSQL
You can start PostgreSQL using the following SMF command from an account with the appropriate privileges:

$ su - postgres
$ svcadm enable svc:/application/database/postgresql:version_82

Initial Configuration
By default, PostgreSQL is configured to trust all of the local users. That's not a good practice because all your local users may connect to PostgreSQL as a superuser. The first to do is setting up a password for the postgres user:

$ psql -U postgres
postgres=# alter user postgres with password 'your-password';

Exit psql with the \q command and change the /var/postgres/8.2/data/pg_hba.conf file to set an appropriate authentication method and change the following line:

[/var/postgres/8.2/data/pg_hba.conf]
local all all trust

with, for example:

[/var/postgres/8.2/data/pg_hba.conf]
local all all md5

Next time you connect, PostgreSQL will be asking you for the user password. Now, let's refresh the PostgreSQL service so that PostgreSQL will receive a SIGHUP signal an re-read the pg_hba.conf file:

$ svcadm refresh svc:/application/database/postgresql:version_82

Done!
You're now running a PostgreSQL instance on your Solaris box ready to be given to your database administrator, ready for production use.

How to Add/Remove network interfaces to a running zone container

Well good morning everyone. This is a quick tutorial on how to add a network interface to a running zone container in solaris 10, without have to go through the trouble of rebooting the zone. Also not e that this configuration change will persist between reboots. With that being said lets get to it.


First you add the entry to the zone configuration. This is the part that lets it persist between reboots. This is done from the global zone:

# zonecfg -z zone1
zonecfg:slabzone1> add net
zonecfg:slabzone1:net> set address=XXX.XXX.XX.XXX
zonecfg:slabzone1:net> set physical=e1000g0
zonecfg:slabzone1:net> end
zonecfg:slabzone1> verify
zonecfg:slabzone1> commit
zonecfg:slabzone1> exitNow we have to manually add a new interface to the running zone. Do this from the global zone as well

# ifconfig e1000g0 addif XXX.XXX.XX.XXX netmask XXX.XXX.X.X zone zone1 up

Created new logical interface e1000g0:3

Note: The ‘addif’ tells ifconfig to create a logical interface using the next available.

# ifconfig -a
lo0:1: flags=2001000849 mtu 8232 index 1 inet 127.0.0.1 netmask ff000000
e1000g0:1: flags=1000843 mtu 1500 index 2 inet XXX.XXX.XX.XXX netmask ffffff00 broadcast XXX.XXX.XX.XXX
e1000g0:3: flags=1000843 mtu 1500 index 2 inet XXX.XXX.XX.XXX netmask ffffff00 broadcast XXX.XXX.XX.XXX

That's it! you're done.

In case you want to remove the interface -

To remove the interface from a running zone. From the global zone, remove the interface. You must first determine which logical interface [alias] you wish to remove.

# ifconfig e1000g0:3 down
# ifconfig e1000g0:3 unplumb
# zonecfg -z zone1
zonecfg:slabzone1> remove net address=XXX.XXX.XX.XXX
zonecfg:slabzone1> commit
zonecfg:slabzone1> exit

All Done Now you can enjoy your newly added interface lol :)

Friday, June 4, 2010

How to lock your screen on snow leopard

Well for the past couple of days my friend and i have been trying to figure out how to lock the screen in snow leopard well mac osx for that matter in general, Well after hours of googling i finally figured it out. check it out.


1. Open Automator (in your Applications folder) and choose Service from the list of templates provided and click the Choose button.


2. In the left hand column under Library, select Utilities.

3. In the second column, drag “Run Shell Script” to the right hand pane.

4. At the top of the right hand pane where you dragged the Run Shell Script action, click on the menu next to “Service receives” and choose “no input”.

5. Copy and paste the following Terminal command into the empty text area of the Run Shell Script action:

/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

The entire command should be entered on a single line and note there is a space after “/Menu\”.

6. Choose File–>Save, and give the new service a meaningful name like “Lock Computer” that will appear in the Services menu. Once you’ve done that, you can go to the Services menu (located in the current application menu, next to the Apple menu) and your newly created service should appear there.


7. Next open System Preferences –> Keyboard –> Keyboard Shortcuts and select Services in the left column.

8. Scroll down to the bottom and under the General category, you should see your newly created service listed there. Select it, then Double-click close to the right side of the selected line to reveal a field where you can enter a custom keyboard shortcut. Enter an easy to remember but unique keyboard shortcut (I chose to go with ctrl+option+command+L), and then quit System Preferences.


9. enjoy locking your screen =) yeaaaaaaaaaaaaah booooooooy

Wednesday, June 2, 2010

freebsd 8.1 beta

FreeBSD 8.1 BETA1 is available for downloading on (most of) the mirrors, as mentioned on the FreeBSD Stable Mailinglist:

The first of the test builds for the FreeBSD 8.1 release cycle is now available for amd64, i386, ia64, powerpc, pc98, and sparc64 architectures. Files suitable for creating installation media or doing FTP based installs through the network should be on most of the FreeBSD mirror sites by now.

For those who cannot wait, this is the link: http://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/8.1/

You can change the link to a mirror closer to you by adding your country code, e.g. http://ftp.dk.freebsd.org/ etc etc

Cracking Kerberos Service Tickets (TGS) Using Kerberoasting

As of late I've been spending a lot of time researching and learning different techniques when it comes to attacking Active Directory En...