I am not sure you need to setup complicated models to achieve what you try to get to (unless I misunderstand your question):
FX: Let's say your portfolio base currency is USD and you want to know what the performance attribution is of changes in xxx/USD or USD/xxx rates. You simply identify assets in your portfolio that are denominated in non-USD currencies, such as EUR denominated bonds or European stocks denominated in EUR. You know the returns of EUR/USD and you know the assets' returns over your measure period. Simply strip the fx returns off the total asset's return and you get your relative fx attribution for that particular asset. You do that for all assets in your portfolio and aggregate the fx attribution to get a portfolio fx attribution.
Country : Not sure what you exactly mean but if you have a country benchmark then you can apply the above in similar ways: Just identify the assets that would be part of that country "bucket", isolate the country benchmark return from your total asset's return and proceed as above.
Security selection? You mean asset class or individual asset? Either way, same as above.
The assumption of all that is that the residual return of each asset (after stripping off all other return attributions is the alpha (excess return) generated in each asset. This assumes you identify all return attribution that are not directly attributable to the asset itself (fx, country, industry, sector, ...).
Example, you have a EUR denominated stock holding. You reduce the usd converted return of the stock over the observed period by eur/usd returns. If stock price changed between t0 -> t1 from euro 100 -> euro 150, and eur/usd rate changed from 1.30 -> 1.40 then your usd denominated return is (150*1.4 / 100*1.3 - 1 = 61.5%) and has to be reduced by about 7.7% -> 53.8% return. So fx attribution here is about 7.7% for this particular asset.
Please clarify in case I misunderstood anything about your question.