The Chicago Cubs have signed free agent outfielder Scott Hairston to a two-year contract worth up to $6 million, according to a source with knowledge of the negotiations.